В конфигурации «1С:Розница 2.2» при закрытии кассовой смены всем документам Чек ККМ (за исключением аннулированных) автоматически присваивается статус «Архивный». Это означает, что кассовая смена закрыта, а все финансовые и товарные движения перешли в итоговый документ Отчет о розничных продажах. Однако на практике возникают ситуации, когда требуется отредактировать архивный чек (например, исправить неверно указанного сотрудника или мастера). При попытке перепровести такой документ пользователи сталкиваются с тем, что в документе очищается реквизит НомерЧекаККМ, а вернуть исходный статус «Архивный» стандартными средствами не удается. Разберем причинно-следственные связи этой проблемы и эффективные способы ее решения.
Проанализируем, почему при снятии статуса и перепроведении чека сбрасываются данные:
ПередЗаписью, ПриЗаписи, ОбработкаПроведения), которые пересчитывают кассовые параметры и очищают исторический реквизит НомерЧекаККМ.Отчет о розничных продажах. Проведение архивного чека недопустимо, так как это приводит к задвоению списываемых товаров и суммы выручки.Чтобы вернуть документу статус «Архивный» и восстановить очищенный реквизит НомерЧекаККМ, необходимо выполнить программную запись документа с отключением обработчиков событий и проверок. Для этого используется режим ОбменДанными.Загрузка = Истина.
Рассмотрим пример кода, который выполняет эту операцию:
ДокументОбъект = СсылкаНаЧек.ПолучитьОбъект();
// Восстанавливаем номер чека ККМ и статус
ДокументОбъект.НомерЧекаККМ = 45; // Указываем нужный номер чека
ДокументОбъект.СтатусЧека = Перечисления.СтатусыЧековККМ.Архивный;
// Вносим необходимые исправления в реквизиты (например, заполняем мастера)
ДокументОбъект.Мастер = СсылкаНаМастера;
// Отключаем выполнение обработчиков событий и проверок при записи
ДокументОбъект.ОбменДанными.Загрузка = Истина;
// Записываем документ строго в режиме ЗАПИСИ (без проведения)
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
Установка свойства ОбменДанными.Загрузка = Истина гарантирует, что система записала новые значения реквизитов прямо в базу данных, не вызывая алгоритмы пересчета смены и не затирая номер чека.
Если нет возможности написать программную обработку, используем типовой инструмент конфигурации — обработку «Групповое изменение реквизитов» (раздел Администрирование — Обслуживание — Корректировка данных):
Чек ККМ.НомерЧекаККМ и указываем его правильное числовое значение.Статус чека и устанавливаем значение Архивный.Выясним первопричину задачи: часто чек пытаются отредактировать из-за того, что в нем удалили элемента справочника и образовалась «битая ссылка» (отображается как <Объект не найден...>). Чтобы исправить эту ситуацию, снимать статус с архивного чека вообще не требуется.
Посмотрим на два альтернативных пути решения:
<Объект не найден (GUID)...> извлекается уникальный идентификатор. Программно создается новый элемент справочника с этим же GUID. В результате битая ссылка в чеке автоматически начинает ссылаться на созданный элемент.Для предотвращения подобных сбоев в работе кассового модуля рекомендуется соблюдать следующие правила:
1. Ограничение прав пользователей: Кассиры и операторы не должны иметь прав на непосредственное удаление объектов из базы данных (право Интерактивное удаление). Удаление должно происходить только через пометку на удаление с последующей проверкой ссылочной целостности администратором.
2. Редактирование аналитики в отчете: Если после закрытия смены требуется изменить аналитические данные (мастера, менеджера, дисконтную карту), эти правки следует вносить непосредственно в документ Отчет о розничных продажах, так как именно он формирует итоговые отчеты и финансовые движения.