DEFINEMACROS — различия между версиями

Материал из GB wiki
Перейти к: навигация, поиск
Строка 3: Строка 3:
 
|Описание=Функция предназначена для более компактной записи кода. Позволяет определить макрос, который представляет собой последовательность операторов, и в дальнейшем использовать его, указывая только его имя.
 
|Описание=Функция предназначена для более компактной записи кода. Позволяет определить макрос, который представляет собой последовательность операторов, и в дальнейшем использовать его, указывая только его имя.
 
<br>В макрос можно передавать данные для обработки. Данные передаются через параметры макроса, которые доступны в его теле двумя способами:
 
<br>В макрос можно передавать данные для обработки. Данные передаются через параметры макроса, которые доступны в его теле двумя способами:
* в стандартных переменных ''':MacrosParam1''', ''':MacrosParam2''' (3, 4 и т.д.);
+
* в стандартных параметрах, т.е. в переменных с именами ''':MacrosParam1''', ''':MacrosParam2''' (3, 4 и т.д.);
* в именованых параметрах, которые указываются после имени макроса ''(доступно, начиная с версии ГБ 1.9.0.9)''.
+
* в именованых параметрах, т.е. в переменных, имена которых указываются после имени макроса в скобках ''(доступно, начиная с версии ГБ 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)