Как эффективно зарезервировать товары в 1С:Комплексная автоматизация 2.5 под Заказ клиента, если Заказ поставщику уже создан?

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

Мы с вами рассмотрим непростую, но часто встречающуюся задачу в 1С:Комплексная автоматизация 2.5 (КА 2.5): как правильно зарезервировать товары под конкретный Заказ клиента, если Заказ поставщику, включающий эти товары, уже создан и содержит большое количество строк. Эта ситуация отличается от прямолинейного резервирования, знакомого многим по УТ 10.3, и требует понимания специфических механизмов КА 2.5. Прежде всего, давайте выясним, почему эта задача может вызывать сложности. В отличие от более ранних версий, в КА 2.5 акцент смещен на механизм "Назначений" и "Обособленного обеспечения", который предоставляет более строгий контроль над движением товаров. Однако, если документы создаются в определенной последовательности (сначала Заказ поставщику, затем Заказ клиента), стандартные автоматические привязки могут не сработать.

Стандартное решение: Использование механизма "Назначений" и "Обособленного обеспечения"

Механизм "Назначений" в 1С:КА 2.5 (и аналогичных конфигурациях, таких как ERP 2.5, УТ 11.5) является ключевым инструментом для резервирования товаров под конкретные потребности, даже если эти товары еще не поступили на склад. Он позволяет "закрепить" будущие поступления за определенным заказом. Рассмотрим подробнее, как работает этот механизм: 1. Суть механизма "Назначения": Мы можем представить "Назначение" как "железную броню" или "сейф" для поступившей партии товара. Это гарантирует, что товар, пришедший по конкретному назначению, будет отгружен только по тому заказу, под который это назначение было создано. 2. Создание назначения: Назначением может выступать любой документ, под который нам требуется закупка у поставщика или производство. Когда мы проводим Заказ клиента к обеспечению, система формирует назначение со ссылкой на этот заказ. 3. Использование в Заказе поставщику: * Если Заказ поставщику создается на основании Заказа клиента, то в поле Назначение автоматически указывается соответствующее назначение. Это идеальный сценарий, позволяющий управлять закупками в соответствии с резервированием товаров по заказам клиентов. * Однако, в нашей ситуации Заказ поставщику уже создан. В этом случае мы можем воспользоваться стандартной обработкой "Групповое изменение реквизитов". Через нее мы можем привязать строки существующего Заказа поставщику к нужному Заказу клиента, установив соответствующее Назначение. Для этого нам потребуется выбрать документы ЗаказПоставщику, а в качестве изменяемого реквизита указать Назначение, выбрав наш Заказ клиента. 4. Резервирование под будущие поступления в Заказе клиента: В самом Заказе клиента мы можем установить различные действия по обеспечению: * Действие "Резервировать по мере поступления": Если товара на складе нет, то в качестве обеспечения потребности будут использоваться текущие заказы на поступление. По мере поступления товаров, они автоматически распределяются на заказ и встают в резерв. * Действие "Обеспечивать обособленно": Это действие указывает системе, что товар будет поставлен на склад специально под данный заказ и автоматически зарезервирован под это "назначение". Это обеспечивает самый строгий контроль. 5. Корректировка назначения товаров: Для гибкого управления уже поступившими на склад товарами, особенно если они пришли под определенное назначение, используется документ "Корректировка назначения товаров". Мы можем использовать его для: * Привязки свободного остатка (без назначения) к конкретному Заказу клиента, формируя тем самым новое назначение. * Отвязки товара от существующего назначения, делая его свободным для других потребностей или переназначая на другой заказ. Мы видим, что, в отличие от УТ 10.3, где резервирование могло быть более прямолинейным, в КА 2.5 акцент на "обособленном обеспечении" через механизм "назначений" обеспечивает более строгий контроль. Однако, это также означает, что отмена или изменение таких резервов может потребовать дополнительных усилий, так как они не исчезают автоматически, если корректировки не были внесены.

Управление резервами и возможные нюансы

