Проверка заполнения реквизитов

Печать (Ctrl+P)

Проверка заполнения реквизитов

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

Проверка заполнения

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

Платформа выполняет автоматическую проверку заполнения:
● констант;
● справочников, документов, отчетов, обработок, планов видов характеристик, планов счетов, планов видов расчета, бизнес-процессов, задач:
● реквизитов и стандартных реквизитов,
● табличных частей,
● реквизитов и стандартных реквизитов табличных частей;
● наборов записей регистров бухгалтерии, регистра сведений, регистра накопления, регистра расчета, перерасчетов, последовательностей:
● измерений,
● ресурсов,
● реквизитов и стандартных реквизитов;
● реквизитов форм;
● реквизитов форм отчетов;
● реквизитов форм обработок.
ПРИМЕЧАНИЕ. Проверка заполнения реквизитов выполняется аналогично функции ЗначениеЗаполнено(). Проверка заполнения табличных частей подразумевает, что табличная часть считается заполненной, когда в ней присутствует хотя бы одна строка.
Проверка заполнения может быть вызвана двумя способами:
● вызовом метода ПроверитьЗаполнения() (у объекта или формы);
● автоматически.
ВНИМАНИЕ! Если свойство конфигурации Режим совместимости установлено в значение Версия 8.1, то автоматическая проверка заполнения не работает.

Установки по умолчанию

Свойство реквизита Проверка заполнения по умолчанию устанавливается в значение Выдавать ошибку для следующих стандартных реквизитов:
ПланОбмена – Наименование;
Справочник – Владелец, Наименование;
Документ – Дата;
ПланВидовХарактеристик – Наименование;
ПланСчетов – Код, Наименование;
ПланСчетов.ВидыСубконто – ВидСубконто;
ПланВидовРасчета – Наименование;
ПланВидовРасчета.ВедущиеВидыРасчета – ВидРасчета;
ПланВидовРасчета.БазовыеВидыРасчета – ВидРасчета;
ПланВидовРасчета.ВытесняющиеВидыРасчета – ВидРасчета;
РегистрСведений – Период;
РегистрНакопления – Период;
РегистрБухгалтерии – Период;
РегистрРасчета – ПериодРегистрации, ВидРасчета, ПериодДействияНачало, ПериодДействияКонец;
БизнесПроцесс – Дата;
Задача – Наименование.

Порядок работы

Автоматическая проверка заполнения вызывается расширением формы перед интерактивной записью всех объектов, кроме документов, бизнес-
процессов, отчетов и обработок. Для этих объектов определено следующее поведение:
● для документов:
● проверка заполнения вызывается расширением формы перед проведением, если                   свойство Проведение установлено в значение Разрешить;
● проверка заполнения вызывается расширением формы перед записью, если                            свойство Проведение установлено в значение Запретить;
● для бизнес-процессов проверка заполнения вызывается расширением формы перед стартом;
● для отчетов проверка заполнения вызывается расширением формы при нажатии                   кнопки Сформировать;
● для обработок проверка заполнения вызывается расширением формы в случаях, если            нажаты кнопки, связанные со стандартными командами формы OK, Да, Повторить,                Пропустить.
Если реквизит является основным реквизитом формы следующих типов: СправочникОбъект, ДокументОбъект, ОтчетОбъект,
ПланВидовХарактеристикОбъект, ПланСчетовОбъект, ПланВидовРасчетовОбъект, БизнесПроцессОбъект, ЗадачаОбъект, то для значения такого реквизита
также будет вызвана проверка заполнения.
Для вызова проверки заполнения системой необходимо, чтобы у формы (с которой происходит работа) было установлено свойство Проверять заполнение автоматически. В этом случае вначале будет вызван обработчик ОбработкаПроверкиЗаполненияНаСервере() формы, а затем обработчик ОбработкаПроверкиЗаполнения() модуля объекта.
ВНИМАНИЕ! Если у формы свойство Проверять заполнение автоматически установлено в значение Истина при выполнении стандартных команд Записать (Провести для документов и т. д.), а также стандартных команд формы OK, Да, Повторить, Пропустить, будет вызван метод ПроверитьЗаполнение(). В противном случае проверка заполнения не вызывается ни для формы, ни для объекта.

Процесс проверки заполнения происходит следующим образом:
● Формируется список имен реквизитов формы, для которых возможна проверка заполнения и для которых свойство ПроверкаЗаполнения установлено в значение ВыдаватьОшибку. В этот список не будут включены имена реквизитов, тип которых не поддерживает проверку заполнения (например, СправочникОбъект), но будет включено имя основного реквизита формы.
В автоматически формируемый список реквизитов не будут включены реквизиты формы, отключенные с помощью функциональных опций.
● Вызывается обработчик события формы ОбработкаПроверкиЗаполненияНаСервере, в котором разработчик может описать свой алгоритм проверки заполнения или изменить состав проверяемых реквизитов. В обработчик будет передан сформированный список имен реквизитов. Если в обработчике необходимо добавить к списку какие-либо реквизиты, это можно сделать только для реквизитов вышеперечисленных типов (для
которых возможна проверка заполнения в форме) и основного реквизита. Добавление в список имен реквизитов объектного типа (например, СправочникОбъект) вызовет исключение при дальнейшей автоматической проверке. Добавление в список имени несуществующего реквизита вызовет исключение при дальнейшей автоматической проверке.
● После завершения работы обработчика события механизм проверки заполнения получает обратно список имен, проверяемых реквизитом (который, возможно, был изменен в обработчике). Система анализирует список реквизитов и проверяет заполненность каждого реквизита. Если реквизиттявляется основным реквизитом объектного типа (например, Объект типа СправочникОбъект), будет вызвана проверка заполнения самого объекта.
Если реквизит является реквизитом объектного типа, но не основным, будет вызвано исключение.

