Назначение параметров модели аналогично пераметрам функций и процедур языка программирования, описание которых производится в скобках после имени процедуры. Когда функция будет вызвана, конкретные аргументы подставятся вместо соответствующих параметров-переменных.
Текстовая строка с описанием параметров модели хранится в ее специальном свойстве и формируется в соответствии со следующим синтаксисом:
где,
ParameterName
Имя параметра не чувствительное к регистру. Например: id
DataType
Тип данных параметра не чувствительный к регистру. Может принимать одно из следующих значений: String, Number, Decimal, Date, Time, DateTime, StringList, NumberList, DecimalList, DateList, TimeList, DateTimeList. Типы данных, оканчивающиеся на List являются массивами.
DefaultValue
Значение, присваиваемое параметру по умолчанию, при отсутствии которого принимаются следующие значения в зависимости от типа: 0 (Number, Decimal), "" (String), 01/01/1900 (Date), 00:00 (Time), 01/01/1900 00:00 (DateTime).
Формат описания DefaultValue
- простое литеральное значение
- NULL
- @<VarName> - текущее значение глобальной переменной
- ^<FieldName> - текущее значение поля <FieldName> в выбранной строке родительской модели
- &<Expression> - результат вычисления выражения <Expression> над текущей строкой родительской модели
- (<Expression>) - результат аналогичен предыдущему варианту
- :<ParameterName> - значение параметра родительской модели
Передача параметров
Присвоение параметрам значений может быть осуществлено при запуске модели на выполнение (открытии). Для этого используется следующий формат:
При выполнении операции присвоения, переданные значения будут, при необходимости, автоматически приведены к типу соответствующего параметра.
Использование
На значения параметров можно ссылаться в свойстве модели WHERE, а также в выражениях атомов типа SQL-expression следующим образом: :<ParameterName>. Например, для модели Query, в которой параметры описаны следующим образом:
nKeyVal:Number=NULL; nQty:Number=0; sTypeList:StringList={'A','B','C'},
значение свойства WHERE могло-бы выглядеть так:
SOMEKEY=:nKeyVal and QTY > :nQty and ITEMTYPE in (:sTypeList)
Кроме этого, имя параметра может быть задействовано во всех выражениях, выполняемых на стороне клиента (Computes). Например, для атома SOMEKEY начальное значение можно описать следующим обраом: =nKeyVal