Блоки объектов
Блоки объектов инструкции 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
Создание действия, которое будет вызываться при изменении текущего значения объекта.
-
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
обозначает, что должны быть считаны все объекты.-
pageSize
Количество считываемых объектов. Целочисленный литерал.
-
-
IN propertyGroup
Указание группы свойств и действий, которой принадлежит группа объектов. Используется только в иерархическом представлении.
-
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)
;