Структура отчетов, форм, реестров¶
Содержание
Ключевым отличием отчетов (форм) от реестров является то, что в отчете в каждой клетке может быть свой объект Системы (в том числе вычисленный в процессе построения отчета), а в реестре каждая строка - это один существующий объект.
Принцип построения отчетов и форм¶
Для построения отчета или формы необходимо сначала задать структуру его строк и столбцов.
Заголовки строк и столбцов могут быть трех типов:
- Источник данных – показатель, значение которого должно выводиться в ячейке отчета.
- Фильтры – условия отбора объектов для включения в отчет.
- Оформительские заголовки – заголовки отчета, которые не влияют на содержимое соответствующих ячеек (только в конструкторе).
В Системе возможно создание как простых отчетов, так и отчетов со сложной древовидной структурой. Во втором случае каждая ветка дерева будет порождать отдельную строку или столбец.
У каждой ячейки отчета должен быть только один источник данных. Источники данных для отчета могут располагаться либо только в заголовках строк, либо только в заголовках столбцов отчета. Количество источников данных в отчете не ограничено.
В простейшем случае в каждой ячейке отчета будет выводиться значение, полученное следующим образом: объекты Системы отбираются согласно источнику и фильтрам; после этого должен остаться один объект, у которого определен источник, значение источника будет выведено в ячейку отчета. Если в результате отбора объектов с помощью фильтров получилось более одного объекта, подходящего для вывода в одну ячейку, то в этой ячейке возникает расслоение отчета (ячейка будет окрашена в оранжевый цвет). При клике по ней левой кнопкой мыши можно узнать подробную информацию.
Описание способов устранения расслоений см. в подразделе Расслоения.

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

В случае, если вычисленное и откорректированное значения совпадают, то ячейка будет окрашена в бледно-желтый цвет.

Процедура формирования форм аналогична процедуре формирования отчета.
Динамические отчеты¶
В Системе существует возможность построения динамических отчетов (отчетов, количество строк в которых зависит от существующих в Системе данных). Такие отчеты необходимы, например, если неизвестно для каких конкретно значений аналитических признаков нужно построить таблицу, и нужно показать все те, для которых есть значения.
Для построения динамического отчета необходимо оставить заголовки строк пустыми, а все источники и фильтры разместить только в заголовках столбцов или во внешних фильтрах отчета. При этом из фильтров нельзя построить иерархическую структуру, если в ней нет источника.
Логику расчета динамического отчета можно представить следующим образом:
- Взять все заголовки столбцов, в которых нет источника (то есть столбцы-фильтры).
- Для них строятся все возможные сочетания значений.
- Для каждого сочетания вычисляются значения заголовков с источниками.
- Если ни для одного из заголовков с источником нет значений для такого набора фильтров (либо если у источника включено «Не учитывать при пропуске пустых»), то такой набор признаков не отображается.
- Если значение хотя бы одного заголовка с источником посчиталось, то в отчете появляется строка с таким набором признаков и соответствующими значениями источников.
В динамических отчетах можно сделать группировку строк, отметив «группировочный» в заголовке-фильтре. Например, если есть два показателя (два столбца-фильтра в отчете) - «Бренд» и «Модель», по которым перечисляются все товары в магазине (Apple iPhone 5, Apple iPhone SE, Apple iPhone 10 и Samsung Galaxy S, Galaxy Fold, Galaxy Note), то для того, чтобы не повторять название бренда при каждом товаре, следует сделать источник «Бренд» группировочным, и под него свернутся все принадлежащие этому бренду модели.

Динамический отчет автоматически пропускает пустые строки, т.е. показывает только те значения признаков, для которых есть хотя бы одно значение в его строке. Существуют показатели, которые есть для всех значений. К ним относятся, например, расчетные показатели. Для того, чтобы не учитывать их при построении, следует поставить галочку в настройках «Не учитывать при пропуске пустых строк». Настройки находятся в левом верхнем углу окна показателя, которое вызывается нажатием на шестеренку около его названия в заголовках. Необходимо нажать на шестеренку и проставить галочку «Не учитывать при пропуске пустых строк».

Принцип построения реестра¶
Реестры представляют собой перечни объектов, удовлетворяющих определенным условиям. В реестрах предусмотрены только заголовки столбцов и внешние фильтры, но нет заголовков строк. Каждой строке в реестре соответствует один объект.
Заголовки столбцов могут быть двух типов:
- Источники - показатель, значение которого выводится в ячейке отчета.
- Оформительские - отображаются в заголовках отчета, но не влияют на содержимое соответствующих ячеек (только в конструкторе).
При построении реестра формируется запрос в Систему вида «выбрать все объекты, для которых определены указанные показатели-источники и соблюдаются условия, указанные во внешних фильтрах». При построении реестра отображаются все данные, которые есть в Системе по данному запросу.
В реестре, как и в отчете, действует условие единственности источника для каждой ячейки. Фильтров в столбцах реестров быть не может (только внешние фильтры), т.к. условия применяются на всю строку в целом, а не на определенные столбцы. Иерархическая структура заголовков столбцов в реестре может быть образована с помощью заголовков-источников и оформительских заголовков при условии, что в каждом столбце присутствует один и только один источник.
Источники в реестрах могут быть обязательными и необязательными.
По умолчанию все источники обязательны для заполнения. Это значит, что если у какого-то объекта не определен один из обязательных показателей-источников, он не будет выведен в реестре. При вводе данных через реестр строка не будет сохранена, если не будут заполнены все обязательные ячейки. При просмотре реестра все обязательные для заполнения столбцы отмечены красной звездочкой рядом с названием заголовка столбца.
Чтобы поле стало необязательным для заполнения, можно в настройках источника отметить галочкой «Может быть пустым» (тогда при просмотре реестра не появится красная звездочка «Обязательно для заполнения» рядом с названием заголовка столбца).

В реестрах не может быть расслоений, т.к. если несколько объектов удовлетворяют условиям реестра, это порождает несколько строк в реестре.
Реестр из справочника¶
Для построения реестра из справочника необходимо в конструкторе реестра нажать на кнопку «Значение из справочника» или в аналитической панели в настройках (в верхнем меню страницы) выбрать «Из справочника», а затем в выпадающем списке выбрать справочник, по которому необходимо построить реестр. Тогда в реестре будут видны только объекты, принадлежащие указанному справочнику.

В качестве источника данных необходимо выбрать показатель «Название». В этом столбце будут выводиться названия всех уже существующих в Системе элементов этого справочника. При необходимости добавить другие показатели – источники данных, которые необходимо определить для элементов справочника (поля справочника). Для того, чтобы можно было добавлять новые значения в реестр, необходимо установить для показателей флаг «Может быть пустым».
Все созданные через реестр элементы справочника будут отображаться при просмотре справочника по клику по его названию в списке всех справочников (Меню => «Справочники»).