<<
>>

4.2. Формат исходных текстов программных модулей

Что такое программный модуль

Программные модули в конфигурации системы «1С:Предприятие» не являются самостоятельными программами в общепринятом понимании мого слова, поскольку они являются только частью всей конфигурации.

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

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

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

Контекст выполнения программного модуля

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

Эта связь называется контекстом выполнения модуля.

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

глобальный контекст,

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

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

значениями свойств и методов глобального контекста.

системными перечислениями и системными наборами значений (например. КодВозвратаДиалога и Символы).

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

4.2.2.2. Локальный контекст

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

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

4.2.3. Виды программных модулей

В системе «ЮПредприятие» существуют несколько видов программных модулей. Они различаются по месту размещения и доступному контексту.

4.2.3.1. Модуль управляемого приложения

Модулем управляемого приложения называется модуль, который автоматически выполняется в момент загрузки конфигурации, при старте системы «ЮПредприятие» в следующих режимах:

тонкого клиента.

веб-клиента,

толстого клиента в режиме управляемого приложения.

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

Процедуры и функции модуля управляемого приложения, а также переменные, для которых в заголовке указано ключевое слово Экспорт, я вля ются доступ н ы м и:

в неглобальных клиентских общих модулях,

в клиентских процедурах и функциях модуля команды,

в клиентских процедурах и функциях модуля управляемой формы. В контексте модуля управляемого приложения доступны:

часть глобального контекста, которая может исполняться в управляемом приложении,

Модуль внешнего соединения

Модуль внешнего соединения расположен, как и модуль приложения, в корневом разделе конфигурации. В нем располагаются процедуры- обработчики событий, которые инициализируются при старте и окончании работы системы в режиме внешнего соединения (СОМ-соединения).

В модуле внешнего соединения возможно объявление переменных, а также объявление и описание процедур и функций, которые будут доступны для внешнего приложения.

Объекты «1С:Предприятия», доступные извне через СОМ-соединение:

экспортируемые переменные и процедуры/функции модуля внешнего соединения;

экспортируемые переменные и процедуры/функции общих модулей:

включение и исключение модулей целиком выполняются с помощью установки свойств общих модулей;

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

глобальный контекст «1С:Предприятня»:

за исключением объектов, жестко связанных с клиентским приложением (ТекстовыйДокумент, ТабличныйДокумент).

Модуль присутствует только в сессии внешнего соединения,

В данном режиме характерно полное отсутствие пользовательского интерфейса.

Модуль сеанса

Модулем сеанса называется модуль, который автоматически выполняется при старте системы «1С:Предприятие» в момент загрузки конфигурации.

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

Этот общий модуль всегда исполняется в привилегированном режиме сервера «1С:Предприятия».

Установка параметров сеанса выполняется в обработчике события

УстановкаПараметровСеанса().

Исполнение модуля сеанса происходит после начала исполнения модуля управляемого приложения (модуля внешнего соединения), до вызова обработчика события ПередНачаломРаботыСистемы (ПриНачалеРа- ботыСистемы, в случае модуля внешнего соединения).

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

Общие модули

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

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

Подробнее про общие модули см. стр. 1-162.

Модули прикладных объектов

Набор прикладных объектов имеет собственные модули. К таким объектам относятся:

Менеджеры значения константы,

Справочники,

Документы,

Отчеты,

Обработки,

Планы видов характеристик,

Планы счетов,

Планы видов расчетов,

Планы обмена,

Бизнес-процессы,

Задачи,

Регистры.

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

В контексте модуля прикладного объекта имеется доступ к реквизитам и табличным частям объекта, а также его методам и событиям.

Модули менеджеров объектов

Каждый прикладной объект имеет менеджер, предназначенный для управления этим объектом как объектом конфигурации.

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

Контекст модуля менеджера образуется:

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

экспортируемых переменных, процедур и функций модуля приложения;

локальных и экспортируемых функций самого модуля. Модуль менеджера не может иметь переменных и тела модуля.

