Как исправить ошибку none is not a valid integer value при пробитии чека на ККТ АТОЛ в 1С:Розница

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

При обновлении конфигурации 1С:Розница (в частности, релиза 2.2.5.25) многие пользователи и администраторы кассовых узлов сталкиваются с ситуацией, когда при попытке пробить чек на фискальном регистраторе (например, АТОЛ 30Ф, 55Ф, 11Ф) операция прерывается системной ошибкой: 'none' is not a valid integer value. При этом установка свежего пакета драйверов торгового оборудования (ДТО) в операционную систему не всегда решает проблему автоматически. Разберем техническую причину сбоя и рассмотрим пошаговые методы исправления ситуации как для базовых, так и для дорабатываемых конфигураций.

Причина возникновения ошибки

Проанализируем механизм взаимодействия 1С:Предприятие с торговым оборудованием. В релизах конфигураций, использующих обновленные версии Библиотеки подключаемого оборудования (БПО), изменился формат передачи фискальных данных в формате XML по стандарту «1С:Совместимо». Для операций без налога (например, при применении специальных налоговых режимов ЕНВД, УСН, ПСН или товаров со ставкой «Без НДС») 1С формирует тег налога со строковым значением none:

<FiscalString ... Tax="none" />

В то же время устаревшая интеграционная внешняя компонента FprnM1C82_54FZ.dll (поставляемая со старыми драйверами или закэшированная в базе 1С) ожидает на входе исключительно целочисленный код налога (например, 0, 1, 2). Пытаясь преобразовать строковый литерал none в тип Integer, библиотека вызывает системное исключение среды выполнения: 'none' is not a valid integer value.

Основная сложность заключается в том, что платформа 1С:Предприятие хранит и кэширует внешние компоненты внутри информационной базы (в справочнике драйверов оборудования) и в локальных временных каталогах пользователя (%TEMP%). Поэтому простое обновление драйвера АТОЛ в Windows оставляет в 1С старую версию библиотеки интеграции.

Способ 1. Обновление интеграционной компоненты через интерфейс 1С

Это основной и штатный способ, подходящий как для ПРОФ, так и для базовых версий 1С:Розница, где изменение программного кода невозможно.

  1. Откроем раздел Администрирование → Подключаемое оборудование.
  2. Перейдем в подраздел Драйверы оборудования.
  3. В списке найдем установленный драйвер АТОЛ:ККТ с передачей данных (54-ФЗ).
  4. Нажмем кнопку Обновить из файла (или удалим текущий драйвер и создадим элемент заново, нажав Добавить новый драйвер из файла).
  5. Выберем архив с актуальной версией компоненты (содержащий обновленную библиотеку FprnM1C82_54FZ.dll версии 8.12.1 или выше из состава свежего дистрибутива драйверов АТОЛ).
  6. Сохраним изменения, перейдем в настройки экземпляра ККТ и нажмем кнопку Тест устройства, чтобы убедиться в успешной загрузке новой компоненты.

Способ 2. Ручная замена и перерегистрация DLL

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

  1. Полностью закроем все запущенные сеансы 1С:Предприятие.
  2. Очистим содержимое каталога временных файлов %TEMP%, а также кэш 1С в папках %LOCALAPPDATA%\1C\1Cv8\ и %APPDATA%\1C\1Cv8\.
  3. Найдем актуальный файл FprnM1C82_54FZ.dll (он располагается в папке установленного ДТО АТОЛ, например: C:\Program Files (x86)\ATOL\Drivers8\1C или в каталоге шаблона конфигурации 1С).
  4. Скопируем файл в каталог запуска платформы (папка bin установленной 32-разрядной платформы 1С) или системную папку.
  5. Запустим командную строку от имени администратора и выполним принудительную регистрацию библиотеки:

regsvr32 "C:\Program Files (x86)\ATOL\Drivers8\1C\FprnM1C82_54FZ.dll"

Обратим внимание: компоненты интеграции ДТО 8 являются 32-разрядными, поэтому клиентское приложение 1С:Предприятие также должно запускаться в разрядности x86 (32 бита).

Способ 3. Корректировка кода формирования XML (для конфигураций ПРОФ)

Если информационная база снята с поддержки или находится в режиме доработки, а обновление драйверов на рабочих местах кассиров в текущий момент затруднено, можно временно переопределить значение атрибута налога в общем модуле, отвечающем за интеграцию с ККТ (например, МенеджерОборудованияКлиент или модуль интеграции БПО):

Найдем строку, где выполняется запись атрибута ставки налога:

ЗаписьXML.ЗаписатьАтрибут("Tax", "none");

И заменим передачу строки на передачу числового идентификатора без налога:

ЗаписьXML.ЗаписатьАтрибут("Tax", "0");

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

Способ 4. Обновление релиза 1С:Розница

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

← На главную