В современных версиях конфигураций на платформе 1С:Предприятие 8.3, таких как Управление торговлей 11.5, ERP 2.5 и Комплексная автоматизация 2.5, пользователи часто сталкиваются с парадоксальной ситуацией. Товар фактически продан, его остаток в регистре накопления ТоварыНаСкладах равен нулю, но при открытии окна подбора в документах продажи система настойчиво показывает его в колонке «В наличии». При попытке провести новую реализацию программа закономерно выдает ошибку о нехватке товара. Рассмотрим подробнее, почему возникает этот «фантомный остаток» и как привести данные системы в порядок.
Для понимания причины проблемы проанализируем, как 1С версии 11.5 работает с остатками. В отличие от старых версий, где подбор ориентировался преимущественно на регистры накопления, в новой архитектуре ключевую роль играет регистр сведений РаспределениеЗапасов.
ТоварыНаСкладах — отвечает за физическое наличие. Именно по нему строятся классические ведомости и проверяется возможность проведения документа.РаспределениеЗапасов — отвечает за логическое состояние товаров. Он хранит информацию о том, сколько товара зарезервировано, сколько доступно для свободной продажи и сколько ожидается к поступлению.Проблема «зависания» товара в подборе — это классический случай рассинхронизации между этими двумя объектами. Физически товара нет, но в регистре сведений он продолжает числиться как свободный остаток. Подбор обращается именно к РаспределениеЗапасов для быстрого вывода данных, поэтому пользователь видит неактуальные цифры.
Проанализируем конкретную ситуацию, характерную для релиза 11.5.11.70. Ошибка часто проявляется при использовании функциональной опции «Заказ как счет». В этом режиме предполагается, что Заказ клиента не делает движений по резервированию, а является лишь основанием для оплаты.
Логика работы системы в дефектных релизах выглядела следующим образом:
Реализация товаров и услуг, созданного на основании такого заказа, система списывала товар из регистра накопления (физический остаток уходил).РаспределениеЗапасов не срабатывал корректно. Транзакция по очистке этого товара из категории «Свободный остаток» попросту не инициировалась.Если вы столкнулись с описанной проблемой, первым делом необходимо проверить наличие обновлений и исправлений от разработчика. Поскольку ситуация признана программной ошибкой, для её решения выпущены соответствующие патчи.
Последовательность действий для исправления:
РаспределениеЗапасов.Если установка патчей не исправила уже накопленные ошибки или вы хотите принудительно синхронизировать данные, воспользуемся штатным инструментом корректировки.
Разберем, как найти этот инструмент по шагам:
Исправление ошибок в распределении запасов.Важное замечание: Эта обработка полностью очищает записи регистра РаспределениеЗапасов и перезаполняет их на основании фактических движений по регистрам накопления. Это наиболее эффективный способ «лечения» системы без написания запросов и ручной правки данных.
Иногда причина может крыться не в багах системы, а в пользовательских ошибках. Рассмотрим ситуацию с датами, упомянутую опытными специалистами.
Проанализируем запрос, который может использовать система:
// Пример логики, которую может использовать подбор
ВЫБРАТЬ
РаспределениеЗапасов.Товар,
РаспределениеЗапасов.Свободно
ИЗ
РегистрСведений.РаспределениеЗапасов КАК РаспределениеЗапасов
ГДЕ
РаспределениеЗапасов.Склад = &Склад
Если часть товара была ошибочно оприходована или перемещена будущей датой (например, случайно указан 2025 год вместо 2024), то классическая Ведомость по товарам на складах, сформированная на текущую дату, покажет нулевой остаток. Однако Распределение запасов часто хранит итоговое состояние на «конец времен».
Также стоит проверить Единицы измерения. Если товар поступил в «упаковках по 10 шт.», а продавался в «штуках», и при этом были допущены ошибки в коэффициентах или в спецификациях номенклатуры, регистр распределения может зафиксировать дробный остаток, который в округленном виде будет виден в подборе как «1 шт.», хотя по факту товара нет.
Для финальной проверки корректности данных мы рекомендуем сравнить два отчета:
Если в первом отчете остаток равен 0, а во втором вы видите положительное число — вы нашли подтверждение того, что регистр РаспределениеЗапасов нуждается в исправлении вышеуказанными способами.
Резюме: В большинстве случаев проблема решается установкой патчей и запуском регламентной обработки исправления ошибок распределения запасов. Это штатная процедура для ветки 11.5, позволяющая поддерживать актуальность данных в окне подбора и механизме резервирования.