В процессе работы с конфигурацией 1С:Розница 2.3, особенно в условиях использования распределенных информационных баз (РИБ), технические специалисты часто сталкиваются с ситуацией, когда кассовая смена формально закрыта, но документы ЧекККМ не перешли в статус «Архивный» и не попали в Отчет о розничных продажах. Это приводит к тому, что выручка не отражается в кассе магазина, а товары не списываются со склада. Проанализируем причины этой проблемы и разберем по шагам методы ее решения.
Рассмотрим типичный сценарий: на торговой точке произошло удаление старого рабочего места и создание нового. Несмотря на то, что название компьютера могло остаться прежним, система 1С присваивает каждому рабочему месту уникальный идентификатор (GUID). Проанализируем ситуацию: чеки были пробиты на «старом» рабочем месте, а закрытие смены инициировано уже на «новом».
Для системы 1С это критично. Механизм закрытия смены ищет документы ЧекККМ, привязанные именно к текущему рабочему месту. Если идентификаторы не совпадают, программа попросту «не видит» эти чеки как объекты, подлежащие архивации и включению в отчет текущей смены. В результате смена в фискальном регистраторе закрывается (Z-отчет снят), документ Кассовая смена в базе получает статус «Закрыта», но Отчет о розничных продажах остается пустым или вовсе не создается.
Это наиболее эффективный метод для администраторов, не требующий написания программного кода. Посмотрим на алгоритм действий. Главная проблема заключается в том, что 1С запрещает редактировать документ ЧекККМ, если он уже имеет статус Пробит. Чтобы обойти это ограничение, выполним следующие шаги:
ЧекККМ.Статус и установим значение Архивный.Отчет о розничных продажах и укажем ссылку на предварительно созданный вручную пустой документ отчета.После этого чеки будут корректно привязаны к отчету, а их статус позволит системе считать операцию завершенной.
Если количество чеков велико или требуется более тонкая настройка, рассмотрим программный подход. Мы можем написать небольшую внешнюю обработку или воспользоваться консолью кода. Разберем пример кода, который принудительно архивирует чеки:
// Выбираем все чеки по конкретной кассовой смене
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЧекККМ.Ссылка КАК Ссылка
|ИЗ
| Документ.ЧекККМ КАК ЧекККМ
|ГДЕ
| ЧекККМ.КассоваяСмена = &КассоваяСмена
| И ЧекККМ.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробит)";
Запрос.УстановитьПараметр("КассоваяСмена", СсылкаНаПроблемнуюСмену);
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
ОбъектЧека = Результат.Ссылка.ПолучитьОбъект();
// Устанавливаем специальный режим, чтобы обойти проверки
ОбъектЧека.ОбменДанными.Загрузка = Истина;
// Присваиваем нужный статус и привязываем к отчету
ОбъектЧека.Статус = Перечисления.СтатусыЧековККМ.Архивный;
ОбъектЧека.ОтчетОРозничныхПродажах = СсылкаНаСозданныйОРП;
Попытка
ОбъектЧека.Записать(РежимЗаписиДокумента.Запись);
Исключение
Сообщить("Ошибка при записи чека: " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
Этот метод хорош тем, что мы можем точно контролировать процесс и массово обработать документы, не рискуя человеческим фактором при ручном выборе реквизитов.
Проанализируем еще один вариант решения. Если проблема была вызвана именно удалением рабочего места, можно попытаться временно восстановить «старое» окружение. Выясним имя компьютера, под которым работала касса в проблемный день. Если изменить имя текущего компьютера на старое (в настройках Windows) и зайти в 1С, система может идентифицировать его как то самое «удаленное» рабочее место.
В этом случае при попытке повторного формирования Отчета о розничных продажах из обработки Закрытие кассовой смены, алгоритмы 1С могут успешно подхватить «брошенные» чеки, так как идентификатор рабочего места совпадет с тем, что записан в чеках.
Если ваша база является частью Распределенной информационной базы (РИБ), крайне важно выполнять все манипуляции по исправлению статусов чеков строго в периферийном узле (непосредственно в магазине). Рассмотрим, почему это так:
Отчет о розничных продажах и измененные статусы чеков попали в центральную базу.Ситуация с неархивированными чеками не является поводом для штрафных санкций к персоналу, так как это системная ошибка, вызванная перенастройкой оборудования. Основным инструментом решения является использование свойства ОбменДанными.Загрузка = Истина, которое позволяет корректировать реквизиты документов в обход жестких проверок бизнес-логики 1С. После того как мы проставим чекам статус Архивный и привяжем их к документу Отчет о розничных продажах, остатки товаров и денежные средства в системе придут в соответствие с фактическими данными.