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