После обновления конфигурации "Управление торговлей" с редакции 11.4 на 11.5 многие пользователи сталкиваются с неприятной ситуацией: данные в отчетах по остаткам начинают кардинально отличаться, что требует отображения доступного количества товара и остатка товара в документах для оперативного контроля. Классический отчет, такой как "Ведомость по товарам на складах" (или "Движение товаров"), показывает корректные, фактические остатки. А вот новый основной отчет "Остатки и доступность" демонстрирует совершенно другую картину: появляются отрицательные остатки, а количество по многим позициям не соответствует действительности.
Давайте разберемся, почему так происходит и как исправить эту проблему.
Корень проблемы кроется в том, что отчеты "Ведомость по товарам на складах" и "Остатки и доступность" используют разные источники данных. Это ключевой момент, который нужно понять.
Товары на складах. Дополнительно можно использовать отчет по движениям товаров с резервами на базе СКД по двум регистрам. Этот регистр фиксирует фактические физические операции: приход, расход, перемещение. Как правило, данные в нем остаются верными и после обновления.Распределение запасов. Этот регистр — своего рода "срез" текущего состояния, который показывает не только физический остаток, но и товары в резерве, ожидаемые поступления и доступное для отгрузки количество. В свою очередь, этот регистр заполняется на основе данных из нового механизма учета, в частности, из регистра накопления Запасы и потребности.При обновлении с 11.4 на 11.5 система запускает процедуры конвертации данных. Она должна перенести остатки и движения из старой структуры в новую. Однако этот процесс часто проходит с ошибками, особенно если в базе до обновления были:
Соглашение в реализациях).
В результате регистр Распределение запасов заполняется некорректно, что и приводит к хаосу в отчете "Остатки и доступность". Теперь рассмотрим, как это можно исправить.
Прежде чем прибегать к сложным методам, стоит попробовать штатный инструмент, который разработчики 1С добавили в конфигурацию как раз для таких случаев. Это самый безопасный первый шаг.
В более свежих релизах УТ 11.5 (а также в КА и ERP) есть встроенная обработка "Исправление ошибок в регистре сведений 'Распределение запасов'".
Как показывает практика, этот инструмент помогает не всегда, особенно в запущенных случаях, но начать стоит именно с него.
Если штатная обработка не помогла, можно применить более "силовой" метод — полностью перезаполнить проблемный регистр Распределение запасов правильными данными из отчета "Ведомость по товарам на складах". Этот способ отлично подходит для случаев с простым учетом, где не используются сложные резервы и заказы.
Разберем по шагам, как это сделать с помощью небольшой обработки:
Распределение запасов. Перед записью новых данных старые нужно удалить. Важно: очистку нужно делать в разрезе одного склада, чтобы не затронуть другие.
Код для очистки регистра по выбранному складу:
Набор = РегистрыСведений.РаспределениеЗапасов.СоздатьНаборЗаписей();
Набор.Отбор.Склад.Установить(ВыбранныйСклад);
Набор.Записать();
Распределение запасов.
Пример кода для записи:
Для Каждого Строка из ТаблицаОстатков Цикл
Запись = РегистрыСведений.РаспределениеЗапасов.СоздатьМенеджерЗаписи();
Запись.Состояние = Перечисления.РаспределениеЗапасовСостояния.ОстатокНаСкладе;
Запись.Номенклатура = Строка.Номенклатура;
Запись.Характеристика = Строка.Характеристика; // Если используется
Запись.Склад = ВыбранныйСклад;
// Для простого учета все три показателя равны фактическому остатку
Запись.Запас = Строка.Количество;
Запись.Свободно = Строка.Количество;
Запись.ВНаличии = Строка.Количество;
// Служебные поля
Запись.ТипЗаписиРаспределенияЗапасов = 1;
// В старых версиях этого реквизита может не быть
// Запись.РезервПревышаетОстатки = ЛОЖЬ;
Запись.Записать();
КонецЦикла;
После выполнения этих действий отчет "Остатки и доступность" должен показывать те же данные, что и "Ведомость по товарам на складах".
На форуме участники делились готовыми обработками (например, ПереносОстатков.epf), которые автоматизируют этот процесс. Однако будьте внимательны: такие обработки могут быть несовместимы с новыми версиями УТ, так как структура регистра может меняться (например, в какой-то момент исчез реквизит РезервПревышаетОстатки).
Предыдущий метод — это, по сути, "лечение симптомов". Он исправляет итоговый регистр, но не затрагивает причину ошибки. В результате при следующем обновлении или перепроведении старых документов проблема может вернуться, так как система заново рассчитает некорректные итоги на основе "грязных" данных из регистров накопления (Запасы и потребности и др.).
Чтобы решить проблему раз и навсегда, нужно найти и устранить ее источник.
Что нужно проверить:
Заказ клиента. Возможно, остались незакрытые заказы с установленными резервами, которые система некорректно перенесла. Такие заказы нужно либо закрыть, либо снять с них резерв.
Реализация товаров и услуг из УТ 11.4. В новой версии для них стал обязательным реквизит Соглашение. При обновлении документ остается проведенным, но с пустым соглашением, что приводит к некорректным движениям по расходу.
Решение: Написать обработку, которая найдет все реализации за прошлые периоды с незаполненным реквизитом Соглашение, подставит в них подходящее по умолчанию соглашение и перепроведет эти документы.
Корректировка регистров. С его помощью можно создать сторнирующие или корректирующие записи в проблемных регистрах накопления, таких как Запасы и потребности, чтобы выровнять их данные.
После исправления первопричин рекомендуется заново запустить штатную обработку "Исправление ошибок в регистре сведений 'Распределение запасов'", чтобы система корректно пересчитала итоговые данные на основе уже исправленных движений.
Важно: перед любыми манипуляциями с регистрами и массовым перепроведением документов обязательно сделайте резервную копию базы данных!