При внедрении серийного учета в программе 1С:Управление торговлей (редакция 11), а также в родственных конфигурациях 1С:ERP и 1С:Комплексная автоматизация, специалисты часто сталкиваются со строгим поведением системы. Если для вида номенклатуры и склада активирована политика учета серий, программа начинает жестко требовать заполнения серий во всех документах товародвижения.
Однако в реальном бизнесе часто возникает потребность в «выборочном» учете. Например, когда серии нужно присваивать и отслеживать только для возвращенных покупателями товаров (чтобы контролировать их дальнейшую судьбу, сроки нахождения на складе или повторную продажу), в то время как поток обычных новых товаров должен проходить без указания серий. Ниже мы детально разберем, почему возникает эта проблема и какими способами — как стандартными, так и программными — ее можно решить.
Даже если в настройках политики учета серий выбрано самое простое «Справочное указание серий», при проведении таких документов, как «Реализация товаров и услуг» или «Возврат товаров от клиента», система проводит проверку заполнения. С точки зрения платформы 1С, если в настройках складского учета указано, что на данном складе для этого товара ведется учет серий, то пустая колонка Серия в табличной части документа считается ошибкой заполнения. Провести документ с пустой серией стандартными средствами не удастся.
Давайте подробно рассмотрим четыре практических сценария решения этой задачи.
---
Это самый простой административный метод, который активно применяется на практике и не требует внесения изменений в код программы. Суть метода заключается в создании виртуальной серии, которая будет выступать в роли «заглушки» для всех стандартных (невозвратных) товаров.
Разберем этот процесс по шагам:
Преимущества: Полностью сохраняется сквозная аналитика в типовых отчетах, не нарушается логика работы регистров, не требуются доработки при обновлении конфигурации.
---
Указание серий в 1С:УТ 11 зависит не только от настроек самого товара (вида номенклатуры), но и от настроек конкретного склада. Мы можем использовать эту особенность для обхода ограничения.
Проанализируем этот сценарий:
Серии не используются. Для «Склада возвратов» включается политика Справочное указание серий.---
Если возвращенный товар имеет отличные потребительские свойства (или нам важно выделить его в учете отдельно от основного складского остатка), можно использовать механизм изменения качества.
Выполним следующие шаги:
Изменение качества товаров мы переводим возвращенную позицию из качества «Новый» в качество «Уцененный» (связанный с серийным видом номенклатуры). При этом система потребует создать и указать серию для новой уцененной позиции.---
Если бизнес-процессы вашей компании категорически исключают ведение «дежурных» серий или разделение складов, и вам требуется, чтобы колонка Серия физически оставалась пустой для обычных товаров в одном и том же документе, необходимо прибегнуть к программной доработке.
Важное предупреждение: Данную доработку допускается производить только при использовании политики «Справочное указание серий». При такой политике серии записываются только в оборотный регистр накопления Движения серий товаров. В остаточных регистрах (таких как Товары на складах или Выручка и себестоимость продаж) измерение «Серия» отсутствует.
Если же у вас включена политика «Управление остатками» или «Учет себестоимости», отключать обязательность заполнения серий программно категорически запрещено! В противном случае проведение документов с пустыми сериями приведет к критическому расхождению остатков в базе данных и невозможности корректного расчета себестоимости и закрытия месяца.
Для реализации доработки выполним следующие шаги в конфигураторе:
Создадим новое Расширение конфигурации. В расширение необходимо перенести общий модуль, отвечающий за проверку заполнения серий в документах перед их проведением. Обычно валидация вызывается из процедур проверки заполнения документов (например, в модуле менеджера или модуле объекта документа РеализацияТоваровУслуг) или через специализированные функции общего модуля НоменклатураКлиентСервер.
Посмотрим на пример перехвата процедуры проверки заполнения через механизм &Вместо или &ИзменениеИВопреки:
&Вместо("ПроверитьЗаполнениеСерийВДокументе")
Процедура Расш1_ПроверитьЗаполнениеСерийВДокументе(ПараметрыДокумента, Отказ)
// Получаем таблицу товаров из параметров документа
ТаблицаТоваров = ПараметрыДокумента.Товары;
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
// Описываем наше условие, при котором серия может быть пустой.
// Например, если товар не является возвратным (нет признака в реквизитах строки или документа).
Если Не СтрокаТовара.ЭтоВозвратныйТовар И Не ЗначениеЗаполнено(СтрокаТовара.Серия) Тогда
// В этом случае мы просто игнорируем ошибку и не устанавливаем флаг Отказ
Продолжить;
КонецЕсли;
КонецЦикла;
// Для всех остальных случаев вызываем стандартный обработчик проверки
ПродолжитьВызов(ПараметрыДокумента, Отказ);
КонецПроцедуры
Использование расширения гарантирует, что при обновлении типовой конфигурации 1С ваши изменения не затрутся, а логика выборочного контроля заполнения серий продолжит работать в соответствии с вашими бизнес-требованиями.