Положения документа
Для более предметного рассмотрения архитектуры примитива документа изложим требования к нему:
В основе любого документа лежит XHTML-шаблон. XHTML-шаблон это тег 'body', WEB-страницы, содержащий статику документа в стандарте XHTML 1.0 и элементы исполняемых инструкций на одном из языков пользовательского программирования OpenSCADA в виде <?dp <procedure> ?>. Результирующий документ формируется путём исполнения процедур и вставки их результата в документ.
Источником значений исполняемых инструкций являются атрибуты виджета этого примитива, а также все механизмы языка пользовательского программирования. Атрибуты могут добавляться пользователем и линковаться на реальные атрибуты параметров или-же являться автономными, значения которых будут формироваться в скрипте виджета. В случае со слинкованными атрибутами могут извлекаться значения из истории, архива.
На рис. 4.11.7.1 изображена структурная схема виджета примитива "Документ". Согласно этой структуре "Документ" содержит: XHTML-шаблон, результирующие документы и скрипт обработки данных. Источником данных для скрипта и результирующих документов являются атрибуты виджета.

Предусматривается работа виджета в двух режимах: Динамический и Архивный. Отличие архивного режима заключается в наличии архива указанной глубины и атрибутов позволяющих управлять процессом архивирования и просмотра указанного документа в архиве.
Генерация документа всегда производится в момент установки атрибута времени <time> относительно установленного начального времени документа в атрибуте <bTime>. При выключенном архиве результирующий документ помещается непосредственно в атрибут <doc>. При включенном архиве результирующий документ помещается в ячейку под курсором, атрибут <aCur>, а так-же в <doc> если значение курсора архива <aCur> и курсора визуализируемого документа <vCur> совпадают. Атрибуты архивных курсоров предусматривают несколько командных значений:
Как было указано выше динамика шаблона документа определяется вставками исполняемых инструкций вида <?dp <procedure> ?>. В процедурах могут использоваться одноимённые атрибуты виджета и функции пользовательского интерфейса программирования OpenSCADA. Кроме атрибутов виджета зарезервированы специальные атрибутами (табл. 4.11.7.1).
Кроме специальных атрибутов в XHTML шаблоне зарезервированы теги и атрибуты тегов специального назначения (табл. 4.11.7.1).
Таблица 4.11.7.1. Специальные и зарезервированные элементы шаблона.
| Имя | Назначение |
| Атрибуты | |
| rez | Атрибут результата исполнения процедуры содержимое которого помещается дерево документа. |
| lTime | Время последнего формирования. Если документ формируется впервые то <lTime> равен <bTime>. |
| rTime | Содержит время для перебираемых значений в секундах. Определяется внутри тегов с атрибутом 'docRept'. |
| rTimeU | Содержит время для перебираемых значений в микросекундах. Определяется внутри тегов с атрибутом 'docRept'. |
| rPer | Содержит периодичность перебора значений (атрибут 'docRept'). |
| mTime, mLev, mCat, mVal | Определяются внутри тегов с атрибутом 'docAMess' при разборе сообщений архива сообщений: mTime - время сообщения; mLev - уровень сообщения; mCat - категория сообщения; mVal - значение сообщения. |
| Специальные теги | |
| <docRes attr="ResAttr"/> | Вставка ресурса (изображение, звук ...) из контейнера данного виджета с именем 'ResAttr' |
| <docDiagram h="400" v="200" tm="time" sz="size" vl1="atr1" vl2="atr2" vl3="atr3"/> | Вставка диаграммы (тренда) размером 400x200 на время 'time' и глубиной 'size' для атрибутов параметров: atr1, atr2 и atr3. |
| <docKeyword pos="up"> ... </docKeyword> | Колонтитул документа. Описывает общую часть документа размещаемую сверху и снизу каждой печатной страницы. Содержит атрибут 'pos' принимающий значения 'up' или 'down'. |
| <docPage/> | Вставляет номер текущей страницы при формировании печатного документа. |
| <docPages/> | Вставляет количество страниц при формировании печатного документа. |
| <docEnter tp="str" attr="attr1"/> | Поле ввода значения атрибута <attr1> виджета с типом <str>. Предусматриваются типы: str(Строка), dec(Десятичное), hex(Шестьнадцатеричное), oct(Восьмеричное), bool(Логичный) |
| Специальные атрибуты стандартных тегов | |
| body.docProcLang | Язык исполняемых процедур документа. По умолчанию это JavaLikeCalc.JavaScript. |
| *.docRept="1s" | Тег с указанным атрибутом при формировании размножается путём смещения времени в атрибуте 'rTime' на значение указанное в данном атрибуте. |
| *.docAMess="1:PLC*" | Указывает на необходимость размножения тега с атрибутом сообщениями из архива сообщений за указанный интервал времени и в соответствии с уровнем (1) и шаблоном запроса (PLC*). Для данного тега, в процессе размножения, определяются атрибуты: mTime, mLev, mCat и mVal |
| *.docRevers="1" | Указывает на инвертирование порядок размножения, последний сверху. |
| *.docAppend="1" | Признак необходимости добавления результата выполнения процедуры в тег процедуры. Иначе результат исполенеия заменяет содержимое тега. |
| body.docTime | Время формирования документа. Используется для установки атрибута <lTime> при следующем формировании документа. Не устанавливается пользователем! |