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