Содержание материала

4. RepCNF – редактор шаблонов и генератор отчетов

Программа RepCNF совмещает два режима работы – (1) создание/редактирование шаблона отчета и (2) генерация/просмотр отчета. Доступность режимов определяется правами пользователя.
Принцип работы программы основан на OLE-автоматизации MS Excel. Пользователю доступны все возможности Excel (xls-документ является как бы частью программы RepCNF), при этом обеспечивается привязка ячеек электронной таблицы к БД Электро и сценарий работы генератора отчетов.
Предупреждение. Ответственность за отсутствие лицензии на программу MS Excel возлагается на пользователя.
Для работы с RepCNF важно уяснить следующую терминологию.
Xls-документ – произвольный документ (файл) программы MS Excel.
Шаблон отчета (далее – Шаблон) – это xls-документ, импортированный в среду программы RepCNF и содержащий заготовку отчетной формы с привязками к БД Электро. Шаблон хранится в БД ElectroCNF. Преобразование шаблона (внутреннее хранение) в xls-документ (файл) и обратно обеспечивается командами FileàExport и FileàImport. Шаблон доступен для редактирования (при условии наличия соответствующего полномочия у пользователя) и генерации Отчета.
Отчет – это результат исполнения Шаблона. Вне зависимости от полномочий пользователя отчет доступен только для просмотра и печати. Отчет также можно сохранить в БД ElectroCNF командой PrintàPaperSave.
В зависимости от текущего состояния программы RepCNF (полномочия пользователя; наличие и тип документа (Шаблон/Отчет)) пользователю доступен определенный набор команд. Запрещенные в данном состоянии команды затенены.

Внешний вид экранной формы при запуске программы RepCNF следующий:
вид экранной формы при запуске программы RepCNF

Пользователю необходимо нажать на кнопку LogON для выполнения регистрации. В зависимости от полномочий пользователя ему будет доступны все режимы работы либо только генерация/просмотр отчетов.
ВНИМАНИЕ. При первоначальной установке системы создается единственный пользователь – Supervisor (все полномочия) с паролем best4you.

После регистрации пользователю доступна кнопка Open (дублирует пункт меню FileàOpen) для открытия либо создания нового шаблона отчета:
для открытия либо создания нового шаблона отчета

Рассмотрим подробнее элементы данной экранной формы.
Левое окно содержит древовидный каталог, облегчающий пользователю навигацию Шаблонов/Отчетов. Двойной щелчек на элементе дерева раскрывает/закрывает подкаталоги. Правый щелчек открывает меню редактирования дерева:
Add - добавление нового элемента к выбранному элементу дерева.
Delete - удаление выбранного элемента. Удаление возможно при отсутствии подэлементов и ассоциированных с данным элементом шаблонов (содержимое правого окна).
Rename - переименование выбранного элемента.
Add root - добавление нового корневого элемента.
Меню редактирования разрешено для пользователя с полномочиями редактирования шаблонов.
Правое окно содержит список Шаблонов для выбранного в левом окне элемента. Двойной щелчок на некотором шаблоне делает доступной кнопку ReadShablon. При этом в нижнеи окне выводится список ранее сохраненных отчетов для данного шаблона. Правый щелчек открывает меню редактирования списка шаблона:
Add - добавление нового шаблона
Delete - удаление выбранного шаблона
Rename - переименование выбранного шаблона
Меню редактирования разрешено для пользователя с полномочиями редактирования шаблонов.
Нижнее окно содержит список Отчетов (сохраненных ранее командой PrintàPaperSave) для выбранного в правом окне Шаблона. Двойной щелчек на выбранном отчете делает его доступным для чтения (кнопка ReadPaper). При этом кнопка ReadShablon исчезает. Правый щелчек открывает меню редактирования списка отчетов:
Rename - переименование выбранного отчета.
Delete - удаление выбранного отчета.

