Документация на documentation.lsfusion.org скоро станет недоступной, используйте, пожалуйста, https://docs.lsfusion.org/ru.

Перейти к концу метаданных
Переход к началу метаданных

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

Ключевое слово. Если указывается, то форма открывается в режиме только для чтения.

Примеры

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
 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;
    }
}

  • Нет меток