Оператор SHOW
Оператор SHOW создаёт действие, открывающее форму в интерактивном представлении.
Синтаксис
SHOW [formId =] target
[formActionOptions]
[{initActionOperator}]
Где target — одна из двух форм. Именная форма открывает ранее объявленную форму:
formName [OBJECTS objName1 = expr1 [NULL], ..., objNameN = exprN [NULL]]
а классовая форма открывает форму выбора или редактирования класса:
classFormType className = expr [NULL]
А formActionOptions — произвольная комбинация следующих опций в любом порядке:
FILTERS filterExpr1, ..., filterExprM
syncType
windowType
manageSessionType
sessionScopeType
cancelType
READONLY
CHECK
Где windowType — одно из:
FLOAT
DOCKED
EMBEDDED
POPUP
IN containerName
Описание
Оператор SHOW создаёт действие, которое открывает указанную форму. Блок OBJECTS задаёт начальные значения объектам формы (в классовой форме та же роль у единственного = expr, относящегося к единственному объекту формы, который неявно имеет имя object и может быть использован под этим именем внутри выражений FILTERS). Внутри formActionOptions опция FILTERS прикрепляет дополнительные фильтры, вычисляемые из контекста вызова; остальные опции управляют поведением открытия — потоком, расположением, сессией, видимостью системных действий и другими модификаторами. Завершающий блок {initActionOperator} выполняется один раз при открытии формы.
Параметры
-
formIdСтроковый литерал, однозначно идентифицирующий открытый экземпляр формы для последующих действий управления формой (например, чтобы закрыть именно этот экземпляр). По умолчанию открытая форма такого идентификатора не имеет.
-
formNameИмя формы. Составной идентификатор.
-
classFormTypeТип открывающейся классовой формы. Задаётся одним из ключевых слов:
LIST— форма выбора (списка)EDIT— форма редактирования
-
classNameИмя пользовательского класса, форму выбора или редактирования которого надо открыть. Составной идентификатор.
-
objName1, ..., objNameNИмена объектов формы, для которых задаются начальные значения. Простые идентификаторы.
-
expr,expr1, ..., exprNВыражения, значения которых используются как начальные значения соответствующих объектов формы.
-
NULLпосле начального значенияКлючевое слово. Разрешает передаче начального значения быть
NULL. По умолчанию, если какое-либо передаваемое значение равноNULL, действие пропускается, и управление передаётся следующему действию. -
initActionOperatorКонтекстно-зависимый оператор-действие, выполняющийся при открытии формы, после обработчиков
EVENTS ON INITформы.
Опции
-
filterExpr1, ..., filterExprMНепустой список выражений, задающих дополнительные фильтры, применяемые к форме. Каждое выражение может использовать как параметры контекста вызова, так и собственные объекты формы.
-
syncTypeРежим управления потоком. Одно из:
WAIT— синхронный (ожидать закрытия формы)NOWAIT— асинхронный (продолжить сразу после открытия)
По умолчанию платформа выбирает
WAIT, если вызов сам сделан из модальной формы, если в этом же вызове далее потребуются дополнительные обращения к сессии или если выбранный тип окна сам модальный (FLOAT,EMBEDDED,POPUP); иначе —NOWAIT. -
windowTypeРасположение формы:
FLOATпоказывает форму как плавающее окно,DOCKED— как закладку в системном окне форм,EMBEDDEDиPOPUP— как встроенные редакторы,INпомещает форму внутрьcontainerName— компонента дизайна, квалифицированного формой (имя формы, за которым следует путь к компоненту внутри дизайна этой формы), который должен быть контейнером. По умолчанию в синхронном режиме используетсяFLOAT, в асинхронном —DOCKED. -
manageSessionTypeПереопределяет, считается ли открываемая форма собственником сессии. Одно из:
MANAGESESSION— принудительно собственникNOMANAGESESSION— принудительно не собственник
По умолчанию форма становится собственником сессии только если на момент открытия у сессии не было другого собственника.
-
sessionScopeTypeСессия, в которой открывается форма. Одно из:
NEWSESSION— новая сессия верхнего уровняNESTEDSESSION— новая вложенная сессияTHISSESSION— текущая сессия (по умолчанию)
-
cancelTypeПереопределяет, отображать ли системное действие Отменить (
System.formCancel[]) на форме. Одно из:CANCEL— принудительно показатьNOCANCEL— принудительно скрыть
По умолчанию оно отображается, если форма является собственником сессии и содержит действия, способные изменить эту сессию.
-
READONLYКлючевое слово. Если указано, форма открывается в режиме только для чтения.
-
CHECKКлючевое слово. Если указано, при нажатии пользователем системного действия OK (
System.formOk[]) платформа сначала валидирует ожидающие применения изменения сессии (выполняет проход apply — ограничения, агрегации, обработчики событий — без фиксации); форма закрывается только если валидация прошла успешно, иначе остаётся открытой.
Примеры
date = DATA DATE (Order);
FORM showForm
OBJECTS dateFrom = DATE, dateTo = DATE PANEL
PROPERTIES VALUE(dateFrom), VALUE(dateTo)
OBJECTS o = Order
FILTERS date(o) >= dateFrom, date(o) <= dateTo
;
testShow () {
// начальные значения для двух объектов, действие инициализации после открытия
SHOW showForm OBJECTS dateFrom = 2010_01_01, dateTo = 2010_12_31 { MESSAGE 'On init'; };
// открытие в новой сессии как плавающее окно с новым объектом в качестве текущего
NEWSESSION {
NEW s = Sku {
SHOW sku OBJECTS s = s FLOAT;
}
}
// открытие именной формы со значениями панели, дополнительным фильтром и идентификатором экземпляра
SHOW 'recentOrders' = showForm OBJECTS dateFrom = 2024_01_01, dateTo = 2024_12_31 FILTERS number(o) > 1000 NOWAIT;
// открытие формы выбора класса Sku, сфокусированной на конкретном sku
NEW s = Sku { SHOW LIST Sku = s; }
}