Ситуация, когда торговое оборудование частично выполняет свои функции (например, успешно печатает Z-отчет при закрытии смены), но отказывается печатать чеки при совершении продажи, является классической проблемой интеграции 1С с современными мобильными кассами на базе Android. В этой статье мы подробно разберем, почему так происходит, как устроена связь между 1С:Управление торговлей 10.3 и терминалами типа Smartpeak, и какие шаги необходимо предпринять для исправления этой ошибки.
Для начала разберем, как именно происходит взаимодействие 1С и вашего аппарата. Терминалы Smartpeak (модели P1, P1000) — это не просто принтеры чеков. Это полноценные компьютеры на базе Android. В отличие от обычных фискальных регистраторов (Атол, Штрих-М), которые подключаются напрямую через COM-порт или USB, такие устройства работают по сетевому протоколу (TCP/IP) через WiFi.
Проанализируем цепочку передачи данных:
.dll) формирует пакет данных.Если отчет о закрытии смены («Z-отчет») выходит, это означает, что физическая связь (WiFi) установлена, IP-адрес указан верно и Merchant ID прошел проверку. Проблема кроется на логическом уровне передачи данных о товарах.
Разберем техническую разницу между этими двумя операциями. Команда «Закрыть смену» — это короткий управляющий сигнал. 1С просто говорит драйверу: «Выполни команду №X». Драйвер передает эту команду терминалу, и тот автономно печатает итоги за день, которые хранятся в его собственной памяти.
Печать чека продажи — это гораздо более сложный процесс. Проанализируем состав данных, которые 1С должна передать в этом случае:
Если структура этого пакета (обычно это XML или JSON) хотя бы на один символ не совпадает с тем, что ожидает мобильное приложение на терминале, устройство просто проигнорирует запрос или вернет ошибку, которую 1С:УТ 10.3 (в силу своего возраста) может не вывести на экран.
В конфигурации Управление торговлей 10.3 работа с оборудованием строится через внешние обработки обслуживания (файлы .epf). Рассмотрим процедуру проверки:
Чтобы не гадать, почему чек не выходит, проанализируем лог-файлы драйвера. Большинство драйверов для Android-касс записывают все входящие и исходящие запросы. Обычно они находятся в папке пользователя %AppData%\Roaming\1C... или непосредственно в корне диска C:\. Ищем текстовые файлы с названиями kassa_np.log или smartpeak.txt. В них мы увидим конкретную ошибку, например: "Invalid format: Tax rate not found" (неверный формат: не найдена ставка налога).
Если обработка обслуживания верная, но чек все равно не печатается, потребуется вмешательство программиста в модуль документа ЧекККМ. Разберем ситуацию: часто в старых версиях УТ 10.3 печать чека происходит «построчно» (отправка каждой строки товара отдельно). Современные Android-терминалы требуют отправки всего чека целиком одним массивом.
Проанализируем пример кода, который может отвечать за формирование чека. В процедуре ПечатьЧека() необходимо проверить, как заполняется объект ОбъектДрайвера. Код должен выглядеть примерно так:
// Пример формирования структуры чека для сетевого драйвера
ДанныеЧека = Новый Структура;
ТоварыСписок = Новый Массив;
Для Каждого СтрокаТЧ Из Ссылка.Товары Цикл
Позиция = Новый Структура("Name, Price, Quantity, Tax",
СтрокаТЧ.Номенклатура.Наименование,
СтрокаТЧ.Цена,
СтрокаТЧ.Количество,
"none");
ТоварыСписок.Добавить(Позиция);
КонецЦикла;
ДанныеЧека.Вставить("Items", ТоварыСписок);
ДанныеЧека.Вставить("Total", Ссылка.СуммаДокумента);
// Отправка через внешнюю компоненту
Результат = ОбъектДрайвера.СформироватьЧек(ДанныеЧека);
Если ваша конфигурация пытается использовать методы старого образца типа ОбъектДрайвера.НапечататьСтроку(), терминал Smartpeak просто не будет на них реагировать.
Проверьте вкладку КАССА НП в настройках 1С. Важно помнить, что для печати чека (фискализации) терминалу может требоваться авторизация, отличная от той, что используется для сервисных команд (отчетов). Убедитесь, что Merchant ID введен без пробелов и соответствует тому, что указано в личном кабинете или настройках приложения на самом Android-устройстве.
Как отметили участники обсуждения, работа с Android-терминалом напрямую из 1С:УТ 10.3 через WiFi — это зачастую «путь костылей». Рассмотрим альтернативный вариант: работу через Обмен данными.
В этом сценарии вы не нажимаете «Печать» в 1С. Вместо этого:
Это избавляет от необходимости бороться с драйверами печати, но требует настройки синхронизации.
Подведем итог: если ваш аппарат Smartpeak печатает отчеты, но молчит при продаже — связь есть, но 1С «говорит» на языке, который драйвер не понимает. Для решения проблемы рассмотрите обновление внешней обработки обслуживания или привлеките специалиста для корректировки передачи параметров в процедуре печати чека. Помните, что для стабильной работы мобильных касс критически важна стабильность WiFi-сети, так как любой разрыв связи в момент передачи массива данных чека приведет к ошибке печати.