Где находится проверка заполнения товарной категории в плане продаж 1С:ERP и как ее настроить?

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

При попытке провести документ в 1С:ERP Управление предприятием разработчики часто сталкиваются с ситуацией, когда система выдает ошибку о незаполненном поле, однако в модуле формы, модуле объекта или менеджере документа нет соответствующего программного кода. Проанализируем, почему возникает ошибка «Не заполнена колонка Товарная категория», где на самом деле находится эта проверка и как корректно управлять обязательностью реквизитов.

Причина поведения системы: системный контроль платформы

Выясним причину отсутствия кода в модулях. В платформе 1С:Предприятие 8.3 проверка обязательности заполнения полей разделена на два уровня: системный (декларативный) и программный.

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

В документе «План продаж по категориям» реквизит табличной части ТоварнаяКатегория имеет именно такую настройку в метаданных, так как категория является ключевым разрезом планирования.

Методологическое назначение реквизита в 1С:ERP

Прежде чем отключать проверку, разберем, к чему приведет отсутствие товарной категории в документе:

  1. Нарушение структуры регистров: Товарная категория выступает обязательным измерением регистра накопления Планы продаж по категориям. Запись пустых значений приведет к искажению данных в отчетах по объемно-календарному планированию.
  2. Невозможность детализации планов: Документ «План продаж по категориям» предназначен для укрупненного планирования. На его основе в дальнейшем формируются детализированные документы «План продаж» (по номенклатуре) с расчетом по нормативам распределения, скорости продаж и рейтингам. Без категории алгоритмы декомпозиции работать не смогут.
  3. Ошибки в источниках данных: При заполнении планов по источникам данных планирования строки с пустыми категориями будут исключаться из расчетов.

Варианты решения задачи

Рассмотрим практические способы решения проблемы в зависимости от бизнес-требований.

1. Методологические настройки без изменения конфигурации

Если в системе требуется регистрировать позиции, не привязанные к конкретной категории, рекомендуется использовать штатные методики 1С:ERP:

  1. Использование служебной категории: Создадим в справочнике Товарные категории элемент с наименованием «Без категории» или «Прочее». Указание такого значения позволит сохранить корректность записей в регистрах и целостность типовых механизмов распределения.
  2. Смена вида плана: Если учет ведется сразу в разрезе номенклатурных позиций без предварительного укрупненного планирования, проверим настройки сценария. Вместо документа планирования по категориям следует использовать обычный документ «План продаж» с типом «План продаж по номенклатуре», где товарная категория не является обязательным реквизитом табличной части.

2. Программное отключение проверки через расширение

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

Создадим расширение и добавим в модуль объекта документа обработчик события ОбработкаПроверкиЗаполнения с аннотацией &Перед:


&Перед("ОбработкаПроверкиЗаполнения")
Процедура Расш_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
    
    // Исключаем реквизит табличной части из массива обязательной проверки платформы
    Индекс = ПроверяемыеРеквизиты.Найти("Планы.ТоварнаяКатегория");
    Если Индекс <> Неопределено Тогда
        ПроверяемыеРеквизиты.Удалить(Индекс);
    КонецЕсли;
    
КонецПроцедуры

Если в конфигурации активно используются функции Библиотеки стандартных подсистем (БСП), для очистки массива проверяемых полей можно применить специализированный метод общего модуля:


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

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

← На главную