Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 17:30

Глобальные переменные общего модуля

Автор bolobol, 22 сен 2011, 10:27

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

bolobol

Здравствуйте!

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

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

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

comol

ЦитироватьКак определить глобальные переменные для всей конфигурации в целом
Они называются константами :)

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


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

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

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

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

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

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

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

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

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

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

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


#КонецЕсли


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

bolobol

Нашли мне описалово "Повторное использование возвращаемых значений" - оно то и спасёт меня от переделок модуля ))

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

comol

У параметров сеанса очень не много типов... поэтому ХЗ придётся использовать
В плане задачи с регистром повторное использование возвращаемых значений вас может спасти... Главное другие процедуры из этого модуля убрать.
Статьи по оптимизации 1С: http://comol.livejournal.com/

bolobol

Цитата: comol от 29 сен 2011, 01:14
У параметров сеанса очень не много типов... поэтому ХЗ придётся использовать
Может я не понял что-то, но создавая параметр сеанса можно выбрать любой, доступный в конфе, тип. Мне нужно значение Характеристики - и пожалуйста, галочка и оно есть. Зачем ХЗ с постоянной перестройкой?
Или я не смогу конкретный параметр сеанса получить? Дак, вроде, нет - указывается обращение к конкретному. Не понял про ХЗ.

comol

ХЗ - Это Хранилище значений, а не то что вы подумали :).
А попробуйте создайте параметр сеанса с типом "Соответствие" или "таблица значений"... они то в основном и нужны.
Статьи по оптимизации 1С: http://comol.livejournal.com/

bolobol


comol

А в чём связь вакансии и поднятой темы? :)
Статьи по оптимизации 1С: http://comol.livejournal.com/

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск