Как исправить проблему с закрытием смены и архивацией чеков в 1С:Розница 1.0 без ККТ

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

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

Разберем суть проблемы

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

Шаг 1. Проверка настроек архивации

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

  1. Перейдем в меню Сервис -> Настройка параметров учета.
  2. Найдем закладку, отвечающую за продажи (в разных релизах она может называться по-разному, обычно это «Общие» или «Продажи»).
  3. Проверим наличие флага «Удалять чеки ККМ при закрытии смены».

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

Шаг 2. Анализ дублирования объектов «Касса ККМ»

Одной из неочевидных причин проблемы является наличие дублей в справочнике КассыККМ. Как мы видели в обсуждении, визуально касса в чеке и в обработке закрытия смены может выглядеть одинаково, но иметь разные внутренние идентификаторы (GUID).

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

Шаг 3. Использование тестирования и исправления базы данных

Как показывает практика, чаще всего подобные «глюки», когда запросы не видят данные или документы не записываются, лечатся через конфигуратор. Проанализируем алгоритм действий:

  1. Обязательно создадим резервную копию базы данных. При обслуживании нескольких информационных баз эту операцию и последующее тестирование можно выполнять автоматически по расписанию с помощью программы для автоматической архивации, тестирования и обслуживания 1С.
  2. Зайдем в Конфигуратор.
  3. Выберем пункт меню Администрирование -> Тестирование и исправление.
  4. Установим следующие флаги:
    • Реиндексация таблиц информационной базы.
    • Проверка логической целостности.
    • Проверка ссылочной целостности.
    • Пересчет итогов.
  5. В поле «При наличии ссылок на несуществующие объекты» выберем «Очищать ссылки».

Именно этот метод помог автору темы. Часто внутренние индексы таблиц 1С повреждаются, и стандартный запрос ВЫБРАТЬ... ГДЕ КассаККМ = &КассаККМ возвращает пустой результат, даже если документы физически существуют.

Шаг 4. Диагностика программного кода закрытия смены

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


ЗапросПоЧекам = Новый Запрос;
ЗапросПоЧекам.Текст = "
|ВЫБРАТЬ
| Док.Ссылка КАК Ссылка
|ИЗ
| Документ.ЧекККМ КАК Док
|ГДЕ
| Док.КассаККМ = &КассаККМ
| И Док.Ссылка.Проведен
| И Док.Ссылка.Дата МЕЖДУ &НачДата И &КонДата
| И НЕ (Док.Ссылка.СтатусЧекаККМ = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Архивный))
| И НЕ (Док.Ссылка.СтатусЧекаККМ = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Аннулированный))
| И НЕ (Док.Ссылка.СтатусЧекаККМ = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Отложенный))
|ДЛЯ ИЗМЕНЕНИЯ Документ.ЧекККМ";

ЗапросПоЧекам.УстановитьПараметр("КассаККМ", НужнаяКасса);
ЗапросПоЧекам.УстановитьПараметр("НачДата", НачалоДня(ДатаСмены));
ЗапросПоЧекам.УстановитьПараметр("КонДата", КонецДня(ДатаСмены));

Результат = ЗапросПоЧекам.Выполнить();

Если этот запрос не возвращает строк, хотя чеки в списке есть, следует поочередно убирать условия в секции ГДЕ. Начните с удаления условия по кассе Док.КассаККМ = &КассаККМ. Если после этого документы появились — значит, проблема в битой ссылке на кассу или в дублировании элементов справочника.

Шаг 5. Взаимодействие с внешними системами (УТ)

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

Шаг 6. Ручное исправление через групповую обработку

Если нам нужно оперативно закрыть смену «здесь и сейчас», а программные методы не срабатывают, воспользуемся Групповой обработкой справочников и документов:

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

Важно: этот метод является «хирургическим». Перед его применением убедитесь, что Отчет о розничных продажах за этот день уже создан вручную или автоматически, иначе вы потеряете данные о продажах в управленческом учете.

Шаг 7. Очистка локального кеша

Иногда странное поведение программы (например, сообщение «смена уже закрыта», хотя чеки не заархивированы) связано с кешем пользователя. Попробуйте удалить базу из списка запуска 1С и добавить её заново. Это очистит временные файлы, которые могут содержать старые метаданные о состоянии смены и торгового оборудования.

Подводя итог, отметим, что в 90% случаев проблема в Рознице 1.0 решается именно тестированием и исправлением базы данных в конфигураторе, так как старый движок платформы чувствителен к корректности индексов при работе с большими транзакциями в момент закрытия смены.

← На главную