Как оптимизировать проверку заполнения реквизитов в 1С:Предприятие?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Метод 1: Использование свойства «Проверка заполнения»

Самый простой и эффективный способ — доверить проверку самой платформе. Для этого нам не нужно писать код проверки вручную.

  1. Откройте форму вашей обработки в конфигураторе.
  2. Выберите нужный реквизит (или элемент формы, привязанный к данным).
  3. В палитре свойств найдите поле Проверка заполнения.
  4. Установите значение Выдавать ошибку.
  5. Для самой кнопки, которая инициирует действие (например, «Создать документы»), также установите свойство Проверка заполнения в значение Выдавать ошибку (находится в свойствах элемента формы кнопки).

После этого платформа 1С автоматически будет проверять эти поля при нажатии на кнопку. Если поле пустое, система сама подсветит его красным цветом и выведет стандартное сообщение пользователю.

Метод 2: Событие «ОбработкаПроверкиЗаполнения»

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

Рассмотрим, как это работает:


&НаКлиенте
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
    // Убираем из списка проверки те поля, которые в данный момент не должны проверяться
    Если Не Объект.НужноПроверятьОсобоеПоле Тогда
        МассивУдаления = Новый Массив;
        МассивУдаления.Добавить("Объект.ОсобоеПоле");
        ОбщегоНазначенияКлиентСервер.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивУдаления);
    КонецЕсли;
КонецПроцедуры

Этот подход избавляет вас от необходимости формировать ТекстОшибки вручную и склеивать строки. Платформа делает всю грязную работу по визуализации ошибок за вас.

Где лучше создавать реквизиты: в объекте или на форме?

Частый вопрос при разработке обработок — куда выносить поля настроек. Давайте проанализируем ситуацию:

Реквизиты объекта обработки стоит использовать в том случае, если настройки должны сохраняться между сеансами работы пользователя. Платформа 1С обладает встроенным механизмом сохранения настроек пользователя, и если вы используете реквизиты объекта, вам будет гораздо проще организовать автоматическое восстановление введенных данных при следующем открытии формы.

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

Заключение: переходим к чистому коду

Отказываясь от ручных проверок, вы получаете следующие преимущества:

Попробуйте применить описанные механизмы ОбработкаПроверкиЗаполнения в своей следующей задаче, и вы увидите, насколько чище и профессиональнее станет ваш код. Это стандарт индустрии, который делает разработку на 1С не только эффективной, но и приятной.

← На главную