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