Как исправить проблему списания недостач и отображения серий в 1С:УТ 11.4?

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

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

Почему «залипают» флаги ордерной схемы на складе

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

Проанализируем взаимосвязь настроек. Основная причина кроется в Политике учета серий, назначенной данному складу или конкретным видам номенклатуры. Если в политике выбран тип «Учет остатков серий», система обязана точно знать, какая именно серия была списана или оприходована в момент физической операции на складе. Для этого 1С принудительно задействует механизм складских ордеров.

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

  1. Перейдем в карточку склада и проверим используемые политики учета серий.
  2. Если мы хотим полностью отказаться от ордерной схемы при инвентаризации, нам придется изменить политику на «Справочное указание серий» или вовсе отключить серийный учет.
  3. Только после изменения настроек политики в справочнике ВидыНоменклатуры или в настройках склада, галки ордерной схемы станут доступными для снятия через меню «Разрешить редактирование реквизитов».

Анализ проблемы регистра «Движения серий товаров»

Теперь разберем технический нюанс, который мешает отчетности. В системе существует регистр накопления ДвиженияСерийТоваров. Почти все типовые отчеты, связанные с сериями (например, «Движения серий товаров»), используют в своих запросах жесткий фильтр по измерению ЭтоСкладскоеДвижение = Истина.

Выясним, что происходит при проведении документов:

В результате «физическое» списание серии произошло, но отчет его игнорирует, так как считает это движение «финансовым» или неполным. Это явная ошибка в логике формирования движений конкретного документа.

Исправление программной ошибки в Конфигураторе

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

Выполним по шагам:

  1. Откроем Конфигуратор и найдем документ ОрдерНаОтражениеНедостачТоваров.
  2. Перейдем в Модуль менеджера и найдем процедуру, отвечающую за инициализацию дополнительных таблиц для проведения (обычно это часть механизма проведения по регистру ДвиженияСерийТоваров).
  3. Найдем фрагмент кода, где формируется временная таблица для серий. Мы увидим, что в запросах для других ордеров присутствует строка ИСТИНА КАК ЭтоСкладскоеДвижение, а в документе недостач она пропущена или заменена на ЛОЖЬ.

Пример исправления в тексте запроса внутри модуля:


// В запросе инициализации таблицы ДвиженияСерийТоваров
// Находим блок выбора полей
ТекстЗапроса = "
|ВЫБРАТЬ
|   ...
|   ЗНАЧЕНИЕ(ПланВидовХарактеристик.ТипыНоменклатуры.Товар) КАК ТипНоменклатуры,
|   ИСТИНА КАК ЭтоСкладскоеДвижение, // Добавляем или исправляем эту строку
|   ...
|ИЗ
|   ВТ_ДанныеДокумента КАК ДанныеДокумента";

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

Как исправить уже существующие документы

Чтобы отчеты начали показывать верные данные за прошлые периоды, нам нужно пересчитать движения в регистре ДвиженияСерийТоваров. Рассмотрим алгоритм простой обработки:

  1. Создадим внешнюю обработку.
  2. В цикле выберем документы ОрдерНаОтражениеНедостачТоваров за нужный период.
  3. Для каждого документа вызовем программное перепроведение или напрямую отредактируем набор записей регистра.

Пример кода для исправления набора записей:


Процедура ИсправитьДвиженияСерий(ДокументСсылка)
    Набор = РегистрыНакопления.ДвиженияСерийТоваров.СоздатьНаборЗаписей();
    Набор.Отбор.Регистратор.Установить(ДокументСсылка);
    Набор.Прочитать();
    
    Для Каждого Запись Из Набор Цикл
        Запись.ЭтоСкладскоеДвижение = Истина;
    КонецЦикла;
    
    Если Набор.Количество() > 0 Тогда
        Набор.Записать();
    КонецЕсли;
КонецПроцедуры

Важно: Прямая запись в регистр — это экстренная мера. Если есть возможность, после исправления кода в конфигурации лучше просто перепровести документы штатным способом.

Получение данных о недостачах в денежном выражении

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

Проанализируем альтернативные пути решения:

  1. Ведомость по товарам в ценах номенклатуры: Это наиболее подходящий отчет. Он берет количество из складских остатков и умножает на цену из справочника Цены номенклатуры (по заданному виду цен). Если вам нужна аналитика по сериям, этот отчет придется доработать, добавив группировку по сериям из регистра ТоварыНаСкладах.
  2. Универсальный отчет: Можно настроить отчет по регистру накопления Товары на складах, добавив в поля вывода связанные данные о ценах.

Таким образом, мы выяснили, что корень проблемы списания недостач в УТ 11.4 лежит в плоскости сочетания строгих настроек серийного учета и досадной ошибки в коде типового решения. Исправив запрос в модуле менеджера, вы вернете корректную работу складских отчетов.

← На главную