7.1. Динамические заголовки
Last updated
Last updated
В отличие от жесткой заданной структуры заголовков формы ввода, ориентированной на ввод данных, структура заголовков отчетной системы JetCalc ориентирована на возможность динамического изменения с пересчетом значений в режиме реального времени. Проще всего продемонстрировать работу динамических заголовков на примере. На следующем рисунке на вкладке Отчет представлена типовая структура заголовка документа, в которой данные за отчетный период выводятся в одной колонке:
Панель параметров отчета, расположенная в правой части экрана, по умолчанию скрыта и выводится на экран при нажатии на кнопку Отображать настройки с иконкой в виде гаечного ключа.
При изменении любого параметра отчета структура заголовка динамические меняется с одновременным пересчетом всех данных. Значения параметров, у которых значения будут изменены по сравнению по значениями по умолчанию, выделяются темно-желтым цветом. Сделаем следующие изменения параметров текущего отчета:
параметр Откл-е выключим
у параметра План/факт заменим значение с План/факт на Факт
у параметра Число пред. месяцев установим значение 4 пред. мес.
параметр Доля в общем объеме выключим
В результате этих манипуляций в отчете будет выведена динамика месячных показателей с января по май с общим итогом за 5 месяцев, как это видно на следующем рисунке:
Представленный выше набор параметров отчетов настраивается для каждого документа индивидуально в зависимости от логики обработки показателей, содержащихся в колонках документа. На следующем рисунке в качестве примере приведены параметры отчета для калькуляций:
Порядок настройки параметров отчета и механизма их обработки состоит из следующих шагов:
Создание логических меток, выступающих в качестве операндов в логических выражениях фильтрации колонок.
Создание списков значений параметров отчета, которые будут обрабатываться отчетной системой JetCalc.
Установка для каждого списка значений параметров отчетов одной или нескольких логических меток с установкой для каждой метки логического значения TRUE или FALSE.
Создание логических групп параметров, используемых для визуальной группировки параметров на панели.
Создание параметров отчетов с установкой для каждого логической группы, списка значений и значения по умолчанию.
Добавление и настройка в документах одного или нескольких параметров отчетов с логическими метками, необходимыми для обработки выражений фильтрации колонок.
Настройка выражений фильтрации для отдельных колонок в заголовках документа.
Прежде чем приступить к описанию механизма работы параметров отчетов, следует сказать несколько слов о выражениях формально логики, которые положены в работу этого механизма. Выражения формальной логики очень похожи на арифметические выражения, но вместе с тем имеют ряд существенных отличий, которые приведены в следующей таблице (с некоторыми упрощениями, достаточными для понимания работы механизма динамических заголовков):
Характеристика выражений | Арифметика | Логика |
Значения, которые могут принимать операнды | Любые числовые значения | Только значения TRUE (ИСТИНА) или FALSE (ЛОЖЬ) |
Используемые операторы | + (сложение), - (вычитание), * (умножение) и / (деление) | AND (логическое И), OR (логическое ИЛИ) и NOT(логическое отрицание) |
Использование круглых скобок | Допускается | Допускается |
Очередность выполнения операций | * и / - в первую очередь, - и + во вторую очередь | NOT в первую очередь, AND и OR во вторую очередь |
Пример (в квадратных скобках приведены значения переменных) | ( A[3] + B[5] ) * C[2]= 8 | ( A[true] and B[false] ) or C[true] = true |
Для каждого из операторов определены достаточно простые правила формирования результата выражения (подробнее см. статью https://ru.wikipedia.org/wiki/Алгебра логики в Википедии):
а) AND - логическое И (конъюнкция), бинарная операция:
TRUE | and | TRUE | = | TRUE |
TRUE | and | FALSE | = | FALSE |
FALSE | and | TRUE | = | FALSE |
FALSE | and | FALSE | = | FALSE |
б) OR - логическое ИЛИ (дизъюнкция), бинарная операция:
TRUE | or | TRUE | = | TRUE |
TRUE | or | FALSE | = | TRUE |
FALSE | or | TRUE | = | TRUE |
FALSE | or | FALSE | = | FALSE |
в) NOT - логическое отрицание, унарная операция:
not | TRUE | = | FALSE |
not | FALSE | = | TRUE |
Логическими метками в JetCalc являются уникальные переменные, которые могут принимать значение TRUE или FALSE в зависимости от установленных значений параметров текущего отчета. Создание логических меток выполняется в административной панели в разделе Параметры > Метки. Внешний вид панели представлен на следующей рисунке:
Для каждой новой логической метки необходимо указать:
Код логической метки - уникальный код, содержащий информацию о предметной области.
Наименование - описание логической метки;
Краткое наименование - необязательный параметр.
Наиболее важным на данном этапе является выбор кода метки, который должен, с одной стороны, содержать информацию о предметной области, и, с другой стороны, быть достаточно лаконичным и простым в написании, чтобы свести к минимуму ошибки при написании выражений фильтрации.
Примеры меток:
MES и SNG - для фильтрации колонок по признаку месячных периодов или накопительных периодов с начала года;
PLAN и FACT - для фильтрации колонок по признаку значений по плану или факту.
Списком значений в JetCalc является уникальная метка, к которой могут быть привязаны две или более логических метки с определенными для каждой метки логического значения (TRUE или FALSE). Выделяют два типа меток по дальнейшему их использованию:
списки с двумя значениями - применяются для создания параметров отчетов в виде переключателей;
списки с тремя и более значениями - применяются для создания параметров отчетов в виде выпадающих списков.
Для каждого нового списка значений необходимо указать:
Код списка значений - уникальный код, содержащий информацию о предметной области;
Наименование - описание списка значений;
Краткое наименование - необязательный параметр;
Для удобства и наглядности последующей настройки параметров отчетов рекомендуется придерживаться соглашения, что код списка значений образуется путем объединения кода параметра отчета и одного из двух суффиксов:
_flag - для списков с двумя значениями
_list - для списков с тремя и более значениями
Создание списков значений выполнятся в административной панели в разделе Параметры > Списки значений. Внешний вид панели представлен на следующей рисунке:
В приведенном на рисунке примере представлен список значений с кодом mes_flag и наименованием За месяц (флаг), который в дальнейших примерах будет использован для настройки параметра отчета с кодом mes.
Чтобы иметь возможность применять ранее созданные логические метки и списки их значений, нужно их связать между собой, и в каждой связи установить для логических меток логическое значение TRUE или FALSE. Такая настройка выполняется в административной панели в разделе Параметры > Значения. Внешний вид панели представлен на следующей рисунке:
Для каждой связи списка значений и логических меток необходимо определить:
Код параметра - уникальный код параметра;
Наименование - описание параметра;
Краткое наименование - используется при выводе значения на интерфейсе для списков значений, содержащих более двух значений;
Список значений - выбранное значение из ранее созданного выпадающего справочника списков значений;
Индекс - целочисленное значение, определяющее порядок вывода списка значений, содержащих более двух значений.
Логические метки - одна или несколько меток, для каждой из которых определяется логическое значение TRUE или FALSE.
По соглашению коды связей списков значений и логических меток формируются путем соединения кода списка значений и всех связанных с ним кодов логических меток. При этом для меток, у которых установлено значения FALSE, перед кодом метки ставится оператор логического отрицания NOT. Например:
Для списка значений с тремя значениями внешний вид может выглядеть следующим образом:
При установке связей для списка значений, содержащего более двух значений, допускается указывать только метки, имеющие значение TRUE. Для отсутствующих логических меток предполагается, что для них установлено значение FALSE.
Эта возможность обусловлена приведением в большинстве языков программирования отсутствующего значения, которое обозначается как NULL, к логическому значению FALSE. Поэтому следующие выражения будут эквивалентны:
Вышеописанная конструкция позволяет создавать для одного и того же набора логических меток разные наборы списков значений. Например, для меток PLAN и FACT можно создать два списка значений, отдельно для плана и отдельно для факта, а можно создать общий список значений, в котором объединить эти две метки в три комбинации. Например:
Список значений | Значение метки PLAN | Значение метки FACT |
а) два разных списка: | ||
plan_flag_PLAN | TRUE | - |
plan_flag_NOT_PLAN | FALSE | - |
fact_flag_FACT | - | TRUE |
fact_flag_NOT_FACT | - | FALSE |
б) один общий список: | ||
planfact_list_PLAN_FACT | TRUE | TRUE |
planfact_list_PLAN_NOT_FACT | TRUE | FALSE |
planfact_list_NOT_PLAN_FACT | FALSE | TRUE |
Оба вышеописанных вариант с функциональной точки зрения абсолютно одинаковы. Отличаются они только удобством использования - в каких-то случаях лучше каждый параметр устанавливать отдельно, в в других случая лучше заранее установить допустимый набор комбинаций значений логических меток.
Логические группы параметров позволяют визуально выделить однородные группы в панели параметров отчетов. Создание логических групп параметров выполняется в административной панели в разделе Параметры > Группы. Внешний вид панели представлен на следующей рисунке:
Для каждой логической группы параметров необходимо определить:
Код группы - уникальный код логической группы параметров;
Наименование - описание логической группы параметров;
Краткое наименование - метка группы, выводимая на интерфейсе в панели параметров.
По соглашению у каждого кода логических групп параметров указывается префикс pg_.
Количество логических групп параметров не должно быть слишком большим, чтобы не захламлять интерфейс. На практике в большинстве случаев достаточно создать две логические группы параметров:
Отчетные периоды - для выделения параметров отчетов, управляющих фильтрацией колонок по категориям отчетных периодов; эта группа обычно присутствует у всех документов
Показатели - для выделения параметров отчета, управляющих фильтрацией колонок по видам показателей; обычно показатели, определенные на уровне колонок, индивидуальны для отдельных документов, поэтому управляющие ими параметры отчетов присутствуют только в этих документах.
Выполненные на предыдущих этапах шаги создают все необходимые справочники, позволяющие настраивать параметры отчетов, используемые при настройке документов. Создание параметров отчетов выполняется в административной панели в разделе Параметры > Параметры. Внешний вид панели представлен на следующей рисунке:
При настройке параметров отчетов необходимо указать следующие атрибуты:
Код параметра - код параметра отчета;
Наименование - наименование параметра отчета, выводимое на интерфейсе в панели параметров;
Краткое наименование - необязательный атрибут;
Индекс - целочисленное значение, определяющее порядок вывода параметра сверху вниз в панели параметров;
Логическая группа - устанавливается, в какой логической группе будет выводится параметр на интерфейсе;
Список значений - устанавливается используемый параметров список значений;
Значение по умолчанию - определяется значение по умолчанию параметра из допустимого списка значений.
Настроенные параметры отчетов добавляются индивидуально для каждого документа на вкладке Настройка документа в разделе Параметры отчетов. Внешний вид панели настройки представлен на следующем рисунке:
Для каждого добавленного параметра дополнительно устанавливаются следующие атрибуты:
Показывать - определяет видимость параметра в панели настройки параметров отчета; вне зависимости от видимости параметра его значения учитываются при обработки выражений фильтрации заголовков;
Группа периодов - устанавливается, для каких отчетных периодов данный параметр отчета выводится в панель отчетов;
Значение параметра - необязательный параметр, позволяющий переопределить значение параметра по умолчанию.
По мере добавления параметров отчета появляется возможность добавлять в выражения фильтрации логические метки, которые определены в этих параметрах. Настройка выражений фильтрации выполняется на вкладке Настройка колонок в разделе Фильтры, как это представлено на следующем рисунке:
Настройка выражений фильтрации выполняется в редакторе, схожем на редактор формул, который представлен на следующем рисунке:
В отличии от редактора формул вместо контекста документа справа размещается список доступных логических меток, которые определены в параметрах отчетов, настроенных для текущего документа.
Так как в подавляющем большинстве случаев выражения фильтрации представляют собой простой набор меток, объединенных логическим И (AND), поэтому редактор логических выражений позволяет автоматически генерировать такие выражения, выбирая щелчком левой кнопкой мыши нужные логические выражения из правого списка.
Наиболее типичные выражения фильтрации выглядят следующим образом:
Редактирование выражений фильтрации, включая удаление лишних логических меток, добавление скобок и произвольных логических меток, выполняется вручную.
Вместе с тем, перед настройкой логических выражений заранее устанавливать для документа все необходимые параметры отчетов. Это позволит избежать ситуации, когда отдельные колонки исчезаю из отчетов по причине того, что в выражении фильтрации есть логическая метка, для которой нет поддерживающего ее параметра отчета.