Каждый менеджер по продажам в оптовой торговле сталкивается с ежедневной рутиной: на склад поступает долгожданный товар от поставщика, и теперь нужно зарезервировать его под открытые заказы клиентов. В старых редакциях программы «1С:Управление торговлей 11» (начиная с версии 11.1) этот процесс превращался в настоящий кошмар. Менеджеру приходилось открывать каждый заказ клиента, заходить в табличную часть Товары, выделять все строки, нажимать кнопку Заполнить обеспечение, выбирать вариант Со склада, проводить документ и только после этого готовить отгрузку. Когда заказов десятки и сотни, ручная обработка занимает колоссальное количество времени.
В этой статье мы подробно разберем, как решить проблему массового изменения статусов обеспечения (значений в колонке «Действие») как в устаревших редакциях программы (УТ 11.1–11.4), так и в современных версиях (УТ 11.5 и выше).
Первое, что приходит в голову системному администратору или продвинутому пользователю — воспользоваться типовой обработкой Групповое изменение реквизитов. Однако этот способ категорически не подходит для изменения вариантов обеспечения в табличных частях.
Дело в том, что изменение статуса строки (например, с К обеспечению или Из заказов на Отгрузить или Со склада) — это не просто смена текстового значения в базе данных. Этот процесс запускает сложные внутренние механизмы конфигурации: проверку фактических свободных остатков на складах, резервирование под конкретные заказы и запись движений в регистры накопления. Если принудительно перезаписать реквизит табличной части через групповую обработку, мы получим рассинхронизацию данных и ошибки проведения документов.
Рассмотрим по шагам два принципиально разных подхода к автоматизации этого процесса: программную доработку для старых релизов и использование нового типового функционала в современных редакциях.
Если ваше предприятие все еще работает на конфигурациях линейки УТ 11.1 — 11.4, стандартными средствами решить задачу массового резервирования без открытия каждого заказа не удастся. Нам потребуется создать небольшое расширение или внешнюю обработку. За основу логики мы возьмем стандартное рабочее место Состояние обеспечения заказов.
Идея решения заключается в том, чтобы в цикле обойти выбранные документы заказа, программно вызвать процедуру автоматического заполнения обеспечения и провести документы. Ниже приведен пример программного кода, который можно использовать в качестве обработчика для кнопки пакетного изменения обеспечения в вашей внешней обработке:
// Пример программного заполнения обеспечения в заказах клиентов
Процедура МассовоеЗаполнениеОбеспечения(МассивЗаказов) Экспорт
Для Каждого СсылкаНаЗаказ Из МассивЗаказов Цикл
// Получаем объект документа для изменения
ДокументОбъект = СсылкаНаЗаказ.ПолучитьОбъект();
// Блокируем объект от совместного изменения другими пользователями
ДокументОбъект.Заблокировать();
// Вызываем типовой механизм заполнения обеспечения, встроенный в конфигурацию
// В зависимости от релиза параметры процедуры могут незначительно отличаться
ПараметрыЗаполнения = РаспределениеЗапасовКлиентСервер.ПараметрыЗаполненияОбеспечения();
ПараметрыЗаполнения.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.СоСклада;
// Заполняем обеспечение по остаткам на складе для всех строк документа
ЗаполнитьОбеспечениеДокумента(ДокументОбъект, ПараметрыЗаполнения);
// Попытка записать и провести измененный документ
Попытка
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
// Если документ не провелся (например, не хватило остатка), записываем ошибку в журнал
ЗаписьЖурналаРегистрации("Массовое обеспечение",
УровеньЖурналаРегистрации.Предупреждение, , ,
"Не удалось провести заказ: " + СсылкаНаЗаказ + " Ошибка: " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
КонецПроцедуры
Разработав такую внешнюю обработку, менеджер сможет открывать список заказов, отмечать галочками нужные документы и в один клик переводить доступный на складе товар в статус Со склада.
Разработчики фирмы «1С» детально проанализировали проблемы пользователей и в современных редакциях платформы кардинально переработали складскую подсистему распределения запасов. Если вы используете актуальные версии программы, вам больше не нужно писать код или покупать внешние обработки. Достаточно правильно настроить систему.
Проанализируем две ключевые настройки, которые автоматизируют резервирование:
При оформлении заказа клиента, если нужного количества товара сейчас нет в свободном остатке на складе, менеджеру не нужно выбирать действие К обеспечению. Вместо этого следует установить статус строки Резервировать по мере поступления.
Этот статус дает программе команду: как только на склад будет проведен приходный документ (например, Приобретение товаров и услуг от поставщика), программа должна автоматически связать этот приход с данным заказом клиента и зарезервировать его.
В УТ 11.5 вместо старых регистров свободных остатков используется современный регистр сведений Распределение запасов. Для его автоматического заполнения в системе существует фоновое регламентное задание Распределение запасов.
Настроим его расписание (например, запуск каждые 10–15 минут). Программа будет сама анализировать новые поступления на склад и распределять товар по заказам клиентов в зависимости от их приоритета и желаемой даты отгрузки. Менеджеру вообще не нужно заходить в заказы и менять статус строки на Со склада — система сделает это автоматически в фоновом режиме.
При использовании автоматического фонового распределения запасов в УТ 11.5 пользователи иногда сталкиваются с тем, что свободный остаток в подборе товара не соответствует реальным остаткам в отчетах. Это происходит из-за сбоев выполнения регламентного задания или некорректных движений документов.
Выясним, как быстро решить эту проблему:
Функции для технического специалиста.Распределение запасов.Резюме: Если ваша компания работает на старых релизах УТ 11, лучшим выбором будет создание или приобретение готового внешнего расширения (АРМ менеджера), которое пакетно выполняет проведение заказов с автоматическим заполнением обеспечения. Если же вы используете современные релизы линейки 11.5, переведите бизнес-процесс на работу со статусом Резервировать по мере поступления и настройте регламентное задание автоматического распределения запасов.