Как подключить нефискальный принтер чеков (Xprinter 80) к 1С:ERP в режиме РМК

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

При автоматизации розничной торговли часто возникает необходимость подключить обычный (нефискальный) принтер чеков (например, популярные модели семейства Xprinter 80, Rongta или другие ESC/POS-совместимые устройства) к современным конфигурациям на управляемых формах, таким как 1С:ERP Управление предприятием, 1С:Комплексная автоматизация или 1С:Управление торговлей.

Основная сложность заключается в том, что современное Рабочее место кассира (РМК) в 1С жестко ориентировано на требования закона 54-ФЗ. Система ожидает подключения полноценной ККТ с передачей данных (онлайн-кассы). Если попытаться просто зарегистрировать устройство как стандартный «Принтер чеков», 1С не позволит открыть кассовую смену в РМК и проводить продажи. В то же время стандартный эмулятор ККТ, встроенный в БПО (Библиотеку подключаемого оборудования), по умолчанию лишь выводит электронный чек на экран компьютера, но не отправляет его на печать.

В этой статье мы подробно разберем, как решить данную проблему, рассмотрим доступные варианты настройки, обходные пути без изменения конфигурации, а также особенности создания собственного драйвера-обработчика по стандартам БПО.

---

Почему возникает проблема и как функционирует БПО

Рассмотрим детальнее внутреннюю логику работы 1С:ERP при работе с торговым оборудованием. Библиотека подключаемого оборудования (БПО) разделяет устройства по типам:

  1. ККТ с передачей данных (54-ФЗ): требуют наличия фискального накопителя, поддерживают отправку данных ОФД. В РМК все операции продажи завязаны именно на этот тип оборудования.
  2. Принтеры чеков: специализированные устройства без фискальной памяти. Предназначены для печати товарных чеков, квитанций и слип-чеков эквайринга. Напрямую в типовом РМК для оформления продаж без фискализации они не используются.

Если вам необходимо использовать принтер чеков Xprinter 80 в качестве полноценного (но нефискального) аппарата для выдачи чеков покупателям (например, при торговле на патенте, ЕНВД в переходные периоды или для внутреннего учета), у вас есть три основных пути. Проанализируем каждый из них.

---

Способ 1. Использование встроенного драйвера «1С:Принтер чеков (NativeApi)»

В современных релизах 1С:ERP встроенный драйвер от фирмы 1С поддерживает прямую печать на ESC/POS-совместимые принтеры чеков. Разберем по шагам, как настроить такую схему:

  1. Настройка принтера в ОС Windows: Установите официальный драйвер принтера (например, Xprinter Driver). Убедитесь, что устройство успешно печатает пробную страницу из панели управления Windows. Запомните точное имя принтера в системе (например, XP-80).
  2. Настройка оборудования в 1С:
    • Перейдите в раздел НСИ и администрирование — Администрирование — РМК и оборудование.
    • Откройте справочник Подключаемое оборудование.
    • Создайте новое устройство с типом оборудования Принтер чеков.
    • В качестве драйвера оборудования выберите 1С:Принтер чеков (NativeApi).
    • Нажмите кнопку Настроить. В параметрах укажите имя принтера в операционной системе, ширину ленты (для Xprinter 80 это обычно 80 мм или 48 символов в строке) и кодировку (обычно CP866 или Windows-1251 в зависимости от прошивки устройства).
  3. Ограничение использования: Этот способ идеально подходит для печати нефискальных документов (например, товарных чеков из документа «Реализация товаров и услуг» или заказов на кухню в общепите). Однако, если вы попытаетесь запустить стандартное РМК, программа выдаст ошибку отсутствия фискального устройства. Для работы в РМК потребуется использовать второй или третий способ.

---

Способ 2. Использование эмулятора ККТ с перенаправлением на принтер

Чтобы «обмануть» логику РМК и заставить программу думать, что к рабочему месту подключена настоящая онлайн-касса, используются специализированные программные эмуляторы. Они регистрируются в системе как ККТ с передачей данных, но вместо отправки данных в ОФД перенаправляют сформированный чек на обычный Windows-принтер.

Вы можете использовать сторонние готовые решения (расширения конфигурации или внешние компоненты), которые широко представлены на профильных ресурсах, таких как Инфостарт. Принцип их работы следующий:

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

---

Способ 3. Создание собственного драйвера печати по требованиям БПО

Если готовые эмуляторы вас не устраивают или вам необходим полный контроль над процессом вывода информации (например, добавление специфических штрихкодов, логотипов или нетиповых скидок), вы можете написать собственную внешнюю обработку обслуживания (драйвер) в соответствии с требованиями БПО к ККТ или принтерам чеков.

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

Для создания интеграции необходимо реализовать в модуле обработки функции экспорта команд. Посмотрим на пример программного скелета для такой обработки:


