Способ передачи данных между групповыми контекстами форм или как забыть про «глРасшифровка» и «глФлагРасшифровки»
Используем штатные возможности, — объект "Форма" имеет их в своем арсенале.
- Описание
- Подробнее
Описание
Во многих стандартных конфигурациях в качестве двустороннего способа передачи данных между групповыми контекстами форм используются глобальные переменные (например, упомянутые в теме «глРасшифровка» и «глФлагРасшифровки») с инициализированной структурой данных — список или таблица значений. Одна форма меняет содержимое списка значений, другая видит эти изменения, т.к. переменная со списком глобальна, доступна во всех модулях.
Между тем, объект «Форма» имеет в своем составе ту же структуру — список значений, правда, используется он для закладок… Ну ладно, закладки чуть-чуть «подвинем». Их можно использовать как «натурально», так и для хранения других списков значений, создавать как в текущей форме, так и в «чужой»:
// вызывающая форма:
ОткрытьФорму("ЧтоОткрываемСмСинтаксис",Контекст);
ПолученныйСписок = Форма.Закладки.ПолучитьЗначение(1);
Если Форма.Закладки.РазмерСписка() = 1 Тогда
// на форме не было закладок, удаляем их
Форма.ИспользоватьЗакладки(0);
Иначе
// были закладки, удаляем только первую
Форма.Закладки.УдалитьЗначение(1,1);
КонецЕсли;
// Используем ПолученныйСписок!
// Открываемая форма
// ПриОткрытии()
Если ТипЗначенияСтр(Форма.Параметр) = "ГрупповойКонтекст" Тогда
Если Форма.Параметр.Форма.ИспользоватьЗакладки() = 0 Тогда
Форма.Параметр.Форма.ИспользоватьЗакладки(1);
КонецЕсли;
СписокДляПередачи = СоздатьОбъект("СписокЗначений");
// заполняем его
Форма.Параметр.Форма.Закладки.ВставитьЗначение(1,СписокДляПередачи,"",1);
КонецЕсли;
// Сделали "закладку" в независимой от здешних событий вызывающей форме.Чем еще хорош это метод по сравнению с глобальными переменными, — не нужно отслеживать предыдущее состояние структур данных для обмена, — закладки для каждой формы — свои.

