[16240] Условное групповое автоматическое формирование отчетов

Тема является продолжением: Отчет о потреблении на основе суточных данных с детализацией по суткам с неполной наработкой почасовыми значениями

Предложение: Реализовать возможность создания группового расписания автоматического формирования двух отчетов. Механизм групповой рассылки обсуждался здесь: [15859] Массовая рассылка отчетов о потреблении

Рассылка первого отчета осуществляется безусловно, рассылка второго должна происходить в зависимости от выполнения условия. Меня интересует условие: отклонение наработки в часах от отчетного периода не более чем на заданное значение в часах.

Кратко о применении:

Необходимо автоматизировать рассылку отчетов о потреблении ресурсов объектами более чем сотне абонентов (бюджетных организаций), у которых обычно по 1, 2 или 3 объекта. По требованию ЭСО если наработка в часах не равна отченому периоду, то необходимо предоставить почасовой отчет за сутки с неполной наработкой.

Получатели писем - ответственные за предоставление отчетов в ЭСО у абонентов. В схеме отчетности абонент должен предоставлять отчет о потреблении в ЭСО. Сначала я думал, что достаточно сделать условное расписание формирования одного отчета. Но анализ опыта такой рассылки в этом примере показывает, что из-за недостаточного опыта взаимодействия с ПК возникают организационные трудности, и иногда письмо игнорируется/теряется ответственным, и приходится разбираться с этим.

Не могу понять как это условие должно работать. Вместе с расписанием, или вместо него? У кого должна отклониться наработка? У любого объекта? И как тогда рассылать - по всем объектам в задании, или только по тем, у кого было отклонение?

Вместе с расписанием. Рассылка происходит при наступлении срока и при выполнении условия.

Для каждого отчета выбирается свой параметр наработки из точки учета, связанной с этим отчетом. Можно указать общее правило. Например, точка учета “Теплоснабжение” с порядковым номером 1 в объекте, связанном с отчетом.

Рассылать конкретный отчет, основываясь на значении наработки выбранной для этого отчета.

Нужно вернуться к обсуждению, я пока не совсем понимаю вот эти моменты.

Одно задание автоформирования отчёта формирует один отчёт, в который входят множество объектов или точек учёта.

Для ведомости параметра по точке в этот отчёт входит несколько финальных отчётных документов. Для сводного отчёта это один отчётный документ, который содержит строки для точек учёта, которые выбраны в задании.

Допустим, что время наработки по одной из этих точек учёта отклонилось от заданного значения. Как в этом случае должны быть сформированы отчёты типа “Ведомость параметров” и “Сводный”.

Есть два варианта:

  1. Формируются отчётные документы для всех точек учёта, которые изначально заданы, даже если наработка для них в норме.
  2. Формируются отчётные документы только для тех точек, по которым зафиксировано отклонение. В случае ведомости параметров будет одна ведомость по точке с отклонением. В случае сводного будет отчёт, в котором только одна точка - по которой зафиксировано отклонение.

Вот что мне надо понять.

В данном случае условное формирование требуется только для отчета типа “Ведомость параметров”. Для сводного отчета не вижу необходимости. Отсутствие строки в сводном отчете из-за неполной наработки реализуется средствами построения отчета.

Ответ: вариант 2, в той части, которая касается отчета типа “Ведомость параметров”.

Я вижу, что задача крайне специфична для вашего конкретного случая. Как минимум потому, что реакции от других пользователей нет.

Сразу возникают вопросы:

Только ли время наработки потребуется? Не возникнет ли ситуация, когда, например, нужно будет отправлять отчёт в случае превышения расхода?

Не возникнет ли ситуация, когда нужно будет другой, более сложный критерий? Если мы сделаем “в лоб” как вы просите, то любые доработки этого механизма сделают его очень сложным, и пользоваться им не будут.

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

Однако, в сервере ЛЭРС уже есть подсистема, которая позволяет запускать скрипты на языке JS. В теории можно дать возможность для задания автоопроса запрограммировать фильтр, который вернёт признак надо ли сформировать отчётный документ для точки, или нет.

Фильтр будет вызван для каждой точки учёта, которая входит в задание.

Фильтр может выглядеть как-то так

// Получаем всё потребление за интервал формирования отчёта

const consumption = measurePoint.GetConsumption(interval);

// Считаем общее время наработки

const totalNormalOperationDuration = consumption.reduce((sum, item) => sum + item.GetValue(DataParameter.NormalOperationDuration), 0)

// Отчёт формируется если время наработки меньше 700 часов

return totalNormalOperationDuration < 700

Таким образом можно будет сделать практически любой критерий и гибко его подогнать под задачи. Например, в скрипте можно будет использовать значения атрибутов точек, что в некоторых случаях может быть очень полезно.

Это текущее формальное требование. Оно не новое. Оно давнее. В этом кейсе ЛРС новый элемент. Это все что могу сказать

Да, задача специфическая. Если будет работать со скриптом - меня устроит