DEFINEMACROS — различия между версиями
Alexey (обсуждение | вклад) |
Alexey (обсуждение | вклад) |
||
Строка 3: | Строка 3: | ||
|Описание=Функция предназначена для более компактной записи кода. Позволяет определить макрос, который представляет собой последовательность операторов, и в дальнейшем использовать его, указывая только его имя. | |Описание=Функция предназначена для более компактной записи кода. Позволяет определить макрос, который представляет собой последовательность операторов, и в дальнейшем использовать его, указывая только его имя. | ||
<br>В макрос можно передавать данные для обработки. Данные передаются через параметры макроса, которые доступны в его теле двумя способами: | <br>В макрос можно передавать данные для обработки. Данные передаются через параметры макроса, которые доступны в его теле двумя способами: | ||
− | * в стандартных переменных ''':MacrosParam1''', ''':MacrosParam2''' (3, 4 и т.д.); | + | * в стандартных параметрах, т.е. в переменных с именами ''':MacrosParam1''', ''':MacrosParam2''' (3, 4 и т.д.); |
− | * в именованых параметрах, | + | * в именованых параметрах, т.е. в переменных, имена которых указываются после имени макроса в скобках ''(доступно, начиная с версии ГБ 1.9.0.9)''. |
− | |Синтаксис=DEFINEMACROS ('''Имя макроса'''( | + | И стандартные и именованные параметры макроса являются переменными, локальными для данного макроса, т.е. изменение значения этих параметров в теле макроса не изменит значения переменных с таким же именем, но использующихся вне тела макроса. |
+ | |Синтаксис=DEFINEMACROS ('''Имя макроса'''(именованные_параметры),'''Текст макроса''') | ||
|Аргументы= | |Аргументы= | ||
{{Аргумент | {{Аргумент | ||
Строка 15: | Строка 16: | ||
|Пояснение=строка со скриптом, либо последовательность операторов, заключенных в круглые скобки. | |Пояснение=строка со скриптом, либо последовательность операторов, заключенных в круглые скобки. | ||
}} | }} | ||
− | |Пример=Пример 1. | + | |Пример=Пример 1. Макрос без параметров: |
DefineMacros( | DefineMacros( | ||
"SetTypePartnerKind", | "SetTypePartnerKind", | ||
"Assign('DataSet.DocType',23), Assign('DataSet.Partner',100), Assign('DataSet.Kind',704)" | "Assign('DataSet.DocType',23), Assign('DataSet.Partner',100), Assign('DataSet.Kind',704)" | ||
) | ) | ||
− | Вызов | + | Вызов макроса : |
SetTypePartnerKind() | SetTypePartnerKind() | ||
+ | |||
+ | <br>Пример 2. Макрос с параметрами: | ||
+ | DefineMacros( | ||
+ | "SetTypePartnerKind", | ||
+ | "Assign('DataSet.DocType', :MacrosParam1), Assign('DataSet.Partner', :MacrosParam2), Assign('DataSet.Kind', :MacrosParam3)" | ||
+ | ) | ||
+ | Вызов макроса: | ||
+ | SetTypePartnerKind(23, 100, 704) | ||
+ | |||
+ | <br>Пример 3. Макрос с именованными параметрами: | ||
+ | DefineMacros( | ||
+ | "SetTypePartnerKind(DT;PT;KD)", | ||
+ | "Assign('DataSet.DocType', :MacrosParam1), Assign('DataSet.Partner', :MacrosParam2), Assign('DataSet.Kind', :MacrosParam3)" | ||
+ | ) | ||
+ | Вызов макроса: | ||
+ | SetTypePartnerKind(23, 100, 704) | ||
+ | |||
}} | }} |
Версия 09:14, 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', :MacrosParam1), Assign('DataSet.Partner', :MacrosParam2), Assign('DataSet.Kind', :MacrosParam3)" )
Вызов макроса:
SetTypePartnerKind(23, 100, 704)