Процедуры

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

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

Отличие процедур от процедур-методов заключается в команде возврата при возникновении ошибки в процессе выполнения. Если произошла ошибка, то процедура возвращает команду cmdCONTINUE, а процедура-метод – команду cmdRETURN_ CANCEL. Если выполнение завершилось без ошибок, то и обычная процедура, и процедура-метод возвращают команду cmdCONTINUE. Для процедур и процедур-методов есть также возможность явного задания команды возврата с помощью оператора RETURN. Подробнее о командах возврата написано ниже.

Процедуры различаются по способу создания. В одном случае процедура разрабатывается программистом на языке программирования (чаще всего на Visual С++) и подключается к Домино с помощью динамической библиотеки (файл с расширением dll). В проекте находится только описание этой процедуры. Атрибут ‘Точка входа’ в описании процедуры обязательно должен быть заполнен.

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

Для процедур поддерживается механизм наследования. Процедуры самого верхнего уровня являются базовыми. У базовых процедур имеются следующие атрибуты:

image-1648746924304.png

  • HFile definition – используется программистами.
  • Использование – условие доступа проектировщиков к процедуре.
  • Иконка – для отображения процедуры в сценариях и панели инструментов.
  • Звук (проигрывать по завершении) – Используется при вызове процедуры из панели инструментов или из сценария. По завершении выполнения процедуры будет проиграна указанная мелодия.
  • Элемент – применяется для указания специальных атрибутов процедуры.
  • Указатель на элемент – применяется для указания специальных атрибутов процедуры.
  • Точка входа – место реализации процедуры (имя данной процедуры с точки зрения программиста и название dll, в которой данная процедура содержится).
  • Допускает наследование атрибутов – при установленном признаке в описании наследника можно будет переопределить атрибуты.
  • Выводить сообщения об ошибках в протокол – при заполненном атрибуте сообщения об ошибках будут записаны в протокол. Атрибут может содержать либо ссылку на вид просмотра (протокол будет отображен на экране), либо ссылку на процедуру, которая запишет сообщения об ошибках в файл (протокол будет сохранен в файле).

Примеры использования:

image-1648746970375.png

Сообщения об ошибках будут добавлены в файл export_news.log.

image-1648746986746.png

Протокол будет высвечен на экране.

  • Исходящий контекст – в коде процедуры будут доступны параметры перечисленных объектов
  • Команда – не используется.
  • Локальные переменные – список локальных переменных.
  • Только один из элементов – назначение аналогично атрибуту ‘Указатель на элемент’, но позволяет проектировщику выбирать только один атрибут из указанного списка.

Для процедур, не являющихся базовыми, можно указать следующие атрибуты:

image-1648747002863.png

  • Копирование – условие копирования процедуры проектировщиками.
  • Использование – условие доступа проектировщиков к процедуре.
  • Использование (в режиме выполнения) – условие доступа пользователей к процедуре.
  • Значения формальных параметров при вызове - список значений формальных параметров. Раздел заполняется при вызове процедуры.

Для создания процедуры на языке скриптов необходимо при заполнении поля класс указать {…скрипт-процедура…}.

image-1648747020693.png

image-1648747028732.png

Подробнее атрибуты процедур на языке скриптов рассмотрены ниже.

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

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

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

Параметры могут быть обязательные, необязательные и неявные.

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

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

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