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

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

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

Логика действий обеспечения в системе

Для начала проанализируем, какие состояния (действия) предусмотрены в системе для каждой строки заказа:

  1. Не обеспечивать — товар просто указан в заказе, за ним не закрепляются остатки, и он не планируется к закупке. Обычно устанавливается до момента подтверждения заказа или получения аванса.
  2. К обеспечению — товара нет на складе, но система понимает, что его нужно закупить или переместить.
  3. Резервировать на складе — товар есть в наличии и бронируется под конкретный заказ.
  4. Резервировать по мере поступления — автоматический резерв товара из будущих поставок.
  5. Отгрузить — финальная стадия, разрешающая создание документа «Реализация товаров и услуг».

Разберем, почему система не меняет эти значения сама по себе «из коробки» (в старых релизах до 11.5). Логика разработчиков 1С заключается в том, что распоряжение на отгрузку или резервирование — это волевое решение менеджера. Однако при больших объемах работы это превращается в рутину. Выясним, как упростить жизнь пользователю.

Решение 1: Рабочее место «Состояние обеспечения заказов»

Вместо того чтобы заходить в каждый отдельный заказ, рассмотрим использование специализированного рабочего места. Это основной инструмент для массовой работы с обеспечением.

Проанализируем алгоритм действий:

  1. Переходим в раздел Склад и доставка — Состояние обеспечения заказов.
  2. В открывшемся окне мы видим список всех заказов, требующих внимания. Здесь можно установить фильтры по конкретному складу, менеджеру или состоянию оплаты.
  3. Система подсвечивает строки: например, если товар поступил на склад, вы увидите это в колонке «Доступно».
  4. Выделите нужные строки (можно использовать Ctrl+A) и нажмите кнопку Установить действие.
  5. Выберите нужное значение, например, Отгрузить или Резервировать на складе.

Это значительно быстрее, чем ручная правка каждого документа, так как позволяет обработать сотни строк из разных заказов одновременно. Для этих целей также отлично подойдет специализированная обработка для группового изменения действий и управления резервами в заказах.

Решение 2: Групповое заполнение из формы списка заказов

Если вы работаете в актуальных версиях (УТ 11.4 и выше), можно воспользоваться командами групповой обработки прямо из журнала заказов. Рассмотрим этот способ подробнее:

  1. Выделите в списке несколько заказов (удерживая Shift или Ctrl).
  2. Нажмите кнопку Обеспечение (обычно находится в верхней командной панели).
  3. Выберите команду Заполнить обеспечение.
  4. В появившемся окне выберите стратегию. Например, можно указать «Резервировать на складе» для всех товаров, которые есть в наличии, и «К обеспечению» для отсутствующих.

Система сама проанализирует каждый выбранный документ, проверит остатки и изменит поле Действие в табличных частях Товары без необходимости открывать каждый заказ.

Решение 3: Настройка визуального контроля (Условное оформление)

Чтобы менеджер не пропустил момент, когда заказ оплачен и его пора переводить в статус обеспечения, настроим условное оформление списка заказов. Это поможет визуально отделить те заказы, которые пора «двигать» дальше.

Разберем шаги настройки:

  1. В списке заказов нажмите Ещё — Настроить список.
  2. Перейдите на закладку Условное оформление.
  3. Добавьте новое правило: установите цвет фона (например, светло-зеленый).
  4. В условии укажите: Статус оплаты РАВНО Оплачен (или Процент оплаты БОЛЬШЕ 0) И Текущее состояние РАВНО Готов к обеспечению.

Теперь менеджер сразу увидит яркие строки в списке и сможет применить к ним групповое действие Отгрузить.

Решение 4: Использование фонового распределения запасов (УТ 11.5)

В новых версиях программы (начиная с 11.5.7) реализован механизм Распределения запасов. Проанализируем его преимущества:

В этом режиме система в фоновом режиме сама сопоставляет свободные остатки с потребностями в заказах. Если в настройках склада и обеспечения включен этот режим, то при поступлении товара действие К обеспечению фактически начинает работать как резерв. Программа сама «понимает», под какой заказ пришел товар, и менеджеру остается только один раз нажать кнопку массового перевода в статус Отгрузить перед формированием документов печати. Для автоматизации этого процесса при поступлении товаров можно применить расширение для автоматического перевода строк заказов в статус «Отгрузить» при проведении приобретения.

Решение 5: Программная автоматизация (для разработчиков)

Для крупных компаний и интернет-магазинов оптимальным решением будет создание небольшого расширения, которое будет автоматически менять Действие при наступлении определенных событий (например, при проведении документа «Поступление безналичных денежных средств»).

Рассмотрим пример логики кода, который может быть размещен в фоновом задании или в подписке на событие:


// Пример логики изменения действия в заказе клиента
Для Каждого СтрокаТовара Из СсылкаНаЗаказ.Товары Цикл
    Если СтрокаТовара.Действие = ПредопределенноеЗначение("Перечисление.ДействияСТоварамиДляОбеспечения.НеОбеспечивать") 
       И ЗаказОплачен(СсылкаНаЗаказ) Тогда
        
        // Переводим в состояние резерва или обеспечения в зависимости от остатка
        Если ОстатокНаСкладе(СтрокаТовара.Номенклатура, СсылкаНаЗаказ.Склад) > 0 Тогда
            СтрокаТовара.Действие = ПредопределенноеЗначение("Перечисление.ДействияСТоварамиДляОбеспечения.ЗарезервироватьНаСкладе");
        Иначе
            СтрокаТовара.Действие = ПредопределенноеЗначение("Перечисление.ДействияСТоварамиДляОбеспечения.КОбеспечению");
        КонецЕсли;
        
    КонецЕсли;
КонецЦикла;

При реализации такой автоматизации важно учитывать ГрафикОплаты. Если в соглашении с клиентом указано, что требуется 100% предоплата, то программный код должен проверять полную сумму оплаты, прежде чем изменять Действие на К обеспечению или Отгрузить.

Резюме

Выясним, какой метод выбрать:

Помните, что автоматическая смена статуса на Отгрузить без контроля оплаты может привести к финансовым потерям, поэтому всегда комбинируйте автоматизацию с проверкой состояния взаиморасчетов.

← На главную