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

Предусматривается работа виджета в двух режимах: Динамический и Архивный. Отличие архивного режима заключается в наличии архива указанной глубины и атрибутов, позволяющих управлять процессом архивирования и просмотра указанного документа в архиве.
Генерация документа всегда производится в момент установки атрибута времени <time> относительно установленного начального времени документа в атрибуте <bTime>. При выключенном архиве результирующий документ помещается непосредственно в атрибут <doc>. При включенном архиве результирующий документ помещается в ячейку под курсором, атрибут <aCur>, а так-же в <doc> если значение курсора архива <aCur> и курсора визуализируемого документа <vCur> совпадают. Атрибуты архивных курсоров предусматривают несколько командных значений:
Как было указано выше динамика шаблона документа определяется вставками исполняемых инструкций вида <?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-файл и другие табличные форматы. |