Настройка правил форматно-логического контроля

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

Для этого необходимо нажать на иконку «Ограничения» на странице просмотра формы (реестра) над таблицей формы (реестра).

_images/112.png

При нажатии на иконку «Ограничения» отображается всплывающее окно «Панель ограничений» (при нажатии на вопросительный знак рядом с названием панели откроется окно с подсказками и примерами правил).

Условные обозначения

При записи правил форматно-логического контроля ячейка формы (реестра) обозначается аналогично тому, как это реализовано в MS Excel (латинская буква указывает на столбец, число указывает на номер строки). Например, ячейка в третьей строке четвертого столбца обозначается как «D3».

Если правило задается для всех ячеек столбца (или строки), используется символ «*». Например, весь второй столбец можно задать как «B*», всю вторую строку как «*2» .

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

Строка (или часть строки), начинающаяся с символа «#», не учитывается и рассматривается как комментарий.

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

Условные обозначения операций, используемых при записи правил:

  • Арифметические знаки: сумма «+», разность «-», произведение «*», деление «/».
  • Открывающая «(» и закрывающая «)» скобки.
  • Знаки строгого неравенства: меньше «<», больше «>».
  • Знаки не строгого неравенства: меньше или равно «<=», больше или равно «>=».
  • Знаки равенства «==» и неравенства «!=».
  • Логическое отрицание «not», логическое И «and», логическое ИЛИ «or».
  • Абсолютное значение (модуль числа) «abs()».
  • Длина строки (значения в ячейке) «len()».
  • Наличие значения в ячейке «есть()».
  • Закрытие ячейки для ввода «$».
  • Сообщение об ошибке «@».
  • Комментарий «#».

Если введенное в ячейку значение не удовлетворяет заданным для этой ячейки правилам, оно не сохраняется, на экране соответствующая ячейка в форме (реестре) подсвечивается красным цветом, а при наведении на нее появляется всплывающая подсказка с указанием нарушенного условия.

При задании правила можно задать сообщение об ошибке, которое будет выводиться на экран при нарушении данного правила. Для этого после записи правила следует ввести символ «@» и после символа набрать текст сообщения.

В отличие от раскрасок в правилах форматно-логического контроля не предусмотрены ограничения, действующие в зависимости от заданных условий. Исключение составляют только правила закрытия ячеек на ввод (см. подраздел «Запрет на ввод данных в ячейку в зависимости от значений в других ячейках»).

Контроль обязательности заполнения

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

есть(А2)    # ячейка А2 обязательна для заполнения

Запрет на ввод данных в ячейку

Для запрета ввода данных в ячейку используется символ «$»:

$ А2    # ячейка А2 закрыта для ввода данных

Можно запретить ввод данных сразу для всей строки или всего столбца:

$ *2    # строка 2 закрыта для ввода данных
$ D*    # столбец D закрыт для ввода данных

Возможен вариант запрета ввода данных для перечня ячеек, строк, столбцов:

$ А2 *7 B12 A3 D*    # ячейки А2, B12, A3, а также строка *7 и столбец D* закрыты для ввода данных

Существует и другой способ запрета ввода данных - с помощью условия неравенства ячейки самой себе:

A2!=A2      # ячейка А2 закрыта для заполнения (условие неравенства самому себе)
A*!=A*      # столбец А* закрыт для заполнения (условие неравенства самому себе)

Запрет на ввод данных в ячейку в зависимости от значений в других ячейках

Чтобы запретить ввод данных в ячейку в случае невыполнения определенного условия, следует задать правило в формате «(условие) $ (номера ячеек, строк, столбцов, которые должны быть закрыты в случае невыполнения условия)». Например:

G1!=13 $ B1   # если значение в ячейке G1 равно 13, ячейка B1 закрыта для ввода
G*!="Утверждено" $ A* B*  # если в какой-либо строке в столбце G содержится текст "Утверждено", то в столбцах A, B ячейки данной строки закрыты для ввода

Сравнение с константой

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

Примеры:

C1>100      # значение в ячейке С1 должно быть больше 100
*2==55      # значения в ячейках второй строки должны быть равны 55
C3!=2       # значение в ячейке С3 должно быть не равно 2
B*<=1       # значения в ячейках столбца B должны быть меньше или равны 1

Правило может содержать объединение или пересечение условий, заданных равенствами/неравенствами.

Примеры:

С1>15 or C1<3                              # показатель в ячейке С1 не может принимать значения от 3 до 15
A2<=15 and A2!=3                           # показатель в ячейке A2 может принимать любые значения, меньшие или равные 15, за исключением значения 3
(B*>=20 or B*<=10) and (B*>=1 and B*<=30)  # в ячейках столбца B могут содержаться либо числа от 1 до 10, либо числа от 20 до 30

Сравнение со значением в другой ячейке

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

Примеры:

C1>A2       # значение в ячейке С1 должно быть больше значения в ячейке A2
*3!=A2      # значения в ячейках 3-ей строки не должны быть равны значению в ячейке A2
A*==B*      # в каждой строке значение в столбце A должно быть равно значению в столбце B
*1<=*5      # в каждом столбце значение в 1-й строке должно быть меньше или равно значению в 5-й строке

Правило может содержать объединение или пересечение условий, заданных равенствами/неравенствами.

Примеры:

С*>15 or C*<3      # в ячейках столбца С могут содержаться либо числа меньшие 3, либо числа большие 15
A2<=B5 and A2!=3   # в ячейке A2 может содержаться любое значение, меньшее или равное значению в ячейке B5, за исключением числа 3
B*>=A* or B*<=C*   # в каждой строке значение в столбце B должно быть либо больше или равно значению в столбце A, либо меньше или равно значению в столбце C

Сравнение с выражением

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

(A* + B*) / 4 == C*         # значения в столбце С равны сумме значений в столбцах А и В в той же строке, деленной на 4

Если одна из сравниваемых ячеек пустая, равенство (неравенство) считается выполненным.

Контроль длины строки

Для того, чтобы длина строки текста в ячейке была равна (меньше, меньше или равна, больше, больше или равна, не равна) указанному целому числу, следует использовать операцию «len()», например:

len(C3)>=3    # в ячейке С3 значение показателя должно состоять как минимум из 3 знаков

Вывод заданного текста в сообщении об ошибке

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

G* > 0 @  Все плановые показатели объема должны быть больше нуля
A3 > 4 @  Должно быть больше 4!

Значение, меньшее или равное 0, в ячейке столбца G не сохранится, в правом верхнем углу экрана будет выведено сообщение «Значение не удовлетворяет условию: Все плановые показатели объема должны быть больше нуля».

Значение, меньшее или равное 4, в ячейке A3 не сохранится, в правом верхнем углу экрана будет выведено сообщение «Значение не удовлетворяет условию: Должно быть больше 4!».

После ввода всех ограничений необходимо нажать на кнопку «Применить выбранные правила».

_images/177.png

Ячейки в форме/реестре, для которых действует запрет на ввод данных, будут окрашены в серый цвет.

Если введенное в ячейку значение не удовлетворяет ограничениям для этой ячейки, такая ячейка будет окрашена красным цветом, а при наведении на нее указателя мыши появится всплывающая подсказка, в которой будет указано ограничение, которому значение не удовлетворяет:

_images/178.png