Доступность состояния опроса суточных архивов

Возможно ли получить по API данные, отражающие состояние опроса суточных архивов в виде цифровых показателей, соответствующих легенде на вкладке “Наличие данных”?

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

• Количество суток, за которые данные успешно сняты.
• Количество суток, за которые данные не сняты.
• Количество суток, за которые данные рассчитаны.
• Количество суток, по которым отсутствуют данные в приборе учёта.
• Количество суток, когда опрос не производился из-за отсутствия точки учёта в автоматическом опросе.

В REST API нет готовых методов получения непосредственно статуса данных, которые вы наблюдаете в разделе “Наличие данных”.

В LersFramework такая возможность присутствует (см. метод GetDataStatusAsync(DeviceDataType, DateTime, DateTime)).

Добрый вечер. При реализации описанной задачи столкнулся с проблемой. В IDE вижу следующие методы класса MeasurePointConsumptionRecord:

Соотнести их по названию с описанными в вопросе типами данных не представляется возможным – их количество не совпадает и названия мне ни о чём не говорят.

Страница из документации Framework’а не помогла – там даны комментарии только к трём методам.

Прошу пояснить, какие типы значений проверяются какими методами из Framework – или дать указание, откуда можно это понять

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

Он возвращает другой класс, в котором в одном из полей хранится перечисление, описывающее статусы.

Возникли вопросы по работе метода GetDataStatusAsync. Он возвращает MeasurePointDataStatus объект, в методе DayDataStatus (для суточных данных) лежит ReadOnlyCollection из строго двух экземпляров класса MeasurePointDataStatusRecord, независимо от того, что происходило в запрашиваемый период.

Например, при запросе статусов по объекту за диапазон с 23.05.2025 по 14.07.2025 я ожидал увидеть два периода: когда данных не было (с 23.05.2025 по 19.06.2025) и когда данные появились (с 20.06.2025 по 14.07.2025) – видно на скриншоте из ЛЭРС Учёт. Однако в результатах были только периоды, соответствующие интервалу наличия данных, а информация об отсутствии данных не отображается.


Аналогично для другого объекта, где есть один день, когда данные были рассчитаны 02.05.25. Мне не вернуло никаких данных по периоду с 03.07.25 по 14.07.25:


Вызов функции выглядит так:

var dataStatus = await mp.Data.GetDataStatusAsync(DeviceDataType.Day, startDate, endDate);

image

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

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

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

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

  • Lost = 1 – Данные отсутствуют в приборе.
  • Calculated = 2 – Данные рассчитаны.
  • CalculatedAndAbsent = 4 – Данные рассчитаны и отсутствуют в приборе.

Да, вроде, всё следует из уже данного описания. Lost - прибор сообщил, что данных у него за этот диапазон нет.

Calculated - данные рассчитаны, но ещё могут появиться в прибора. Например, досчитались текущие (неполные) сутки по часовым. При следующем автоопросе данные будут считаны.

CalculatedAndAbsent - данные рассчитаны, и прибор сообщил, что в архиве у него их нет. При следующем автоопросе данные не будут считываться.