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