Инструкция FORM
Инструкция FORM
- создание формы.
Синтаксис
FORM name [caption] formOptions
formBlock1
...
formBlockN
;
После указания имени и заголовка формы в произвольном порядке указываются опции формы formOptions
:
imageSetting
LOCALASYNC
После опций формы описываются в произвольном порядке блоки формы formBlock1 ... formBlockN
:
OBJECTS ...
TREE ...
PROPERTIES ...
FILTERS ...
[EXTEND] FILTERGROUP ...
USERFILTERS ...
ORDERS ...
PIVOT ...
EVENTS ...
REPORT propertyExpression
FORMEXTID extID
EDIT className OBJECT objectName
LIST className OBJECT objectName
Описание
Инструкция FORM
объявляет новую форму и добавляет ее в текущий модуль. Кроме того эта инструкция позволяет описать структуру формы, а также ее статичное и частично интерактивное (за исключением дизайна формы) представление. В начале инструкции задаются имя и заголовки, затем указываются опции формы, а затем объявление содержит произвольное количество блоков, описывающих структуру формы. Их можно использовать в любом порядке, при условии, что каждый блок объявляется позже блоков, элементы которых он использует. Каждый блок может использоваться произвольное количество раз.
Параметры
-
name
Имя формы. Простой идентификатор. Имя должно быть уникально в пределах текущего пространства имен.
-
caption
Заголовок формы. Строковый литерал. Если заголовок не задан, то заголовком формы будет являться ее имя.
Опции формы (formOptions
)
-
imageSetting
Настройка отображения иконки формы. По умолчанию наличие иконки или ее отсут ствие регулируется параметрами
settings.defaultImagePathRankingThreshold
иsettings.defaultAutoImageRankingThreshold
. Эта опция, позволяет настроить отображение иконки вручную. Может иметь один из двух видов:-
IMAGE [fileExpr]
Указание относительного пути к файлу изображения, которое будет отображаться в качестве иконки формы. Если
fileExpr
не указывается, то происходит переключение в режим отображения иконки по умолчанию.-
fileExpr
Выражение, значение которого определяет путь к файлу изображения. Путь указывается относительно каталога
images
.
-
-
NOIMAGE
Ключевое слово, указывающее на то, что иконка формы должна отсутствовать.
-
-
LOCALASYNC
Ключевое слово, указывающее на то, что обработки локальных событий будут выполняться после отображения изменений на форме.
Блоки формы (formBlock1 ... formBlockN
)
-
OBJECTS ...
Добавляет объекты на форму. Синтаксис блока объектов.
-
TREE ...
Добавляет дерево объектов на форму. Синтаксис блока дерева объектов.
-
PROPERTIES ...
Добавляет свойства и действия на форму. Синтаксис блока свойств и действий.
-
FILTERS ...
Добавляет фиксированные фильтры на форму. Синтаксис блока фиксированных фильтров.
-
[EXTEND] FILTERGROUP ...
Добавляет группу фильтров на форму либо расширяет существующую. Синтаксис блока группы фильтров.
-
USERFILTERS ...
Добавляет пользовательские фильтры на форму. Синтаксис блока пользовательских фильтров.
-
ORDERS ...
Добавляет сортировки на форму. Синтаксис блока сортировок.
-
PIVOT ...
Устанавливает начальные настройки вида представления сводная таблица. Синтаксис блока сводных таблиц.
-
EVENTS ...
Устанавливает действия, выполняемые при определенных событиях. Синтаксис блока событий.
-
FORMEXTID extID
Указание имени, которое будет использоваться для экспорта / импорта этой формы. Используется только в структурированном представлении.
-
extId
Строковый литерал.
-
-
REPORT propertyExpression
Указание свойства, значение которого будет использовано в качестве имени файла отчета для пустой группы. В качестве параметров можно использовать имена уже объявленных объектов на форме. Предполагается, что значения этих объектов будут переданы при открытии формы в печатном представлении (если этого не будет сделано, они будут считаться равными
NULL
).-
propertyExpression
-
-
EDIT сlassName OBJECT objectName
Устанавливает текущую форму в качестве формы редактирования объектов указанного класса.
-
className
Имя пользовательского класса, при редактировании объектов которого будет вызываться описываемая форма. Задается составным идентификатором.
-
objectName
Имя объекта формы, который будет использоваться для редактирования. Задается простым идентификатором.
-
-
LIST сlassName OBJECT objectName
Устанавливает текущую форму в качестве формы выбора объекта указанного класса.
-
className
Имя пользовательского класса, для выбора объекта которого будет вызываться описываемая форма. Задается составным идентификатором.
-
objectName
Имя объекта формы, текущее значение которого будет использоваться в качестве выбираемого объекта. Задается простым идентификатором.
-
Примеры
CLASS Document;
// объявляем форму Документы
FORM documents 'Документы'
// Добавляем один объект класса Document, по этому имени объект будет доступен в операторах
// DESIGN, SHOW, EXPORT, DIALOG и др.
OBJECTS d = Document
// ... добавляем свойства и фильтры на форму
// помечаем что данная форма должна использоваться, когда необходимо выбрать документ,
// при этом объект d должен использоваться как возвращаемое значение
LIST Document OBJECT d
;
CLASS Item;
// объявляем форму Товар
FORM item 'Товар'
// добавляем объект класса Item и помечаем, что он должен отображаться в панель
// (то есть видимо только одно значение)
OBJECTS i = Item PANEL
// ... добавляем свойства и фильтры на форму
// помечаем что данная форма должна использоваться, когда необходимо добавлять или редактировать товар
EDIT Item OBJECT i
;
// объявляем форму со списком Товаров
FORM items 'Товары'
OBJECTS i = Item
// ... добавляем свойства и фильтры на форму
// добавляем кнопки, которые будут создавать и редактировать товар, используя форму item
PROPERTIES(i) NEWSESSION NEW, EDIT
;
CLASS Invoice;
CLASS InvoiceDetail;
// объявляем форму печати инвойса
FORM printInvoice
OBJECTS i = Invoice // добавляем объект класса инвойс, для которого будет идти печать
// ... добавляем свойства и фильтры на форму
;
// разбиваем определение формы на две инструкции (вторую инструкцию можно перенести в другой модуль)
EXTEND FORM printInvoice
// добавляем строки инвойса, каждая из которых будет использоваться в отчете в качестве детализации
OBJECTS d = InvoiceDetail
// ... добавляем свойства и фильтры на форму
;
// объявляем действие , при выполнении которого будет открываться форма печати инвойса
print (Invoice invoice) { PRINT printInvoice OBJECTS i = invoice; }