В практике работы с розничной торговлей возникают ситуации, когда контролирующие органы (например, Росфинмониторинг или Пробирная палата) запрашивают копии документов расчетов с физическими лицами за длительный период. Если количество чеков исчисляется сотнями или тысячами, ручная печать из личного кабинета ОФД становится невозможной задачей. Рассмотрим, как автоматизировать этот процесс, используя возможности API операторов фискальных данных и встроенные инструменты 1С.
Большинство операторов фискальных данных (ОФД), таких как Такском, в стандартном интерфейсе личного кабинета позволяют просматривать и печатать чеки только по одному. При необходимости подготовить более 500 копий чеков за год (например, по критериям 115-ФЗ: наличные расчеты свыше 40 000 руб. или безналичные свыше 100 000 руб.) трудозатраты сотрудников становятся неоправданно высокими. Нам требуется решение, которое позволит программно получить данные или печатные формы чеков в поточном режиме.
Проанализируем техническую документацию API (на примере «Такском»). Большинство разработчиков сначала пытаются получить сырые данные чека, чтобы затем самостоятельно отрисовать их в 1С. Однако существует более простой путь — получение прямой ссылки на готовую печатную форму документа.
Разберем по шагам алгоритм реализации в 1С:
2.7.3. Ссылка на документ). Метод возвращает URL-адрес, ведущий на сервис «Такском Чек».ПолеHTMLДокумента для отображения содержимого ссылки и программного вызова команды печати.Пример логики обхода списка ссылок и вывода на печать может выглядеть следующим образом:
// Пример цикла обработки ссылок на чеки
Для Каждого СсылкаНаЧек Из СписокСсылок Цикл
// Загружаем URL в поле HTML на форме
Элементы.ПолеHTML.Документ.location.href = СсылкаНаЧек;
// Ожидаем загрузки страницы (упрощенно)
Пока Элементы.ПолеHTML.Документ.readyState <> "complete" Цикл
ОбработкаПрерыванияПользователя();
КонецЦикла;
// Вызываем системную печать в PDF или на принтер
Элементы.ПолеHTML.Документ.execCommand("Print");
КонецЦикла;
Если получение готовых ссылок через API по каким-то причинам недоступно или требует дополнительных затрат, проанализируем вариант формирования чеков внутри 1С. Для этого нам понадобятся данные в формате JSON или XML, которые предоставляет API практически любого ОФД.
Преимущества этого метода:
Для реализации этого метода необходимо создать макет в 1С, который будет визуально повторять кассовый чек (узкая лента, специфические шрифты). При получении данных по API мы заполняем параметры этого макета: наименование организации, ИНН, заводской номер ККТ, номер ФД, ФП (фискальный признак), перечень товаров, итоги и QR-код.
Рассмотрим ситуацию, когда данных в ОФД за старые периоды может не быть (например, из-за смены оператора или технических сбоев). В этом случае единственным источником является фискальный накопитель (ФН). Однако здесь есть существенные ограничения:
Проанализируем пример получения данных через драйвер ККТ (псевдокод):
// Работа с драйвером для получения данных документа по номеру
Драйвер.DocumentNumber = НужныйНомерФД;
Драйвер.ReadDocumentFromFN();
Если Драйвер.ResultCode = 0 Тогда
ДанныеЧека = Драйвер.FiscalDocumentData; // Получаем структуру данных
КонецЕсли;
Важно помнить, что согласно 54-ФЗ, чек в электронной форме полностью приравнен к бумажному. Если проверяющие органы (Пробирная палата или Росфинмониторинг) запрашивают именно «копии», вы имеете право предоставить распечатки электронных документов из личного кабинета ОФД.
Особое внимание для ювелирной отрасли (115-ФЗ):
При проверках по суммам свыше 40 000 и 100 000 рублей проверяющих интересует не только факт продажи, но и идентификация клиента. Если в чеке не указаны персональные данные покупателя (что допустимо для розницы), будьте готовы предоставить сопутствующие анкеты клиентов или договоры, так как сам по себе чек без ФИО может не удовлетворить запрос РФМ в части идентификации личности при крупных сделках.
Для решения задачи массовой печати чеков наиболее эффективным является путь использования API ОФД. Это быстрее, чем чтение данных из ФН, и надежнее, чем ручное копирование. Если вы планируете масштабировать это решение для разных ОФД, стоит разработать в 1С универсальный механизм парсинга JSON-данных чека в единую печатную форму (табличный документ), что избавит вас от зависимости от веб-интерфейсов конкретных операторов.