Почему расходятся остатки в отчетах "Остатки и доступность" и "Движение товаров" в 1С:УТ 11.5 после обновления?

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

После обновления конфигурации "Управление торговлей" с редакции 11.4 на 11.5 многие пользователи сталкиваются с неприятной ситуацией: данные в отчетах по остаткам начинают кардинально отличаться, что требует отображения доступного количества товара и остатка товара в документах для оперативного контроля. Классический отчет, такой как "Ведомость по товарам на складах" (или "Движение товаров"), показывает корректные, фактические остатки. А вот новый основной отчет "Остатки и доступность" демонстрирует совершенно другую картину: появляются отрицательные остатки, а количество по многим позициям не соответствует действительности.

Давайте разберемся, почему так происходит и как исправить эту проблему.

Главная причина — изменение архитектуры учета запасов

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

  1. "Ведомость по товарам на складах" (и похожие отчеты) строит данные по "старому" и простому принципу, основываясь на движениях регистра накопления Товары на складах. Дополнительно можно использовать отчет по движениям товаров с резервами на базе СКД по двум регистрам. Этот регистр фиксирует фактические физические операции: приход, расход, перемещение. Как правило, данные в нем остаются верными и после обновления.
  2. "Остатки и доступность" — это более современный и сложный отчет, который с версии 11.5 стал основным. Он берет данные не напрямую из движений, а из итогового регистра сведений Распределение запасов. Этот регистр — своего рода "срез" текущего состояния, который показывает не только физический остаток, но и товары в резерве, ожидаемые поступления и доступное для отгрузки количество. В свою очередь, этот регистр заполняется на основе данных из нового механизма учета, в частности, из регистра накопления Запасы и потребности.

При обновлении с 11.4 на 11.5 система запускает процедуры конвертации данных. Она должна перенести остатки и движения из старой структуры в новую. Однако этот процесс часто проходит с ошибками, особенно если в базе до обновления были:

В результате регистр Распределение запасов заполняется некорректно, что и приводит к хаосу в отчете "Остатки и доступность". Теперь рассмотрим, как это можно исправить.

Решение 1: Использование штатной обработки 1С

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

В более свежих релизах УТ 11.5 (а также в КА и ERP) есть встроенная обработка "Исправление ошибок в регистре сведений 'Распределение запасов'".

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

Как показывает практика, этот инструмент помогает не всегда, особенно в запущенных случаях, но начать стоит именно с него.

Решение 2: Ручная корректировка регистра "Распределение запасов"

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

Разберем по шагам, как это сделать с помощью небольшой обработки:

  1. Выгружаем правильные остатки. Сформируйте отчет "Ведомость по товарам на складах" на текущую дату. Убедитесь, что остатки в нем верные. Сохраните отчет в формате Excel (XLSX). В файле оставьте только две ключевые колонки: "Номенклатура" и "Конечный остаток" (количество).
  2. Создаем обработку для загрузки. В обработке нужно реализовать три функции: загрузка данных из Excel-файла в табличную часть, очистка регистра и его заполнение.
  3. Очищаем регистр Распределение запасов. Перед записью новых данных старые нужно удалить. Важно: очистку нужно делать в разрезе одного склада, чтобы не затронуть другие.

    Код для очистки регистра по выбранному складу:

    
    Набор = РегистрыСведений.РаспределениеЗапасов.СоздатьНаборЗаписей();
    Набор.Отбор.Склад.Установить(ВыбранныйСклад);
    Набор.Записать();
    
  4. Заполняем регистр новыми данными. Теперь нужно обойти строки из загруженного файла и для каждой создать новую запись в регистре Распределение запасов.

    Пример кода для записи:

    
    Для Каждого Строка из ТаблицаОстатков Цикл
        Запись = РегистрыСведений.РаспределениеЗапасов.СоздатьМенеджерЗаписи();
    
        Запись.Состояние = Перечисления.РаспределениеЗапасовСостояния.ОстатокНаСкладе;
        Запись.Номенклатура = Строка.Номенклатура;
        Запись.Характеристика = Строка.Характеристика; // Если используется
        Запись.Склад = ВыбранныйСклад;
        
        // Для простого учета все три показателя равны фактическому остатку
        Запись.Запас = Строка.Количество;
        Запись.Свободно = Строка.Количество;
        Запись.ВНаличии = Строка.Количество;
        
        // Служебные поля
        Запись.ТипЗаписиРаспределенияЗапасов = 1;
        // В старых версиях этого реквизита может не быть
        // Запись.РезервПревышаетОстатки = ЛОЖЬ; 
    
        Запись.Записать();
    КонецЦикла;
    

    После выполнения этих действий отчет "Остатки и доступность" должен показывать те же данные, что и "Ведомость по товарам на складах".

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

Решение 3: Поиск и исправление первопричины (рекомендуемый подход)

Предыдущий метод — это, по сути, "лечение симптомов". Он исправляет итоговый регистр, но не затрагивает причину ошибки. В результате при следующем обновлении или перепроведении старых документов проблема может вернуться, так как система заново рассчитает некорректные итоги на основе "грязных" данных из регистров накопления (Запасы и потребности и др.).

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

Что нужно проверить:

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

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

  3. Непроведенные документы с движениями. Бывают ситуации, когда документ отменен, но по какой-то причине его движения в регистрах остались. Такие "фантомные" движения нужно найти и удалить, например, с помощью обработки "Универсальный подбор и обработка объектов" или прямым удалением записей регистров.
  4. Прямая корректировка регистров накопления. Если исправить документы-регистраторы невозможно, можно использовать документ Корректировка регистров. С его помощью можно создать сторнирующие или корректирующие записи в проблемных регистрах накопления, таких как Запасы и потребности, чтобы выровнять их данные.

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

Важно: перед любыми манипуляциями с регистрами и массовым перепроведением документов обязательно сделайте резервную копию базы данных!

← На главную