Таким образом, данная экранная форма позволяет пользователю, перед загрузкой шаблона либо отчета, изменить дерево каталогов и отредактировать список шаблонов и отчетов.
Выход из экранной формы – нажатием кнопки ReadPaper (загрузка отчета для последующего просмотра/печати), ReadShablon (загрузка шаблона для последующего редактирования и генерации отчета) либо Cancel (отмена загрузки; однако это не отменяет выполненные команды редактирования).
В случае загрузки вновь созданного шаблона программа запрашивает у пользователя выбор xls-документа (файла), который и будет использован в качестве нового шаблона. Это может быть пустой либо произвольный xls-документ, либо ранее экспортированный шаблон.

Итак, для примера создадим новый шаблон на базе пустого xls-документа. Окно программы будет иметь вид:
новый шаблон на базе пустого xls-документа

Внешне все напоминает программу MS Excel. Так оно и есть на самом деле – Excel является частью программы RepCNF. Соответственно, возможны все доступные в Excel действия – при условии наличия у пользователя полномочий редактирования шаблона.
Созданный нами новый шаблон не имеет привязки к БД Electro. Это делается с помощью команд LinkàDefineDate и LinkàLink (дублируется кнопкой Link).
Команда DefineDate создает в выбранной ячейке определение даты, которое будет использовано при генерации отчета.
Команда Link создает привязку выбранной ячейки к параметру БД Электро.
Отметим, что команды DefineDate и Link не оперируют с конкретными датами и значениями данных – производится только установка некоторых определений, необходимых на последующем этапе генерации отчета.
Итак, отметим ячейку А1 на листе Sheet1 и выполним команду DefineDate:
DefineDate

Выполним установки, как сделано на данном примере.
Мы установили метку времени класса «Месяц» и назвали ее «ОтчетныйМесяц». На этапе генерации отчета пользователю будет задан вопрос «Укажите отчетный месяц». Введенное значение будет присвоено ячейке (в нашем случае это ячейка A1).
В случае отметки “Don’t ask date from user” вопрос не задается, используется текущее значение ячейки.
Жмем кнопку OK. Выполненные нами установки сохраняются в виде комментария к ячейке, о чем сигнализирует красный треугольник в верхнем левом углу ячейки A1. Не рекомендуется редактировать этот комментарий вручную (средствами Excel). Для изменения установок необходимо повторно выполнить команду DefineDate для данной ячейки.
В случае сложного отчета может потребоваться несколько определений даты разного типа.

Следующий этап – привязка некоторой ячейки к БД Электро. Выберем ячейку А3 и нажмем кнопку Link:
привязка некоторой ячейки к БД Электро