Разработчик имеет возможность влиять на процесс проверки путем определения в модуле объекта, набора записей и в модуле формы обработчика события ОбработкаПроверкиЗаполнения.
Определив обработчик события, разработчик получает полный контроль над проверкой заполнения. В параметре ПроверяемыеРеквизиты обработчик получает массив реквизитов, для которых в режиме Конфигуратор указано, что они должны проверяться. Разработчик может произвольно модифицировать этот массив:
● удалять те реквизиты, проверку заполнения которых он реализует сам или считает, что их не нужно проверять в данный момент;
● добавлять необходимые реквизиты, для которых должна выполниться проверка заполнения.
В случае если разработчика не устраивает стандартная процедура проверки, он может написать алгоритм проверки сам и, используя объект СообщениеПользователю, сообщить об имеющихся проблемах пользователю.
Если в процессе проверки разработчик вывел пользователю сообщения об ошибках, необходимо установить параметр Отказ в значение Истина, чтобы уведомить платформу о том, что текущее действие не может быть завершено.
Параметр события ПроверяемыеРеквизиты содержит имена атрибутов в следующем формате:
● для реквизитов и констант – ИмяРеквизита, например, Поставщик;
● для табличных частей – ИмяТабличнойЧасти, например, Товары;
● для реквизитов табличных частей – ИмяТабличнойЧасти.ИмяРеквизита, например, Товары.Номенклатура;
● для реквизитов форм – ИмяРеквизита, например, ДокументОбъект.

Для реквизитов, входящих в состав функциональных опций без параметров, значение опции учитывается при проверке заполнения. Если функциональная опция включена, то реквизит будет включен в список проверяемых реквизитов; если опция выключена, реквизит не будет включен в список проверяемых реквизитов. Это значит, что отключенное поле не будет передано через параметры ПроверяемыеРеквизиты в
ОбработкаПроверкиЗаполнения.
Реквизиты, входящие в состав функциональной опции с параметрами , всегда включаются в список проверяемых реквизитов (параметр ПроверяемыеРеквизиты). Удаление реквизита из списка проверяемых реквизитов в таких случаях необходимо выполнять в обработчике ОбработкаПроверкиЗаполнения. Для этого следует получить значение функциональной опции, указав в качестве параметров необходимые данные
объекта.

Правила отображения отметки незаполненного

На отображение отметки незаполненного влияют следующие свойства элементов конфигурации:
● свойство Проверка заполнения реквизита или стандартного реквизита объекта метаданных;
● свойство Проверка заполнения реквизита формы;
● свойство Автоотметка незаполненного элемента формы;
● свойство ОтметкаНезаполненного элемента формы (доступно только для программного изменения).
Свойство элемента формы Автоотметка незаполненного может быть установлено в значение:
Авто – отметка будет отображаться, если у реквизита формы или реквизита (стандартного реквизита) объекта метаданных свойство Проверка заполнения установлено в значение Выдавать ошибку и реквизит, связанный с элементом формы, содержит пустое значение.
Да – отметка будет отображаться для незаполненного элемента вне зависимости от того, в каком состоянии находится свойство Проверка
заполнения.
Нет – отметка не будет отображаться для незаполненного элемента вне зависимости от того, в каком состоянии находится свойство Проверка заполнения.
При начале интерактивного изменения поля ввода отметка незаполненного перестает отображаться, при этом значение свойства ОтметкаНезаполненного не изменяется. Отображение отметки восстанавливается (если это необходимо) после того, как в поле ввода завершено интерактивное редактирование или установлено значение. При этом свойство ОтметкаНезаполненного может быть изменено системой в том случае, если
свойство АвтоОтметкаНезаполненного установлено в значение Истина:
● если значение в поле не заполнено, то свойство ОтметкаНезаполненного будет установлено в значение Истина;
● если в поле значение заполнено, то свойство ОтметкаНезаполненного будет установлено в значение Ложь.
ПРИМЕЧАНИЕ. Если свойство ОтметкаНезаполненного установлено у таблицы, то для таблицы, в которой нет строк, будет подсвечена первая строка, а для заполненной таблицы – все строки.
Кроме того, отметка незаполненного также будет отображена, если в окне сообщений есть сообщение , связанное с конкретным полем формы, вне зависимости от установленных свойств элемента формы и связанных с ним реквизитов. После очистки окна сообщений отметка незаполненного снимается у тех элементов формы, значение свойства ОтметкаНезаполненного которых равно значению Ложь.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *