Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Виды программных модулей.Выражения и операторы.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
321.02 Кб
Скачать
  1. Контекст выполнения программного модуля

Контекст выполнения модуля – это связь модуля и остальной части конфигурации задачи.

Следует различать два вида контекста:

  • глобальный контекст задачи;

  • локальный контекст выполнения конкретного модуля.

Глобальный контекст образуется:

  • значениями системных атрибутов, системных процедур и функций;

Системные процедуры и функции доступны в любом программном модуле конфигурации. Доступ к системным процедурам и функциям в модулей осуществляется непосредственно, т. е. просто указывается имя процедуры или функции (без предварительной ссылки на какой-либо объект).

Вызов любой функции в тексте программного модуля можно записывать как вызов процедуры, т. е. в языке допускается игнорировать возвращаемое значение.

Например:

Сообщить(ТекущееВремя()); // системная функция ТекущееВремя вернет например, 17:14:37

  • системными константами;

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

Например:

Т = СоздатьОбъект("Текст");

// системная константа РазделительСтрок вставляет пустую строку

Т.ДобавитьСтроку("Список констант" + РазделительСтрок);

  • значениями заданных в конфигураторе констант, перечислений, регистров, видов расчета, групп видов расчета, то есть объекты, входящие в. конфигурацию системы (метаданные).

  • переменными, процедурами и функциями глобального программного модуля, объявленными с ключевым словом Экспорт.

Глобальный контекст виден всем программным модулям и определяет общую языковую среду конфигурации.

Локальный контекст модуля образуется тем местом конфигурации задачи, для которого использован программный модуль. Локальный контекст виден только конкретному программному модулю и определяет для модуля набор непосредственно доступных модулю значений агрегатных типов данных, их атрибутов и методов.

Локальный контекст предназначен для управления частными аспектами поведения задачи, присущими данному модулю. Кроме того, контекст модуля определяет тот набор методов, которые доступны только в данном контексте.

Контекст модуля можно передать как объект в виде параметра при вызове процедур и функций (см. «Передача локального контекста программного модуля в качестве параметра»).

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

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

Например, вывести в окне сообщений регистрационный номер системы. Напишем в главном модуле код

// Глобальный модуль

Перем Вычеты Экспорт;

Функция глНомерРелиза() Экспорт // Функция глобального модуля

возврат "7.70.028";

КонецФункции // глНомерРелиза

Теперь напишем в модуле обработки код

// Локальный модуль

процедура Выполнить()

Сообщить(глНомерРелиза( )); // Выведет сообщение, например 7.70.028

конецПроцедуры // Выполнить

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

// Глобальный модуль

……..

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

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

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

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

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

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

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

// реквизиту Документа, который доступен по локальному контексту

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

КонецЕсли;

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

……….

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

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

// Локальный модуль

……

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