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

Инструкция FORM

Инструкция FORM - создание формы.

Синтаксис

FORM name [caption] formOptions
formBlock1
...
formBlockN
;

После указания имени и заголовка формы в произвольном порядке указываются опции формы formOptions:

IMAGE path 
AUTOREFRESH period

После опций формы описываются в произвольном порядке блоки формы formBlock1 ... formBlockN:

OBJECTS ... 
TREE ...
PROPERTIES ...
FILTERS ...
[EXTEND] FILTERGROUP ...
ORDERS ...
EVENTS ...
REPORT propertyExpression
FORMEXTID extID
EDIT className OBJECT objectName
LIST className OBJECT objectName

Описание

Инструкция FORM объявляет новую форму и добавляет ее в текущий модуль. Кроме того эта инструкция позволяет описать структуру формы, а также ее статичное и частично интерактивное (за исключением дизайна формы) представление. В начале инструкции задаются имя и заголовки, затем указываются опции формы, а затем объявление содержит произвольное количество блоков, описывающих структуру формы. Их можно использовать в любом порядке, при условии что каждый блок объявляется позже блоков, элементы которых он использует. Каждый блок может использоваться произвольное количество раз.

Параметры

Опции формы (formOptions)

  • IMAGE path

    Указание относительного пути к файлу с картинкой, которая будет отображаться в качестве иконки формы.

    • path

      Путь к файлу. Строковый литерал. Путь указывается относительно каталога images.

  • AUTOREFRESH period

    Указание периода автоматического обновления формы через интервал времени. Если опция не задана, то форма автоматически обновляться не будет. deprecated since version 5, используйте EVENTS ON SCHEDULE refresh()

Блоки формы (formBlock1 ... formBlockN)

Примеры

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; }