DEFINEMACROS

Материал из GB wiki
Перейти к: навигация, поиск

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

  • в стандартных параметрах, т.е. в переменных с именами :MacrosParam1, :MacrosParam2 (3, 4 и т.д.);
  • в именованых параметрах, т.е. в переменных, имена которых указываются после имени макроса в скобках (доступно, начиная с версии ГБ 1.9.0.9).

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

Синтаксис

DEFINEMACROS (Имя макроса(именованные_параметры),Текст макроса)

Аргументы

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

Тип результата

Нет

Примеры

Пример 1. Макрос без параметров:

DefineMacros(
  "SetTypePartnerKind",
  "Assign('DataSet.DocType',23), Assign('DataSet.Partner',100), Assign('DataSet.Kind',704)"
)

Вызов макроса :

SetTypePartnerKind()


Пример 2. Макрос с параметрами:

DefineMacros(
  "SetTypePartnerKind",
  "Assign('DataSet.DocType',:MacrosParam1), Assign('DataSet.Partner',:MacrosParam2), Assign('DataSet.Kind',:MacrosParam3)"
)

Вызов макроса:

SetTypePartnerKind(23, 100, 704)


Пример 3. Макрос с именованными параметрами:

DefineMacros(
  "SetTypePartnerKind(DT;PT;KD)",
  "Assign('DataSet.DocType',:DT), Assign('DataSet.Partner',:PT), Assign('DataSet.Kind',:KD)"
)

Вызов макроса:

SetTypePartnerKind(23, 100, 704)