Как настроить автоматическое резервирование товаров по заказам покупателей после поступления в 1С:Розница 2.3

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

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

Анализ архитектуры резервирования в версии 2.3

Для начала проанализируем ситуацию с регистрами. В отличие от более продвинутых систем (например, «Управление торговлей 11»), в «Рознице 2.3» отсутствует полноценный блок обеспечения заказов. Основные данные хранятся в двух местах:

  1. Регистр накопления «Товары на складах»: здесь фиксируется общее количество товара и ресурс Резерв. Важно понимать, что в этом регистре нет измерения ЗаказПокупателя. Система знает, сколько единиц зарезервировано всего, но не знает, под кого именно.
  2. Регистр накопления «Заказы покупателей»: здесь фиксируются остатки по самим заказам (что еще не отгружено).

Таким образом, когда мы говорим о резерве в «Рознице», мы подразумеваем, что программа просто уменьшает «Свободный остаток» (разница между общим остатком и ресурсом Резерв), запрещая продажу этого объема сторонним покупателям. Для наглядного контроля этих показателей можно использовать отчет для отображения остатков и резервов на складах.

Метод 1: Резервирование «в минус» (Штатный функционал)

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

Алгоритм действий:

  1. При создании документа Заказ покупателя, даже если товара нет в наличии, в строке табличной части выбираем вариант обеспечения «Резервировать по остатку» (в некоторых редакциях — просто статус «Резервировать»).
  2. При проведении заказа система сделает запись в регистр Товары на складах: Количество = 0, Резерв = 1.
  3. В этот момент свободный остаток станет равен -1.
  4. Когда в будущем будет проведен документ Поступление товаров (например, на 1 единицу), физический остаток станет равен 1, а резерв так и останется равен 1. Свободный остаток при этом станет равен 0.

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

Метод 2: Ручное распределение прихода

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

  1. Открыть список активных заказов покупателей.
  2. В каждом заказе нажать кнопку «Заполнить» — «Обеспечение заказов» или вручную изменить статус строки на «Резервировать».
  3. Перепровести документ.

Поскольку в «Рознице 2.3» нет документа «Резервирование запасов» (он появился только в версии 3.0), управление резервом происходит исключительно через сам Заказ покупателя. Для оперативного контроля наличия позиций непосредственно при оформлении можно применить расширение для показа остатков товара в документах продажи.

Метод 3: Программная автоматизация через расширение

Если объем заказов велик, ручное распределение становится неэффективным. Выясним, как можно автоматизировать этот процесс. Наиболее правильным решением будет создание расширения с подпиской на событие проведения документа ПоступлениеТоваров.

Логика работы кода должна быть следующей: при проведении поступления система находит все незакрытые заказы покупателей по поступившей номенклатуре, имеющие статус «К обеспечению», и программно переводит их в статус «Резервировать» по методу FIFO (первым резервируется самый старый заказ).

Пример структуры алгоритма для разработчика:


Процедура ПриПроведенииПоступления(Источник, Отказ, РежимПроведения)
    // 1. Формируем список поступивших товаров
    ТаблицаТоваров = Источник.Товары.Выгрузить();
    
    // 2. Запросом ищем подходящие Заказы покупателей
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Заказы.Ссылка КАК Заказ,
        |   Заказы.Номенклатура КАК Номенклатура,
        |   Заказы.КоличествоОстаток КАК Требуется
        |ИЗ
        |   РегистрНакопления.ЗаказыПокупателей.Остатки(&Момент, Номенклатура В (&СписокНоменклатуры)) КАК Заказы
        |УПОРЯДОЧИТЬ ПО
        |   Заказы.Ссылка.Дата ВОЗРАСТАНИИ";
    
    // 3. Обходим заказы и меняем статус обеспечения в ТЧ
    // Внимание: требуется программное перепроведение найденных заказов
КонецПроцедуры

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

Особенности работы кассира в РМК

Рассмотрим, что видит кассир, когда товар находится в резерве. Если товар зарезервирован под заказ покупателя, при попытке добавить его в корзину в интерфейсе РМК (Рабочее место кассира), система выдаст предупреждение: «Недостаточно свободного остатка».

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

Выводы и рекомендации

Выяснив причины отсутствия автоматического резервирования, мы можем сделать следующие выводы. В «1С:Розница 2.3» этот функционал ограничен архитектурно. Если ваша отрасль (например, магазин автозапчастей) требует жесткого контроля поступлений под заказ, мы рекомендуем:

  1. Использовать методику «Резервирования в минус», если вы готовы к специфическому отображению остатков в отчетах.
  2. Если «минусы» неприемлемы — внедрить небольшую доработку (расширение), которая будет распределять свободный остаток по заказам в момент проведения приходной накладной.
  3. Помнить, что полноценный механизм резервирования с отдельным документом «Резервирование» реализован в «1С:Розница 3.0» (на базе УНФ). Если отраслевое решение позволяет, переход на новую версию снимет большинство описанных вопросов.
← На главную