Использование выражений с данными из разных узлов
Вместо вычисляемых полей в отчётной форме можно использовать выражения. В отличии от вычисляемого поля выражение всегда привязано к какой-либо ячейке отчётной формы.
Важно
В выражении можно использовать поля из любых узлов источника данных.
Рассмотрим как можно решить задачу изложенную в 'Пример использования вычисляемого поля с данными из разных узлов' с помощью выражений без использования скриптов и вычисляемых полей. Задача: вывести процент отклонения фактического потребления воды и тепловой энергии от соответствующих договорных значений. Фактические значения потребления берутся из узла 'Архивы потреблений и интеграторов', а часовые договорные значения берутся из узла 'Параметры точки учета'.
ШАГ 1. Откройте в редакторе отчетов требуемую отчетную форму (главном меню пункт Справочники -> Отчетные формы) или создайте новую.
ШАГ 2. Переключитесь на режим использования выражений. Для этого с помощью кнопки откройте форму настройки свойств отчета:
В открывшейся форме надо выбрать пункт Convert to Expressions и сохранить изменения (кнопка на панели инструментов редактора отчетов) .
Важно
После преобразования привязок в выражения, обратный переход на привязки к полям не поддерживается.
ШАГ 3. В секцию ReportHeader добавьте ячейку для отображения часовой договорной нагрузки по потреблению воды и ячейку для отображения часовой договорной нагрузки по тепловой энергии. Свяжите эти ячейки с соответствующими полями из узла 'Параметры точки учета'.
В секциях PageHeader, Detail и ReportFooter добавьте колонки для отображения значений процентов отклонения от договорных нагрузок. Ячейку Дата в секции Detail свяжите с полем DataDate из узла 'Архивы потреблений и интеграторов'. Ячейки M1, M2, Mп, Q1, Q2, Qп в секциях Detail и ReportFooter свяжите с соответствующими полями из узла 'Архивы потреблений и интеграторов'.
ШАГ 4. Для ячеек Отклонение в секции Detail надо задать выражения для расчета процента отклонения от договорных нагрузок. Для этого надо выделить требуемую ячейку и щелкнуть левой кнопкой мыши на шевроне:
Щелчком на кнопке надо открыть редактор выражений и задать выражение для расчета процента отклонения. Для отклонения по массе:
100 * ([Архив суточный].[M] - 24 * [Параметры точки учета].[ContractFlow]) / (24 * [Параметры точки учета].[ContractFlow])
Для отклонения по теплу:
100 * ([Архив суточный].[Q] - 24 * [Параметры точки учета].[ContractHeat]) / (24 * [Параметры точки учета].[ContractHeat])
Поля в редакторе вставляются в выражение двойным щелчком мыши на требуемом поле:
ШАГ 5. Для ячеек Отклонение в секции ReportFooter надо задать выражения для расчета среднего процента отклонения от договорных нагрузок. Для среднего отклонения по массе:
sumAvg(100 * ([Архив суточный].[M] - 24 * [Параметры точки учета].[ContractFlow]) / (24 * [Параметры точки учета].[ContractFlow]))
Для отклонения по теплу:
sumAvg(100 * ([Архив суточный].[Q] - 24 * [Параметры точки учета].[ContractHeat]) / (24 * [Параметры точки учета].[ContractHeat]))
Для этого надо, как в ШАГ 4, открыть редактор выражений.
На вкладке Сводка выбрать (двойным щелчком левой кнопкой мыши) функцию sumAvg (расчет среднего значения) и аргументом задать выражение для расчета процента отклонения.
Используемые в выражении поля выбираются двойным щелчком мыши на требуемом поле.
Узел, в котором находится поле выбирается на вкладке Поля.
Выражение можно скопировать из выражения соответствующей ячейки Отклонение секции Detail.
ШАГ 6. Для ячеек M1, M2, Mп, Q1, Q2, Qп в секции ReportFooter задайте суммирование. Для этого надо в секции ReportFooter выделить требуемую ячейку и щелкнуть левой кнопкой мыши на шевроне:
Щелчком на кнопке надо открыть редактор выражений и двойным щелчком выбрать sumSum на вкладке Функции → Сводка:
Затем перейти на вкладку Поля, выбрать узел Архивы потреблений и интеграторов и двойным щелчком мыши добавить аргументом в функцию sumSum требуемое поле:
Сохранить выражение, нажав кнопку ОК.
ШАГ 7. С помощью кнопки на панели инструментов редактора отчетов сохраните сделанные изменения. Пример сформированного отчета: