При автоматизации торговых операций и доработке учетных систем на платформе 1С под требования Федерального закона № 54-ФЗ часто возникает вопрос: как именно распределяются потоки данных между информационной базой, драйвером оборудования, контрольно-кассовой техникой (ККТ) и оператором фискальных данных (ОФД). В частности, разработчики нередко ищут способ сэкономить чековую ленту для оптовых или объемных розничных продаж — например, напечатать на бумаге одну обобщенную строку (например, «Оптовая продажа»), сохранив при этом подробную аналитику по позициям в базе и в данных, отправляемых в налоговые органы.
Разберем детально, как устроена схема фискализации, почему нельзя разделить печатную форму и электронный фискальный документ, а также какие существуют технические решения для оптимизации печати и экономии расходных материалов.
Проанализируем процесс отправки фискальных данных и выясним, в какой момент и кем регистрируются продажи:
ПодготовитьДанныеДляФискализацииЧека). На этом этапе таблица товаров, ставки НДС, суммы и признаки способов расчета упаковываются в специальный XML-пакет или структуру параметров, соответствующую стандарту «1С:Совместимо».СформироватьЧек). Драйвер выступает промежуточным звеном и транслирует команды в низкоуровневый протокол конкретной модели кассы (например, АТОЛ или Штрих-М). Сам драйвер напрямую в налоговую инспекцию ничего не отправляет.Важный вывод: В архитектуре онлайн-касс печатный чек и фискальный документ, уходящий в ОФД, являются единым целым. Нельзя передать в фискальный накопитель детализированный список номенклатуры, а на бумажную ленту вывести произвольную строку «Оптовая реализация». Все, что регистрируется кассой фискально, полностью повторяется на чековой ленте (если включена печать).
Если стоит задача полностью исключить расход чековой ленты при наличии согласия покупателя на получение электронного чека (или при дистанционных расчетах), стандарт требований 1С к драйверам ККТ и протоколы производителей поддерживают режим работы без печати на бумаге.
Посмотрим на пример вызова метода СформироватьЧек в обработке обслуживания торгового оборудования:
// В типовых обработках драйвера вызывается метод СформироватьЧек (ProcessCheck)
// Третий параметр "Электронно" определяет признак печати на чековой ленте:
// Истина — чек формируется только в электронном виде, бумажный чек не печатается
// Ложь — чек печатается на бумажной ленте
Электронно = Истина; // Устанавливаем в зависимости от условий продажи
Если НЕ Объект.Драйвер.СформироватьЧек(
Объект.ИДУстройства,
Кассир(Объект),
Электронно,
ДанныеЧека,
НомерЧека,
НомерСмены,
ФискальныйПризнак,
AddressSiteInspections) Тогда
// Обработка ошибки выполнения операции
Объект.Драйвер.ПолучитьОшибку(Объект.ОписаниеОшибки);
ВызватьИсключение Объект.ОписаниеОшибки;
КонецЕсли;
Рассмотрим особенности работы данного режима:
Электронно = Истина в структуру ДанныеЧека (тег 1008) обязательно должен быть передан номер телефона или адрес электронной почты клиента. Если контактные данные не заполнены, касса либо вернет ошибку, либо принудительно распечатает бумажный чек.Если покупателю обязательно требуется бумажный документ в момент расчета, сэкономить чековую ленту на 30–50% можно без изменения кода конфигурации 1С:
Когда оптовому покупателю необходим подробный перечень позиций с печатями и подписями, а розничный кассовый чек расходует слишком много ленты:
Если учетная политика и законодательные нормы для конкретной хозяйственной операции допускают печать сводной услуги или обобщенной строки (например, предоплата по договору или сводный расчет):
ПозицииЧека в одну итоговую строку с рассчитанной общей суммой и корректной ставкой НДС.