Перейти к основному содержимому
Версия: 5.x

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