Почему в 1С:УТ 11.5 из регистра «Распределение запасов» пропадают данные при отгрузке?

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

Переход на версию 1С:Управление торговлей 11.5 принес значительные изменения в архитектуру учета остатков и доступности товаров, что иногда требует выравнивания остатков после обновления. Одним из самых заметных нововведений стал отказ от использования привычного регистра накопления СвободныеОстатки в пользу регистра сведений РаспределениеЗапасов. В этой статье мы подробно разберем, как работает этот механизм, почему данные в нем ведут себя не так, как в старых версиях, и выясним, куда «исчезают» записи при установке статуса «Отгрузить».

Архитектурная роль регистра «Распределение запасов»

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

Рассмотрим новую схему: регистр сведений РаспределениеЗапасов теперь выполняет роль высокопроизводительной витрины данных или кэша. Он не хранит историю движений (приход, расход), а отображает только актуальное состояние остатков и резервов на текущий момент времени. Это позволяет системе мгновенно получать ответ на вопрос «Сколько товара мы можем продать сейчас?» без проведения тяжелых вычислений.

Почему записи исчезают при статусе «Отгрузить»?

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

С точки зрения логики управления запасами в УТ 11.5, жизненный цикл товара в подсистеме обеспечения (управлять которым удобнее через привычный интерфейс обеспечения заказов и управления резервами) выглядит следующим образом:

  1. Свободный остаток: Товар просто лежит на складе и никому не обещан. В регистре РаспределениеЗапасов это отражается строкой с состоянием В наличии и отсутствием привязки к заказу.
  2. Резервирование: Менеджер создает заказ и ставит действие «Резервировать на складе». Для удобства работы можно вывести остатки товаров непосредственно в документы заказов. В этот момент система фиксирует, что часть складского остатка теперь закреплена за конкретным документом.
  3. Подготовка к отгрузке: Когда в заказе устанавливается статус «Отгрузить», система считает, что этап планирования и распределения завершен. Чтобы проконтролировать этот процесс, можно использовать анализ позиций товаров в реализации. Товар больше не является «объектом распределения» — он передан складу для физического исполнения.

Проанализируем ситуацию: как только товар переведен в статус «Отгрузить», он «уходит с радаров» подсистемы распределения. 1С полагает, что «поезд практически уехал». Теперь этот товар контролируется другими механизмами — подсистемой складского учета (например, регистром накопления ТоварыКОтгрузке). Именно поэтому записи в РаспределениеЗапасов очищаются: регистр хранит только те данные, которые еще требуют принятия решения по распределению. Для детального контроля в этот момент лучше анализировать движения товаров с резервами нарастающим итогом.

Связь с регистром накопления «Запасы и резервы»

Важно понимать, что РаспределениеЗапасов — это лишь производная сущность. Настоящим «источником истины», где фиксируются все движения документов, является регистр накопления ЗапасыИРезервы. Посмотрим, как взаимодействуют эти объекты:

Отложенное обновление и фоновые задания

Выясним еще одну важную причину, по которой данные в регистре могут казаться некорректными. В 1С:УТ 11.5 реализован механизм отложенного обновления распределения запасов. Чтобы пользователь не ждал окончания сложных расчетов при каждом нажатии кнопки «Провести», система может выполнять обновление регистра РаспределениеЗапасов в фоновом режиме.

Рассмотрим пример: менеджер провел заказ, открыл отчет по остаткам, но цифры остались прежними. Через 10–15 секунд данные обновились. Это работа регламентного задания. Если в вашей базе настроено отложенное обновление, имейте в виду этот временной лаг. Если же вам нужна мгновенная актуальность, эту опцию можно отключить в настройках склада и обеспечения, но это может снизить скорость работы пользователей при проведении документов.

Как программно получить свободный остаток?

Если вам необходимо в коде получить количество доступного товара, забудьте про одну цифру «Остаток». Теперь свободный остаток — это вычисляемая величина. Рассмотрим пример логики запроса к регистру РаспределениеЗапасов:


// Пример логики расчета свободного остатка
// Свободно = (В наличии) - (Резерв на складе)

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|   РаспределениеЗапасов.Номенклатура,
|   СУММА(ВЫБОР
|       КОГДА РаспределениеЗапасов.Состояние = ЗНАЧЕНИЕ(Перечисление.РаспределениеЗапасовСостояния.ВНаличии)
|           ТОГДА РаспределениеЗапасов.Количество
|       ИНАЧЕ 0
|   КОНЕЦ) КАК Наличии,
|   СУММА(ВЫБОР
|       КОГДА РаспределениеЗапасов.Состояние = ЗНАЧЕНИЕ(Перечисление.РаспределениеЗапасовСостояния.РезервНаСкладе)
|           ТОГДА РаспределениеЗапасов.Количество
|       ИНАЧЕ 0
|   КОНЕЦ) КАК Зарезервировано
|ИЗ
|   РегистрСведений.РаспределениеЗапасов КАК РаспределениеЗапасов
|ГДЕ
|   РаспределениеЗапасов.Номенклатура = &Номенклатура
|СГРУППИРОВАТЬ ПО
|   РаспределениеЗапасов.Номенклатура";

Посмотрим на результат: вычитая из суммы состояния ВНаличии сумму состояния РезервНаСкладе, мы получаем реальный доступный остаток для новых заказов.

Типичные ошибки и методы их исправления

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

  1. Проверка фоновых заданий: Убедитесь, что регламентное задание ОбновлениеРаспределенияЗапасов выполняется без ошибок и не «висит» в очереди.
  2. Корректировка данных: Если записи в РС РаспределениеЗапасов явно противоречат движениям в РН ЗапасыИРезервы, воспользуйтесь типовой обработкой «Исправление распределения запасов». Найти ее можно через меню НСИ и администрирование — Обслуживание — Корректировка данных.
  3. Статусы заказов: Помните, что если заказ закрыт или отменен, записи по нему в регистре распределения должны быть полностью удалены. Если они остались — это повод для запуска пересчета.

Подведем итоги

Регистр сведений РаспределениеЗапасов в УТ 11.5 — это эффективный инструмент для быстрого получения данных о доступности, но он требует понимания новой логики 1С. Исчезновение записей при статусе «Отгрузить» — это штатное поведение системы, означающее переход ответственности от службы планирования запасов к складской службе. Для получения полной картины остатков в процессе отгрузки следует использовать отчеты, объединяющие данные нескольких регистров, такие как «Остатки и доступность товаров».

← На главную