Как программно изменять обеспечение заказов клиентов при поступлении товаров в 1С:Управление торговлей 11?

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

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

Архитектурные подходы: почему не стоит менять заказы прямо в транзакции прихода

При реализации авторезервирования первая мысль разработчика — при проведении документа поступления найти все ожидающие заказы и перезаписать их в той же транзакции. Однако на практике такой подход ведет к серьезным техническим проблемам:

  1. Взаимоблокировки (Deadlocks): Если в момент проведения приходного документа менеджер редактирует заказ клиента или проводит по нему оплату, объект блокируется. Попытка изменить его из транзакции прихода вызовет аварийное завершение проведения поступления.
  2. Замедление работы склада: Проведение поступления может длиться десятки секунд, если в транзакции выполняется тяжелый пересчет остатков и последовательное проведение десятков клиентских заказов.

Оптимальным решением является асинхронная архитектура с использованием очереди распределения и фонового выполнения.

Схема реализации через очередь и регламентное задание

Разберем по шагам, как построить надежную и быструю схему автоматического обеспечения заказов.

  1. Фиксация факта поступления:

    В конфигурацию добавляется непериодический регистр сведений ОчередьРаспределенияОбеспечения с измерениями Номенклатура, Характеристика, Склад и ресурсом Количество.

    Событие прихода перехватывается через подписку на событие при проведении документов или при записи набора записей регистра накопления СвободныеОстатки (либо ТоварыНаСкладах).

  2. Учет ордерной схемы склада:

    Важно различать тип склада, на который поступает товар:

    1. Неордерный склад: реальный свободный остаток формируется финансовым документом ПриобретениеТоваровУслуг.
    2. Ордерный склад: товар физически доступен только после проведения документа ПриходныйОрдерНаТовары в статусе «Принят». Запись в очередь должна происходить именно по факту складского прихода.
  3. Фоновое распределение:

    Регламентное задание запускается с небольшим интервалом (или вызывается как фоновое задание сразу после фиксации прихода), считывает накопленную очередь и производит подбор заказов по заданному правилу (например, FIFO по дате документа заказа или с учетом приоритета клиента).

Алгоритм распределения остатков и разделения строк заказа

Проанализируем логику распределения: если поступившего количества недостаточно для полного закрытия потребности по строке заказа, строку необходимо программно разделить.

  1. Строка заказа с признаком К обеспечению уменьшается на поступившее количество.
  2. Добавляется новая строка с обеспеченным количеством, для которой устанавливается вариант обеспечения Резервировать на складе (или Отгрузить).
  3. Для корректного отражения движений по регистрам графика поступления и запасов вызываются типовые механизмы конфигурации из серверных модулей обеспечения (например, ЗаказыКлиентовСервер и ЗаполнениеДокументовПоОстаткамСервер).

Оповещение ответственных менеджеров

После того как регламентное задание успешно обновило обеспечение и зарезервировало товар под конкретные заказы клиентов, менеджерам требуется сигнал к действию. Чтобы исключить необходимость постоянного просмотра отчетов, реализуем автоматическое уведомление:

  1. Задачи исполнителям: Создание объекта Задача.ЗадачаИсполнителя на автора заказа с темой «Товар поступил на склад, заказ готов к отгрузке».
  2. Система взаимодействия: Отправка контекстного оповещения автору документа во встроенный чат платформы со ссылкой на измененный заказ клиента.

Такой подход обеспечивает непрерывный цикл: склад оперативно принимает товар, фоновый процесс бесконфликтно распределяет резервы по заказам, а менеджеры мгновенно получают оповещения для связи с клиентами.

← На главную