Если функции или процедуры модуля менеджера объявлены как экспортируемые, к ним можно будет получить доступ через менеджер объекта.

Например, опишем функцию в модуле менеджера справочника

Контрагенты:

Функция ПолучитьСгтисокДебиторов О Экспорт Конецфункции

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

Дебиторы = Справочники.Контрагенты.ПолучитьСписокДебиторовО;

Модули форм

Эти модули содержатся в формах конфигурации (см. стр. 1-357). Каждая форма имеет свой индивидуальный модуль. В этих модулях возможно объявление переменных, процедур и функций, которые будут доступны при работе с формой извне во встроенном языке, дополняя контекст формы.

Контекст формы будет образован:

локальным контекстом самого модуля формы, реквизитами формы, которой «принадлежит» модуль;

свойствами и методами объекта УправляемаяФорма встроенного языка;

свойствами и методами расширения формы, определяемого типом того объекта, данные которого содержатся в основном реквизите формы;

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

д.);

экспортируемыми переменными, процедурами и функциями модуля управляемого приложения.

4.2.3.8. Модули команд

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

Обработчик ОбработкаКоманды() обязательно должна предваряться директивой препроцессора &НаКлиенте, т. к. именно гам начинается исполнение команды.

Контекст клиентских процедур модуля команды образуется:

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

локальным контекстом самого модуля команды. Контекст серверных процедур модуля команды образуется:

свойствами и методами глобального контекста;

экспортными процедурами и функциями глобальных общих модулей, если эти модули компилируются на сервере;

неглобальными общими модулями, если эти модули компилируются на сервере: доступны экспортные методы таких модулей;

¦ серверными методами модуля команды.

В модуле команды можно описывать методы с ключевым словом Экспорт. Однако как-либо использовать нх за пределами этого модуля нельзя. Из встроенного языка невозможно получить доступ к командам и, следовательно, к их контексту тоже.

4.2.4. Формат программного модуля

Структуру программного модуля можно подразделить на следующие разделы:

раздел определения переменных,

раздел процедур и функций,

раздел основной программы.

В конкретном программном модуле любой из разделов может отсутствовать.

Раздел определения переменных размещается от начала текста модуля до первого оператора Процедура, или оператора Функция, или любого исполняемого оператора.

В этом разделе могут находиться только операторы объявления переменных Перем.

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

Раздел основной программы размещается от первого исполняемого оператора вне тела процедур или функций до конца модуля. В этом разделе могут находиться только исполняемые операторы. Раздел основной программы исполняется в момен'і инициализации модуля. Обычно в разделе основной программы имеет смысл размещать операторы инициализации переменных какими-либо конкретными значениями, которые необходимо провести до первого вызова любой из процедур или функций модуля.

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

4.2.4.1. Комментарии

Комментарий используется для размещения в исходном тексте программного модуля всякого рода пояснений к работе модуля. Хорошим тоном программирования считается, когда исходный текст содержи!' исчерпывающий комментарий с описанием алгоритма. В режиме исполнения программы комментарии пропускаются. В тексте программного модуля комментарий начинается парой символов «//» и заканчивается концом строки. Это значит, что комментарий можно начинать с начала строки или записывать его после оператора на той же строке. После начала комментария нельзя

писать оператор на той же строке, необходимо закончить комментарий концом строки.

// Это - комментарий // Это тоже комментарий

Формат операторов

Операторі.! имеют вид стандартного обращения к процедуре, за исключением оператора присваивания (А = В,-} и синтаксических конструкций встроенного языка (например, таких как Для, Пока, Если). Между собой операторы обязательно следует разделять символом точка с запятой. Конец строки не является признаком конца оператора, т. е. операторы могут свободно переходить через строки и продолжаться на другой строке. Можно располагать произвольное число операторов в одной строке, разделяя их символом точка с запятой.

