Описание встроенного языка системы 1С Предприятие


Передача локального контекста программного модуля в качестве параметра


В языке есть возможность передавать локальный контекст программного модуля (см. «Контекст выполнения программного модуля», «Виды программ­ных модулей») в качестве параметра процедуры или функции. Для этого в ка­честве фактического параметра при вызове процедуры или функции использу­ется ключевое слово Контекст (англоязычный синоним — Context). Данная возможность позволяет, например, написать в глобальном программном модуле процедуры и функции (общие для многих модулей), которые, при их вызове из других модулей, будут исполняться с использованием конкретного локального контекста вызвавшего модуля.

Пример:

  • Допустим, у нас есть несколько различных документов, причем у всех есть реквизит "Склад". В каждом программном модуле формы редактирования документа нужна процедура выбора склада. В глобальном программном модуле напишем процедуру:

Процедура УстСклада(Конт) Экспорт

   // создаем объект типа "справочник"

   Скл = СоздатьОбъект("Справочник.Склады");

   // вызываем диалог для выбора элемента Справочника

   Скл.Выбрать("Выберите Склад", "");

   Если Скл.Выбран() = 1 Тогда

      // если в диалоге элемент Справочника был выбран,

      // то присваиваем его значение реквизиту Документа,

      // который доступен по локальному контексту

      Конт.Склад = Скл.ТекущийЭлемент();

   КонецЕсли;

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

  • Здесь переменная Конт является формальным параметром, которому при вызове процедуры будет присвоен локальный контекст. В данном примере обращение к реквизитам и методам локального контекста происходит «че­рез точку» после идентификатора Конт, например:

Конт.Склад = Скл.ТекущийЭлемент();

  • Теперь в любом программном модуле конфигурации (в данном примере в любом Модуле формы документа) для выбора склада можно вызвать про­цедуру, передав ей свой локальный контекст в качестве параметра:

УстСклад(Контекст);




Начало  Назад  Вперед



Книжный магазин