Как удалить архивные чеки ККМ в 1С:Розница

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

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

Почему платформа блокирует удаление архивных чеков

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

В модуле объекта документа ЧекККМ в процедурах ПередЗаписью и ПередУдалением разработчиками заложен жесткий контроль: если статус документа является архивным, система принудительно выставляет флаг Отказ = Истина. Это сделано для защиты от случайного искажения фискальных данных и розничной выручки в рабочей базе.

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

  1. Документы «Отчет о розничных продажах».
  2. Документы «Кассовая смена».
  3. Регистры сведений фискальных операций, движений денежных средств и учета подарочных сертификатов.
  4. Регистры учета кодов маркировки и алкогольной продукции.

Способ 1. Программная смена статуса чека с отключением проверок

Самый быстрый и надежный способ обойти встроенные проверки модуля объекта — изменить статус чека с помощью внешней обработки или встроенного инструмента групповой корректировки данных. Чтобы обработчики событий не вызывали отказ, необходимо установить свойство ОбменДанными.Загрузка = Истина.

Посмотрим на пример программного кода, который сбрасывает архивный статус у документа:


Объект = СсылкаНаЧек.ПолучитьОбъект();
Объект.ОбменДанными.Загрузка = Истина;
Объект.СтатусЧекаККМ = Перечисления.СтатусыЧековККМ.Пробитый;
Объект.Записать();

Разберем по шагам, как выполнить массовую обработку всех архивных чеков:

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

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

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

  1. Снимем с проведения и пометим на удаление все документы «Отчет о розничных продажах» за очищаемый период.
  2. Снимем с проведения и пометим на удаление документы «Кассовая смена».
  3. Очистим зависимые регистры сведений, если в них остались записи, блокирующие удаление по ссылкам.
  4. Запустим штатную обработку «Удаление помеченных объектов». Когда ссылки на чеки со стороны отчетов о продажах будут удалены, освободится возможность штатного удаления самих чеков.

Способ 3. Использование типовой обработки архивации и очистки

В типовой конфигурации 1С:Розница предусмотрен встроенный регламентный функционал. Разберем, как его задействовать:

  1. Перейдем в главное меню через «Функции для технического специалиста» (или «Все функции»).
  2. Найдем обработку «Архивирование и удаление чеков ККМ».
  3. Укажем период и организацию, выберем режим полного удаления чеков за закрытые кассовые смены.
  4. Запустим выполнение процедуры.

Чтобы чеки не накапливались в будущем при закрытии кассовых смен, проверим настройки программы в разделе «Администрирование» → «Продажи». Флаг «Удалять чеки при закрытии смены» позволяет системе автоматически очищать документы после формирования сводного отчета о продажах.

Способ 4. Создание чистой базы с переносом НСИ

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

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