Операторы языка в программном модуле можно подразделить на две категории: операторы объявления переменных и исполняемые операторы.

Операторы объявления переменных создают имена переменных, которыми манипулируют исполняемые операторы.

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

В общем случае формат оператора языка следующий:

-метка:Оператор[(параметры)] [ДобКлючевоеСлово];

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

-метка:А=Б;

Имена переменных, процедур и функций

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

Язык написания программных модулей

Встроенный язык системы «1С:Предприятие» является двуязычным. Почти все зарезервированные слова, имена типов значений, свойств, методов.

событий имеют два имени: русское и английское. Исключение составляют слова, не имеющие аналогов в русском языке. В тексте программных модулей эти имена можно свободно смешивать, используя то русские, то английские имена без каких-либо ограничений.

Регистры букв при написании программных модулей

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

Зарезервированные слова

Приведенные далее ключевые слова являются зарезервированными и не могут использоваться в качестве создаваемых имен переменных, реквизитов объектов конфигурации и объявляемых процедур и функций. В данном варианте языка каждое из ключевых слов имеет два представления - русское и английское. Русское имя Английское имя Если If Тогда Then ИначеЕсли Elslf Иначе Else КонецЕсли Endlf Для For Каждого Each Из In По To Пока While Цикл Do КонецЦикла EndDo Процедура Procedure Функция Function КонецПроцедуры EndProcedure КонецФункции EndFunction Перем Var Перейти Goto Возврат Return Продолжить Continue Прервать Break

Русское имя Английское имя и And Или Or Не Not Попыггка Try- Исключение Except ВызватьИсключение Raise КонецПопытки EndTry Новый New Выполнить Execute

ПРИМЕЧАНИЕ, Регистр букв (строчные или заглавные) при написании не имеет значения.

4.2.5. Специальные символы, используемые в исходном тексте Символ Описание // Двумя знаками косая черта начинается комментарий. Комментарием считается весь текст от символа до конца текущей строки 1 Используется только в строковых константах в начале строки и означает, что данная строка является продолжением предыдущей (перенос строки) m Начало метки оператора Окончание метки оператора j Символ разделения операторов О В круглые скобки заключается список параметров методов, процедур, функций и конструкторов.

Также они используются в выражениях встроенного языка. [] С помощью оператора квадратные скобки производится обращение к свойствам объекта по строковому представлению имени свойства. Также возможно обращение к элементам коллекции по индексу или другому параметру Разделяет параметры в списке параметров методов, процедур, функций и конструкторов It ТІ Обрамляет строковые литералы f 1 Обрамляет литералы даты Десятичная точка в числовых литералах. •

Разделитель, используемый для обращения к свойствам и методам объектов встроенного языка + Опера ци я сложен и я. Символ Описание Операция конкатенации строк - Операция вычитания * Операция умножения / Операция деления % Получение остатка or деления. Допускается использования дробных значении делимого и делителя > Логическая операция Больше >= Логическая операция Больше или равно < Логическая операция Меньше <= Логическая операция Меньше или равно = Операция присваивания. Логическая операция Равно о Логическая операция Не равно

<< | >>
Источник: А.Алексеев, А. Безбородое, Д. Бескоровайнов. 1С:Предприятие 8.2. Руководство разработчика. 2009

Еще по теме 4.2. Формат исходных текстов программных модулей:

  1. 2.25. Исследование машинописных текстов и текстов, выполненных с помощью печатающих устройств
  2. Модуль сеанса
  3. 5.2. Модуль управляемого приложения
  4. 7.4. Модуль формы
  5. 70. «Пиратство» программного обеспечения
  6. РЕЧЕВОЙ МОДУЛЬ
  7. Модуль внешнего соединения
  8. Программный апартеид
  9. Сервисное обслуживание пользователей программных продуктов
  10. Исходные понятия
  11. 11. ВЫБОР ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
  12. 9.4. Программное обеспечение для учета в строительстве
  13. Метод установления исходных принципов науки