Почему не печатается чек ЕГАИС с QR-кодом в 1С:УТ 11.4 на кассах АТОЛ и как это исправить?

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

При работе с алкогольной продукцией в 1С:Управление торговлей 11.4 пользователи часто сталкиваются с ситуацией, когда после обновления конфигурации или драйверов торгового оборудования перестает печататься слип-чек ЕГАИС. Основной фискальный чек выходит без проблем, однако при попытке печати алкогольного слипа система выдает ошибку: «Размер картинки слишком большой». Проблема особенно актуальна для владельцев касс АТОЛ при использовании 10-й версии драйверов (DTO 10).

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

Разберем причину возникновения ошибки

Для начала проанализируем ситуацию. Ошибка «Размер картинки слишком большой» сообщает нам о том, что драйвер кассового аппарата получил команду на печать графического объекта (в данном случае QR-кода), параметры которого превышают объем внутренней памяти (буфера) ККТ или установленные программные лимиты.

Важно понимать различие между QR-кодом в обычном чеке и в чеке ЕГАИС. В фискальном чеке QR-код зачастую формируется средствами самой кассы (аппаратно). Слип-чек ЕГАИС в 1С:УТ 11.4 часто формируется как набор текстовых строк и графических объектов, которые передаются драйверу в виде XML-пакета. Если в этом пакете передаются некорректные параметры масштабирования, драйвер пытается «раздуть» картинку до огромных размеров, что и приводит к ошибке.

Ситуация обострилась с переходом на версию требований к разработке драйверов 3.2. В новых версиях БПО (Библиотека подключаемого оборудования) изменилась логика интерпретации числовых параметров, передаваемых в XML.

Проанализируем программный код формирования QR-кода

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


// Пример формирования XML для печати QR-кода
ЗаписьXML.ЗаписатьНачалоЭлемента("Barcode");
Если РевизияИнтерфейса >= 3000 Тогда  // Версия стандарта 3.0 и выше (ОФД 1.1)
    ЗаписьXML.ЗаписатьАтрибут("Type", XMLСтрока(ВремТипШтрихкода));
    ЗаписьXML.ЗаписатьАтрибут("Value", XMLСтрока(ВремШтрихКод));
Иначе
    ЗаписьXML.ЗаписатьАтрибут("BarcodeType", XMLСтрока(ВремТипШтрихкода));
    ЗаписьXML.ЗаписатьАтрибут("Barcode", XMLСтрока(ВремШтрихКод));
КонецЕсли;

Здесь РевизияИнтерфейса определяет, по какому стандарту будет сформирован XML. Если используется современный драйвер АТОЛ 10.x, ревизия будет выше 3000. Однако, помимо типа и значения, драйвер ожидает параметры размеров и отступов. Именно в них зачастую передаются старые значения, которые в новом интерфейсе интерпретируются иначе.

Решение проблемы: корректировка параметров масштабирования

Как выяснилось в ходе практики, ошибка «Размер картинки слишком большой» лечится изменением пяти ключевых числовых параметров в XML-структуре команды печати. В старых релизах 1С или при использовании старых настроек могли передаваться значения типа 100, 100, 100, 100, 300. Эти числа драйвер воспринимал как огромные физические размеры в пикселях или процентах масштабирования.

Рассмотрим решение: необходимо найти место в коде (обычно это общий модуль, отвечающий за оборудование, например, МенеджерОборудованияВызовСервера или методы обработки печати в обработке драйвера), где формируются параметры объекта Barcode, и заменить их на минимально достаточные.

Опытным путем установлено, что замена параметров на 1, 1, 1, 1, 5 полностью устраняет проблему. Эти цифры означают:

  1. Минимальные отступы (первые четыре единицы) — они позволяют QR-коду компактно разместиться на узкой ленте (57мм или 80мм).
  2. Размер модуля QR-кода (последняя цифра 5) — определяет плотность и физический размер квадратов в коде. Значение «5» обеспечивает хорошую читаемость сканером и при этом не переполняет буфер памяти кассы.

Если вы не имеете возможности глубокой отладки (как упоминал автор темы), попробуйте поискать в конфигурации вызов функции СформироватьДанныеQRКода или аналогичных методов, где подготавливается XML для ЗаписьXML.

Дополнительные факторы, влияющие на ошибку

Помимо правки кода 1С, выясним, что еще может вызывать подобное поведение оборудования АТОЛ:

1. Настройки в «Тесте драйвера ККТ»

Рекомендуем запустить утилиту «Тест драйвера ККТ» (обычно она находится в папке установки АТОЛ) и проверить параметры оборудования:

2. Версия прошивки кассового аппарата

Проанализируем техническую часть: на старых прошивках (Платформа 2.5) объем памяти под графические объекты был крайне мал. Если драйвер обновлен до версии 10.7, а касса работает на старой прошивке, команды формирования графики могут конфликтовать. Переход на Платформу 5.0 для касс АТОЛ в большинстве случаев снимает ограничения на размер передаваемых картинок, так как там архитектура работы с памятью полностью пересмотрена.

3. Настройка ширины ленты

Проверьте, правильно ли указана ширина ленты в настройках драйвера внутри 1С. Если в системе установлена лента 80мм, а физически вставлена 57мм (или наоборот), драйвер может некорректно рассчитывать максимально допустимую ширину картинки QR-кода, что также приводит к ошибке переполнения.

Резюме для программиста

Для исправления ошибки «Размер картинки слишком большой» в 1С:УТ 11.4 при печати чеков ЕГАИС выполните следующие шаги:

  1. Убедитесь, что проблема локализована именно в слип-чеке ЕГАИС, а не в фискальном чеке.
  2. Проверьте версию драйвера (проблема типична для DTO 10.5 - 10.8).
  3. В коде формирования XML для печати штрихкода измените параметры масштабирования на 1, 1, 1, 1, 5.
  4. Если правка кода невозможна, обновите конфигурацию до актуального релиза, где эта ошибка исправлена патчем от фирмы 1С, либо обновите прошивку ККТ до Платформы 5.0.

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

← На главную