Оператор DIALOG
Оператор DIALOG
- создание действия, открывающего форму в интерактивном представлении в режиме диалога.
Синтаксис
DIALOG name
[OBJECTS objName1 [= expr1] [NULL] [inputOptions1], ..., objNameN [= exprN] [NULL] [inputOptionsN]]
[formActionOptions]
[DO actionOperator [ELSE elseActionOperator]]
При открытии формы выбора / редактирования синтаксис немного отличается:
DIALOG classFormType className
[= expr] [NULL] [inputOptions]
[formActionOptions]
[DO actionOperator [ELSE elseActionOperator]]
inputOptions
- опции объекта, определяющие нужно ли возвращать последние текущие значения этого объекта после закрытия формы, и что с этими значениями делать дальше (задаются одним из следующих синтаксисов):
INPUT [alias] [NULL]
CHANGE [= changeExpr] [NOCONSTRAINTFILTER] [alias] [NULL]
formActionOptions
- дополнительные опции этого действия. Они могут указываться друг за другом в произвольном порядке:
windowType
MANAGESESSION | NOMANAGESESSION
CANCEL | NOCANCEL
NEWSESSION | NESTEDSESSION
READONLY
Описание
Оператор DIALOG
создает действие, которое открывает указанную форму. При открытии формы в блоке OBJECTS
можно задать объектам формы начальные значения, а также вернуть последние текущие значения в заданные параметры и выполнить действие DO
, которое обработает полученные значение (в том случае если ввод не был отменен).
Параметры
name
Имя формы. Составной идентификатор.
classFormType
Ключевое слово. Определяет какую именно форму необходимо открыть:
LIST
- выбораEDIT
- редактирования
className
Имя пользовательского класса, форму выбора / редактирования которого необходимо открыть. Составной идентификатор.
objName1 ... objNameN
Имена объектов формы, для которых задаются начальные значения. Простые идентификаторы.
expr1 ... exprN
Выражения, значения которых определяют начальные значения для объектов формы.
NULL
Указывает, что передаваемые значения могут быть
NULL
. Эта опция автоматически включается, если для объекта возвращается значение.
Опции ввода
INPUT
Ключевое слово. Если указывается, то последнее текущее значение объекта открываемой формы будет записано в указанный локальный параметр и, при необходимости, в указанное свойство.
alias
Имя локального параметра, в который будет записан результат ввода. Простой идентификатор. Если имя не задается, то в качестве имени параметра будет использовано имя объекта формы.
CHANGE
Ключевое слово, которое обозначает, что кроме ввода значения, полученный результат также необходимо записать в указанное свойство. Кроме того, по умолчанию, эта опция устанавливает дополнительный фильтр на значения объекта в открываемой форме таким образом, чтобы при выборе объекта и изменении указанного свойства на значение этого объекта, ни одно из существующих в системе ограничений не было нарушено.
NOCONSTRAINTFILTER
Если указана, дополнительный фильтр на соответствие ограничениям не устанавливается.
changeExpr
Выражение, которое определяет свойство, в которое будет записан результат ввода. По умолчанию для этого используется свойство, указанное в качестве начального значения объекта.
NULL
Ключевое слово, которое определяет может ли пользователь в качестве возвращаемого значения выбрать значение
NULL
(при помощи специального действия Сбросить -System.formDrop
). Если не задана, включена тогда и только тогда, когда указана опцияCHANGE
.actionOperator
Контекстно-зависимый оператор-действие, выполняется, если ввод был успешно завершен.
elseActionOperator
Контекстно-зависимый оператор-действие, выполняется, если ввод был отменен. В качестве параметров нельзя использовать параметры, добавленные в блоке ввода
INPUT
.
Дополнительные опции
windowType
Способ расположения формы:
DOCKED
- как закладка.FLOAT
- как окно. Используется по умолчанию.
MANAGESESSION
|NOMANAGESESSION
Ключевые слова. Определяют, считается создаваемая форма собственником сессии или нет (если считается, то в интерактивном режиме на форме будут показаны соответствующие кнопки управления сессией). По умолчанию, платформа пытается самостоятельно, в зависимости от контекста, определить какой режим использовать.
CANCEL
|NOCANCEL
Ключевые слова. Определяют, отображать системное действие Отменить (
System.formCancel
) на форме или нет. По умолчанию, платформа пытается самостоятельно, в зависимости от контекста, определить какой режим использовать.NEWSESSION | NESTEDSESSION
Ключевые слова. Определяют, что форма будет открываться в новой (вложенной) сессии. По умолчанию форма, открывается в текущей сессии.
READONLY
Ключевое слово. Если указывается, то форма открывается в режиме только для чтения.
Примеры
FORM selectSku
OBJECTS s = Sku
PROPERTIES(s) id
;
testDialog {
DIALOG selectSku OBJECTS s INPUT DO {
MESSAGE 'Selected sku : ' + id(s);
}
}
sku = DATA Sku (OrderDetail);
idSku (OrderDetail d) = id(sku(d));
changeSku (OrderDetail d) {
DIALOG selectSku OBJECTS s = sku(d) CHANGE;
//равносильно первому варианту
DIALOG selectSku OBJECTS s = sku(d) INPUT NULL CONSTRAINTFILTER DO {
sku(d) <- s;
}
}