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