Код модулей может быть представлен в виде трех блоков

  • Объявление переменных модуля
  • Набор процедур и функций модуля
  • Тело модуля

Каждый из указанных элементов может отсутствовать. Наличие первого и последнего,  может быть запрещено на уровне системы.

Пример:

Блок модуля разделение

Данные блоки отделяются формально и не имеют четких границ.

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

Блок объявлений переменных

Служит для объявления имен переменных, а также для  указания их доступности извне через директиву  “экспорт“. Эти переменные обычно называются  переменными модуля, либо экспортными переменными объекта (формы).

Может содержать:

  • Объявление переменных одной или нескольких
  • Пустые строки и строки комментариев
  • Директивы #Если #Тогда #КонецЕсли
  • Директивы #Область #КонецОбласти

В модуле управляемой формы, модуле веб-сервисов, в общих модулях, в модуле команды не могут иметь блока переменных (детально данные модули в статье описываться не будут)

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

Предназначен для размещения текста функций и процедур. Этот блок возможно использовать во всех модулях.

Для модуля объекта или формы предоставляется возможность обращения к реквизитам данного объекта (формы, в том числе к элементам диалогов).

Для версий, начиная с 8.2 возможно указание директив исполнения (&НаСервере, &НаКлиенте, &НаСервереБезКонтекста)

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

Для модуля формы обращение к реквизитам недоступно для функции или процедур с директивой &НаСервереБезКонтекста

Во всех версиях 8 (в отличии от 7.7), последовательность процедур и функции для доступности вызова не имеет значение (в 7.7. такое возможно было при использовании директив “Далее”, без данной директивы они были доступны снизу вверх)

Имена процедур должны быть уникальны в пределах локальной видимости (самого модуля или например, модуля объекта и формы для экспортных процедур)

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

Для версии 8.3 и выше возможно логическое разделение кода на области, свертка редактором улучшает читабельность кода (#Область #КонецОбласти). Это не является обязательным, но рекомендуется для больших текстов кода. Замечу, что возможно использование вложенных процедур.

Блок тела модуля

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

В нем доступны переменные модуля и возможна их инициализация.

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

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

Секрет интуиции тот же, что и секрет рекламы: повторите человеку тысячу раз, что мыло «Пирс» улучшает цвет лица, и он, возможно, интуитивно почувствует, что так оно и есть.

— Сомерсет Моэм