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


         

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


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

Пример:

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

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

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

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

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

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

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

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

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

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

       КонецЕсли;

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

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

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



        Содержание раздела