Часто при подключении недорогих китайских чековых принтеров (таких как Xprinter, Rongta, Goin и др.) к системе 1С:Предприятие возникает типичная проблема: несмотря на использование широкой ленты (80 мм), принтер упрямо печатает узкий текст, как будто установлена лента 58 мм. При этом тестовая печать из Windows или специализированных утилит может проходить корректно на всю ширину. Рассмотрим подробнее, почему так происходит и как заставить оборудование работать правильно.
Для начала проанализируем ситуацию с технической стороны. Существует два принципиально разных способа взаимодействия 1С с чековыми принтерами. Первый — это печать через Windows-драйвер, когда 1С отправляет на печать графический образ (табличный документ). Второй — использование протокола ESC/POS, когда принтеру передаются текстовые команды.
Если принтер подключен через «Подключаемое оборудование» с использованием драйвера «1С:Принтер чеков», то печать чаще всего идет текстовыми командами. В этом режиме принтер «не знает», сколько миллиметров составляет ширина его ленты. Для него ширина определяется параметром Символов в строке. Если в настройках 1С указано 32 символа (стандарт для 58 мм), то даже на широкой ленте текст будет занимать лишь левую часть документа.
Выясним, где именно в 1С задаются параметры ширины. Это важно, если вы используете несколько касс ККМ в РМК. В большинстве современных конфигураций (Розница, УНФ, УТ 11) путь к настройкам выглядит следующим образом:
Количество символов в строке, Ширина строки или Characters per line.Для ленты 80 мм необходимо экспериментально подобрать значение. Обычно используются следующие стандарты:
Попробуем установить значение 48 и выполнить тест. Если текст все еще кажется узким, увеличим значение до 56. Помним, что если указать слишком большое число, текст может начать «заворачиваться» на следующую строку. Для проверки корректности настроек можно использовать обработку для тестирования принтера чеков через различные версии БПО.
Проанализируем ситуацию, когда настройка драйвера не помогает. В современных версиях 1С печать чеков часто опирается на Шаблоны чеков ККМ. Это специальные XML-описания структуры чека. Рассмотрим, как их проверить:
Ширина ленты. Если там выбрано значение «58 мм (32 символа)», 1С будет принудительно обрезать строки перед отправкой в драйвер.Важно понимать, что если мы используем нефискальный принтер чеков, 1С все равно может использовать эти шаблоны для формирования текстового блока, который затем передается на печать.
Иногда проблема кроется в «мозгах» самого принтера. Китайские устройства часто имеют внутреннюю настройку эмуляции. Проверим это с помощью фирменной утилиты (например, Xprinter Setting Tool):
Print width или Column mode.Если вы разработчик и видите, что настройки в интерфейсе игнорируются, нам придется погрузиться в код. Проанализируем, как формируется текст чека. В типовых решениях за это отвечают общие модули работы с оборудованием. Посмотрим на пример функции, которая подготавливает текст для нефискальной печати:
// Пример формирования текста нефискального чека
ТекстЧека = ОборудованиеЧекопечатающиеУстройстваКлиентСервер.СформироватьТекстНефискальногоДокумента(
ПараметрыОперации,
ПараметрыПодключения.ШиринаСтроки
);
В данном случае критически важно проверить, какое значение передается в параметр ПараметрыПодключения.ШиринаСтроки. Если в коде это значение жестко задано (hardcoded), то никакие настройки в интерфейсе 1С не помогут. Рекомендуется установить точку останова в месте вызова метода НапечататьНефискальныйДокумент и убедиться, что ширина соответствует ожидаемым 48–56 символам.
Если подружить принтер с 1С через ESC/POS команды не удается (например, возникают проблемы с кодировкой или спецсимволами), рассмотрим обходной путь:
1С:Принтер чеков (Windows) или просто печатаем на него как на обычный офисный принтер.Этот способ позволяет добиться идеального визуального соответствия чека вашим ожиданиям, так как печать идет в графическом режиме, однако она может быть чуть медленнее, чем прямая отправка ESC/POS команд. Для реализации такого подхода подойдет эмулятор ККМ с возможностью вывода чеков на обычный принтер.
Резюме: В большинстве случаев для исправления «узкой» печати достаточно изменить параметр Количество символов в строке в настройках подключаемого оборудования 1С или сменить тип шаблона в справочнике шаблонов чеков. Если это не помогает — проверяем аппаратные настройки принтера через заводскую утилиту.