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