Оператор 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;
}
}