Часто в работе программиста 1С возникают задачи, требующие вмешательства в логику стандартных проверок заполнения документов. Например, когда заказчик просит убрать обязательное заполнение цены или суммы в ЗаказПокупателя. В данной статье мы разберем по шагам, где именно искать эти проверки и как их правильно модифицировать или отключить.
Самый быстрый способ найти нужный участок кода — это отталкиваться от того сообщения, которое видит пользователь при попытке провести документ. Рассмотрим порядок действий:
Ctrl+Shift+F.НСтр(), поэтому ищите по части ключевого слова.Если поиск по тексту привел вас в Модуль объекта документа, проверьте наличие процедуры ОбработкаПроверкиЗаполнения. Это стандартный механизм платформы 1С. В данной процедуре часто описываются проверки, которые выполняются перед записью объекта.
Пример структуры кода, который нужно искать:
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
// Здесь могут быть проверки условий
Если Цена = 0 Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = \"Цена не заполнена!\";
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Если вы обнаружили подобный код, то для отключения проверки достаточно закомментировать соответствующий блок или добавить условие, при котором проверка пропускается.
Если в Модуле объекта вы не нашли нужной логики, вероятнее всего, проверка реализована через механизм Подписки на события. Это удобный способ дополнять функционал типовых объектов, не меняя их напрямую.
Разберем, как найти такие подписки:
ОбработкаПроверкиЗаполнения.Документ.ЗаказПокупателя).Иногда проверка не является программной, а задана на уровне метаданных. Платформа 1С позволяет управлять обязательностью заполнения через свойства реквизита.
Цена).Проверка заполнения.Выдавать ошибку, вы можете изменить его на Не проверять. Это отключит встроенную проверку платформы без написания кода.В управляемых формах проверки часто выносятся в Модуль формы. Если вы работаете с 1С v8.3, обязательно проверьте процедуру ОбработкаПроверкиЗаполненияНаСервере.
Важное примечание: при анализе кода обращайте внимание на использование метода ПроверитьЗаполнение(). Если в коде вызывается этот метод, значит, управление передается в стандартный механизм платформы, который обращается к свойствам метаданных (см. этап 4).
Рассмотрев эти пять подходов, вы гарантированно обнаружите место, где система блокирует проведение документа. Помните: прежде чем вносить изменения, желательно использовать Замер производительности или отладку, если система позволяет это сделать в текущих условиях. Это поможет убедиться, что вы нашли именно то место, которое влияет на поведение пользователя в конкретный момент времени.