Как правильно списать резервы по заявке покупателя при розничных продажах в 1С:Торговля и Склад 7.7

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

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

Архитектура учета остатков и резервов в 1С:ТиС 7.7

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

  1. Регистр «РезервыТМЦ» — хранит информацию о зарезервированных товарах в разрезе измерений Фирма, Номенклатура, Склад и ДоговорПокупателя. Обратите внимание: резерв всегда жестко привязан к конкретному договору и контрагенту.
  2. Регистр «ЗаявкиПокупателей» — контролирует исполнение обязательств по конкретному заказу. Измерения: Фирма, Номенклатура, ДоговорПокупателя, ЗаявкаПокупателя.
  3. Регистр «ОстаткиТМЦ» — отражает фактическое физическое наличие товара на складах компании в разрезе измерений Фирма, Склад, Номенклатура и ЦенаПрод.

Свободный остаток товара, доступный к свободной продаже без заявки, в системе рассчитывается динамически:

Свободный остаток = Остаток по регистру «ОстаткиТМЦ» - Остаток по регистру «РезервыТМЦ»

Когда проводится документ ЗаявкаПокупателя с установленным флагом резервирования, он делает приходное движение в регистр РезервыТМЦ и ЗаявкиПокупателей. Физический остаток на складе при этом не уменьшается, но свободный остаток уменьшается на количество в заявке.

Почему документ «ЧекККМ» не может списывать резервы

Рассмотрим, с какими критическими проблемами сталкивается разработчик при попытке дописать снятие резервов в модуль документа ЧекККМ:

  1. Обезличенность розничной продажи: Документ ЧекККМ предназначен для операционной кассы по схеме «деньги в обмен на товар». В его стандартных реквизитах отсутствуют Контрагент и Договор. Регистр РезервыТМЦ не может сделать движение расхода с пустым значением договора, иначе резерв конкретного покупателя не закроется, а в регистре возникнет перекос.
  2. Регламент закрытия кассовой смены: Это главная архитектурная преграда. В конце рабочего дня кассир выполняет обработку «Закрытие кассовой смены». При этом типовой алгоритм собирает все чеки за день, формирует единый сводный документ ОтчетККМ, а сами документы ЧекККМ распроводит и физически удаляет. При распроведении чека все выполненные им движения по регистрам РезервыТМЦ и ЗаявкиПокупателей откатятся назад — резерв снова зависнет на остатке.
  3. Потеря связи «Заявка — ОтчетККМ»: Чтобы резервы корректно закрылись в конце смены, придется полностью переписать структуру документа ОтчетККМ, добавить в него табличную часть с разбивкой по заявкам, договорам и контрагентам, а также переписать механизм свертки чеков. Это влечет колоссальные трудозатраты и делает конфигурацию нестабильной при обновлениях.

Как устроено типовое списание резервов в документе «Реализация»

Посмотрим на пример того, как работа с заявками и резервами реализована в оптовом документе Реализация. В модуле документа перед списанием остатков вызывается подготовка движений по заявкам:


// Фрагмент подготовки движений по заявкам и резервам в документе Реализация
ДвижениеЗаявокПокупателя(ТаблицаТМЦ, ВремЗаявки, ВремЗаказыЗаявки, ВремРезервыТМЦ);

Далее управление передается глобальной функции списания остатков, где анализируются и остатки на складе, и зарезервированное количество:


Если глСписаниеОстатковТМЦ(Контекст, ТаблицаТМЦ, СписокПараметров, ВремОстаткиТМЦ, ВремРезервыТМЦ) = 0 Тогда
    глНеПроводить(Контекст);
    Возврат;
КонецЕсли;

Если в эту функцию вместо переменной ВремРезервыТМЦ передать пустую строку "", программа отключит проверку резервов и проверит только общий физический остаток. Однако сам резерв при этом не спишется — он так и останется числиться за покупателем в регистре РезервыТМЦ.

Рекомендуемое решение: Схема «Заявка — Реализация (розница) — ПКО»

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

  1. Формирование предварительного заказа: Менеджер оформляет документ ЗаявкаПокупателя. В шапке указывается конкретный склад (оптовый или розничный торговый зал) и контрагент (конкретное физическое лицо либо обособленный покупатель). Документ формирует движения по регистрам ЗаявкиПокупателей и РезервыТМЦ.
  2. Отгрузка товара: В момент передачи товара клиенту на основании заявки вводится документ Реализация (розница) или документ Реализация (с типом торговли «Розница»). Данный документ штатно списывает физический остаток из регистра ОстаткиТМЦ, делает расход по регистру РезервыТМЦ и закрывает ЗаявкиПокупателей.
  3. Прием оплаты и печать чека: На основании документа реализации вводится Приходный кассовый ордер (ПКО). Фискальный кассовый чек по требованиям 54-ФЗ пробивается непосредственно из формы ПКО или из самой Реализации через подключенную онлайн-кассу.

Посмотрим на преимущества такой схемы:

  1. Документ ЧекККМ не используется, а значит, процедура закрытия смены не уничтожит движения по заявкам и резервам.
  2. Взаиморасчеты с покупателем прозрачны: в любой момент можно отследить историю оплат, отгрузок и остатков резервов по каждому заказу.
  3. Полное соблюдение требований 54-ФЗ в части указания реквизитов покупателя и признаков способа расчета при предзаказах и доставках.

Альтернативное решение: Снятие резерва перед пробитием чека ККМ

Если специфика торговой точки требует обязательного пробития товара именно через кассовый интерфейс документа ЧекККМ (например, кассир работает только в специализированном рабочем месте), применим следующий алгоритм:

  1. На складе комплектуется заказ по ранее созданной ЗаявкеПокупателя.
  2. В момент передачи заказа на кассовую зону на основании заявки автоматически или вручную вводится служебный документ Снятие резерва (или изменяется статус заявки).
  3. Документ Снятие резерва делает расход по регистру РезервыТМЦ. Товар переходит из статуса «в резерве» в статус «свободный остаток».
  4. Кассир открывает ЧекККМ, подбирает собранный товар и пробивает чек. Так как резерв уже снят, документ ЧекККМ успешно списывает свободный остаток по регистру ОстаткиТМЦ без ошибок контроля остатков.

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

← На главную