Почему «Отчет о розничных продажах» не делает движения по регистру «Товары на складах»?

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

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

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

Различие между регистрами «Товары организаций» и «Товары на складах»

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

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

Причина 1: Влияние статуса кассовой смены и архивации чеков

Проанализируем программный код проведения документа ОтчетОРозничныхПродажах. В модуле менеджера или модуле объекта документа формирование движений по регистру ТоварыНаСкладах жестко ограничено условием &ПолноеПроведение.

Обратим внимание на то, как инициализируется текст запроса для формирования движений по складу:


Функция ТекстЗапросаТаблицаТоварыНаСкладах()
    
    ТекстЗапроса = "
    |ВЫБРАТЬ
    |    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
    |    &Период                                КАК Период,
    |    &Склад                                 КАК Склад,
    |    ТаблицаТовары.Номенклатура             КАК Номенклатура,
    |    ТаблицаТовары.Характеристика           КАК Характеристика,
    |    ТаблицаТовары.Серия                    КАК Серия,
    |    ТаблицаТовары.Количество               КАК ВНаличии
    |
    |ИЗ
    |    ВтТаблицаСерииТоваров КАК ТаблицаТовары
    |ГДЕ
    |    ТаблицаТовары.Количество > 0
    |    И &ПолноеПроведение
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |    
    |ВЫБРАТЬ
    |    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
    |    &Период                                КАК Период,
    |    &Склад                                 КАК Склад,
    |    ТаблицаТовары.Номенклатура             КАК Номенклатура,
    |    ТаблицаТовары.Характеристика           КАК Характеристика,
    |    ТаблицаТовары.Серия                    КАК Серия,
    |    ТаблицаТовары.Количество               -ТаблицаТовары.Количество КАК ВНаличии
    |
    |ИЗ
    |    ВтТаблицаСерииТоваров КАК ТаблицаТовары
    |ГДЕ
    |    ТаблицаТовары.Количество < 0
    |    И &ПолноеПроведение
    |;
    |/////////////////////////////////////////////////////////////////////////////
    |";
    
    Возврат ТекстЗапроса;
    
КонецФункции

Параметр запроса &ПолноеПроведение рассчитывается в коде следующим образом:


Если Реквизиты.ТипКассы = Перечисления.ТипыКассККМ.ФискальныйРегистратор Тогда
    ПолноеПроведение = Реквизиты.СтатусКассовойСмены = Перечисления.СтатусыКассовойСмены.ЗакрытаЧекиЗаархивированы;    
Иначе
    ПолноеПроведение = Истина;
КонецЕсли;

Что это означает на практике?

Если на торговой точке используется фискальный регистратор (продажи оформляются документами ЧекККМ в течение дня), то при закрытии смены система создает сводный ОтчетОРозничныхПродажах. При этом:

  1. В течение смены каждый отдельный документ ЧекККМ делает оперативное движение «Расход» по регистру ТоварыНаСкладах.
  2. Если кассовая смена просто закрыта, но чеки ККМ еще не заархивированы, то ОтчетОРозничныхПродажах проводиться по складу не будет (флаг ПолноеПроведение равен Ложь). Это защищает систему от двойного списания остатков (чтобы товар не списался одновременно и по чекам, и по отчету).
  3. Только после того, как будет выполнена процедура архивации чеков (при которой движения самих документов ЧекККМ очищаются, а статус чеков меняется на «Архивный»), документ ОтчетОРозничныхПродажах получает статус ПолноеПроведение = Истина и берет складские списания на себя.

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

Причина 2: Использование ордерной схемы документооборота

Еще один распространенный сценарий связан с настройками самого склада. Если для склада, указанного в документе, включена опция «Ордерная схема при отгрузке», поведение системы кардинально меняется:

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

Рекомендуемый алгоритм решения проблемы

Для того чтобы восстановить корректный учет остатков, рекомендуем выполнить следующие шаги:

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