// Функция инициализации устройства и проверки связи
Функция ПодключитьУстройство(ПараметрыПодключения, ВыходныеПараметры) Экспорт
    Результат = Истина;
    
    // Здесь инициализируется COM-соединение или объект Windows-принтера
    // Например, создание объекта для работы с принтером напрямую:
    // ТабДок = Новый ТабличныйДокумент;
    
    Возврат Результат;
КонецФункции

// Функция отключения устройства
Функция ОтключитьУстройство(ПараметрыПодключения, ВыходныеПараметры) Экспорт
    Результат = Истина;
    // Освобождение ресурсов и закрытие портов
    Возврат Результат;
КонецФункции

// Основной обработчик команд печати чека
Функция ВыполнитьКоманду(ИмяКоманды, ВходныеПараметры, ВыходныеПараметры) Экспорт
    Результат = Ложь;
    
    Если ИмяКоманды = "PrintReceipt" Тогда
        // Разбираем входящий XML-пакет с данными чека
        ДанныеЧекаXML = ВходныеПараметры[0];
        Результат = НапечататьЧекНаПринтере(ДанныеЧекаXML, ВыходныеПараметры);
    ИначеЕсли ИмяКоманды = "OpenSession" Тогда
        // Эмулируем успешное открытие смены для РМК
        Результат = Истина;
    ИначеЕсли ИмяКоманды = "CloseSession" Тогда
        // Эмулируем успешное закрытие смены (печать Z-отчета в текстовом виде)
        Результат = НапечататьОтчетОЗакрытииСмены(ВыходныеПараметры);
    КонецЕсли;
    
    Возврат Результат;
EndFunction

Внутри функции НапечататьЧекНаПринтере программно создается табличный документ, который форматируется под ширину ленты принтера Xprinter (обычно ширина колонки задается в диапазоне от 8 до 12 символов в зависимости от масштабирования). Пример заполнения табличного документа:


Функция НапечататьЧекНаПринтере(ДанныеЧекаXML, ВыходныеПараметры)
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.ИмяПринтера = "XP-80"; // Имя принтера в системе Windows
    
    // Устанавливаем параметры страницы для узкой ленты
    ТабДок.ПоляСверху = 0;
    ТабДок.ПоляСнизу = 0;
    ТабДок.ПоляСлева = 1;
    TaбДок.ПоляСправа = 1;
    ТабДок.РазмерСтраницы = "Custom";
    ТабДок.ШиринаСтраницы = 80; // Для 80-миллиметровой ленты
    
    // Чтение XML и построчный вывод информации
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.УстановитьСтроку(ДанныеЧекаXML);
    
    // Простой алгоритм разбора XML и формирования строк табличного документа
    Пока ЧтениеXML.Прочитать() Цикл
        Если ЧтениеXML.Имя = "FiscalString" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
            ТекстСтроки = ЧтениеXML.ПолучитьАтрибут("Text");
            
            // Добавляем строку в макет
            ОбластьСтроки = ТабДок.ПолучитьОбласть("Строка");
            ОбластьСтроки.Параметры.ЗначениеСтроки = ТекстСтроки;
            ТабДок.Вывести(ОбластьСтроки);
        КонецЕсли;
    КонецЦикла;
    
    // Отправка на прямую печать без вывода диалогового окна
    ТабДок.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
    
    Возврат Истина;
КонецФункции

---

Настройка макета (шаблона) чека в 1С:ERP

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

Разберем, как кастомизировать макет чека:

  1. Перейдите в раздел Продажи — См. также — Шаблоны чеков ККМ.
  2. Создайте новый шаблон. Обратите внимание на встроенный конструктор шаблонов. Вы можете перетаскивать доступные поля (Организация, Склад, Кассир, Табличная часть с номенклатурой, Скидки, Итоговые суммы, QR-коды) в область макета.
  3. Для принтеров чеков Xprinter крайне важно правильно выбрать ширину чека в символах. Для ленты 80 мм стандартно используется значение 48 символов. Если установить большее значение, текст будет переноситься на новые строки, ломая структуру чека.
  4. Рекомендация по шрифтам: При печати чека через Windows-драйвер принтер может искажать табличные колонки из-за разной ширины букв в стандартных шрифтах (например, Arial или Times New Roman). Чтобы колонки с ценой, количеством и суммой всегда были ровно друг под другом, используйте в шаблонах исключительно моноширинные шрифты. Рекомендуемые системные шрифты: Consolas, Courier New или Lucida Console.

Таким образом, современная ERP-система предоставляет все необходимые инструменты для работы с нефискальным оборудованием. Для простых задач печати товарных чеков достаточно настроить встроенный NativeApi-драйвер принтера чеков. Если же требуется полноценная автоматизация торговой точки с использованием интерфейса РМК без покупки дорогостоящей онлайн-кассы, оптимальным решением станет применение программного эмулятора ККТ с перенаправлением вывода данных на системный принтер Xprinter.

← На главную