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

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

Блоки объектов инструкции FORM - добавление групп объектов в структуру формы, а также деревьев объектов в интерактивное представление формы.

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

Синтаксис

OBJECTS groupDeclaration1 [groupOptions1], ...., groupDeclarationN [groupOptionsN]

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

[groupName =] (objectDeclaration1, ..., objectDeclarationK)

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

objectDeclaration

Каждый objectDeclaration, объявляющий объект, имеет следующий синтаксис:

[[name] [caption] =] classId objectOptions

Опции объекта objectOptions могут перечисляться друг за другом в произвольном порядке. Поддерживается следующий набор опций:

ON CHANGE actionId(param1, ..., paramM)
ON CHANGE actionOperator
EXTID objectExtID

После объявления каждой группы объектов опции группы groupOptions могут перечисляться в произвольном порядке:

viewType
insertPosition
defaultObjectsType
PAGESIZE pageSize
IN propertyGroup
EXTID extID
EXTKEY
SUBREPORT [subReportExpression]
BACKGROUND backgroundExpr
FOREGROUND foregroundExpr

Описание

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

Параметры

  • groupName

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

  • name

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

  • classId

    Идентификатор класса объекта.

  • caption

    Заголовок добавляемого объекта. Строковый литерал. Если заголовок не задан, то заголовком объекта будет являться заголовок класса.

Опции объекта

  • ON CHANGE actionName(param1, ..., paramM)

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

    • actionID

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

    • param1, ..., paramM

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

  • ON CHANGE actionOperator

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

  • EXTID objectExtID

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

    • objectExtID

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

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

  • viewType

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

    • PANEL

      Ключевое слово, при указании которого выбирается вид представления панель.

    • TOOLBAR

      Ключевое слово, при указании которого выбирается вид представления тулбар.

    • GRID

      Ключевое слово, при указании которого выбирается вид представления колонка таблицы. Является значением по умолчанию.

    • PIVOT [pivotOptions]

      При указании ключевого слова PIVOT выбирается вид представления сводная таблица. Опции этого вида представления pivotOptions могут указываться друг за другом в произвольном порядке:

      • pivotType

        Строковый литерал, который определяет начальный вид отображения сводной таблицы. Может принимать одно из следующих значений:

        • 'Table' (значение по умолчанию)
        • 'Table Bar Chart'
        • 'Table Heatmap'
        • 'Table Row Heatmap'
        • 'Table Col Heatmap'
        • 'Bar Chart'
        • 'Stacked Bar Chart'
        • 'Line Chart'
        • 'Area Chart'
        • 'Scatter Chart'
        • 'Multiple Pie Chart'
        • 'Horizontal Bar Chart'
        • 'Horizontal Stacked Bar Chart'
      • calcType

        Указание начальной агрегирующей функции. Может задаваться одним из ключевых слов:

        • SUM - сумма значений (значение по умолчанию)
        • MAX - максимум значений
        • MIN - минимум значений
      • settingsType

        Указание того, показываются ли пользователю настройки сводной таблицы. Может задаваться одним из ключевых слов:

        • SETTINGS - настройки показываются (значение по умолчанию)
        • NOSETTINGS - настройки не показываются
    • MAP [tileProvider]

      При указании ключевого слова MAP выбирается вид представления карта. По умолчанию в этом представлении используются карты OpenStreetMap. Существует возможность подключить карты Google или Yandex. Для этого необходимо подключить в проект модуль Geo.lsf, затем получить API-ключ для Google или Yandex и прописать его в Администрирование > Приложение > Настройки > Навигация.

      • tileProvider

        Строковый литерал, указывающий источник карт. Возможные варианты: 'google' и 'yandex'. Если не указывается, то источником карт будет являться OpenStreetMap.

    • CALENDAR

      Ключевое слово, при указании которого выбирается вид представления календарь.

    • CUSTOM renderFunction [HEADER expr]

      При указании ключевого слова CUSTOM выбирается пользовательский вид представления.

      • renderFunction

        Строковый литерал, определяющий имя JavaScript функции, которая отвечает за отображение данных. Эта функция должна находиться в .js файле, включенном в ресурсы проекта и загруженном для использования на клиенте. Она должна возвращать JavaScript объект, который содержит три функции:

        • render(element, controller)
        • update(element, controller, list, options)
        • clear(element) (опциональна)

        Более подробное описание механизма можно прочитать в статье How-to: Пользовательские компоненты (объекты).

      • expr

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

  • insertPosition

    Указание позиции вставки группы объектов в список групп объектов. Чаще всего используется вместе с механизмом расширения форм. Может задаваться одним из следующих способов:

    • AFTER groupName

    • BEFORE groupName

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

      • groupName

        Имя группы объектов. Простой идентификатор.

    • FIRST

      Ключевое слово, указывающее на то, что группа объектов будет добавлена в начало списка.

    • LAST

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

    • DEFAULT

      Ключевое слово, указывающее на то, что группа объектов добавляется в порядке объявления. Является значением по умолчанию.

  • defaultObjectsType

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

    • FIRST - указывает на то, что объектами по умолчанию будет первый набор объектов в соответствии с текущим порядком
    • LAST - последний набор объектов
    • PREV - предыдущий (или максимально близкий к нему) набор объектов
    • NULL - никакой (сброс)

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

  • PAGESIZE pageSize

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

  • IN propertyGroup

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

  • EXTID extID

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

    • extId

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

  • EXTKEY

    Ключевое слово, при указании которого в структурированном представлении значения объектов и свойств этой группы объектов представляются в виде ключ-значение, где ключом является значение объекта (набора объектов), а значением - значения свойств. По умолчанию они представляются как массив с наборами значений свойств.

  • SUBREPORT [subReportExpression]

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

    • subReportExpression

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

  • BACKGROUND backgroundExpr

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

    • backgroundExpr

      Выражение, значение которого определяет цвет фона.

  • FOREGROUND foregroundExpr

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

    • foregroundExpr

      Выражение, значение которого определяет цвет текста.

Примеры

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] [insertPosition]

Каждый groupDeclaration является объявлением группы объектов, полностью аналогичным объявлению в блоке объектов, описанном выше. Каждый parentBlock может быть описан одним из двух вариантов:

PARENT parentExpr
(PARENT parentExpr1, ..., parentExprK)

Первый вариант используется если группа объектов, для которой указывается этот блок, состоит из одного объекта, второй - из нескольких.

Описание

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

С помощью блока PARENT можно создавать иерархические группы объектов. Для этого указывается свойство, которое для объекта (либо нескольких объектов, в случае, если группа объектов содержит несколько объектов) определяет его родительский элемент.

Параметры

  • name

    Имя создаваемого дерева объектов. Простой идентификатор.

  • parentExpr

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

  • parentExpr1, ..., parentExprK

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

  • insertPosition

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

Примеры

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