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