При работе в системе 1С:ERP Управление предприятием (особенно в версиях 2.1 и 2.4) пользователи часто сталкиваются с ситуацией, когда после проведения документа Перемещение товаров в регистре накопления ТоварыКОформлениюПоступления измерение Серия остается пустым. Это приводит к тому, что остатки в регистре «зависают», а при оформлении складских ордеров возникают отрицательные остатки по конкретным сериям и положительные — по пустым значениям. Разберем подробно, почему это происходит и как правильно настроить систему.
Прежде всего, проанализируем назначение данного регистра. Он служит связующим звеном между финансовым контуром (накладными) и складским контуром (ордерами). Когда мы используем ордерную схему документооборота, фактическое движение товара по складу фиксируется документом Приходный ордер на товары, а переход права собственности или ответственности между подразделениями — документом Перемещение товаров.
Разберем ситуацию: если в финансовом документе серия не зафиксирована в движениях, а на складе кладовщик указал конкретную серию, система видит рассогласование. Для регистра ТоварыКОформлениюПоступления это выглядит так: по данным «офиса» пришел товар без серии, а по данным «склада» принят товар с серией. В итоге регистр не закрывается, и в отчетах по оформлению поступлений мы видим «хвосты».
Основная причина, по которой серии не попадают в регистр при первичном проведении, заключается в использовании статусов. Рассмотрим логику работы документа:
Как показывает практика, именно в момент перехода документа в статус «Принят» механизмы проведения ERP транслируют серии из табличной части документа в регистр ТоварыКОформлениюПоступления. Если документ завис в промежуточном статусе, серии в движениях по приходу не появятся.
Выясним причину, по которой поведение системы может отличаться на разных складах. Все дело в справочнике ПолитикиУчетаСерий. Проанализируем два основных сценария:
Сценарий 1: Учет себестоимости по сериям или управление остатками серий. В этом случае система требует жесткого указания серий во всех документах. Если в политике стоит флаг «При приемке», серия обязана быть в Перемещении товаров. Без статуса «Принят» регистр не будет корректно сопоставлять данные с ордером.
Сценарий 2: Учет серий только как справочная информация (номера ГТД, сроки годности без учета по остаткам). Здесь серии могут указываться только в ордерах. Однако, если конфигурация настроена так, что серии должны фигурировать в финансовом учете, правило «финального статуса» продолжает действовать.
В настройках системы (НСИ и администрирование — Склад и доставка) существует опция «Статусы перемещений товаров». Рассмотрим, стоит ли её отключать. Если мы снимем этот флаг, документ будет проводиться сразу в конечном статусе. Однако программа выдает предупреждение: «Не рекомендуется отключать статусы при использовании ордерной схемы совместно с сериями номенклатуры».
Почему это важно? При использовании ордерной схемы на обоих складах возникает временной разрыв. Если статусы отключены, система делает движения по приходу сразу в момент создания документа. Это может привести к тому, что товар будет числиться на остатках получателя еще до того, как он физически выехал со склада отправителя. При использовании серий (особенно для контроля сроков годности) это критично для точности отчетов.
Если ручная установка статуса каждым кладовщиком или менеджером неудобна, рассмотрим варианты автоматизации. Стандартного фонового задания для этого нет, так как статус «Принят» подразумевает осознанное действие — подтверждение приемки.
Посмотрим на пример логики, которую можно реализовать с помощью расширения или подписки на события. Идея заключается в том, чтобы при проведении Приходного ордера на товары в статусе «Принят», система проверяла связанное с ним Перемещение товаров и обновляла его статус.
Рассмотрим пример программного кода для такой автоматизации:
Процедура ПриОбработкеПриходногоОрдера(Источник, Отказ, РежимПроведения)
// Проверяем, что ордер проведен и принят
Если Источник.Статус = Перечисления.СтатусыПриходныхОрдеровНаТовары.Принят Тогда
Распоряжение = Источник.Распоряжение;
// Если распоряжением является Перемещение товаров
Если ТипЗнч(Распоряжение) = Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
ОбъектПеремещение = Распоряжение.ПолучитьОбъект();
// Проверяем, не установлен ли уже финальный статус
Если ОбъектПеремещение.Статус <> Перечисления.СтатусыПеремещенийТоваров.Принят Тогда
ОбъектПеремещение.Статус = Перечисления.СтатусыПеремещенийТоваров.Принят;
Попытка
ОбъектПеремещение.Записать(РежимЗаписиДокумента.Проведение);
Исключение
// Обработка ошибок блокировки или заполнения
ЗаписьЖурналаРегистрации("Автостатус", УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Для того чтобы в регистре ТоварыКОформлениюПоступления не возникало расхождений по сериям, рекомендуем придерживаться следующего алгоритма:
Разбор данной ситуации показывает, что в 1С:ERP статус документа — это не просто информационный флаг, а управляющий элемент, влияющий на формирование движений в регистрах накопления. Правильное понимание жизненного цикла документа Перемещение товаров позволяет избежать типовых ошибок учета серийного товара.