При работе с алкогольной продукцией в 1С:Управление торговлей 11.4 пользователи часто сталкиваются с ситуацией, когда после обновления конфигурации или драйверов торгового оборудования перестает печататься слип-чек ЕГАИС. Основной фискальный чек выходит без проблем, однако при попытке печати алкогольного слипа система выдает ошибку: «Размер картинки слишком большой». Проблема особенно актуальна для владельцев касс АТОЛ при использовании 10-й версии драйверов (DTO 10).
В данной статье мы подробно разберем, почему возникает эта ошибка, проанализируем программный код, отвечающий за формирование штрихкода, и рассмотрим проверенное решение по корректировке параметров печати.
Для начала проанализируем ситуацию. Ошибка «Размер картинки слишком большой» сообщает нам о том, что драйвер кассового аппарата получил команду на печать графического объекта (в данном случае QR-кода), параметры которого превышают объем внутренней памяти (буфера) ККТ или установленные программные лимиты.
Важно понимать различие между QR-кодом в обычном чеке и в чеке ЕГАИС. В фискальном чеке QR-код зачастую формируется средствами самой кассы (аппаратно). Слип-чек ЕГАИС в 1С:УТ 11.4 часто формируется как набор текстовых строк и графических объектов, которые передаются драйверу в виде XML-пакета. Если в этом пакете передаются некорректные параметры масштабирования, драйвер пытается «раздуть» картинку до огромных размеров, что и приводит к ошибке.
Ситуация обострилась с переходом на версию требований к разработке драйверов 3.2. В новых версиях БПО (Библиотека подключаемого оборудования) изменилась логика интерпретации числовых параметров, передаваемых в XML.
Рассмотрим фрагмент кода, который отвечает за запись данных штрихкода в 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 полностью устраняет проблему. Эти цифры означают:
Если вы не имеете возможности глубокой отладки (как упоминал автор темы), попробуйте поискать в конфигурации вызов функции СформироватьДанныеQRКода или аналогичных методов, где подготавливается XML для ЗаписьXML.
Помимо правки кода 1С, выясним, что еще может вызывать подобное поведение оборудования АТОЛ:
Рекомендуем запустить утилиту «Тест драйвера ККТ» (обычно она находится в папке установки АТОЛ) и проверить параметры оборудования:
Проанализируем техническую часть: на старых прошивках (Платформа 2.5) объем памяти под графические объекты был крайне мал. Если драйвер обновлен до версии 10.7, а касса работает на старой прошивке, команды формирования графики могут конфликтовать. Переход на Платформу 5.0 для касс АТОЛ в большинстве случаев снимает ограничения на размер передаваемых картинок, так как там архитектура работы с памятью полностью пересмотрена.
Проверьте, правильно ли указана ширина ленты в настройках драйвера внутри 1С. Если в системе установлена лента 80мм, а физически вставлена 57мм (или наоборот), драйвер может некорректно рассчитывать максимально допустимую ширину картинки QR-кода, что также приводит к ошибке переполнения.
Для исправления ошибки «Размер картинки слишком большой» в 1С:УТ 11.4 при печати чеков ЕГАИС выполните следующие шаги:
1, 1, 1, 1, 5.Эти действия позволят восстановить корректную работу розничной точки при продаже алкоголя и избежать штрафных санкций из-за отсутствия обязательного QR-кода на чеке.