Как исправить ошибку «неверный номер регистра» при открытии смены на ККТ АТОЛ в 1С:Розница?

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

При переходе на онлайн-кассы по требованиям 54-ФЗ многие пользователи конфигурации 1С:Розница и типовой Библиотеки подключаемого оборудования (БПО) сталкиваются со специфической ситуацией при открытии смены на фискальных регистраторах АТОЛ (модели 11Ф, 22Ф, 30Ф, 55Ф). Физически аппарат успешно печатает чек «Отчет об открытии смены», смена в самом фискальном накопителе открывается, однако на экране рабочего места кассира (РМК) в 1С появляется окно со сбоем:

«При открытии смены произошла ошибка. При выполнении операции произошла ошибка: неверный номер регистра. Смена не открыта на фискальном устройстве».

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

Анализ причин сбоя: почему 1С требует несуществующий регистр

Проанализируем журнал взаимодействия драйвера с ККТ. Лог-файл драйвера АТОЛ по умолчанию сохраняется в каталоге учетной записи пользователя:

C:\Users\<ИмяПользователя>\AppData\Roaming\ATOL\DRIVERS\FprnM1C.txt

В момент вызова операции открытия смены в логе фиксируется код: Ошибка! ResultCode = -3901 ResultDescription = "Неверный номер регистра". Выясним, откуда берется этот ответ:

  1. При нажатии кнопки «Открыть смену» модуль БПО в 1С посылает в кассу команду нижнего уровня на открытие смены. Фискальный регистратор корректно выполняет команду и распечатывает фискальный документ.
  2. По стандарту интеграции подключаемого оборудования сразу после завершения печати компонента 1С запрашивает параметры смены: номер текущей кассовой смены и номер фискального чека.
  3. Для получения этих реквизитов интеграционная компонента выполняет прямое чтение аппаратных регистров 52 (номер смены) и 53 (номер чека).
  4. На ранних заводских прошивках ККТ АТОЛ (сборка 1811 и ниже) таблица регистров ещё не содержала регистров 52 и 53 для протокола передачи данных в ОФД. В ответ на команду опроса касса возвращает низкоуровневую ошибку с кодом 0x6C (-3901).
  5. Обработка обслуживания в 1С воспринимает эту ошибку как критический сбой всей процедуры открытия смены, прерывает транзакцию и отменяет запись документа «Кассовая смена» в информационной базе.

Способ 1. Обновление прошивки ККТ (основное решение)

Рассмотрим штатный и наиболее надежный способ устранения ошибки — обновление внутреннего микропрограммного обеспечения (прошивки) центральной платы ККТ до версии 2628, 2908 или выше. В данных версиях ПО АТОЛ полностью реализовал поддержку регистров 52 и 53.

Разберем процедуру и технические нюансы прошивки:

  1. Определение ревизии блока управления. Обратим внимание: для одной модели фискального регистратора (например, АТОЛ 11Ф) выпускаются разные ревизии плат с несовместимыми микроконтроллерами:
    — Блок управления AT037.01.01 построен на чипе LPC1768;
    — Блок управления AL.P011.40.000 построен на чипе LPC4078.
    Запись микропрограммы, предназначенной для другого контроллера, приводит к выходу платы из строя. Перед прошивкой обязательно уточняем ревизию платы по паспорту или маркировке.
  2. Сохранение настроек и кодов защиты. При обновлении микропрограммы с технологическим обнулением энергонезависимой памяти сбрасываются таблицы параметров, сетевые настройки и коды защиты (КЗ 1, КЗ 4). До начала сервисных манипуляций обязательно считываем и сохраняем таблицы ККТ через драйвер, а также проверяем наличие паспорта кассы с кодами защиты.
  3. Запись прошивки. Прошивка загружается специализированными сервисными утилитами (например, Flash Magic) через интерфейсный кабель строго по инструкции производителя или силами специалистов авторизованного сервисного центра.

После обновления микропрограммы опрос регистров 52 и 53 проходит успешно, и смена в 1С:Розница открывается штатно.

Способ 2. Обновление конфигурации и БПО

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

  1. Ошибка получения данных из регистров 52 и 53 перестала быть фатальной для фиксации факта открытия смены.
  2. Опрос номера смены переведен со считывания сырых регистров на получение штатных выходных свойств драйвера через стандартные методы API торгового оборудования.

Обновим конфигурацию до актуального релиза и обновим интеграционную компоненту драйвера в справочнике подключаемого оборудования программы.

Способ 3. Программный обход в конфигураторе 1С (без прошивки)

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

  1. Открываем конфигурацию в режиме Конфигуратор.
  2. Находим модуль интеграции торгового оборудования или общий модуль работы с ККТ (в зависимости от релиза конфигурации — МенеджерОборудованияКлиент, МенеджерОборудованияВызовСервера или обработку драйвера АТОЛ:ККТ с передачей данных).
  3. Находим процедуру завершения открытия смены, где вызывается опрос состояния фискального регистратора и чтение регистров смены.
  4. Оборачиваем обращение к регистрам в блок безопасного исполнения. Посмотрим на пример кода:

Попытка
    // Считывание параметров через регистры 52 и 53
    РезультатЧтения = ОбъектДрайвера.ПолучитьПараметрыККТ(НомерСмены, НомерЧека);
Исключение
    // В случае отсутствия регистров на старой прошивке
    // получаем номер смены из общих свойств состояния кассы
    НомерСмены = ОбъектДрайвера.НомерСмены;
    НомерЧека = 1;
КонецПопытки;

Такой программный обход позволяет модулю 1С проигнорировать аппаратную ошибку -3901, получить признак открытой смены из общих реквизитов устройства, успешно записать документ Кассовая смена и начать регистрацию розничных продаж.

Важные замечания по настройке службы передачи данных (EoU)

Параллельно с ошибкой регистров при первом запуске касс часто возникают проблемы с отправкой чеков в ОФД через службу EthernetOverUSB (EoU). Обратим внимание на следующие правила настройки:

  1. При подключении аппарата по одному USB-кабелю в диспетчере устройств Windows должно появиться два виртуальных COM-порта: один используется непосредственно для команд 1С, второй — исключительно для фоновой передачи пакетов службой EoU.
  2. В конфигурационном файле settings.xml службы EoU должен быть четко прописан номер порта, выделенного под передачу данных, а в драйвере ККТ в разделе ОФД выбран канал связи EthernetOverUSB.
  3. Работа в терминале (RDP): если 1С запущена на удаленном сервере терминалов, служба EthernetOverUSB должна быть установлена и запущена на локальном компьютере, к которому касса подключена физически. В терминальную сессию пробрасывается только COM-порт для работы драйвера 1С.
← На главную