При обновлении конфигурации 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С:Розница, где изменение программного кода невозможно.
FprnM1C82_54FZ.dll версии 8.12.1 или выше из состава свежего дистрибутива драйверов АТОЛ).Если обновление через интерфейс блокируется кэшем или правами доступа, выполним ручную переустановку библиотеки интеграции:
1С:Предприятие.%TEMP%, а также кэш 1С в папках %LOCALAPPDATA%\1C\1Cv8\ и %APPDATA%\1C\1Cv8\.FprnM1C82_54FZ.dll (он располагается в папке установленного ДТО АТОЛ, например: C:\Program Files (x86)\ATOL\Drivers8\1C или в каталоге шаблона конфигурации 1С).bin установленной 32-разрядной платформы 1С) или системную папку.
regsvr32 "C:\Program Files (x86)\ATOL\Drivers8\1C\FprnM1C82_54FZ.dll"
Обратим внимание: компоненты интеграции ДТО 8 являются 32-разрядными, поэтому клиентское приложение 1С:Предприятие также должно запускаться в разрядности x86 (32 бита).
Если информационная база снята с поддержки или находится в режиме доработки, а обновление драйверов на рабочих местах кассиров в текущий момент затруднено, можно временно переопределить значение атрибута налога в общем модуле, отвечающем за интеграцию с ККТ (например, МенеджерОборудованияКлиент или модуль интеграции БПО):
Найдем строку, где выполняется запись атрибута ставки налога:
ЗаписьXML.ЗаписатьАтрибут("Tax", "none");
И заменим передачу строки на передачу числового идентификатора без налога:
ЗаписьXML.ЗаписатьАтрибут("Tax", "0");
Данный вариант следует рассматривать как временную меру до планового обновления конфигурации и драйверов, так как прямая модификация кода в базовых версиях не поддерживается.
Разработчики фирмы «1С» оперативно включили исправленные компоненты в последующие сборки. Если есть возможность обновить программу, переход на релиз 1С:Розница 2.2.5.26 и выше автоматически выполняет обновление встроенных компонент интеграции для кассового оборудования АТОЛ и устраняет данную ошибку без ручного вмешательства в файлы операционной системы.