Межформенные проверки

Компонент «Межформенные проверки» позволяет задавать правила проверки данных, вводимых в формы и реестры задания сбора. Межформенные проверки также можно использовать для отчетов, приложенных к заданиям сбора (это удобно, например, если для проверки должны обрабатываться вводимые в формы или реестры данные).

Список форм, реестров и отчетов

Список форм, реестров и отчетов, которые содержат проверяемые данные, отражается в режиме просмотра паспорта шаблона сбора (после сохранения шаблона сбора). Справа от рекомендованной формы/реестра/отчета указан код соответствующей формы/реестра/отчета, который необходимо будет указать при написании межформенной проверки.

_images/401.png

Переход к настройке правил проверки

Перейти на страницу настройки правил проверки можно в нижней части паспорта шаблона сбора в режиме редактирования.

_images/134.png

Правила проверки

Межформенные проверки могут быть заданы для любого перехода из статуса в статус.

Для задания какого-либо правила необходимо указать, на какую форму/реестр/отчет и ячейку оно накладывается.

Ячейка задается следующим образом: сначала указывается код таблицы, затем через точку - номер ячейки. Ячейки нумеруются так же, как в MS Excel: строки - цифрами, начиная с первой, а столбцы - большими буквами латинского алфавита (A, B, C…).

Например, если требуется первая ячейка первой строки в таблице с кодом «form_0000», то она запишется так:

form_0000.A1

Если требуется столбец, то он задается буквой и звездочкой, строка задается звездочкой и цифрой - номером строки:

form_0000.C*
form_0000.*1

Знаками равенства и неравенства можно указать необходимые правила (математические операции).

Каждое новое правило пишется на новой строке.

Примеры:

form_0000.L1=form_0001.C1
form_0000.M1=form_0001.D1
form_0000.N1>=form_0002.R1+form_0001.P1+form_0005.D1+form_0000.B1
form_0000.C*>form_0001.C*+100
form_0000.*1=1

Если требуется, чтобы ячейка (или столбец/строка) обязательно были заполнены, необходимо написать условие с восклицательным знаком после знака сравнения:

form_0000.A3=!form_0000.A3
form_0001.B*=!form_0001.B*

Также работают условия вида:

form_0000.A9>=!form_0000.A11

где должно быть выполнено условие неравенства с обязательным требованием, что ячейки должны быть заполнены.

Правило «IF-THEN-ELSE»

Конструкция IF-THEN-ELSE имеет следующий вид:

Если условие 1 истинно, то выполняется условие 2, иначе условие 3 (если form_0000.C2 = «БАЛАНС», то form_0001.A1 = form_0001.A1 + form_0001.A2, иначе form_0001.A2 = form_0001.A1 + form_0001.A2).

Пример:

if form_0000.C2 = "БАЛАНС"
then form_0001.A1 = form_0001.A1 + form_0001.A2 | "НЕ СХОДИТСЯ СУММА"
else form_0001.A2 = form_0001.A1 + form_0001.A2 | "СХОДИТСЯ"

В межформенных проверках нельзя присваивать значение ячейки.

При невыполнении проверки можно выводить комментарий-подсказку во всплывающем окне с ошибками. Для задания подсказки необходимо после условия добавить вертикальную черту и текст в кавычках.

Обратите внимание, что в конструкции условия не работает сравнение с датой, написанной в проверке. Можно сравнивать только даты, содержащиеся в различных ячейках проверяемых форм и отчетов.

В синтаксисе межформенных проверок нет оператора «И» (AND). Для реализации оператора «И» необходимо написать два правила конструкции IF-THEN-ELSE.

Пример:

if form_0000.C2 = "БАЛАНС"
then form_0001.A1 = form_0001.A1 + form_0001.A2 | "НЕ СХОДИТСЯ СУММА"
else form_0001.A2 = form_0001.A1 + form_0001.A2 | "СХОДИТСЯ"

if form_0000.C3 = "2020 г."
then form_0001.A1 = form_0001.A1 + form_0001.A2 | "НЕ СХОДИТСЯ СУММА"
else form_0001.A2 = form_0001.A1 + form_0001.A2 | "СХОДИТСЯ"

Также в Системе предусмотрена возможность использовать в проверках пустые ячейки, т.е. ячейки, незаполненые пользователем.

Допустим пользователю необходимо заполнить форму «Товары» (form_0000), состояющую из строк с названиями товаров и столбцов: «Цена» (столбец A), «Количество» (столбец B) и «Сумма» (столбец C).

Если, например, для первой строки (для первого в списке товара) поле «Количество» не заполнено или в нем указано значение 0, то столбец «Сумма» остается пустым или равным 0. Если в поле «Количество» введено значание больше 0, то столбец «Сумма» обязателен для заполнения и значение должно быть больше 0.

Данное условие в межформенных проверках будет выглядеть следующим образом:

if form_0000.B1=0
then form_0000.C1=0
else form_0000.C1=!form_0000.C1

if form_0000.B1=0
then form_0000.C1=0
else form_0000.C1>0

Проверки, связанные с пустыми ячейками

В Системе предусмотрена возможность использовать в проверках пустые (не заполненные пользователем) ячейки.

Обратите внимание, что сравнение пустой ячейки возможно только с пустой ячейкой или нулем, сравнение не пустой ячейки – только с не пустой ячейкой.

Пример:

if form_0000.A1<1
then form_0000.B1>=0
else form_0000.B1>=!form_0000.B1 | "Введите отсутствующие данные в ячейку"

Данная схема реализации межформенной проверки означает следующее:

Если ячейка А1 пуста или <1, то ячейка В1 должна быть пустой. Если в ячейке А1 есть значение и A1>=1, то в ячейке В1 должно быть значение.

Другими словами:

Если ячейка А1 пуста или равна 0, то срабатывает вторая строка, т.е. если A1 = «пусто»/»0» («пусто»/»0» < 1), то B1 <=0 («пусто» = 0).

Если в ячейке А1 есть значение, то срабатывает третья строка, т.е. если A1 = «есть значение» («есть значение» > 1), то B1=!B1 (в ячейке также должно быть значение).