Необходима помощь в написании скрипта вывода НС

Здравствуйте! Отсутствие хорошего знания C# и устройства библиотеки DevExpress подвело в написании важного скрипта.

В ТСРВ024М(+) отключение питания (Код №0) и режим Наладка (обозначен флагом N) ставятся по окончанию события, те дни которые идут до появления этого флага необходимо тоже заполнить Кодом 0/N, если время работы было = 0 часов (необходимо получать значение WorkTime, если он 0, то добавлять в вывод Код НС → 0, Если < 24, то все прочие Коды)

Заранее спасибо!
123.jpg
test_M+.lersreport (543 KB)

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

Да, пожалуйста!
Data_2014-12-12_1154.xml (77.4 KB)

В понедельник (15.12.2014) сообщу результат.

Благодарю! А нет случаем руководства по классам DevExpress, конкретно по редактору отчетов? поделитесь?

Есть только на английском https://documentation.devexpress.com/#XtraReports/CustomDocument9820
или здесь https://www.devexpress.com/Support/Center/Question/Details/KA18929

это да я знаю, спасибо, буду дальше тогда там разбираться!

Еще алгоритм более подробнее:

  1. выводим отчет за период.
  2. в графе НС выводим DeviceErrorCodes, которые обрабатываем в скрипте по ; и |, в строку типа --0-N-
  3. Для ТСРВ024М(+) смотрим в коды НС, если там флаг 0 → выводим 0 и другие если есть, смотрим на следующий день и проверяем время работы Worktime, если оно 0 → выводим Код 0, если значение WorkTime < 24, смотрим коды НС и выводим их содержимое на этот день.
  4. Алгоритм для Наладки тот же, но примем, что код Наладка будем выводить из архива режимов 5 как по коду 0, так и по 1
  5. для ТМК нет флага начало события “Отключения питания”, поэтому там необходимо выводить флаг 0 пока Worktime = 0 и пока не встретится флаг окончания события 0 в DeviceErrorCodes

Я не совсем понял ваш алгоритм.

Во вложении отчетная форма, в скрипт которой (строки 26 - 47) я добавил пример кода для перебора всех меток времени отчетного периода с получением времени наработки, кодов и длительностей событий.

Поясните, пожалуйста, ваш алгоритм, в плане анализа времени наработки.
Что подразумевается под ‘код Наладка’?
test_M+_debug.lersreport (542 KB)

Архив режимов 5 имеет коды 0 и 1, 0 - Наладка, 1 - Работа, об этом речь

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

Вопрос, а переменные worktime, events, eventsduration они потом видны в EventGroups_BeforePrint??

Так еще раз про алгоритм:

проверяем worktime, если он < 24 часов, смотрим на DeviceErrorCodes на этот день, если там есть 0 - код отсутствия питания из архива событий 1, то выводим этот код в поле НС в отчетной форме и другие коды если они есть, смотрим на следующий день, если там время работы = 0 часов, это говорит о том что прибор все еще выключен и мы просто ставим код 0 (потому что в DeviceErrorCodes на этот день не будет никаких флагов вообще), смотрим дальше следующий день, опять если < 24 и есть код 0 то выводим 0 и другие, тоже самое с режимом Наладка. У нас может быть, что прибор выл выключен неделю и больше, в ЛЭРС код 0 будет выставлен только по окончанию события, все поля в промежутке будут пустыми и время работы в такие дни 0 часов, поэтому мы их должны заполнить кодом 0 (от начала и до конца)

Во вложении отчетная форма с примером скрипта для заполнения колонки ‘Классификатор ошибки’. Добавлен обработчик события запроса источника данных (строки 18 - 108), которой подымается до начала заполнения тела отчета.
В этом событии в таблицу источника данных добавляется новая колонка “NS”, которая связывается с ячейкой EventGroups и заполняется для каждой метки времени.

В скрипте даны комментарии.
test_M+_debug.lersreport (543 KB)

Спасибо большое, разбираюсь. Конечно слово Stop не стоит выводить, поправлю на 0 и N для Наладки