Книга: Разработка интерфейса прикладных решений на платформе "1С:Предприятие 8"
Назад: Свойство «Проверка заполнения»
Дальше: Вывод сообщений с привязкой к элементам формы

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

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

Для этого у него есть два события. Одно событие – Обработка проверки заполнения на сервере – можно обработать в модуле формы. Другое событие – Обработка проверки заполнения – можно обработать в модуле прикладного объекта.

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

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

И тот и другой обработчик имеют два параметра: Отказ и ПроверяемыеРеквизиты.

В параметр ПроверяемыеРеквизиты платформа передает массив имен тех реквизитов, заполненность которых должна быть проверена.

Разработчик может поступить несколькими способами:

Листинг 3.41. Самостоятельная проверка всех реквизитов

Если Поставщик = Справочники.Поставщики.ПустаяСсылка() Тогда

Сообщение = Новый СообщениеПользователю;

Сообщение.Текст = "Необходимо заполнить поставщика!";

Сообщение.Поле = "Поставщик";

Сообщение.УстановитьДанные(ЭтотОбъект);

Сообщение.Сообщить();

 

Отказ = Истина;

 

КонецЕсли;

 

// Проверка остальных реквизитов

// ...

 

// Очистить массив проверяемых реквизитов, чтобы платформа

// не выполняла их автоматическую проверку.

ПроверяемыеРеквизиты.Очистить();

Примечание

Пример можно посмотреть в демонстрационной базе «Проверка заполнения», модуль документа Накладная, процедура ОбработкаПроверкиЗаполнения, снять комментарии для варианта «Пример 1».

Листинг 3.42. Частичная проверка заполненности реквизитов

Если Поставщик = Справочники.Поставщики.ПустаяСсылка() Тогда

 

Сообщение = Новый СообщениеПользователю;

Сообщение.Текст = "Необходимо заполнить поставщика!";

Сообщение.Поле = "Поставщик";

Сообщение.УстановитьДанные(ЭтотОбъект);

Сообщение.Сообщить();

 

Отказ = Истина;

 

// Удалить поставщика из массива проверяемых реквизитов.

ИндексПоляПоставщик = ПроверяемыеРеквизиты.Найти("Поставщик");

 

Если ИндексПоляПоставщик <> Неопределено Тогда

ПроверяемыеРеквизиты.Удалить(ИндексПоляПоставщик);

 

КонецЕсли;

 

КонецЕсли;

Примечание

Пример можно посмотреть в демонстрационной базе «Проверка заполнения», модуль документа Накладная, процедура ОбработкаПроверкиЗаполнения, снять комментарии для варианта «Пример 2».

Листинг 3.43. Добавление новых реквизитов для автоматической проверки

ПроверяемыеРеквизиты.Добавить("Комментарий");

Примечание

Пример можно посмотреть в демонстрационной базе «Проверка заполнения», модуль документа Накладная, процедура ОбработкаПроверкиЗаполнения, снять комментарии для варианта «Пример 3».

Листинг 3.44. Отказ от автоматической проверки реквизитов

ПроверяемыеРеквизиты.Очистить();

Примечание

Пример можно посмотреть в демонстрационной базе «Проверка заполнения», модуль документа Накладная, процедура ОбработкаПроверкиЗаполнения, снять комментарии для варианта «Пример 4».

Нужно заметить, что состав массива ПроверяемыеРеквизиты различен в обработчике формы и в обработчике объекта.

В обработчике объекта в этом массиве содержатся имена реквизитов объекта, которые требуют проверки (рис. 3.54).

Рис. 3.54. Массив реквизитов, проверяемых в объекте

В обработчике формы содержатся имена реквизитов формы, которые требуют проверки. И если есть реквизиты объекта, которые нужно проверять, то содержится имя основного реквизита формы, содержащего данные объекта (рис. 3.55).

Рис. 3.55. Массив реквизитов, проверяемых в форме

Параметр Отказ нужен для того, чтобы отказаться от записи объекта. Не от проверки заполненности, а именно от записи. Чтобы отказаться от проверки объектов, нужно очистить массив ПроверяемыеРеквизиты.

Если установить параметр Отказ при обработке события в объекте, то после выполнения обработчика Обработка проверки заполнения процесс записи будет прекращен (рис. 3.56).

Рис. 3.56. Использование параметра «Отказ» в обработчике объекта

Если параметр Отказ установить в форме, то дальнейшее поведение системы будет зависеть от того, есть ли в списке проверяемых реквизитов основной реквизит формы (см. рис. 3.55). Если есть, отработает проверка заполнения в объекте, и на этом все закончится (см. рис. 3.56).

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

Рис. 3.57. Использование параметра «Отказ» в обработчике формы

Назад: Свойство «Проверка заполнения»
Дальше: Вывод сообщений с привязкой к элементам формы