Как восстановить данные и скорректировать Отчет о розничных продажах при заархивированных чеках ККМ в 1С:УТ 11?

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

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

Почему нельзя принудительно «разархивировать» чеки ККМ

Проанализируем архитектуру работы розничного блока в 1С:УТ 11. Признак архивности чека задается перечислением статусов документа (статус «Архивный»). Механизм учета устроен следующим образом:

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

В модулях проведения конфигурации заложен жесткий контроль: если документ ЧекККМ имеет статус «Архивный», формирование движений по регистрам блокируется. Попытка программно снять признак архивности (даже с использованием ОбменДанными.Загрузка = Истина) и заново провести чеки несет в себе критические риски:

  1. Задвоение движений: если в базе уже проведен ОтчетОРозничныхПродажах, повторное проведение чеков приведет к дублированию списания остатков и выручки.
  2. Ошибки партионного учета и маркировки: при повторном проведении чеков по товарам с маркировкой или серийным учетом возникнут ошибки контроля статусов кодов маркировки и партий.

Способ 1. Штатное перезаполнение Отчета о розничных продажах через Кассовую смену

Рассмотрим самый быстрый и штатный способ исправления ситуации, если период еще не закрыт для редактирования. В 1С:УТ 11 каждому документу ОтчетОРозничныхПродажах соответствует родительский документ КассоваяСмена.

Выполним следующие шаги:

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

Способ 2. Анализ расхождений с помощью запроса или Универсального отчета

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

Разберем, как сопоставить строки чеков и отчета с помощью консоли запросов:


ВЫБРАТЬ
	ЧекиТовары.Номенклатура КАК Номенклатура,
	ЧекиТовары.Характеристика КАК Характеристика,
	СУММА(ЧекиТовары.Количество) КАК КоличествоЧеки,
	СУММА(ЧекиТовары.Сумма) КАК СуммаЧеки
ПОМЕСТИТЬ ВТ_Чеки
ИЗ
	Документ.ЧекККМ.Товары КАК ЧекиТовары
ГДЕ
	ЧекиТовары.Ссылка.КассоваяСмена = &КассоваяСмена
	И ЧекиТовары.Ссылка.Проведен = ИСТИНА
СГРУППИРОВАТЬ ПО
	ЧекиТовары.Номенклатура,
	ЧекиТовары.Характеристика
;

ВЫБРАТЬ
	ОРПТовары.Номенклатура КАК Номенклатура,
	ОРПТовары.Характеристика КАК Характеристика,
	СУММА(ОРПТовары.Количество) КАК КоличествоОРП,
	СУММА(ОРПТовары.Сумма) КАК СуммаОРП
ПОМЕСТИТЬ ВТ_ОРП
ИЗ
	Документ.ОтчетОРозничныхПродажах.Товары КАК ОРПТовары
ГДЕ
	ОРПТовары.Ссылка = &СсылкаОРП
СГРУППИРОВАТЬ ПО
	ОРПТовары.Номенклатура,
	ОРПТовары.Характеристика
;

ВЫБРАТЬ
	ЕСТЬNULL(ВТ_Чеки.Номенклатура, ВТ_ОРП.Номенклатура) КАК Номенклатура,
	ЕСТЬNULL(ВТ_Чеки.Характеристика, ВТ_ОРП.Характеристика) КАК Характеристика,
	ЕСТЬNULL(ВТ_Чеки.КоличествоЧеки, 0) КАК КоличествоЧеки,
	ЕСТЬNULL(ВТ_ОРП.КоличествоОРП, 0) КАК КоличествоОРП,
	ЕСТЬNULL(ВТ_Чеки.КоличествоЧеки, 0) - ЕСТЬNULL(ВТ_ОРП.КоличествоОРП, 0) КАК РазницаКоличество,
	ЕСТЬNULL(ВТ_Чеки.СуммаЧеки, 0) - ЕСТЬNULL(ВТ_ОРП.СуммаОРП, 0) КАК РазницаСумма
ИЗ
	ВТ_Чеки КАК ВТ_Чеки
		ПОЛНОЕ СОЕДИНЕНИЕ ВТ_ОРП КАК ВТ_ОРП
		ПО ВТ_Чеки.Номенклатура = ВТ_ОРП.Номенклатура
			И ВТ_Чеки.Характеристика = ВТ_ОРП.Характеристика
ГДЕ
	ЕСТЬNULL(ВТ_Чеки.КоличествоЧеки, 0) <> ЕСТЬNULL(ВТ_ОРП.КоличествоОРП, 0)

Также для пользователей без навыков программирования удобным инструментом является стандартный «Универсальный отчет». Достаточно выбрать тип данных «Документ», объект «Чек ККМ», таблицу «Товары» и установить отбор по конкретной кассовой смене.

Способ 3. Корректировка в закрытом периоде

Если дата запрета изменения данных уже не позволяет перезаполнить или отредактировать исходный ОтчетОРозничныхПродажах, восстановить учетные остатки можно следующими методами:

  1. Документ «Реализация товаров и услуг»: формируем документ реализации текущей датой на предопределенного контрагента «Розничный покупатель» на недостающие позиции товаров.
  2. Документ «Корректировка регистров»: вносим недостающие записи по регистрам накопления вручную с указанием необходимых аналитик учета.

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

← На главную