Тестовая страница 1
1 Документы
| Формирование документов выполняется только в среде проектирования. В среде исполнения узел «Документ» не используется. |
Документ – узел, предназначенный для формирования документации по узлам проекта: карт регистров, перечней транспортов и протоколов, списков сигналов и других документов, содержимое которых определяется настройками самих узлов.
Документ состоит из макета и наборов данных. Макет – шаблон документа, который составляется в редакторе макета так же, как макет отчета. Набор данных – выборка узлов проекта, свойства которых становятся полями макета.
1.1 Создание нового документа
Создание документа производится в два этапа.
- Создание необходимых узлов в конфигурации: сам документ и необходимое количество наборов данных.
- Составление макета документа.
Узел типа «Документ» добавляется в узел «Отчеты» с помощью команды контекстного меню «Добавить узел». К документу аналогичным образом добавляется необходимое количество узлов типа «Набор данных документа», например, по одному на каждую таблицу в макете.
Перед переходом к редактированию макета необходимо:
- в свойстве набора данных «Узлы» выбрать узлы, по которым составляется документ;
- при необходимости ограничить набор узлами нужных типов с помощью свойства «Фильтр по имени типа»;
- задать наборам данных имена, состоящие из латинских букв (см. Наборы данных документа).
1.2 Свойства документа
Помимо общих свойств узла, узел «Документ» имеет свойство «Путь к файлу макета».
| Наименование свойства | Идентификатор | Тип | Описание | Допустимые значения | Режим доступа |
|---|---|---|---|---|---|
| Путь к файлу макета | TemplatePath | ResourceLink | Файл, в котором хранится макет документа (формат .lrxml) | Путь к файлу, рекомендуется относительно папки проекта | Чтение/Запись |
Путь к файлу макета заполняется автоматически при первом сохранении макета в редакторе.
При проверке проекта для узла «Документ» выдаются сообщения «Путь до макета отчета не задан» и «Невозможно открыть файл макета».
1.3 Наборы данных документа
Набор данных определяет, какие узлы попадают в документ, и превращается в таблицу, которая доступна в макете как источник данных. Строка таблицы соответствует одному узлу, столбец – служебному полю или свойству узла.
Набор данных – узел типа «Набор данных документа», дочерний по отношению к документу. Имя узла является именем источника данных в макете. Оно должно состоять из латинских букв, цифр и знака «_» и не должно начинаться с цифры, так как используется в макете в выражениях вида $D{Registers.Name}. По умолчанию узлу присваивается имя Dataset.
1.3.1 Свойства набора данных
| Наименование свойства | Идентификатор | Тип | Описание | Допустимые значения | Режим доступа |
|---|---|---|---|---|---|
| Узлы | Roots | NodesArray | Узлы, из которых строится набор данных | Любые существующие узлы проекта | Чтение/Запись |
| Фильтр по имени типа | TypeFilter | string | Ограничивает набор узлами указанных типов | Название типа или часть названия, несколько значений через «;». Пустое значение – любые узлы | Чтение/Запись |
| Включать вложенные | Recursive | bool | Включать в набор потомков выбранных узлов | true/false (по умолчанию true) | Чтение/Запись |
1.3.2 Выбор узлов
Узел попадает в набор данных, если он выбран в свойстве «Узлы» либо является потомком выбранного узла (при включенном свойстве «Включать вложенные») и при этом соответствует фильтру по имени типа. Повторяющиеся узлы включаются в набор один раз.
Выбранный узел также проверяется по фильтру. Например, если в свойстве «Узлы» выбран протокол, а в фильтре указан тип «Регистр Modbus», в набор попадут только регистры протокола, но не сам протокол.
1.3.3 Фильтр по имени типа
Фильтр состоит из одного или нескольких значений, разделенных символами «;» или «,». Узел соответствует фильтру, если хотя бы одно значение входит:
- в системное имя типа узла, например
nstSourceModbusReg; - в название типа или подтипа узла, отображаемое в проекте, например «Регистр Modbus».
Регистр букв не учитывается, в том числе для русских букв. Пробелы по краям значений игнорируются.
| Значение фильтра | Результат |
|---|---|
| (пусто) | Все узлы |
| Регистр Modbus | Регистры Modbus |
| регистр modbus | Регистры Modbus |
| Протокол Modbus; Регистр Modbus | Протоколы и регистры Modbus |
| Источник | Все узлы типа «Источник» |
Слишком короткое значение может привести к включению лишних узлов: фильтру «Источник» соответствуют все источники, а не только регистры Modbus.
1.3.4 Проверка набора данных
При проверке проекта для набора данных выдаются сообщения:
- «Не заданы узлы набора данных»;
- «Несуществующий узел включен в набор данных»;
- «Имя набора данных должно состоять из латинских букв, цифр и '_' и не начинаться с цифры».
1.4 Поля источника данных
Поля источника данных формируются автоматически по узлам набора. Набор полей для макета не настраивается.
1.4.1 Служебные поля
Служебные поля присутствуют в любом наборе данных и расположены первыми.
| Поле | Тип | Описание |
|---|---|---|
| Path | string | Полный путь узла от корня проекта |
| ParentPath | string | Путь родительского узла. Для узла без родителя – пустая строка. Используется для связи наборов данных по принципу «главный – подчиненный» |
| Name | string | Имя узла |
| Description | string | Описание узла |
| TypeName | string | Название типа узла |
Свойства узла с теми же идентификаторами (Name, Description) служебные поля не заменяют.
1.4.2 Поля свойств узлов
Для каждого свойства узлов набора добавляется поле, имя которого совпадает с идентификатором свойства, например ReadRegister для свойства «Регистр чтения». Если в набор входят узлы разных типов, поля объединяются; для узла, не имеющего свойства, значение поля остается пустым.
Идентификаторы свойств и их названия приведены в описании соответствующего узла. Подпись и описание свойства отображаются во всплывающей подсказке поля в окне «Инспектор данных».
| Тип свойства | Значение поля |
|---|---|
| Целое число, беззнаковое целое число | Число |
| Вещественное число | Число без округления |
| Логическое значение | Логическое значение |
| Строка | Строка |
| Перечисление | Название значения. Числовое значение содержится в дополнительном поле с именем <идентификатор>_Raw, например ValueType_Raw
|
| Ссылка на узел | Имя связанного узла |
| Тип узла, время, цвет, точка, размер, шрифт, значение сигнала, ссылка на значение, ссылка на ресурс | Строка |
В набор данных не включаются свойства:
- скрытые в окне свойств;
- содержащие пароль;
- имеющие тип «массив», «список» или «карта» (например, списки узлов и операций).
Числа и логические значения передаются в макет без преобразования в строки, поэтому к ним применимы форматирование и функции.
1.4.3 Переменные макета
В макете документа доступны переменные, используемые в выражениях вида $V{DocumentName}.
| Переменная | Описание |
|---|---|
| DocumentName | Имя узла «Документ» |
| GeneratedAt | Дата и время формирования в формате «дд.мм.гггг чч:мм» |
Стандартные переменные редактора макета (#PAGE, #PAGE_COUNT) также доступны.
1.5 Редактирование макета документа
Для редактирования макета необходимо переключиться из редактора конфигурации в редактор макета с помощью команды «Открыть редактор макета отчета», доступной из контекстного меню узла типа «Документ» (пункт «Открыть»), либо дважды щелкнуть по узлу. Окна и элементы редактора описаны в разделах Редактирование макета отчета, Элементы отчета и Разделы отчета (бэнды).
В окне «Инспектор данных» для каждого набора данных отображается источник с именем набора и его поля. Поля перетаскиваются на элементы макета либо указываются в тексте элемента в виде $D{набор.поле}.
Данные наборов определяются на момент открытия редактора. После изменения узлов или их свойств необходимо вернуться из редактора с помощью команды «Назад» и открыть его повторно.
После сохранения макета путь к файлу записывается в свойство «Путь к файлу макета» узла «Документ». Результат просматривается, печатается и сохраняется штатными средствами редактора макета.
1.6 Группировка и иерархия
1.6.1 Группировка
Группировка строк выполняется бэндами GroupHeader (заголовок группы) и GroupFooter (завершение группы), см. Разделы отчета (бэнды). В свойстве groupFieldName бэнда GroupHeader указывается имя поля набора, например DeviceAddr. Для подсчета строк группы применяется функция COUNT.
1.6.2 Иерархия наборов данных
Для вывода иерархии, например «транспорт – протокол – регистры», создается отдельный набор данных для каждого уровня, а связь между ними задается в редакторе макета в окне «Инспектор данных»: по команде «Добавить источник данных» выбирается режим «Режим фильтрации», в котором указываются «Главный источник» и «Подчиненный источник». В таблице «Поля для связи источников» для главного источника указывается поле Path, для подчиненного – ParentPath.
Одна связь описывает один уровень иерархии. Связь сохраняется в файле макета.
1.7 Пример: карта регистров Modbus
Задача: сформировать документ с перечнем регистров Modbus, сгруппированных по адресам устройств.
- Добавить в узел «Отчеты» узел «Документ» и задать ему имя, например ModbusMap.
- Добавить в документ узел «Набор данных документа» и задать ему имя Registers.
- В свойстве «Узлы» набора выбрать протокол Modbus (или группу, содержащую протоколы).
- В свойстве «Фильтр по имени типа» ввести значение «Регистр Modbus».
- Оставить включенным свойство «Включать вложенные».
- Открыть редактор макета и расположить на макете:
- в бэнде Report Header – название документа и переменные
$V{DocumentName},$V{GeneratedAt}; - в бэнде DataHeader – названия столбцов;
- в бэнде GroupHeader с полем группировки
DeviceAddr– текст вида «Устройство Modbus, адрес $D{Registers.DeviceAddr}»; - в бэнде Data с источником данных Registers – поля, приведенные в таблице ниже;
- в бэнде GroupFooter – число регистров устройства;
- в бэнде Page Footer – номер страницы.
- в бэнде Report Header – название документа и переменные
- Сохранить макет.
| Столбец макета | Поле | Свойство узла «Регистр Modbus» |
|---|---|---|
| Функция чтения | ReadFunction | Функция чтения |
| Регистр | ReadRegister | Регистр чтения |
| Имя | Name | Имя узла |
| Тип значения | ValueType | Тип значения |
| Размер, бит | ParamSize | Размер регистра |
| Порядок байт | ByteOrder | Порядок байт |
| Описание | Description | Описание узла |
Для записываемых регистров дополнительно доступны поля WriteFunction («Функция записи») и WriteRegister («Регистр записи»), для приоритета опроса – Priority.
1.8 Особенности и ограничения
- Документ формируется в среде проектирования. Для отображения в среде исполнения узел «Документ» не предназначен; виджет отображения отчета принимает только узлы «Отчет».
- Данные набора определяются при открытии редактора макета и не обновляются автоматически.
- Порядок строк соответствует порядку узлов в дереве проекта. Сортировка строк по значению поля средствами набора данных не выполняется.
- Значения регистров выводятся в том виде, в котором они хранятся в свойствах узлов (десятичное число, нумерация задается проектировщиком).
- Результат формируется в форматах, поддерживаемых редактором макета отчета.
- Связь наборов данных между собой не создается автоматически и настраивается в макете (см. Иерархия наборов данных).