При работе с резервами в КА 2.5 важно учитывать несколько ключевых моментов: * Контроль актуальности резервов: В случае изменения Заказа клиента после того, как под него были сформированы резервы, могут возникнуть "лишние" или "зависшие" резервы. Они не уйдут сами по себе. Мы должны осуществлять своевременный контроль и корректировку таких резервов. При переходе на новую редакцию или при масштабных изменениях рекомендуется использовать команду "Отменить непоставленные строки" для формирования корректных записей. * Приоритеты резервирования: Система автоматически упорядочивает заказы на отгрузку согласно их приоритету и датам отгрузки. Более приоритетный заказ при проведении может "забрать" резервы у низкоприоритетных заказов. Мы должны это учитывать при планировании отгрузок. * Рабочее место "Состояние обеспечения": Для анализа результатов распределения запасов на заказы и контроля текущих резервов нам доступно удобное рабочее место "Состояние обеспечения". Мы рекомендуем регулярно обращаться к нему для проверки корректности резервирования.

Альтернативное (доработанное) решение: Упрощение процесса через кастомизацию

Хотя стандартный функционал КА 2.5 предоставляет все необходимые инструменты для работы с назначениями, он может быть достаточно сложным и требовать много ручных действий, особенно при большом количестве строк в документах. Именно поэтому многие компании прибегают к доработкам, чтобы упростить этот процесс для пользователей. Давайте разберем по шагам, как может быть реализовано подобное доработанное решение на основе опыта наших коллег: 1. Инициирование процесса: Предположим, что в форме Заказа клиента мы добавляем специальную кнопку, например, "Зарезервировать из поступлений". Нажатие на эту кнопку открывает дополнительную форму. 2. Форма для работы с резервами: Эта форма будет содержать две табличные части: * Верхняя табличная часть: Здесь отображаются товары из текущего Заказа клиента, которые мы хотим зарезервировать. * Нижняя табличная часть: В этой части мы увидим свободные остатки, которые можно подгрузить. Это могут быть как свободные остатки со складов (если в заказе выбрана группа складов или конкретный склад), так и товары из Заказов поставщику, которые еще не имеют назначения. 3. Выбор и подтверждение: Пользователь (менеджер) отмечает, какие товары и откуда он хочет подгрузить в текущий Заказ клиента. После выбора он нажимает кнопку "Подтвердить". 4. Механизм работы с Заказом поставщику: При подтверждении система выполняет следующие действия: * Происходит захват объекта ЗаказПоставщику (мы получаем ссылку на него). * Находится строка в табличной части Товары Заказа поставщику, соответствующая выбранному товару. * Если выбранное количество меньше, чем в строке Заказа поставщику, то исходная строка разбивается на две: * Одна строка получает необходимое Назначение (ссылку на наш Заказ клиента). * Вторая строка остается без назначения или с исходным назначением, но с уменьшенным количеством. * Все количества пересчитываются и актуализируются. 5. Изменения в Заказе клиента: В Заказе клиента для зарезервированной позиции устанавливается обособленный резерв, и, при необходимости, также происходит разбиение строк и пересчет количеств. Например, мы можем установить ВариантОбеспечения для строки заказа.


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

6. Реализация снятия резерва (дополнительная функция): Очень важной частью такой доработки является возможность снятия резерва. Рассмотрим два сценария: * Если товар еще не пришел: * Система ищет соответствующее назначение в Заказе поставщику. * Если в Заказе поставщику было две строки по этому товару (одна с назначением, другая без), то строка с назначением удаляется, а ее количество прибавляется к строке без назначения. * Если была только одна строка с назначением, то назначение просто удаляется из этой строки, делая товар свободным. * Если товар уже пришел: * В этом случае создается документ "Корректировка назначения товаров". * С помощью этого документа товар отвязывается от назначения и переходит на свободный остаток. * В Заказе клиента для соответствующей позиции устанавливается ВариантОбеспечения в значение "Не обеспечивать".


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

Преимущества такой доработки очевидны: она значительно упрощает работу менеджеров, автоматизируя сложные шаги по проставлению назначений и корректировке документов. Однако важно помнить, что любая кастомизация требует поддержки при обновлениях конфигурации и тщательного тестирования. В конечном итоге, выбор между использованием стандартного функционала (с его гибкостью, но иногда и сложностью) и разработкой собственного решения (с его удобством, но и затратами на поддержку) остается за вами. Мы надеемся, что этот подробный разбор поможет вам принять взвешенное решение и эффективно управлять резервированием товаров в 1С:КА 2.5.

← К списку