При печати кассовых чеков из 1С разработчики и кассиры часто сталкиваются с ситуацией, когда безналичный расчет выводится на печать с неподходящим наименованием (например, вместо «БАНК. КАРТА» печатается «КРЕДИТ») или возникает необходимость направить часть суммы чека на специфический вид оплаты (например, подарочный сертификат). Рассмотрим подробно, как устроена передача видов оплаты из 1С в фискальный регистратор, где задаются текстовые наименования и как правильно управлять параметрами чека программным путем.
Проанализируем архитектуру взаимодействия программы 1С с фискальным регистратором (ККТ). Процесс разбивается на два ключевых уровня:
Если на бумажном чеке вместо нужного названия выводится «КРЕДИТ» или другое нерелевантное слово, в первую очередь необходимо скорректировать внутренние таблицы оборудования через тест драйвера ККТ:
Рассмотрим, как 1С передает информацию об оплатах в фискализатор программным путем. Существует два основных подхода в зависимости от того, используется ли обработка обслуживания ККТ или прямое управление COM-объектом драйвера.
Вариант 1. Изменение параметров метода ЗакрытьЧек в обработке обслуживания
В старых версиях обработок обслуживания (например, ShtrihMFiscalPrinters_v2.epf) вызов закрытия чека выполняется через единый метод объекта драйвера. В коде это выглядит следующей строкой:
Объект.Драйвер.ЗакрытьЧек(Объект.ИДУстройства, СуммаНал, СуммаБезнал, 0);
В данном вызове аргументы отвечают за распределение сумм по типам оплат из внутренней таблицы устройства:
Объект.ИДУстройства — идентификатор подключенного ККТ.СуммаНал — сумма, направляемая в 1-й тип оплаты (как правило, наличные).СуммаБезнал — сумма, направляемая во 2-й тип оплаты (например, безналичные/банковская карта).Если требуется направить сумму в 3-й или 4-й вид оплаты, необходимо передавать значения в соответствующие по порядку аргументы вызова метода ЗакрытьЧек.
Вариант 2. Прямая работа с объектом драйвера через свойства и методы
Если работа с фискальным регистратором выполняется напрямую через низкоуровневый COM-объект драйвера (например, DrvFR), передача оплат выполняется путем заполнения свойств объекта перед закрытием чек-сессии. Проанализируем пример кода:
// Передаем оплату по конкретному типу
Объект.Драйвер.Summ1 = СуммаСертификат; // Указываем сумму оплаты
Объект.Драйвер.TypeClose = 2; // Указываем тип оплаты (0 - нал, 1 - безнал, 2 - тип 3 и т.д.)
Объект.Драйвер.Payment(); // Вызываем команду регистрации оплаты
Ответ = Объект.Драйвер.ResultCode; // Проверяем результат выполнения команды
После регистрации всех необходимых оплат вызывается непосредственно команда закрытия чека CloseCheck() / ЗакрытьЧек().
При работе с современными онлайн-кассами по требованиям 54-ФЗ важно учитывать законодательные ограничения Форматов Фискальных Документов (ФФД). На уровне фискального накопителя и ОФД любые произвольные названия оплат строго классифицируются по 5 базовым фискальным тегам:
Если в торговой точке используется смешанная оплата (например, подарочный сертификат + наличные):