Почему при печати чека через эмулятор ФР в 1С:УПП 1.3 не отображаются реквизиты организации?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

При отладке кассовых операций в конфигурации «1С:Управление производственным предприятием 1.3» разработчики часто используют стандартный эмулятор торгового оборудования. Типичная ситуация: вызов метода печати чека отрабатывает без ошибок, однако в окне сообщений или на экранной форме выводится только список номенклатурных позиций с ценами и суммами, тогда как шапка документа (наименование организации, ИНН, адрес расчетов, заводской номер ККТ) отсутствует.

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

Принцип работы встроенного эмулятора торгового оборудования

Проанализируем стандартный вызов печати чека в 1С:УПП 1.3 через подсистему торгового оборудования:


ОшибкаТО = ПолучитьСерверТО().ПечатьЧека(
    ФР, 
    "", 
    ОбъектПКО.НомерЧекаККМ, 
    Неопределено,
    ТаблицаТоваров, 
    СуммаНал,
    0,
    Ложь
);

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

Посмотрим на фрагмент реализации метода открытия чека в обработке эмулятора:


Функция ОткрытьЧек(Объект, Пароль, ЭтоВозврат, НомерЧека, НомерСмены, ФискальныйЧек = Истина) Экспорт
    Результат = мНетОшибки;
    мФискальныйЧек = ФискальныйЧек;
    Если Не мСменаОткрыта Тогда
        Сообщить("+++++++++++++++++++ Смена Открыта ++++++++++++++++++" + Символы.ПС);
        мСменаОткрыта = Истина;
        мНомерСмены = мНомерСмены + 1;
    КонецЕсли;
    Если мЧекОткрыт Тогда
        ОтменитьЧек(Объект);
    КонецЕсли;
    мНомерЧека = мНомерЧека + 1;
    Сообщить("=================== Открытие чека ==================");
    Если ЭтоВозврат Тогда
        Сообщить("====================== возврата ====================");
    Иначе
        Сообщить("====================== продажи =====================");
    КонецЕсли;
    Сообщить("================" + ?(ФискальныйЧек, "== Фискальный", " Нефискальный") + " режим ================");
    Сообщить("№ чека: " + Формат(мНомерЧека, "ЧЦ=4; ЧВН=") + "    № смены: " + Формат(мНомерСмены, "ЧЦ=4; ЧВН="));
    НомерСмены = мНомерСмены;
    НомерЧека  = мНомерЧека;
    мЧекОткрыт = Истина;
    мИтогЧека  = 0;
    Возврат Результат;
КонецФункции

Как видно из кода, эмулятор просто выводит в окно служебных сообщений текстовые разделители и переданные аргументы. У него отсутствуют внутренние таблицы с реквизитами организации, поэтому шапка документа не генерируется.

Где хранятся реквизиты шапки и подвала в реальном фискальном регистраторе

В классической архитектуре подключения торгового оборудования (драйверы стандарта «1С:Совместимо» старого образца, такие как Штрих-М, АТОЛ) регистрационные данные не передаются из 1С при каждой операции. Выясним, откуда физическое устройство берет эти данные:

  1. Энергонезависимая память ККТ: При фискализации и регистрации кассы в ФНС сервисный инженер или налоговый инспектор записывает во внутреннюю память аппарата ИНН организации, наименование юридического лица или ИП, регистрационный номер ККТ и адрес установки. Изменить эти данные из кода конфигурации при обычной печати нельзя.
  2. Таблицы настроек («Клише» и «Реклама»): Текстовые строки шапки (приветствие, контактные телефоны, сайт) и подвала чека настраиваются непосредственно в драйвере кассы через утилиту администрирования (например, «Тест драйвера ККТ»).
  3. Автоматическая печать: При вызове команды ОткрытьЧек или ПечататьСтроку микропрограмма кассового аппарата автоматически берет заголовок из своих таблиц и выводит его на чековую ленту перед списком товарных позиций.

Рассмотрим, как выглядит обработка вызова реального драйвера (например, «Штрих-М»):


Если Не Объект.Драйвер.ОткрытьЧек(Объект.ИДУстройства, ФискальныйЧек, ЭтоВозврат, Истина, НомерЧека, НомерСмены) Тогда
    Результат = мОшибкаНеизвестно;
    Объект.Драйвер.ПолучитьОшибку(Объект.ОписаниеОшибки);
КонецЕсли;

В физический драйвер передаются только параметры режима чека (продажа, возврат, признак фискальности), а всю рутинную работу по выводу шапки берет на себя прошивка ККТ.

Что будет напечатано на боевом устройстве при передаче только таблицы товаров

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

  1. Клише кассы: Название организации, ИНН, номер ККТ, дата и время (автоматически добавятся из памяти аппарата).
  2. Тело чека: Переданные из 1С наименования, количество, цена, скидки, ставка НДС и итоговая стоимость позиций.
  3. Итог и оплата: Сумма наличных или безналичных средств, расчет сдачи.
  4. Фискальный подвал: Номер смены, порядковый номер чека, фискальные признаки (ФД, ФП, номер ФН).

Способы проверки внешнего вида чека без физического пробития

Если необходимо визуально оценить макет до ввода ККТ в эксплуатацию, используем следующие варианты:

  1. Нефискальный режим физического ФР: Если есть тестовый аппарат без активированного накопителя, можно отправлять команды с признаком ФискальныйЧек = Ложь. Касса напечатает полноценный нефискальный чек с шапкой из своих таблиц.
  2. Настройка принтера чеков Windows: Подключить виртуальный принтер (PDF/XPS) через драйвер принтера чеков для проверки переноса длинных строк номенклатуры и текстовых примечаний.
  3. Утилиты производителя: Использовать тестовые утилиты драйвера ККТ (эмуляторы портов от производителей), которые ведут протоколирование всех вызовов и формируют графическое превью чековой ленты.
← На главную