default-cell
Описание ячейки по умолчанию, которая применяется ко всему столбцу.
Элемент необязательный;
Максимальное количество элементов: 1.
Таблица . Атрибуты
Наименование
| Допустимые значения
| Описание
| Обязательность
| column
| string
| Код столбца
| Обязательный
| dic
| string
| Справочник, по которому проверяется значение
| Необязательный
| format
| string
| Описание формата вводимого значения в ячейку отчета-ЭВФ. Например:
C(25) – символьная строка длиной не более 25 знаков (формат допустим для колонок типа ‘B’ и ‘S’) ;
N(15,2) – Числовое поле, у которого целая часть не более 15 знаков, дробная часть не более 2 знаков (формат допустим для колонок типа ‘S’ и ‘Z’).
| Обязательный
| default
| string
| Значение по умолчанию
| Необязательный
| inputType
| Значение
| Описание
| 0
| Ячейка запрещена для ввода
| 1
| Ячейка, обязательная для ввода
| 2
| Ячейка, не обязательная для ввода
|
| Тип ячейки
| Обязательный
| vldType
| Значение
| Описание
| 0
| Проверки не требуется. По умолчанию
| 1
| Проверка по справочнику, указанному в атрибуте dic
| 2
| Проверка на диапазон значений, указанных в атрибуте vld
| 3
| Проверка по списку значений, указанных в атрибуте vld
| 4
| Проверка по приложения, справочник указывается в атрибуте dic, приложение - в атрибуте vld
| 5
| Проверка по справочнику, используя фильтрацию по формуле, указанной в атрибуте vld
|
| Тип проверки значения ячейки
| Необязательный
| vld
| string
| Дополнительные параметры фильтрации зависит от атрибута vldType: vldType=2: диапазон значений вида "1-10"; vldType=3: список значений вида "1,2,5,7"; vldType=4: идентификатор приложения, по которому усекается справочник; vldType=5: фильтр для справочника вида "okp=#5,50,Г" - где: "okp" - дополнительный атрибут в теге "term" справочника, "#5,50,Г" - координата ячейки, из которой берется значение для фильтрации ("5" - раздел формы, "50" - код строки, "Г" - код столбца).
| Необязательный
|
rows
Список всех строк раздела;
Элемент обязательный;
Максимальное количество элементов: 1
Родительский элемент: section;
Дочерние элементы: row.
row
Строка раздела.
Элемент обязательный;
Максимальное количество элементов: неограниченно;
Родительский элемент: rows;
Дочерние элементы: cell.
Таблица . Атрибуты
Наименование
| Допустимые значения
| Описание
| Обязательность
| code
| unsignedLong
| Код строки
| Обязательный
| type
| Значение
| Описание
| C
| Текстовая строка, не предназначена для ввода данных
| F
| Фиксированная строка, предназначенная для ввода данных
| M
| Множественная строка, пользователь имеет возможность ввести данную строку несколько раз
|
| Тип строки
| Обязательный
| grv
| string
| Имеет смысл для множественных строк (type="M"). Перечисленные через запятую коды столбцов специфик (например, “В”), которые являются ключевыми для данной множественной строки
| Необязательный
| name
| string
| Наименование строки
| Обязательный
| pr_inp
| string
| Условие закрещивания строки - условие на период отчета, задаваемое в соответствии с лексемой <Условие на период> языка описания контролей, который описан в разделе 4.
Допустимые значения:
true- строка недоступна для редактирования;
False- строка не закрещена.
Значение по умолчанию: false; т.е. строка не закрещена.
| Необязательный
|
cell
Ячейка строки.
Элемент не обязательный;
Максимальное количество элементов: Неограниченно.
Таблица . Атрибуты
Наименование
| Допустимые значения
| Описание
| Обязательность
| column
| string
| Код столбца
| Обязательный
| dic
| string
| Справочник, по которому проверяется значение
| Необязательный
| format
| string
| Описание формата вводимого значения в ячейку отчета-ЭВФ. Например:
C(25) – символьная строка длиной не более 25 знаков (формат допустим для колонок типа ‘B’ и ‘S’) ;
N(15,2) – Числовое поле, у которого целая часть не более 15 знаков, дробная часть не более 2 знаков (формат допустим для колонок типа ‘S’ и ‘Z’).
| Обязательный
| default
| string
| Значение по умолчанию
| Необязательный
| inputType
| Значение
| Описание
| 0
| Ячейка запрещена для ввода
| 1
| Ячейка, обязательная для ввода
| 2
| Ячейка, не обязательная для ввода
|
| Тип ячейки
| Обязательный
| vldType
| Значение
| Описание
| 0
| Проверки не требуется. По умолчанию
| 1
| Проверка по справочнику, указанному в атрибуте dic
| 2
| Проверка на диапазон значений, указанных в атрибуте vld
| 3
| Проверка по списку значений, указанных в атрибуте vld
| 4
| Проверка по приложения, справочник указывается в атрибуте dic, приложение - в атрибуте vld
| 5
| Проверка по справочнику, используя фильтрацию по формуле, указанной в атрибуте vld
|
| Тип проверки значения ячейки
| Необязательный
| vld
| string
| Дополнительные параметры фильтрации зависит от атрибута vldType: vldType=2: диапазон значений вида "1-10"; vldType=3: список значений вида "1,2,5,7"; vldType=4: идентификатор приложения, по которому усекается справочник; vldType=5: фильтр для справочника вида "okp=#5,50,Г" - где: "okp" - дополнительный атрибут в теге "term" справочника, "#5,50,Г" - координата ячейки, из которой берется значение для фильтрации ("5" - раздел формы, "50" - код строки, "Г" - код столбца).
| Необязательный
| pr_inp
| string
| Условие закрещивания ячейки - условие на период отчета, задаваемое в соответствии с лексемой <Условие на период> языка описания контролей, который описан в разделе 4.
Допустимые значения:
true- ячейка недоступна для редактирования;
False- ячейка не закрещена.
Значение по умолчанию: false; то есть ячейка не закрещена.
| Необязательный
|
controls
Список контролей формы.
Элемент обязательный;
Максимальное количество элементов: 1;
Родительский элемент: metaForm;
Дочерние элементы: control.
control
Арифметическо-логический контроль.
Родительский элемент: controls.
Элемент необязательный;
Максимальное количество элементов: неограничено;
Таблица . Атрибуты
Наименование
| Допустимые значения
| Описание
| Обязательность
| id
| unsignedInt
| Идентификатор контроля
| Обязательный
| name
| string
| Текстовое описание контроля
| Обязательный
| condition
| string
| Условие выполнения контроля (выражение на языке контролей)
| Обязательный
| rule
| string
| Формула контроля, которая должна выполниться, чтобы контроль считался успешным (выражение на языке контролей)
| Обязательный
| periodClause
| string
| Условие на период отчета (выражение на языке контролей). Значение по умолчанию - true
| Необязательный
| precision
| unsignedByte
| Количество десятичных знаков, до которых округляются значения при операциях сравнения в формулах контроля. Значение по умолчанию 2
| Необязательный
| fault
| decimal
| Допустимое отклонение (допустимые границы отклонения при сравнении). Значение по умолчанию – 0 (отклонения не допускается).
Нарушение контрольных соотношений XML- шаблона приравнивается к ошибке при сравнении на равенство.
| Необязательный
| tip
| Значение
| Описание
| 0
| Необязательный контроль
| 1
| Обязательный контроль
|
| Значение по умолчанию – 1 (обязательный контроль)
| Необязательный
|
Условие выполнения контролей, формула контроля и условие на период отчета задаются на языке описания контролей, который описан в Разделе 4. Условие выполнения контролей описывается лексемой <Условие>. Формула контроля описывается лексемой <Логическое выражение>. Условие на период отчета описывается лексемой <Условие на период>.
dics
Справочники формы.
Элемент обязательный;
Максимальное количество элементов: 1;
Родительский элемент: metaForm;
Дочерние элементы: dic.
I2. Обязательно наличие справочников (дочерних элементов) s_year и s_time или s_god и s_mes.
dic
Справочник формы или приложение к справочнику.
Элемент обязательный;
Минимальное количество элементов: 2;
Максимальное количество элементов: неограниченно;
Родительский элемент: dics;
Дочерние элементы: term.
Таблица . Атрибуты
Наименование
| Допустимые значения
| Описание
| Обязательность
| name
| string
| Текстовое наименование справочника
| Обязательный
| id
| string
| Идентификатор справочника или приложения (название таблицы)
| Обязательный
| parent
| string
| Имеет смысл только для приложения2. Идентификатор справочника, к которому относится приложение
| Необязательный
|
term
Термин - элемент справочника.
Дополнительные атрибуты: возможно наличие дополнительных атрибутов, которые используются для фильтрации справочника. Имена дополнительных атрибутов задаются проектировщиком формы (разработчиком XML-шаблона) произвольно. Справочник, из которого выбираются значения для заполнения некоторого поля, может формироваться по значению некоторого признака – дополнительного параметра фильтрации (подробнее в описании атрибута vld элементов cell и default-cell, в случае vldType=5);
Допустимые значения: string;
Содержимое: текст позиции справочника, только для справочника, приложение не имеет текста позиции;
Элемент обязательный;
Максимальное количество элементов: неограниченно;
Родительский элемент: dic.
Таблица . Атрибуты
Наименование
| Допустимые значения
| Описание
| Обязательность
| Id
| string
| Код термина, совместно с дополнительными атрибутами представляет собой ключ
| Обязательный
|
Язык описания контролей
Настоящий раздел содержит формальное описание языка описания контролей. Лексема <Условие> описывает выражение, которое может быть использовано для формирования атрибута condition элемента control xml-шаблона. Лексема <Логическое выражение> описывает выражение, которое может быть использовано для формирования атрибута rule элемента control xml-шаблона. Лексема <Условие на период> описывает выражение, которое может быть использовано для формирования атрибута periodClause элементов control, cell, row, column xml-шаблона.
Для описания языка используются следующие соглашения и ограничения:
Служебные символы – символы, используемые при описании языка контролей:
<> – лексема (грамматическое понятие);
, – альтернатива (либо …, либо …);
[] – необязательный элемент языка (может отсутствовать);
Для того чтобы отличать символы языка описания контролей от служебных символов, первые будут выделяться жирным шрифтом и красным цветом ( [ ] ,).
<Число> – целое число или действительное число (дробная часть отделяется «.»);
<Код> – натуральное число (номер раздела, строки, графы соответственно);
<Значение> – значение специфики (допустимое значение для соответствующей графы-специфики);
<Наименование функции> – наименование функции (допустимые наименования приведены в табл. 16);
<Код периода> – значение кода из справочника s_time или s_mes в зависимости от того, какой из справочников используется в xml-шаблоне;
&NP – терминальный символ, обозначающий номер текущего периода, введенный на титульной странице формы;
Символ «*» при определении координаты элемента означает «для всех значений»;
SUM – оператор с одним операндом. Одновременно обозначает групповую операцию и макроподстановку по строкам или графам. Данная операция является контекст зависимой и может интерпретироваться как
Для каждой из перечисленных в элементе строк выполняется сложение по перечисленным графам;
Для каждой из перечисленных в элементе граф выполняется сложение по перечисленным строкам;
Выполняется сложение всех ячеек на пересечении граф и строк.
Вариант интерпретации определяется вторым операндом выражения. Если есть второй операнд такой, что в обоих операндах одинаковый набор строк, то используется первый вариант. Если есть второй операнд такой, что в обоих операндах одинаковый набор граф, то используется второй вариант. Если второй операнд – скалярное выражение, то используется третий вариант;
Не допускается использования вложенного оператора SUM.
<Условие> = <Логическое выражение> <Логический предикат><Логическое выражение>
[<Логический предикат><Логическое выражение>]
<Логический предикат> := AND, OR
<Логическое выражение> := <Условие на период>,
<Арифметическое выражение> <Логический оператор><Арифметическое выражение>
[<Логический оператор><Арифметическое выражение>]
<Логический оператор> := |<|, |<=|, |=|, |>=|, |>|, |<>|
<Арифметическое выражение> := <Арифметическое выражение> <Слагаемое>
:= +, -
<Арифметическое выражение> := <Слагаемое>
<Слагаемое> := <Слагаемое> <Множитель>
:= *, /
<Слагаемое> := <Множитель>
<Множитель> := <Число>, <Элемент>,<Сумма>,<Функция>
<Множитель> := (<Арифметическое выражение>)
<Функция> := <Наименование функции>( <Список параметров> )
<Список параметров> := <Список параметров> , <Арифметическое выражение>
<Список параметров> := <Арифметическое выражение>
<Сумма> := SUM<Область действия>
<Область действия> := <Элемент> , <Функция>, (<Арифметическое выражение>)
<Элемент> := <За предыдущий период>, <За текущий период>
<За предыдущий период> := {{<Координаты>}}
<За текущий период> := {<Координаты>}
<Координаты> := <Раздел> <Строка> <Графа> [<Список специфик>]
<Список специфик> := <Специфика> [<Специфика> [<Специфика>]]
<Специфика> := [<Описание специфики>]
<Описание специфики> := *, <Список значений>
<Список значений> := <Список значений> , <Значение>
<Список значений> := <Значение>
<Раздел> := [<Код>]
<Строка> := [<Описание позиций> ]
<Графа> := [<Описание позиций > ]
< Описание позиций > := *, <Список позиций>
< Список позиций > := <Список позиций> , <Позиция>
< Позиция> := <Код>, <Диапазон>
<Диапазон> := <Код> - <Код>
<Условие на период> := ( <Составное выражение> )
<Составное выражение> := <Составное выражение> <Логический предикат> <Выражение>
<Выражение> := &NP <Логический оператор> <Код периода>
<Выражение> := &NP in ( <Список периодов> )
<Список периодов> := <Список периодов> , <Код периода>
<Список периодов> := <Код периода>
В таблице 16 приведен список допустимых функций.
Таблица 16. Функции
Функция
| Параметры
| Описание
| abs (p)
| p – числовое выражение типа <Элемент>
| Возвращает абсолютное (положительное) значение указанного числового выражения
| coalesce (p1, …pn)
| p1… pn – анализируемые значения типа <Элемент>
| Возвращает первое выражение из списка аргументов, не равное NULL
| floor (p)
| p – числовое выражение типа <Элемент>
| Возвращает наибольшее целое число, меньшее или равное указанному числовому выражению
| isnull (p1, p2)
| p1 – анализируемое значение типа <Элемент>
p2 – замещаемое значение
| Заменяет значение NULL указанным замещающим значением
| nullif (p1, p2)
| p1, p2 – сравниваемые значения типа <Элемент>
| Возвращает значение NULL, если два указанных выражения равны
| round (p1, p2, p3)
| p1 - числовое выражение типа <Элемент>.
p2 - Точность, до которой необходимо округлять значение аргумента p1. Когда аргумент p2 является положительным числом, p1 округляется до числа десятичных разрядов, указанных в аргументе p1. Когда p2 является отрицательным числом, p1 округляется слева от точки, отделяющей десятичную дробь от целого числа, как указано p2.
p3 - Тип операции, которую необходимо выполнить. Когда аргумент p3 опускается или имеет значение 0 (значение по умолчанию), аргумент p1 округляется. Когда указывается значение, не равное 0, p1 усекается.
| Возвращает числовое значение, округленное до указанной длины или точности
| В таблице 17 и 18 приведены примеры выражений для условия на период и примеры выражений для условий и формул для контролей соответственно.
Таблица 17. Примеры условий на период
Формула
| Комментарий
| (&NP in
(1203, 1206, 1209, 1212))
| Для месячной формы условие будет истинным, если месяц, за который сдается отчет является квартальным
| (&NP > 3601 and NP < 3636)
| Для декадной формы условие будет истинным, если декада, за которую сдается отчет не первая и не последняя в году
| (&NP = 0404)
| Для квартальной формы условие будет истинным, если квартал, за который сдается отчет является последним в году
| Таблица 18. Примеры условий и формул для контролей
Тип группировки
| Формула
| Условие
| Комментарий
| Действие над графами для нескольких строк
| SUM{[3][24,25][4,5]}|=|{[3][24,25][6]}
|
| Для раздела 3 для строк 24 и 25 должно выполняться условие: сумма значений в графах 4 и 5 равна значению в графе 6.
| UM{[3][*][4,5]}|=|
{[3][*][6]}
|
| Для раздела 3 для всех строк должно выполняться условие: сумма значений в графах 4 и 5 равна значению в графе 6.
| {[3][*][24]}|>|
{[3][*][25]}
| {[3][*][21]} |>|
{[3][*][22]}
| Для раздела 3 для всех строк должно выполняться условие: если значение в графе 21 больше значения в графе 22, то и значение в графе 24 должно быть больше значения в графе 25.
| {[3][21,22][22]}-{[3][21,22][23]}|=| {[3][21,22][24]}
|
| Для раздела 3 для сторк 21 и 22 должно выполняться условие: значение в графе 24 должно равняться разнице значений в графах 22 и 23.
| {[1][1][3][51.001]}|=|
SUM(isnull(
{[1][2,3,4,5,6,7][3][*]}, 0))+{[1][8][3][51.90.10]}
|
| В разделе 1 для графы 3 должно выполняться следующее условие: Значение ячейки в строке 1 со значением специфики 51.001 должно равняться сумме значений по строкам со 2 по 7 для всех значений специфики 51.90.10 сложенной со значением ячейки в строке 8 со значением специфики 51.90.10.
| Действие над строками для нескольких граф
| 0 |<| SUM(
isnull(
{[3][21][11 - 13]}, 0) –
round(
{[3][22 - 25][11 -13]}, 0))
|
| Эквивалентно выражению
0 |<|
isnull(SUM{[3][21][11 - 13]}, 0) –
round(SUM{[3][22 - 25][11 -13]}, 0)
| {[3][21][11 - 13]}|=|
SUM{[3][22 - 25]
[11 -13]}
|
| В разделе 3 для граф с 11 по 13 должно выполняться условие: значение в строке 21 должно равняться сумме значений в строках с 22 по 25.
| {[5][16][*]}|>=|
SUM{[5][17-21][*]}
|
| В разделе 5 для всех граф должно выполняться условие: значение в 16 строке должно равняться сумме значений с 17 по 21 строки
| Действие над ячейками
| -20|<=| ({[1][2][3]}+{[4][5][6]}-{[4][4][6]}*100)/{[4][4][4]}-100
|<=|20
| {[3][4][5]}|>|0
| Если ячейка 4 графы 4 раздела 4 больше нуля, то должно выполняться условие: отношение ((раздел 1 строка 2 графа3) + (раздел 4 строка 5 графа 6) – (раздел 4 строка 4 графа 6)) разделить на (раздел 4 строка 4 графа 4) должно быть в пределах 20%
| isnull({{[1][2][2,4,5]}}, 0). |<=|
isnull({[1][2][2,4,5]}, 0).
|
| Значение в ячейках граф 2, 4 и 5 строки 2 раздела 1 за предыдущий период должно быть не больше значения в текущем периоде.
| Справочник периодичности форм (значение атрибута «IDP»)
Код периодичности
| Название
| 01
| Годовая
| 02
| Полугодовая
| 04
| Квартальная
| 12
| Месячная
| 36
| Декадная
| 56
| Недельная
| |