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

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

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

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

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

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

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

Чтобы вернуть документу статус «Архивный» и восстановить очищенный реквизит НомерЧекаККМ, необходимо выполнить программную запись документа с отключением обработчиков событий и проверок. Для этого используется режим ОбменДанными.Загрузка = Истина.

Рассмотрим пример кода, который выполняет эту операцию:


ДокументОбъект = СсылкаНаЧек.ПолучитьОбъект();

// Восстанавливаем номер чека ККМ и статус
ДокументОбъект.НомерЧекаККМ = 45; // Указываем нужный номер чека
ДокументОбъект.СтатусЧека = Перечисления.СтатусыЧековККМ.Архивный;

// Вносим необходимые исправления в реквизиты (например, заполняем мастера)
ДокументОбъект.Мастер = СсылкаНаМастера;

// Отключаем выполнение обработчиков событий и проверок при записи
ДокументОбъект.ОбменДанными.Загрузка = Истина;

// Записываем документ строго в режиме ЗАПИСИ (без проведения)
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);

Установка свойства ОбменДанными.Загрузка = Истина гарантирует, что система записала новые значения реквизитов прямо в базу данных, не вызывая алгоритмы пересчета смены и не затирая номер чека.

Способ 2. Восстановление данных через "Групповое изменение реквизитов"

Если нет возможности написать программную обработку, используем типовой инструмент конфигурации — обработку «Групповое изменение реквизитов» (раздел Администрирование — Обслуживание — Корректировка данных):

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

Способ 3. Исправление "битых ссылок" без снятия статуса с чека

Выясним первопричину задачи: часто чек пытаются отредактировать из-за того, что в нем удалили элемента справочника и образовалась «битая ссылка» (отображается как <Объект не найден...>). Чтобы исправить эту ситуацию, снимать статус с архивного чека вообще не требуется.

Посмотрим на два альтернативных пути решения:

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

Рекомендации по предотвращению подобных ошибок

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

1. Ограничение прав пользователей: Кассиры и операторы не должны иметь прав на непосредственное удаление объектов из базы данных (право Интерактивное удаление). Удаление должно происходить только через пометку на удаление с последующей проверкой ссылочной целостности администратором.

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

← На главную