Блоки объектов
Блоки объектов инструкции 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
groupName -
BEFORE
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)
;