Почему в 1С:УТ 11.4 некорректно списываются партии после Корректировки реализации?

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

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

Разбор технической ситуации

Представим сценарий: у нас есть три партии одного товара, поступившие последовательно. Первая и вторая партии списаны полностью, третья — частично. В середине месяца оформляется Корректировка реализации, которая уменьшает объем отгрузки по документу, созданному ранее. В результате этой операции часть товара «возвращается» во вторую (более старую) партию. Логика ФИФО диктует, что следующая же продажа должна забрать эти 500 штук из восстановленной второй партии, а уже потом переходить к остаткам третьей.

Однако на практике мы видим следующее: реализация, созданная на следующий день после корректировки, полностью списывает товар из третьей партии. При этом «восстановленные» 500 штук из второй партии остаются висеть на остатках до конца месяца и списываются только документами следующего месяца (января). Проанализируем причины такого поведения системы.

Причина №1: Особенности документа «Корректировка реализации»

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

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

Причина №2: Ограничения «Скользящего ФИФО»

Метод ФИФО (скользящая оценка) подразумевает, что программа пытается определить партию списания непосредственно в момент проведения документа. Выясним причину, по которой это не срабатывает с корректировками:

  1. При проведении Реализации товаров и услуг 27 декабря система делает запрос к регистру Партии товаров предприятия.
  2. Для алгоритма скользящего ФИФО «возвращенные» корректировкой остатки могут выглядеть как «технический возврат внутри цепочки», а не как свободный остаток для новой продажи, если не выполнено регламентное задание Расчет себестоимости.
  3. Система видит доступный остаток в текущей открытой партии (третьей) и, не имея актуализированных данных о доступности «вновь появившихся» остатков во второй партии, забирает товар оттуда.

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

Почему в следующем месяце все работает правильно?

Многие пользователи замечают, что документы января (следующего периода) подхватывают остатки корректно. Это происходит потому, что при закрытии декабря программа фиксирует остатки на границе месяца. Для регистра Стоимость товаров и Партии товаров предприятия эти 500 штук становятся входящим остатком на 1 января. Для системы это самая ранняя точка входа, поэтому любая реализация января первым делом «вымывает» именно этот остаток.

Различие в логике между УТ 11 и Бухгалтерией предприятием (БП)

Часто возникает вопрос: почему в 1С:Бухгалтерии при синхронизации тех же документов все списывается корректно? Разберем по шагам разницу в движках:

В БП 3.0 партионный учет реализован на уровне бухгалтерских регистров (субконто «Партии» на счете 41). Когда корректировка делает сторно, остаток на счете просто увеличивается. При следующем списании стандартный запрос ФИФО в БП анализирует все остатки на счете 41 по датам документов поступления и находит самую раннюю запись.

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

Как решить проблему: практические рекомендации

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

Вариант 1: Использование «Возврата товаров от клиента»

Проанализируем ситуацию: если бизнес-процесс позволяет, вместо Корректировки реализации лучше использовать документ Возврат товаров от клиента. Почему это эффективнее:

Вариант 2: Переход на «ФИФО (взвешенная оценка)»

Если оперативная точность списания партии в момент проведения документа не является критически важной, можно рассмотреть смену учетной политики на ФИФО (взвешенная оценка). В этом случае распределение партий будет происходить только в конце месяца при выполнении обработки «Закрытие месяца». Это исключит «чехарду» с партиями в течение месяца, так как система один раз за период выстроит правильную очередь и распределит себестоимость.

Вариант 3: Принудительное перепроведение и расчет

Если корректировка уже введена, попробуйте выполнить следующие действия:

  1. Отмените проведение всех реализаций, созданных после корректировки.
  2. Выполните регламентную операцию Расчет себестоимости (можно с предварительным расчетом).
  3. Последовательно проведите реализации заново.

В некоторых релизах 11.4 это позволяет системе «подхватить» измененные остатки в таблицы партий.

Технический комментарий для разработчика

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

Для отладки можно использовать следующий подход в коде для проверки остатков, которые видит документ:


// Пример логики анализа остатков в регистре партий
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	Партии.НомерПартии,
    |	Партии.КоличествоОстаток
    |ИЗ
    |	РегистрНакопления.ПартииТоваровПредприятия.Остатки(&МоментВремени, Номенклатура = &Номенклатура) КАК Партии";

Запрос.УстановитьПараметр("МоментВремени", СсылкаНаРеализацию.МоментВремени());
Запрос.УстановитьПараметр("Номенклатура", ВыбранныйТовар);
Результат = Запрос.Выполнить().Выгрузить();
// Здесь мы увидим, попадают ли 500 шт. из корректировки в выборку для документа

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

← На главную