Как исправить отрицательные остатки по партиям в 1С:ERP после корректировки приобретения в ноль?

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

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

В результате этой операции в регистре накопления Себестоимость товаров на начало августа образуются отрицательные остатки по количеству и стоимости по конкретной партии (исходному ПТУ). При этом по данной номенклатуре в системе могут числиться положительные остатки, но по другим, более поздним партиям. Попытки закрыть месяц приводят к «жонглированию» партиями: программа пытается распределить минус, из-за чего отрицательный остаток перескакивает с одного документа на другой, а ручные корректировки регистров сбрасываются. Проанализируем, почему так происходит и как решить эту проблему.

В чем реальная причина проблемы под капотом 1С:ERP

Для того чтобы понять природу этой ошибки, разберем поведение партионного движка 1С:ERP. При расчете себестоимости по методу ФИФО система строит временные таблицы партионного учета динамически в момент проведения регламентной операции Расчет себестоимости товаров.

Когда мы оформляем документ Корректировка приобретения в ноль, система уменьшает количество и стоимость по конкретной партии (первому ПТУ). Но так как физически этот товар уже ушел в производство в прошлом периоде, остаток по этой партии на момент корректировки равен нулю. Списание корректировки уводит партионный остаток в минус.

Алгоритм расчета себестоимости при закрытии месяца видит этот минус и запускает процедуру выравнивания. Он пытается перераспределить отрицательный остаток на другие партии того же товара, у которых есть положительный баланс в текущем месяце. Из-за этого возникает бесконечный цикл: система убирает минус с одной партии, перестраивает цепочку списаний ФИФО и переносит этот минус на следующую партию (например, на ПТУ2 или ПТУ3). Любые попытки сделать ручную Корректировку регистров только по регистру Себестоимость товаров игнорируются системой, так как при закрытии месяца партионный движок полностью перезаписывает движения на основе своих алгоритмов.

Этот сбой признан разработчиками фирмы «1С» как программная ошибка (например, баг 000051291 в старых релизах ветки 2.4/2.5). Однако и на более свежих релизах схожие коллизии могут возникать при сложных схемах списания.

Рассмотрим детально четыре практических способа решения этой проблемы без открытия прошлого периода и нарушения методологии учета.

Способ 1. Использование документа «Возврат товаров поставщику» (Рекомендация фирмы «1С»)

Это наиболее корректный с точки зрения методологии 1С:ERP способ обхода проблемы. Разработчики рекомендуют отказаться от использования Корректировки приобретения в ноль, если товар из исходной партии уже полностью или частично списан.

Разберем этот вариант по шагам:

  1. Вместо ввода документа Корректировка приобретения в августе создаем документ Возврат товаров поставщику.
  2. В качестве документа-основания указываем наше июльское Приобретение товаров и услуг.
  3. Несмотря на то, что физически товара из той конкретной партии на складе уже нет, система позволит провести возврат, так как на складе присутствует аналогичный товар из других партий (купленный позже).
  4. При проведении возврата механизмы партионного учета ERP спишут стоимость по правилам ФИФО с доступных на складе партий, при этом исходная партия июля останется нетронутой (ее баланс останется нулевым, а не отрицательным).

Этот способ позволяет избежать образования искусственных минусов в регистре себестоимости и не требует ручного вмешательства в регистры.

Способ 2. Виртуальное выравнивание партий через списание и оприходование

Если по каким-то причинам использовать схему возврата невозможно (например, этого не позволяет сделать соглашение с поставщиком или особенности ведения взаиморасчетов), мы можем применить схему виртуальной «рокировки» партий в текущем месяце (августе).

Для этого выполним следующие действия:

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

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

Способ 3. Корректировка регистров с заполнением скрытых аналитик

Если мы решим пойти по пути ручной корректировки через документ Корректировка регистров, то просто перебросить количество и сумму между измерениями «Номенклатура» и «Документ поступления» в регистре Себестоимость товаров будет недостаточно. Именно поэтому ручные правки автора темы сбрасывались при расчете себестоимости.

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

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

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

Способ 4. Корректировка в закрытом периоде (с временным открытием июля)

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

Схема действий выглядит следующим образом:

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

Резюме

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

← На главную