При настройке адресного складского учета в 1С часто возникает конфликт между автоматикой системы и действиями персонала. Многие пользователи сталкиваются с ситуацией, когда, несмотря на заданное правило «одна ячейка — один товар», оператор вручную размещает в ячейке другой номенклатурный товар. В данной статье мы разберем, почему система 1С по умолчанию не блокирует такие действия и как реализовать жесткий контроль монотоварности, если это критически важно для вашего бизнеса.
В архитектуре типовых решений 1С (УТ 11, ERP, КА) алгоритмы автоматического размещения — это в первую очередь рекомендательный сервис. Система анализирует данные и предлагает оптимальное место для размещения товара, основываясь на настройках ПравилаРазмещенияТоваровВЯчейках.
Однако ручной выбор ячейки пользователем имеет высший приоритет. Разработчики системы заложили эту логику, исходя из практики реального склада: оператор или кладовщик может обладать информацией, недоступной системе (например, срочная необходимость освободить зону приемки, временная поломка стеллажа или экстренная отгрузка). Если бы система «жестко» запрещала ручной ввод, склад мог бы встать при любой нестандартной ситуации.
Если вы хотите исключить человеческий фактор и предотвратить возникновение «микса» в ячейках, рассмотрим доступные нам методы решения.
Поскольку типового флажка «Запретить нарушение монотоварности при ручном вводе» не существует, нам необходимо реализовать собственную проверку. Лучшим местом для такой проверки является событие ПередЗаписью или ОбработкаПроверкиЗаполнения в документах, где происходит размещение товара в ячейки.
Рассмотрим алгоритм действий:
ТоварыНаСкладах (или ТоварыВЯчейках).Пример логики для реализации проверки в расширении:
// Пример упрощенной логики проверки перед записью
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ Количество
|ИЗ РегистрНакопления.ТоварыВЯчейках
|ГДЕ Ячейка = &Ячейка И Номенклатура <> &Номенклатура";
// ... выполнение запроса и анализ результата
Если РезультатЗапроса.НеПустой() Тогда
ВызватьИсключение "Ошибка: ячейка уже занята другим товаром!";
КонецЕсли;
Профессиональные WMS-системы часто используют подход, при котором система не запрещает «микс» физически (потому что это произошло в реальности), а «выключает» проблемную ячейку из алгоритмов автоматического размещения.
Разберем, как это реализовать:
Мы можем максимально усложнить жизнь оператору, который пытается совершить ошибку, правильно настроив стратегии. Проанализируем регистр ПравилаРазмещенияТоваровВЯчейках. Обратите внимание на реквизит ОбластьХранения и параметры приоритетов размещения. Хотя это не запретит ручной выбор, но сделает работу автоматики настолько прозрачной и точной, что у оператора пропадет нужда «поправлять» систему вручную.
Подводя итог нашей работы, важно осознать: жесткое ограничение в 1С всегда требует доработки. Если вы хотите идти по пути «безошибочного склада»:
Помните, что склад — это живой объект, и иногда возможность «пойти против правил» спасает от простоев, поэтому любой запрет должен быть оправдан бизнес-процессами вашей компании.