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

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

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

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

Выясним причину возникновения ошибки

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

Внутренняя логика внешней компоненты драйвера ККТ АТОЛ (библиотека FprnM1C82_54FZ.dll, созданная в среде Delphi), которая поставлялась в ранних версиях DTO 8.14.00.00, в момент обработки пакета пытается преобразовать переданное значение ставки налога в целочисленный индекс с помощью функции StrToInt. Компонента ожидает увидеть порядковый номер налога в таблице кассы (целое число), а получает зарезервированное строковое слово none. Происходит системное исключение среды выполнения: строка "none" не является корректным целым числом, о чем и сообщает текст ошибки.

Способ 1. Обновление драйвера ДТО и интеграционной компоненты

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

Разберем по шагам порядок действий:

  1. Закрываем все запущенные сеансы программы 1С на рабочем месте кассира.
  2. Устанавливаем актуальный пакет драйверов торгового оборудования АТОЛ (корректная поддержка тега none реализована начиная с релизов DTO 8.14.02.02, линейки 8.15.x, а также в современных драйверах версии 10.x).
  3. Переходим в каталог временных библиотек 1С текущего пользователя Windows: C:\Users\<Имя_Пользователя>\AppData\Roaming\1C\1cv8\ExtCompT. Полностью очищаем содержимое этой папки. Это необходимо, так как платформа кэширует старую версию библиотеки FprnM1C82_54FZ.dll и продолжает использовать её даже после обновления драйвера в системе.
  4. Дополнительно очищаем каталог временных файлов операционной системы (переменная %TEMP%) и кэш пользователя в папке AppData\Local\1C\1cv8.
  5. Запускаем 1С:Розница с правами администратора, чтобы система могла корректно зарегистрировать обновленные COM-компоненты.
  6. Открываем раздел НСИ или Администрирование, переходим в пункт Подключаемое оборудование.
  7. Находим подключенный фискальный регистратор, открываем форму его настройки и нажимаем кнопку Установить драйвер (или обновляем внешнюю компоненту вручную из каталога установленного ДТО: Program Files (x86)\ATOL\Drivers8\1C).
  8. Выполняем тест устройства, чтобы убедиться в отсутствии ошибок взаимодействия.

Способ 2. Проверка соответствия таблиц налогообложения

Если обновление драйвера по каким-либо причинам откладывается, рассмотрим сопоставление налоговых ставок внутри параметров торгового оборудования в 1С:

  1. Открываем параметры фискального регистратора в 1С.
  2. Находим таблицу соответствия ставок НДС конфигурации и налоговых секций кассового аппарата.
  3. Проверяем, сопоставлена ли строка «Без НДС» с соответствующим налогом аппарата (обычно это налог номер 4 или налог номер 1, в зависимости от фискализации ККТ).
  4. Сохраняем параметры и проверяем печать чека. В некоторых подверсиях драйвера явная привязка позволяет компоненте подставить числовой индекс вместо текстового наименования.

Способ 3. Временная корректировка формирования XML-пакета чека

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

Посмотрим на пример: в общем модуле МенеджерОборудованияВызовСервера (или специализированном модуле интеграции с БПО) находим процедуру заполнения атрибутов товарной позиции чека, где присваивается значение Tax:


// Временный обход ошибки старой компоненты драйвера ККТ
Если НРег(СокрЛП(СтрокаЧека.СтавкаНДС)) = "без ндс" ИЛИ НРег(СокрЛП(СтрокаЧека.СтавкаНДС)) = "none" Тогда
    // Передаем индекс налоговой ставки ККТ вместо строкового тега
    ПозицияЧека.Налог = "0"; // либо номер соответствующей строки налога из настроек ККТ
Иначе
    ПозицияЧека.Налог = СтрокаЧека.СтавкаНДС;
КонецЕсли;

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

Особенности платформы и разрядности

При замене внешней компоненты обратим внимание на важный нюанс: платформа 1С:Предприятие для клиентских рабочих мест чаще всего работает в 32-разрядном режиме (x86). Следовательно, интеграционная библиотека FprnM1C82_54FZ.dll обязательно должна браться из 32-разрядной ветки драйверов, даже если операционная система Windows является 64-битной. Если зарегистрировать 64-разрядную библиотеку в 32-разрядном клиенте 1С, компонента просто не сможет загрузиться в память процесса.

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

← На главную