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

Блоки объектов

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

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

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

  • viewType

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

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

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

  • AFTER groupName

  • BEFORE groupName

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

  • groupName

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

  • defaultObjectsType

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

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

  • IN 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)
;