Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
12 Дек 2017, 21:12
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Глобальные переменные общего модуля  (Прочитано 13005 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн bolobol

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-08-26
  • Сайт: 
  • Профессия: Программист 1С
Здравствуйте!

Подскажите, пожалуйста, как определить глобальные переменные в общем модуле, который содержит процедуры подписки на события?

Суть задачи: Из периодического регистра выбираются несколько значений в каждой подписке, все прописки вызывают процедуры этого же модуля для каждой строки табличных частей документа. Сейчас приходится в качестве параметра передавать эту кучу значений, полученных из регистра, т.к. для каждой строки получать заново эти периодические значения - кажется моветоном.

Ещё вопрос. Как определить глобальные переменные для всей конфигурации в целом и как для каждого сеанса в отдельности?


Оффлайн comol

  • ****
  • Сообщений: 285
  • РЕПУТАЦИЯ: 38
  • КПД: 13%
  • Регистрация: 2011-09-08
  • Сайт: comol.livejournal.com
  • Профессия: Программист 1С
Цитировать
Как определить глобальные переменные для всей конфигурации в целом
Они называются константами :)

Цитировать
и как для каждого сеанса в отдельности
Они называются "параметрами сеанса"


В вашем случае нужно использовать параметр сеанса типа "Хранилище значений", в который нужно упаковать коллекцию типа "соответствие"

В УТ 10.3 для этого использовалась функция "глЗначениеПеременной":

#Если Сервер И НЕ Клиент И НЕ ВнешнееСоединение Тогда

Функция глЗначениеПеременной(Имя) Экспорт

Кэш = ПараметрыСеанса.ОбщиеЗначения.Получить();
КэшИзменен = Ложь;
ПолученноеЗначение = ОбщегоНазначения.ПолучитьЗначениеПеременной(Имя, Кэш, КэшИзменен);

Если КэшИзменен Тогда
ПараметрыСеанса.ОбщиеЗначения = Новый ХранилищеЗначения(Кэш);
КонецЕсли;

Возврат ПолученноеЗначение;

КонецФункции

// Процедура установки значения экспортных переменных модуля приложения
//
// Параметры
//  Имя - строка, содержит имя переменной целиком
// Значение - значение переменной
//
Процедура глЗначениеПеременнойУстановить(Имя, Значение, ОбновлятьВоВсехКэшах = Ложь) Экспорт

Кэш = ПараметрыСеанса.ОбщиеЗначения.Получить();
ОбщегоНазначения.УстановитьЗначениеПеременной(Имя, Кэш, Значение);
ПараметрыСеанса.ОбщиеЗначения = Новый ХранилищеЗначения(Кэш);

КонецПроцедуры


#КонецЕсли

В УТ 11, кстати, такого не нашел. Если найдёте как там это решается - поделитесь - буду рад :).
Статьи по оптимизации 1С: http://comol.livejournal.com/

Оффлайн bolobol

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-08-26
  • Сайт: 
  • Профессия: Программист 1С
Нашли мне описалово "Повторное использование возвращаемых значений" - оно то и спасёт меня от переделок модуля ))

Про параметры сеанса, насчёт их добавления в конфу с нужными типами, без хранилища значений, т.к. это тоже усложнение метода получения данных, ещё мне предстоит ознакомиться - Спасибо ))

Оффлайн comol

  • ****
  • Сообщений: 285
  • РЕПУТАЦИЯ: 38
  • КПД: 13%
  • Регистрация: 2011-09-08
  • Сайт: comol.livejournal.com
  • Профессия: Программист 1С
У параметров сеанса очень не много типов... поэтому ХЗ придётся использовать
В плане задачи с регистром повторное использование возвращаемых значений вас может спасти... Главное другие процедуры из этого модуля убрать.
Статьи по оптимизации 1С: http://comol.livejournal.com/

Оффлайн bolobol

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-08-26
  • Сайт: 
  • Профессия: Программист 1С
У параметров сеанса очень не много типов... поэтому ХЗ придётся использовать
Может я не понял что-то, но создавая параметр сеанса можно выбрать любой, доступный в конфе, тип. Мне нужно значение Характеристики - и пожалуйста, галочка и оно есть. Зачем ХЗ с постоянной перестройкой?
Или я не смогу конкретный параметр сеанса получить? Дак, вроде, нет - указывается обращение к конкретному. Не понял про ХЗ.

Оффлайн comol

  • ****
  • Сообщений: 285
  • РЕПУТАЦИЯ: 38
  • КПД: 13%
  • Регистрация: 2011-09-08
  • Сайт: comol.livejournal.com
  • Профессия: Программист 1С
ХЗ - Это Хранилище значений, а не то что вы подумали :).
А попробуйте создайте параметр сеанса с типом "Соответствие" или "таблица значений"... они то в основном и нужны.
Статьи по оптимизации 1С: http://comol.livejournal.com/

Оффлайн bolobol

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-08-26
  • Сайт: 
  • Профессия: Программист 1С
Понял, да. Спасибо!

Оффлайн comol

  • ****
  • Сообщений: 285
  • РЕПУТАЦИЯ: 38
  • КПД: 13%
  • Регистрация: 2011-09-08
  • Сайт: comol.livejournal.com
  • Профессия: Программист 1С
А в чём связь вакансии и поднятой темы? :)
Статьи по оптимизации 1С: http://comol.livejournal.com/


Теги:
 

Не работает метод Сдвинуть() по отношению к программно добавляемой колонке1С:Предприятие 8.3 (8.3.10.2561) Управление производственным предприятием, редакция 1.4 Приветствую, я добавляю программно свою колонку в методе ПриОткрытии() модуля формы, вот так

Автор InsiderРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 282
Последний ответ 21 Сен 2017, 10:33
от Insider
Разблокировка формы и модуля формы

Автор Евгений90Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 2159
Последний ответ 03 Окт 2012, 14:03
от Евгений90
Ошибка 8.3.10. (Ошибка инициализации модуля: Общий модуль)

Автор oaonppРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 1005
Последний ответ 17 Окт 2017, 09:19
от coolte
Обращение к модулю менеджера документа из модуля другого документа.

Автор miximlРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 11502
Последний ответ 02 Мар 2012, 11:43
от cska-fanat-kz
Запись элемента справочника из модуля объекта другого справочника

Автор 12040Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 1405
Последний ответ 05 Май 2016, 09:29
от LexaK

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
169 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
55 Сообщений
alex0402
49 Сообщений
andron81_81
42 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 320
  • Точка Скрытых: 0
  • Точка Пользователей: 6
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal