Работа с торговым оборудованием в 1С, особенно в режиме удаленного доступа, часто подбрасывает сложные задачи. Одной из таких проблем является расхождение данных в учетной системе и в фискальном накопителе (ФН). Разберем ситуацию, когда в 1С данные верны, а в ОФД ушел лишний чек возврата, и выясним, можно ли просмотреть X-отчет на экране компьютера, не прибегая к печати на чековой ленте.
Прежде всего, проанализируем, что такое X-отчет. Это отчет без гашения, который формируется непосредственно внутренней памятью фискального регистратора (ККТ). Традиционно команда из 1С лишь инициирует процесс печати этого отчета на бумаге. Большинство стандартных драйверов и конфигураций (например, Альфа-Авто, УТ 10.3) настроены именно на физическую печать.
Рассмотрим типовой код вызова X-отчета, который часто встречается в конфигурациях на базе 1С:
// Пример вызова печати X-отчета через компоненту Рарус в Альфа-Авто
КодОшибки = Рарус_Компонента.ЗаказатьВыполнениеДействияСинхронно(GUID_ФР, "Х_Отчет",, ТаймаутФР);
Если НЕ РезультатРаботыСОборудованием("Фискальный регистратор", КодОшибки, Рарус_Компонента.ОписаниеОшибки) Тогда
ЗаписатьВФайлЛога("Снять X-отчет", КодОшибки, "Операция не выполнена", GUID_ФР, 1);
КонецЕсли;
В данном случае команда Х_Отчет заставляет кассовый аппарат печатать бумажный документ. Вывести его содержимое напрямую в текстовое поле формы 1С штатными средствами конфигурации невозможно, так как драйвер возвращает только код результата (успех или ошибка).
Если мы работаем удаленно и не имеем возможности посмотреть на бумажный чек, нам необходимо получить данные из регистров ККТ программно. Современные драйверы (например, АТОЛ 10.х или Штрих-М) позволяют считывать значения счетчиков из памяти кассы без печати.
Разберем, как это можно реализовать для оборудования Штрих-М. Мы можем обратиться к конкретным регистрам денежных ящиков:
// Пример получения суммы наличных из регистра для Штрих-М
ОбъектДрайвера.RegisterNumber = 148; // Номер регистра наличности
ОбъектДрайвера.GetCashReg();
СуммаНаличных = ОбъектДрайвера.ContentsOfCashRegister;
Сообщить("Наличность в кассе (данные ФР): " + СуммаНаличных);
Для оборудования АТОЛ при использовании драйвера 10-й версии можно использовать методы получения итогов смены. Проанализируем логику: вместо команды печати отчета мы запрашиваем объект данных и перебираем его свойства. Это позволяет построить форму в 1С, которая будет имитировать X-отчет, сравнивая данные из БД с реальными суммами в кассе.
Важный момент: такой «виртуальный» отчет гораздо полезнее бумажного, так как позволяет в реальном времени подсветить расхождения, если, например, чек в 1С не записался из-за ошибки компиляции или сбоя сети, но был успешно фискализирован в ККТ.
Рассмотрим ситуацию автора темы: в ОФД зафиксировано два возврата по одному чеку продажи, а в 1С — только один. Это означает, что выручка в налоговой занижена. Выясним, как это исправить в зависимости от используемого формата фискальных данных (ФФД).
В случае автора (ФФД 1.05) правильным алгоритмом будет пробитие встречного чека Приход. После этого в 1С такой документ можно пометить на удаление или не проводить, чтобы не дублировать выручку в управленческом учете, так как там она уже корректна.
Часто при попытке достучаться до кассы через Тест драйвера ККТ или программно из 1С возникает ошибка (-14) Порт занят. Проанализируем основные причины:
Совет для удаленной работы: если касса подключена по сети (TCP/IP), конфликты портов возникают значительно реже, так как протокол позволяет более гибко управлять сессиями подключения.
Чтобы не гадать, что именно записано в кассе, можно воспользоваться интеграцией с личным кабинетом ОФД через API. Рассмотрим на примере Такском или СБИС:
Программист может написать небольшую обработку, которая по расписанию подключается к серверу ОФД, скачивает список фискальных признаков (ФП) чеков за день и сверяет их с документами в 1С. Если найден ФП, которого нет в базе 1С — это сигнал о критической ошибке, которую нужно исправить до закрытия смены и снятия Z-отчета. Это снимает необходимость физически видеть X-отчет, так как данные ОФД являются «эталонными» для проверяющих органов.
Подведем итог: полноценный вывод X-отчета на экран возможен только через низкоуровневые запросы к регистрам драйвера. Для исправления ошибок в ОФД при ФФД 1.05 используйте встречные чеки того же типа, а при возникновении проблем с доступом к порту — проверяйте фоновые службы передачи данных.