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

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

Список форм и отчетов, которые содержат проверяемые данные

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

_images/134.png

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

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

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

form_1.A1

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

form_1.C*
form_1.*1

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

Примеры:

form_1.L1=form_2.C1
form_1.M1=form_2.D1
form_1.N1>=form_3.R1+form_2.P1+form_6.D1+form_1.B1
form_1.C*>form_2.C*+100
form_1.*1=1

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

f1.A3=!f1.A3
f2.B*=!f2.B*

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

f1.A9>=!f1.A11

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

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

Конструкция IF-THEN-ELSE:

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

Пример:

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

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

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

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

Пример:

form1.A*=!form1.A* | "Введите отсутствующие данные!"
form1.B*=!form1.B* | "Введите отсутствующие данные!"

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

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

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

Пример:

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 (в ячейке также должно быть значение).