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

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

Выполним установки, как сделано на данном примере.
Мы установили метку времени типа «Месяц» (РедакторОтчетов присвоил ей условное обозначение DT1). Это означает что метка соответствует некоторому календарному месяцу. Присвоение метке конкретного значения будет выполнено на этапе генерации отчета (пользователю будет задан вопрос «Укажите отчетный месяц»). Введенное значение будет присвоено ячейке (в нашем случае это ячейка A1).
В случае отметки “Не запрашивать ввод метки” вопрос пользователю не задается, будет использовано текущее значение ячейки.
Жмем кнопку OK. Выполненные нами установки сохраняются в виде комментария к ячейке, о чем сигнализирует красный треугольник в верхнем левом углу ячейки A1. Не рекомендуется редактировать этот комментарий вручную (средствами Excel). Для изменения установок необходимо повторно выполнить команду DefineDate для данной ячейки.
В случае сложного отчета может потребоваться несколько определений даты разного типа.
Следующий этап – привязка некоторой ячейки к БД Электро. Выберем ячейку А3 и нажмем кнопку Link:

Выполняем навигацию по БД Электро для поиска необходимого нам параметра – в нашем случае «1-1:1.29.0 Total Актив+ интеграл5». Выполняем двойной щелчек на выбранном параметре (правое окно), наблюдаем появление его наименования в нижней части формы.
В секциях FROM, TO определяем диапазон выборки данных. В нашем шаблоне ранее было создано определение метки времени DT1. Определяем диапазон [DT1+0; DT1+1[. Это означает что при генерации отчета из БД Electro будет прочитана информация начиная с выбранного пользователем месяца до начала следующего месяца (DT1+1).
Секцию TO можно оставить пустой – в этом случае будут выбраны данные с меткой времени, в точности соответствующей 00:00:00 1-го числа выбранного месяца.
Замечание. В БД Электро принято, что параметры, имеющие периодическое свойство (пол-часа, сутки, месяц и т. п.) хранятся в БД с меткой времени, соответствующей началу периода.
Следующий шаг – определение секции Что выводить. Читаемая из БД Electro информация – это пары <время, значение>. Имется возможность выбора одного из четырех вариантов визуализации данных. Вы можете проверить их экспериментальным путем.
Следующий шаг – секция MultiLine. Мы хотим прочитать суточный график (предположим, имеющий период 30минут) за некоторый месяц – всего около 48*30 = 1440 точек. При неотмеченном MultiLine весь график читается в одну и ту же ячейку – в результате мы будем видеть в отчете значение только последнего получаса месяца.
Нас это не устраивает – отмечаем MultiLine. Теперь данные будут размещаться вниз начиная с указанной ячейки. Отмечаем в столбце 48 знач – теперь данные будут размещаться колонками по 48 значений (т. е. для каждого дня своя колонка). Также имеется возможность ограничить общее количество точек (элемент справа от текста “MultiLine”). Значение 0 – это отсутствие ограничения.
В секции Получение данных указывается порядок сортировки данных в интервале [FROM; TO[.
Следующий шаг – секция If no data – регламентирует поведение генератора отчета в случае отсутствия элемента данных. Отсутствующие элементы данных представлены выбранным замещением (в нашем примере – 0 красного цвета.
Редко используемая секция Агрегатирование предназначена для настройки дополнительной обработки данных и является аналогом вычисляемой переменной типа «агрегатирование». Рассмотрим следующий пример. Пусть в БД Электро имеется непериодическая (т. е. измеряемая в случайные моменты времени) величина «Мгновенная мощность, Ват». Нам необходимо сгенерировать отчет с максимальными значениями мощности (килоВат) в каждом получасе. Выберем интервал 30МИНУТ, функцию MAX и коэффициент 0,001.
Итак, выполним установки согласно примеру, жмем OK. Как и в случае с DefineDate, выполненные нами установки сохраняются в виде примечания к ячейке. Для изменения установок следует повторно применить команду Link к выбранной ячейке.
Простейший пример шаблона готов. Сохраняем его в БД Электро (FileàSave).
То, что мы делали, называется «Редактирование шаблона». Эти действия были возможны, т. к. мы имели полномочия на редактирование шаблона.
Нажатием кнопки Report мы приступаем к «Генерации отчета». Это действие доступно и обычному пользователю после загрузки существующего шаблона.
Действия программы RepCNF при генерации отчета:
- Проверяется наличие и правильность привязок. В случае обнаружения ошибки привязки выводится сообщение с указанием неправильной ячейки. Необходимо выполнить повторное редактирование привязки (это может сделать пользователь с соответствующими полномочиями);
- В случае необходимости у пользователя запрашивается ввод метки времени для имеющихся в шаблоне определений:

Отметим, что в зависимости от типа метки времени (в нашем примере метка имеет месячный период) некоторые элементы (у нас – время и день месяца) будут приведены к стандартному значению – в нашем случае 01 декабря 2001г. 00:00:00;
- Для каждой привязки к БД Электро выполняется запрос с конкретными значениями меток времени.
При успешной генерации отчета имеем сообщение

И экранная форма имеет вид

Начиная с данного момента, RepCNF работает в режиме «Просмотр отчета». Редактирование документа запрещено. Нельзя также экспортировать отчет в xls-документ – из соображения сохранения коммерческой целостности.
Отметим доступность команды PrintàPaperSave – сохранение отчета в БД Электро.
4.1.1 Дополнительные возможности RepCNF
В меню Link кроме вышеописанных функций (МеткаВремени, Link) имеются дополнительные -

Функция Данные Реального Времени позволяет создать привязку ячейки отчета к текущему значению параметра БД Электро. Значение выбранного параметра будет постоянно запрашиваться у Ядра Электро. Работа данной функции построена на имеющейся в MS Excel функции RTD (Real Time Data, в русской версии ДРВ – Данные Реального Времени).
Попробуйте использовать функцию. В результате в выбранной ячейке появится содержимое примерно такого вида:
=RTD("ElectroRTD";;"OID=811";"NAME=Канал P+";"DEV=")
Сдесь RTD – это функция MS Excel (вы можете запросить по ней справку MS Excel), ElectroRTD – COM-сервер (ElectroRTD.dll) собственно реализующий функцию получения данных реального времени, остальные строки – это параметры вызова ElectroRTD.
Для активизации COM-сервера ElectroRTD.dll (находится в каталоге Electro) необходимо выполнить команду Windows
Regsvr32 ElectroRTD. dll
Функция Прямой Запрос к БД позволяет сформировать произвольный SQL-запрос к базам данных Electro либо ElectroCNF (см. документ ElectroCNF.doc) и разместить результаты в ячейках отчета. Рассмотрим работу функции на следующем примере.
В БД Electro имеется таблица DevLogs, в которой накапливаются сообщения о событиях в устройствах (например, для счетчиков Actaris SL7000 в эту таблицу записываются сообщения из журнала счетчика LogBook). Заполним форму

Укажем наименование БД (Electro), поля для вывода (DT, Text), имя таблицы (DevLogs) и условие выборки (DevId=6 and DT>=[dt1:0] and DT<[dt1:1]).
Обратите внимание на использование конструкций [dt1:0], [dt1:1] в условии выборки. Сдесь dt1 это наименование созданной в шаблоне метки времени, а :n – смещение. Таким образом, имеется возможность использования меток времени шаблона в условии выборки.
Поле «Колонку рез-та 1 показывать как время-дата» указывает что первое поле результата (DT) содержит время в формате Electro (секунды с 01.01.1970 00:00:00 по Гринвичу) и его нужно преобразовать к формату используемому в Excel (вещественное число, где целая часть – порядковый номер суток, дробная – время внутри суток). Укажите 0 если преобразование не требуется.
Поле LIMIT позволяет ограничить размер результата. Укажите 0 если ограничение не требуется.
Отметка «Раздвигать ячейки» позволяет формировать результат путем раздвигания ячеек таблицы. Иначе результат будет накладываться на ячейки.
В результате выполнения примера имеем:

Функция Запись в БД Electro позволяет записывать содержимое ячеек отчета обратно в БД Electro. Например, можно составить шаблон, выполняющий вычитывание БД Electro и формирующий набор расчетных величин (например - профиль потерь, потребление субабонента и т. п.). Результат расчета записывается в переменную ручного ввода (в нашем примере – «Потери P+») для последующего использования (в других шаблонах, в Генераторе Макетов, клиенте УППД и т. п.). В сочетании с возможностью автоматического запуска Генератора Отчетов (см. описание утилиты RepGen) это создает возможности для существенного расширения функциональности системы Электро.
Итак, заполним форму

Форма позволяет выбрать параметр в который будет производиться запись и указать условия окончания записи.
Данные для записи выбираются построчно. В первой колонке строки должно содержаться значение, во второй – метка времени:

4.1.2 Замечания и рекомендации по использованию RepCNF
1. Пользователь с полномочиями администратора системы может зарегистрировать новых пользователей командой UseràEditUsers
2. К сожалению, вопросы OLE-автоматизации MS Excel плохо документированы и изучены. Некоторые действия могут вызвать сообщение об ошибке (это может зависеть от состояния Вашего компьютера и имеющейся версии MS Excel). Как правило, решением является повторное выполнение действия; в некоторых случаях – перезапуск программы RepCNF. Рекомендуется также перед повторным запуском RepCNF c помощью Диспетчера Задач (Ctrl+Alt+Del) проверить наличие в памяти компьютера «невидимых» экземпляров RepCNF и Excel и удалить их. При регулярно возникающих проблемах необходимо проверить конфигурацию компьютера и попробовать обновить Excel (установить новую версию либо Sevice Pack).
Следует отметить, что вероятность появления ошибок взаимодействия с Excel не снижает достоверности отчета. Отчет либо будет сгенерирован правильно, и Вы получите об этом уведомление; либо, при наличии ошибки, программа не войдет в режим просмотра отчета.
3. При печати отчета иногда необходимо определить зону печати. Если команды PrintàPageSetup и PrintàPrintSetup у Вас не работают, это можно сделать в «чистом» Excel. Для этого необходимо экспортировать шаблон в xls-файл (FileàExport), выполнить необходимые действия в среде Excel, после чего импортировать модифицированный xls-файл в RepCNF (FileàImport).
Программа предназначена для исполнения в составе командных файлов (скриптов), назначенных заданий и т. п. Программа использует шаблон отчета (XLS-документ), ранее подготовленный редактором отчетов RepCnf и сохраненный в БД ElectroCNF. Программа запускает MS Excel в режиме ole-автоматизации и заполняет поля шаблона данными из БД Electro. Подготовленный таким образом документ может быть сохранен в виде файлов xls- или html- формата.
Синтаксис командной строки запуска программы:
RepGen RID=n FROMFILE= file SRV=serv HTML=file XLS=file DTi=date RUN0=macro RUN=macro VIEW PASSW=пароль AUTOREAD=r
где
RID=n - Идентификатор шаблона (TB_Reports. RepId). Вы можете узнать этот код в программе RepCnf в диалоговом окне открытия шаблона;
FROMFILE=file - альтернативный способ указания шаблона. Указывает файл который будет использован в качестве шаблона отчета. В этом случае ключ RID=n игнорируется;
SRV=serv - указание сервера ElectroHost. Шаблон (по ключу RID) и исходные данные будут взяты с указанного сервера. Если ключ не указан, будет использоваться локальная БД;
HTML=file - если ключ указан, RepGen генерирует отчет в html-формате. Обычно, эта опция используется Web-приложениями;
XLS=file - если ключ указан, RepGen генерирует отчет в указанный xls-файл.
Значение file может содержать литерал $DTn (n – идентификатор метки времени). Текст литерала будет замещен текстом значения соответствующей метки времени (в том виде как она выглядит в ячейке отчета).
RUN0=macro - если этот ключ указан, RepGen попытается выполнить макрос macro ДО чтения данных из БД Электро.
RUN=macro - если этот ключ указан, RepGen попытается выполнить макрос macro ПОСЛЕ заполнения документа данными из БД Электро.
Внимание. Возможно, Вам придется указать полное имя макроса, например Лист1.mymacro. Просмотреть список имеющихся макросов можно в Excel’e или РедактореОтчетов (Tools – Macro - Macros). О наличии ошибки выполнения макроса см. файл-журнал RepGen.log
PASSW=пароль - указание пароля защиты листов выходного xls-документа. Если ключ не указан, защита не устанавливается.
Внимание! Ключ PASSW= введен для версий RepGen.exe с 14 апреля 2006. Для предыдущих версий ключ отсутствовал и всегда устанавливалась защита с паролем ‘qwerty’.
Dti=date - указание значения для меток времени DT1, DT2.. и т. п. Синтаксис значения метки:
CURDAY текущий день
LASTDAY предыдущий день
DAYr DAY0=CURDAY, DAY1=LASTDAY, DAY2 – предпредыдущий день и т.д.
LASTMON предыдущий месяц
MONTHr MONTH0 – текущ.месяц, MONTH1= LASTMON, MONTH2 – предпредыдущий месяц и т.д.
yyyy год
yyyy/mm
yyyy/mm/dd
yyyy/mm/ddThh
yyyy/mm/ddThh:mm
yyyy/mm/ddThh:mm:ss вместо ‘/’ м.б. ‘.’ Вместо Т (латинская) - пробел
AUTOREAD=r Режим довычитывания данных. В случае отсутствия в БД Электро периодических параметров (параметров, имеющих период), ГенераторОтчетов может сформировать и выполнить задание на опрос устройств. В задании на опрос перечисляются параметры с указанием меток времени (т. е. если в отчет необходимо вывести некоторый график нагрузки за определенные сутки, то будет сформировано задание на чтение конкретного графика нагрузки за конкретные сутки. Отметим, однако, что драйвер опроса может расширить объем вычитываемых данных соответственно специфики протокола опроса).
Поддерживаются режимы:
AUTOREAD=0 (по умолчанию). Режим довычитывания данных выключен;
AUTOREAD=1 В случае необходимости довычитывания запрашивается подтверждение для начала опроса;
AUTOREAD=2 В случае необходимости довычитывания опрос выполняется автоматически.
Программа протоколирует события процесса генерации документа в файл RepGen.log размещаемый в папке Electro/logs
Примеры:
RepGen RID=2 XLS=”C:\Test. xls” DT1=LASTDAY
RepGen RID=2 XLS=”C:\Test. xls” DT1=2002/03/05 RUN=Button1Click
RepGen RID=2 XLS=”C:\Test for $DT1.xls” HTML=”C:\Test. htm” DT1=LASTDAY
Коды завершения RepGen:
1 - успешно
-1 - ошибка инициализации библиотек MFC
-2 - ошибка инициализации OLE
-3 - невозможно запустить Excel
-4 - устаревшая версия Excel
-5 - ошибка в процессе взаимодействия с Excel
-6 - отсутствует шаблон отчета (в БД ElectroCNF либо в FROMFILE=file)
-7 - неподдерживаемое значение TB_Reports.Media
-8 - неподдерживаемое значение TB_Reports.Type
-9 - ошибка чтения данных из БД Electro
-10 - Ошибка генерации отчета
-11 - Ошибка копирования файла
Как работает RepGen?:
Загрузка шаблона RID=n из ElectroCNF. TB_Reports во временный XLS-файл. Запуск (невидимый) MS Excel (OLE-автоматизация)[Выполнение макроса указанного в ключе RUN0=]
Получение значений меток времени DTi, занесение в ‘define date’ – ячейки. Если значение не определено, используется текущее время, приведенное к типу ‘define date’ – ячейки.
Чтение данных из БД Electro в ячейки.
[Выполнение макроса указанного в ключе RUN=]
Если HTML= то сохранение html-файла
Если XLS= то сохранение xls- файла
3. Закрыть Excel и завершить работу.
Программа XmlGen.exe является консольным вариантом оболочки вызова функции ElectroXML() из ядра Electro.dll (см. документ ElectroCNF. doc). Синтаксис:
XMLGEN ACTION=n INPUT=file [OUTPUT=file] [SERVER=name] [доп. ключи]
Где n – код команды (задания):
n | Формат INPUT=файла | Формат OUTPUT=файла |
0 – экспорт данных | query. select | data. select |
1 – экспорт конфигурации | profile. electrocnf | |
2 – замена конфигурации | profile. electrocnf | Log |
3 – импорт данных | data. select | Log |
4 – new Дамп БД (обратное к ACTION=13) | profile.dbdump | |
5 – опрос устройств | query. select | data. select |
6 – обновление данных в БД | query. select | |
7 – удаление данных из БД | query. select | |
8 - не используется | ||
9 – генератор макетов (см. п. 3.4.3.1 данного Руководства) | profile. makets | |
10 – новый вариант экспорта данных | query.select | data.select |
11 – архивирование данных | ||
12 – УППД-клиент | profile. uppds | |
13 – new замена БД (обратное к ACTION=4) | profile.dbdump | Log |
14 – new слияние нескольких xml-документов в один | Набор electroxml-документов | Один electroxml-документ, результат слияния |
Ключ INPUT указывает имя файла с XML-заданием. Система Электро использует специальный xml-формат (общая информация дана в документе ElectroXML.doc, детальное описание отдельных тегов в – в документации к соответствующим приложениям).
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 |