Выполняем навигацию по БД Электро для поиска необходимого нам параметра – в нашем случае «Сч.E00002233 Суточный график, канал 5». Выполняем двойной щелчек на выбранном параметре (правое окно), наблюдаем появление его наименования в нижней части формы.
В секциях FROM, TO определяем диапазон выборки данных. В нашем шаблоне ранее было создано определение даты ОтчетныйМесяц. Определяем диапазон [ОтчетныйМесяц+0; ОтчетныйМесяц+1]. Секцию TO можно оставить пустой – в этом случае будут выбраны данные с меткой времени, в точности соответствующей 00:00:00 1-го числа месяца.
Замечание. В БД Электро принято, что параметры, имеющие периодическое свойство (пол-часа, сутки, месяц и т.п.) хранятся в БД с меткой времени, соответствующей началу периода.
Следующий шаг – определение секции Data Placement. Имется возможность выбора одного из четырех вариантов визуализации данных. Вы можете проверить их экпериментальным путем.
Следующий шаг – секция MultiLine. Мы хотим прочитать суточный график (предположим, имеющий период 30минут) за некоторый месяц (30дней) – т.е. 48*30 = 1440 точек. При неотмеченном MultiLine весь график читается в одну и ту же ячейку – в результате мы будем видеть в отчете значение только последнего получаса месяца.
Нас это не устраивает – отмечаем MultiLine. Теперь данные будут размещаться вниз начиная с указанной ячейки. Отмечаем Split by 48 rows – теперь данные будут размещаться колонками по 48 значений (т.е. для каждого дня своя колонка).
Следующий шаг – секция If no data – регламентирует поведение генератора отчета в случае отсутствия данных.
Секция Agregation предназначена для работы с телеметрической системой NRS (в стандартной конфигурации секция недоступна). Система NRS содержит БД телеметрической информации с неэквидистантными отсчетами (аналоговые/дискретные входы). Секция Agregation позволяет привести эти измерения к стандартному периоду в соответствии с указанной функцией агрегатирования (арифметическое среднее, интегральное среднее, время нахождения в состоянии включено/выключено, минимум/максимум и т.п.).
Секция Represent Date изменяет представление метки времени – начало (принято в системе Электро) либо конец периода.
Итак, выполним установки согласно примеру, жмем OK. Как и в случае с DefineDate, выполненные нами установки сохраняются в виде примечания к ячейке. Для изменения установок следует повторно применить команду Link к выбранной ячейке.
Простейший пример шаблона готов. Сохраняем его в БД Электро (FileàSave).
То, что мы делали, называется «Редактирование шаблона». Эти действия были возможны, т.к. мы имели полномочия на редактирование шаблона.
Нажатием кнопки Report мы приступаем к «Генерации отчета». Это действие доступно и обычному пользователю после загрузки существующего шаблона.
Действия программы RepCNF при генерации отчета:
- Проверяется наличие и правильность привязок. В случае обнаружения ошибки привязки выводится сообщение с указанием неправильной ячейки. Необходимо выполнить повторное редактирование привязки (это может сделать пользователь с соответствующими полномочиями);
- В случае необходимости у пользователя запрашивается ввод метки времени для имеющихся в шаблоне определений:
ввод метки времени
Отметим, что в зависимости от типа метки времени (в нашем примере метка имеет месячный период) некоторые элементы (у нас – время и день месяца) будут приведены к стандартному значению – в нашем случае 01 декабря 2001г. 00:00:00;
- Для каждой привязки к БД Электро выполняется запрос с конкретными значениями меток времени.
При успешной генерации отчета имеем сообщение
При успешной генерации отчета
(отчет готов, прочитано 1440 значений, на генерацию отчета ушло 0.2 секунды).
Начиная с данного момента, RepCNF работает в режиме «Просмотр отчета». Редактирование документа запрещено. Нельзя также экспортировать отчет в xls-документ – из соображения сохранения коммерческой целостности.
Отметим доступность команды PrintàPaperSave – сохранение отчета в БД Электро.

4.1. Замечания и рекомендации по использованию RepCNF

  • Пользователь с полномочиями администратора системы может зарегистрировать новых пользователей командой UseràEditUsers
  • К сожалению, вопросы OLE-автоматизации MS Excel плохо документированы и изучены. Некоторые действия могут вызвать сообщение об ошибке (это может зависеть от состояния Вашего компьютера и имеющейся версии MS Excel). Как правило, решением является повторное выполнение действия; в некоторых случаях – перезапуск программы RepCNF. Рекомендуется также перед повторным запуском RepCNF c помощью Диспетчера Задач (Ctrl+Alt+Del) проверить наличие в памяти компьютера «невидимых» экземпляров RepCNF и Excel и удалить их. При регулярно возникающих проблемах необходимо проверить конфигурацию компьютера и попробовать обновить Excel (установить новую версию либо Sevice Pack).

Следует отметить, что вероятность появления ошибок взаимодействия с Excel не снижает достоверности отчета. Отчет либо будет сгенерирован правильно, и Вы получите об этом уведомление; либо, при наличии ошибки, программа не войдет в режим просмотра отчета.

  • При печати отчета иногда необходимо определить зону печати. Если команды PrintàPageSetup и PrintàPrintSetup у Вас не работают, это можно сделать в «чистом» Excel. Для этого необходимо экспортировать шаблон в xls-файл (FileàExport), выполнить необходимые действия в среде Excel, после чего импортировать модифицированный xls-файл в RepCNF (FileàImport).