Книга: Разработка интерфейса прикладных решений на платформе "1С:Предприятие 8"
Назад: Проверка заполнения и функциональные опции
Дальше: Глава 3.12. Сообщения пользователю

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

Еще раз хочется обратить внимание на то, что проверка заполнения – это механизм, ориентированный исключительно на интерактивный ввод данных пользователем. Он автоматически вызывается расширениями форм.

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

Важно понимать, что проверка заполнения не является частью записи объекта. Она специально выделена отдельно (рис. 3.73).

Рис. 3.73. Проверка заполнения и запись объекта

Таким образом, есть два отдельных вопроса. Первый вопрос: все ли реквизиты объекта заполнены? Второй вопрос: можно ли записывать объект в информационную базу?

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

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

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

Чтобы решить, нужно, по сути, ответить на вопрос: что является неотъемлемой частью технической логики объекта, не зависящей от способа ввода данных? Такой частью, без которой он существовать не может?

Наверняка какие-то проверки нужно выполнять перед записью. Но они, во-первых, должны быть очень быстрыми (потому что у вас может происходить массовая генерация объектов), во-вторых, должны быть очень «жестокими». То есть вообще в базу данных никогда не должен попасть объект «без такого вот значения».

А проверка заполнения может содержать больший объем проверок, ориентированных именно на то, что не хочется пользователю дать возможность ввести «вот такое» интерактивно.

Пару слов следует сказать о свойстве Запрет незаполненных значений, которое существует у измерений регистров. Если это свойство установлено у измерения, то платформа автоматически будет проверять при записи наборов записей, что измерение заполнено (рис. 3.74).

Рис. 3.74. Свойство «Запрет незаполненных значений»

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

Тут нужно понимать, что проверка заполнения – это исключительно интерактивная проверка; проверка того, что пользователь ввел интерактивно.

В отличие от этого запрет незаполненных значений – это неотъемлемая часть бизнес-логики регистра. Она означает, что записи с незаполненным измерением не имеют смысла в информационной базе, каким бы образом они в нее ни попали: в результате интерактивного ввода или в результате выполнения программного кода.

Назад: Проверка заполнения и функциональные опции
Дальше: Глава 3.12. Сообщения пользователю