Блоки объектов
Блоки объектов инструкции FORM
- добавление объектов (в том числе групп объектов) в структуру формы, а также деревьев объектов в интерактивное представление формы.
Блок объектов
Синтаксис
OBJECTS groupDeclaration1 [groupOptions1], ...., groupDeclarationN [groupOptionsN]
Каждый groupDeclaration
является объявлением группы объектов из нескольких объектов:
[groupName =] (objectDeclaration1, ..., objectDeclarationK)
либо группы объектов, состоящей из одиночного объекта:
objectDeclaration
Каждый objectDeclaration
, объявляющий объект, имеет следующий синтаксис:
[[name] [caption] =] classId [ON CHANGE actionId(param1, ..., paramM) | { actionOperator } ]
После объявления каждой группы объектов может быть указан набор опций groupOptions
:
viewType
INIT | FIXED
PAGESIZE pageSize
AFTER groupName
BEFORE groupName
defaultObjectsType
IN propertyGroup
EXTID extID
SUBREPORT [subReportExpression]
Описание
Один блок OBJECTS
может содержать несколько объявлений групп объектов, разделенных запятой. Группа объектов может содержать как несколько объектов, так и одиночный объект. В случае с объявлением одиночного объекта может использоваться упрощенный синтаксис без указания имени группы объектов и скобок. После объявления группы объектов могут указываются опции этой группы, они перечисляются друг за другом в произвольном порядке.
Параметры
groupName
Имя группы объектов. Простой идентификатор. Должно быть задано, если необходимо обращаться к группе объектов, состоящей из нескольких объектов. В случае группы объектов, состоящей из одиночного объекта, имя группы объектов будет равняться имени объекта и не задается.
name
Имя объекта. Простой идентификатор. Должно быть задано, если класс объекта является встроенным классом. В случае, когда класс объекта является пользовательским классом, имя может не задаваться. В этом случае оно будет равняться имени класса объекта.
classId
Идентификатор класса объекта.
caption
Заголовок добавляемого объекта. Строковый литерал. Если заголовок не задан, то заголовком объекта будет являться заголовок класса.
ON CHANGE actionName(param1, ..., paramM) | { actionOperator }
Указание действия, которое будет вызываться при изменении текущего значения объекта.
actionName
param1, ..., paramM
Список имен объектов на форме, которые будут использованы в качестве параметров действия. Количество этих объектов должно совпадать с количеством параметров действия. Имя объекта задается простым идентификатором.
actionOperator
Контекстно-зависимый оператор-действие. В качестве параметров можно использовать имена уже объявленных объектов на форме.
Опции группы объектов
viewType
Вид представления по умолчанию для группы объектов. Задается одним из ключевых слов:
PANEL
- вид отображения панель.TOOLBAR
- вид отображения тулбар.GRID
- вид отображения колонка таблицы. Используется по умолчанию.
PAGESIZE pageSize
Указание количества считываемых объектов в таблице. По умолчанию количество определяется динамически в зависимости от размера компонента в пользовательском интерфейсе и равняется
3 * <количество видимых строк в таблице>
. Значение0
обозначает, что должны быть считаны все объекты.pageSize
Количество считываемых объектов. Целочисленный литерал.
AFTER
groupNameBEFORE
groupNameУказание того, что группа объектов должна быть добавлена в структуру формы непосредственно перед (ключевое слово
BEFORE
) или после (ключевое словоAFTER
) заданной группы объектов. Чаще всего используется вместе с механизмом расширения форм. Если группа, перед (после) которой надо добавлять, находится в дереве, она должна быть первой (последней) в этом дереве.groupName
defaultObjectsType
Указание того, какой из наборов объектов создаваемой группы объектов будет являться текущим после изменения активных фильтров:
FIRST
- указывает на то, что объектами по умолчанию будет первый набор объектовLAST
- последнийPREV
- предыдущий
Если опция не указана, то платформа определяет какую опцию использовать в зависимости от текущих фильтров.
IN propertyGroup
Указание группы свойств и действий, которой принадлежит группа объектов. Используется только в иерархическом представлении.
propertyGroup
Имя группы свойств. Составной идентификатор.
EXTID extID
Указание имени, которое будет использоваться для экспорта / импорта этой группы объектов. Используется только в структурированном представлении.
extId
Строковый литерал.
SUBREPORT [subReportExpression]
Указание того, что при построении иерархии отчетов для данной группы объектов нужно создавать отдельный файл отчета.
subReportExpression
Выражение, значение которого будет использовано в качестве имени файла отчета для создаваемой группы объектов. В качестве параметров можно использовать имена уже объявленных объектов на форме. Предполагается, что значения этих объектов будут переданы при открытии формы в печатном представлении (если этого не будет сделано, они будут считаться равными
NULL
).
Примеры
CLASS Shipment;
// объявляем форму поставки
FORM shipments 'Поставки'
OBJECTS s = Shipment // добавляем один объект класса shipment
PAGESIZE 100 // указываем, что таблица всегда должна содержать 100 рядов
// ... добавляем свойства и фильтры на форму
;
// Объявляем форму, которая будет отображать обороты по товару за заданный интервал
name = DATA STRING[100] (Item);
revenue = DATA NUMERIC[16,2] (Item, DATE, DATE);
FORM revenues 'Обороты по товарам'
// объявляем группу объектов, состоящую из 2х объектов класса Дата с соответствующими заголовками,
// которая будет всегда отображаться в виде панели
OBJECTS interval = (dateFrom 'Дата (с)' = DATE, dateTo 'Дата (по)' = DATE) PANEL,
i = Item // добавляем список товаров
// добавляем на форму свойства значений объектов даты, при помощи которых пользователь сможет выбирать даты
PROPERTIES VALUE(dateFrom), VALUE(dateTo)
// добавляем имя товаров и свойство с оборотами товара за интервал дат
PROPERTIES name(i), revenue(i, dateFrom, dateTo)
;
// делаем форму печати ценника для товара
labelFile = DATA STRING[100] (Item);
printLabelFile (Item i)= OVERRIDE labelFile(i), 'MyModule_printLabel_i.jrxml' IF i IS Item;
FORM printLabel 'Печать ценника'
OBJECTS i = Item // добавляем товар, для которого будет печататься ценник
// помечаем, что в качестве шаблона должен использоваться файл, имя которого лежит в свойстве printLabelFile
// (предполагается что значение i будет передаваться в блоке OBJECTS). Например, пользователь может ввести
// туда myLabel1.jrxml, тогда система будет использовать файл, с именем myLabel1.jrxml
REPORT printLabelFile(i)
// ... другие свойства, необходимые для печати
;
Блок дерева объектов
Синтаксис
TREE [name] groupDeclaration1 [parentBlock1], ...., groupDeclarationN [parentBlockN] [treeOptions]
Каждый groupDeclaration
является объявлением группы объектов, полностью аналогичным объявлению в блоке объектов, описанном выше. Каждый parentBlock
может быть описан одним из двух вариантов:
PARENT propertyId
(PARENT propertyId1, ..., propertyIdK)
Первый вариант используется если группа объектов, для которой указывается этот блок, состоит из одного объекта, второй - из нескольких.
После объявления каждого дерева объектов может быть указан набор опций treeOptions
:
AFTER groupName
BEFORE groupName
Описание
Блок дерева объектов позволяет создавать дерево объектов. Первая указанная группа объектов будет формировать список объектов верхнего уровня, у каждого из которых будет дочерний список объектов второй указанной группы объектов и т. д.
С помощью блока PARENT
можно создавать иерархические группы объектов. Для этого указывается свойство, которое для объекта (либо нескольких объектов, в случае, если группа объектов содержит несколько объектов) определяет его родительский элемент.
Параметры
name
Имя создаваемого дерева объектов. Простой идентификатор.
propertyId
Идентификатор свойства, определяющего иерархию для группы объектов, состоящей из одиночного объекта. Указанное свойство должно иметь ровно один параметр, и возвращать в качестве значения родительский объект передаваемого объекта (либо
NULL
если передаваемый объект - самый верхний)propertyId1, ..., propertyIdK
Список идентификаторов свойств, определяющих иерархию для группы объектов, состоящей из нескольких объектов. Все указанные свойства должны иметь такое же количество параметров, как и количество объектов в группе объектов. Каждое из этих свойств должно возвращать в качестве значения один из родительских объектов передаваемых объектов (либо
NULL
если передаваемый набор объектов - самый верхний). Первое свойство должно возвращать первый родительский объект, второе свойство - второй объект, и т. д.
Опции дерева объектов
AFTER groupName
BEFORE groupName
Указание того, что дерево объектов должно быть добавлена в структуру формы непосредственно перед (ключевое слово
BEFORE
) или после (ключевое словоAFTER
) заданной группы объектов. Чаще всего используется вместе с механизмом расширения форм. Если группа, перед (после) которой надо добавлять, находится в дереве, она должна быть первой (последней) в этом дереве.groupName
Примеры
CLASS SkuGroup;
name = DATA ISTRING[100] (SkuGroup);
active = DATA BOOLEAN (SkuGroup);
parent = DATA SkuGroup (SkuGroup) AUTOSET;
CLASS Sku;
name = DATA ISTRING[100] (Sku);
skuGroup = DATA SkuGroup (Sku);
FORM skus 'Sku'
TREE groupTree g=SkuGroup PARENT parent(g)
PROPERTIES READONLY name(g)
FILTERS active(g)
OBJECTS s = Sku
PROPERTIES(s) name
FILTERS skuGroup(s) == g
;
CLASS Group1;
name = DATA STRING[100] (Group1);
CLASS Group2;
name = DATA STRING[100] (Group2);
CLASS Group3;
name = DATA STRING[100] (Group3);
in = DATA BOOLEAN (Group1, Group2);
in = DATA BOOLEAN (Group2, Group3);
FORM groups
TREE groups g1 = Group1, g2 = Group2, g3 = Group3
PROPERTIES READONLY name(g1), name(g2), name(g3)
FILTERS in(g1, g2), in(g2, g3)
;