DEFINEMACROS — различия между версиями
Alexey (обсуждение | вклад) |
Alexey (обсуждение | вклад) |
||
Строка 27: | Строка 27: | ||
DefineMacros( | DefineMacros( | ||
"SetTypePartnerKind", | "SetTypePartnerKind", | ||
− | "Assign('DataSet.DocType', :MacrosParam1), Assign('DataSet.Partner', :MacrosParam2), Assign('DataSet.Kind', :MacrosParam3)" | + | "Assign('DataSet.DocType',:MacrosParam1), Assign('DataSet.Partner',:MacrosParam2), Assign('DataSet.Kind',:MacrosParam3)" |
) | ) | ||
Вызов макроса: | Вызов макроса: | ||
Строка 35: | Строка 35: | ||
DefineMacros( | DefineMacros( | ||
"SetTypePartnerKind(DT;PT;KD)", | "SetTypePartnerKind(DT;PT;KD)", | ||
− | "Assign('DataSet.DocType', :DT), Assign('DataSet.Partner', :PT), Assign('DataSet.Kind', :KD)" | + | "Assign('DataSet.DocType',:DT), Assign('DataSet.Partner',:PT), Assign('DataSet.Kind',:KD)" |
) | ) | ||
Вызов макроса: | Вызов макроса: | ||
SetTypePartnerKind(23, 100, 704) | SetTypePartnerKind(23, 100, 704) | ||
}} | }} |
Версия 09:17, 5 июня 2015
Функция предназначена для более компактной записи кода. Позволяет определить макрос, который представляет собой последовательность операторов, и в дальнейшем использовать его, указывая только его имя.
В макрос можно передавать данные для обработки. Данные передаются через параметры макроса, которые доступны в его теле двумя способами:
- в стандартных параметрах, т.е. в переменных с именами :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)