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

Рис.3.8.7.a Структурная схема примитива "Документ".
Предусматривается работа виджета в двух режимах: Динамический и Архивный. Отличие архивного режима заключается в наличии архива указанной глубины и атрибутов, позволяющих управлять процессом архивирования и просмотра указанного документа в архиве.
Генерация документа всегда производится в момент установки атрибута времени <time> относительно установленного начального времени документа в атрибуте <bTime>. При выключенном архиве результирующий документ помещается непосредственно в атрибут <doc>. При включенном архиве результирующий документ помещается в ячейку под курсором, атрибут <aCur>, а так-же в <doc> если значение курсора архива <aCur> и курсора визуализируемого документа <vCur> совпадают. Атрибуты архивных курсоров предусматривают несколько командных значений:
- aCur<0 — Перемещает курсор архиватора на следующую позицию, тем самым оставляя предыдущий документ в архиве и очищая документ под курсором.
- vCur==-1 — Выбор следующего документа для отображений. Выбранный документ копируется в атрибут <doc>.
- vCur==-2 — Выбор предыдущего документа для отображений. Выбранный документ копируется в атрибут <doc>.
Как было указано выше динамика шаблона документа определяется вставками исполняемых инструкций вида
<?dp {procedure} ?>. В процедурах могут использоваться одноимённые атрибуты виджета и функции пользовательского интерфейса программирования OpenSCADA. Кроме атрибутов виджета зарезервированы специальные атрибуты (табл. 3.8.7.a).
Кроме специальных атрибутов в XHTML шаблоне зарезервированы теги и атрибуты тегов специального назначения (табл. 3.8.7.a).
Таблица 3.8.7.a. Специальные и зарезервированные элементы шаблона.
| Имя | Назначение |
| Атрибуты |
| rez | Атрибут результата исполнения процедуры, содержимое которого помещается в дерево документа. |
| lTime | Время последнего формирования. Если документ формируется впервые то <lTime> равен <bTime>. |
| rTime | Содержит время для перебираемых значений в секундах. Определяется внутри тегов с атрибутом "docRept". |
| rTimeU | Содержит время для перебираемых значений в микросекундах. Определяется внутри тегов с атрибутом "docRept". |
| rPer | Содержит периодичность перебора значений (атрибут "docRept"). |
| mTime, mTimeU, mLev, mCat, mVal | Определяются внутри тегов с атрибутом "docAMess" при разборе сообщений архива сообщений:
mTime — время сообщения;
mTimeU — время сообщения, микросекунды;
mLev — уровень сообщения;
mCat — категория сообщения;
mVal — значение сообщения. |
| Специальные теги |
| Специальные атрибуты стандартных тегов |
| body.docProcLang | Язык исполняемых процедур документа. По умолчанию это JavaLikeCalc.JavaScript. |
| *.docRept="1s" | Тег с указанным атрибутом при формировании размножается путём смещения времени в атрибуте "rTime" на значение указанное в данном атрибуте. |
| *.docAMess="1:PLC*" | Указывает на необходимость размножения тега с атрибутом сообщения из архива сообщений за указанный интервал времени и в соответствии с уровнем (1) и шаблоном запроса (PLC*). В шаблоне запроса может указываться регулярное выражение в виде /{re}/. Для данного тега, в процессе размножения, определяются атрибуты: mTime, mTimeU, mLev, mCat и mVal. |
| *.docRevers="1" | Указывает на инвертирование порядка размножения, последний сверху. |
| *.docAppend="1" | Признак необходимости добавления результата выполнения процедуры в тег процедуры. Иначе результат исполнеия заменяет содержимое тега. |
| body.docTime | Время формирования документа. Используется для установки атрибута <lTime> при следующем формировании документа. Не устанавливается пользователем! |
| table.export="1" | Включение возможности экспорта содержимого указанной таблицы в CSV-файл и другие табличные форматы. |