Почему «Ордер на отражение порчи товаров» списывает остатки в минус и как реализовать контроль?

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

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

Разбор архитектуры складского учета в 1С:УТ 11

Для начала разберем логику, заложенную разработчиками 1С в механизмы ордерного склада. Документ Ордер на отражение порчи товаров предназначен для фиксации расхождений, выявленных непосредственно кладовщиком в процессе работы в «зоне хранения». В системе разделены два контура:

  1. Складской контур (Ордерный): фиксирует физическое движение или изменение состояния ТМЦ (регистр Товары на складах).
  2. Финансовый контур (Учетный): фиксирует переход прав собственности и списание затрат (регистр Товары организаций).

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

Техническая причина отсутствия контроля: заглянем в код

Рассмотрим ситуацию с точки зрения программиста. При проведении большинства документов в УТ вызывается механизм контроля остатков. Однако для документа Ордер на отражение порчи товаров этот механизм намеренно ограничен. Проанализируем модуль объекта документа. В нем присутствует процедура, отвечающая за определение списка регистров, по которым будет выполняться проверка при проведении.

Как выясняется при отладке, в модуле документа находится следующий фрагмент кода:


Процедура СформироватьСписокРегистровДляКонтроля()
    Массив = Новый Массив;
    
    // В типовой конфигурации массив остается пустым
    // Это отключает стандартный механизм контроля остатков для этого документа
    ДополнительныеСвойства.ДляПроведения.Вставить("РегистрыДляКонтроля", Массив);
КонецПроцедуры

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

Как реализовать контроль остатков: Способ 1 (Программный)

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

Рассмотрим шаги для реализации проверки:

  1. Создадим расширение и заимствуем в него документ ОрдерНаОтражениеПорчиТоваров.
  2. Переопределим процедуру СформироватьСписокРегистровДляКонтроля, добавив в массив регистр накопления ТоварыНаСкладах.

Пример кода в расширении (метод &После):


&После("СформироватьСписокРегистровДляКонтроля")
Процедура Расш_СформироватьСписокРегистровДляКонтроля()
    // Получаем массив, который уже был создан в основной конфигурации
    МассивРегистров = ДополнительныеСвойства.ДляПроведения.РегистрыДляКонтроля;
    
    // Добавляем регистр складских остатков для контроля
    Если МассивРегистров.Найти("ТоварыНаСкладах") = Неопределено Тогда
        МассивРегистров.Добавить("ТоварыНаСкладах");
    КонецЕсли;
КонецПроцедуры

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

Как реализовать контроль остатков: Способ 2 (Настройки склада)

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

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

Организационный подход к решению проблемы

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

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

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

Резюме

Мы выяснили, что поведение документа Ордер на отражение порчи товаров в 1С:УТ 11.3 обусловлено пустой инициализацией массива регистров контроля в программном коде. Для решения проблемы «минусов» мы рекомендуем:

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

← На главную