Как программно распечатать копию фискального чека в 1С:Управление торговлей 11 через ККТ?

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

В процессе работы с торговыми решениями на базе 1С, такими как Управление торговлей 11, часто возникает необходимость распечатать дубликат чека непосредственно из фискального регистратора. Типовой функционал программы не всегда содержит явную кнопку для выполнения этой операции, хотя современные драйверы ККТ (особенно Атол и Штрих-М) поддерживают такую команду на аппаратном уровне. В этой статье мы подробно разберем, как реализовать печать копии чека программно, какие настройки оборудования для этого требуются и на что обратить внимание, чтобы не нарушить фискальный учет. Для быстрой реализации этой возможности можно использовать доработку для печати копии чека в 1С:УТ 11.5.

Постановка задачи и анализ ограничений

Прежде всего, проанализируем ситуацию: нам нужно получить бумажную копию уже пробитого чека. Важно понимать разницу между печатью копии средствами кассы и повторным формированием чека в 1С. Если мы просто заново запустим процедуру пробития чека из документа, программа создаст новый фискальный признак, присвоит новый номер документа и отправит данные в ОФД повторно. Это приведет к задвоению выручки в налоговой отчетности. Наша же цель — вызвать команду драйвера, которая заставит ККТ распечатать данные из своей внутренней памяти (Журнала чеков) без фискализации новой операции.

Шаг 1. Настройка фискального регистратора

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

Рассмотрим, как проверить настройки для популярных моделей:

  1. Для ККТ Атол: Необходимо зайти в Тест драйвера ККТ (версии 10.х), перейти в раздел «Параметры ККТ», далее в категорию «Печать». Здесь нужно убедиться, что включена опция сохранения чеков в памяти. Как показывает практика, без этой настройки метод НапечататьКопиюЧека может игнорировать последний пробитый документ.
  2. Для ККТ Штрих-М: В программе Тест драйвера следует проверить «Таблицы». Нас интересует Таблица №1 (Тип текста чека/Буфер). Поле, отвечающее за сохранение чека в буфере, должно иметь соответствующее значение (обычно тип чека в буфере должен быть установлен в режим сохранения полной информации).

Шаг 2. Программный вызов печати из 1С

В современных конфигурациях 1С, использующих Библиотеку подключаемого оборудования (БПО), взаимодействие с кассой идет через объект драйвера. Для выполнения печати нам понадобятся два ключевых параметра: идентификатор устройства и номер чека (ФД), который мы хотим продублировать.

Разберем пример кода, который можно разместить в расширении или во внешней обработке для вызова функции:


// Пример вызова метода печати копии
Результат = ОбъектДрайвера.НапечататьКопиюЧека(ИДУстройства, НомерЧека);

Если Не Результат Тогда
    ОписаниеОшибки = "";
    ОбъектДрайвера.ПолучитьОшибку(ОписаниеОшибки);
    Сообщить("Ошибка печати копии: " + ОписаниеОшибки);
КонецЕсли;

Рассмотрим подробнее параметры этого метода:

Шаг 3. Реализация через Менеджер оборудования

Для того чтобы код успешно выполнился, нам нужно правильно инициализировать объект драйвера. Выясним, как это сделать в контексте УТ 11. Мы не можем просто создать объект, нам нужно подключиться к уже используемому устройству.


// Получаем список подключенного оборудования (ККТ)
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияККТ", ЭтотОбъект);
МенеджерОборудованияКлиент.ПодключитьОборудованиеПоИдентификатору(Оповещение, ИдентификаторУстройства);

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

Важные технические нюансы

Проанализируем несколько критических моментов, с которыми сталкиваются разработчики:

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

Альтернативные способы получения чека

Если программная печать из ККТ по каким-то причинам недоступна (например, чек был пробит в прошлую смену), рассмотрим альтернативные пути решения задачи:

1. Печать из Личного кабинета ОФД. Все чеки хранятся у оператора фискальных данных. Вы можете зайти в личный кабинет, найти нужный документ по дате или номеру и отправить его на печать на обычный принтер. Это юридически значимый документ.

2. Отправка электронного чека. Согласно 54-ФЗ, электронный чек приравнивается к бумажному. В 1С Управление торговлей 11 можно инициировать повторную отправку чека на e-mail или телефон покупателя, если эти данные были введены при продаже. Это делается через типовые механизмы работы с очередью чеков ОФД.

3. Печатная форма «Товарный чек». В конфигурации реализована возможность печати товарного чека. Хотя он не является фискальным документом, он содержит полный перечень товаров и сумму, что часто достаточно для покупателя.

Заключение

Мы выяснили, что для успешной печати копии чека в 1С:УТ 11 необходимо сочетание двух факторов: правильной настройки Параметров ККТ (включение сохранения чеков в памяти) и корректного вызова метода НапечататьКопиюЧека через объект драйвера БПО. Данный метод является безопасным, так как не создает новых записей в фискальном накопителе и не дублирует данные в налоговую службу.

← На главную