Skip to end of metadata
Go to start of metadata

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

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

actionID

Идентификатор действия.

param1, ..., paramM

Список имен объектов на форме, которые будут использованы в качестве параметров действия. Количество этих объектов должно совпадать с количеством параметров действия. Имя объекта задается простым идентификатором.

actionOperator

Контекстно-зависимый оператор-действие. В качестве параметров можно использовать имена уже объявленных объектов на форме.

Опции группы объектов

viewType

Вид представления по умолчанию для группы объектов. Задается одним из ключевых слов:

  • PANEL - вид отображения панель.
  • TOOLBAR - вид отображения тулбар.
  • GRID - вид отображения колонка таблицы. Используется по умолчанию.

PAGESIZE pageSize

Указание количества считываемых объектов в таблице. По умолчанию количество определяется динамически в зависимости от размера компонента в пользовательском интерфейсе и равняется 3 * <количество видимых строк в таблице>. Значение 0 обозначает, что должны быть считаны все объекты.

pageSize

Количество считываемых объектов. Целочисленный литерал.

AFTER groupName

BEFORE groupName

Указание того, что группа объектов должна быть добавлена в структуру формы непосредственно перед (ключевое слово BEFORE) или после (ключевое слово AFTER) заданной группы объектов. Чаще всего используется вместе с механизмом расширения форм. Если группа, перед (после) которой надо добавлять, находится в дереве, она должна быть первой (последней) в этом дереве.

groupName

Имя группы объектов

defaultObjectsType

Указание того, какой из наборов объектов создаваемой группы объектов будет являться текущим после изменения активных фильтров:

Если опция не указана, то платформа определяет какую опцию использовать в зависимости от текущих фильтров.

IN propertyGroup

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

propertyGroup - имя группы свойств. Составной идентификатор.

EXTID extID

Указание имени, которое будет использоваться для экспорта / импорта этой группы объектов. Используется только в структурированном представлении.

extId

Строковый литерал.

SUBREPORT

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

subReportExpression

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

Примеры

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
 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 'Обороты по товарам'
    OBJECTS interval = (dateFrom 'Дата (с)' = DATE, dateTo 'Дата (по)' = DATE) PANEL, // объявляем группу объектов, состоящую из 2х объектов класса Дата с соответствующими заголовками, которая будет всегда отображаться в виде панели
            i = Item // добавляем список товаров
    PROPERTIES VALUE(dateFrom), VALUE(dateTo) // добавляем на форму свойства значений объектов даты, при помощи которых пользователь сможет выбирать даты
    PROPERTIES name(i), revenue(i, dateFrom, dateTo) // добавляем имя товаров и свойство с оборотами товара за интервал дат
;

1
2
3
4
5
6
7
8
9
 // делаем форму печати ценника для товара
labelFile = DATA STRING[100] (Item);
printLabelFile (Item i)= OVERRIDE labelFile(i), 'MyModule_printLabel_i.jrxml' IF i IS Item;
FORM printLabel 'Печать ценника'
    OBJECTS i = Item               // добавляем товар, для которого будет печататься ценник
    REPORT printLabelFile(i)       // помечаем, что в качестве шаблона должен использоваться файл, имя которого лежит в свойстве printLabelFile (предполагается что значение i будет передаваться в блоке OBJECTS)
                                   // например, пользователь может ввести туда myLabel1.jrxml, тогда система будет использовать файл, с именем myLabel1.jrxml
//  ... другие свойства, необходимые для печати
;

Блок дерева объектов

Синтаксис

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

Имя группы объектов

Примеры

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 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)
;

  • No labels