Почему 1С:УТ 10.3 печатает отчет о закрытии смены, но не печатает чеки на Android-терминале Smartpeak?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Ситуация, когда торговое оборудование частично выполняет свои функции (например, успешно печатает Z-отчет при закрытии смены), но отказывается печатать чеки при совершении продажи, является классической проблемой интеграции 1С с современными мобильными кассами на базе Android. В этой статье мы подробно разберем, почему так происходит, как устроена связь между 1С:Управление торговлей 10.3 и терминалами типа Smartpeak, и какие шаги необходимо предпринять для исправления этой ошибки.

Анализ архитектуры подключения терминала

Для начала разберем, как именно происходит взаимодействие 1С и вашего аппарата. Терминалы Smartpeak (модели P1, P1000) — это не просто принтеры чеков. Это полноценные компьютеры на базе Android. В отличие от обычных фискальных регистраторов (Атол, Штрих-М), которые подключаются напрямую через COM-порт или USB, такие устройства работают по сетевому протоколу (TCP/IP) через WiFi.

Проанализируем цепочку передачи данных:

  1. В 1С инициируется команда печати.
  2. Внешняя компонента (драйвер .dll) формирует пакет данных.
  3. Пакет отправляется по IP-адресу на терминал.
  4. На самом терминале должно быть запущено специальное приложение-агент (сервер), которое принимает этот пакет и переводит его на язык, понятный внутреннему принтеру.

Если отчет о закрытии смены («Z-отчет») выходит, это означает, что физическая связь (WiFi) установлена, IP-адрес указан верно и Merchant ID прошел проверку. Проблема кроется на логическом уровне передачи данных о товарах.

Выясним причину: почему отчет печатается, а чек — нет?

Разберем техническую разницу между этими двумя операциями. Команда «Закрыть смену» — это короткий управляющий сигнал. 1С просто говорит драйверу: «Выполни команду №X». Драйвер передает эту команду терминалу, и тот автономно печатает итоги за день, которые хранятся в его собственной памяти.

Печать чека продажи — это гораздо более сложный процесс. Проанализируем состав данных, которые 1С должна передать в этом случае:

Если структура этого пакета (обычно это XML или JSON) хотя бы на один символ не совпадает с тем, что ожидает мобильное приложение на терминале, устройство просто проигнорирует запрос или вернет ошибку, которую 1С:УТ 10.3 (в силу своего возраста) может не вывести на экран.

Пошаговое решение проблемы

Шаг 1. Проверка обработки обслуживания

В конфигурации Управление торговлей 10.3 работа с оборудованием строится через внешние обработки обслуживания (файлы .epf). Рассмотрим процедуру проверки:

  1. Перейдем в меню «Сервис» — «Торговое оборудование» — «Подключение и настройка торгового оборудования».
  2. Найдем нашу кассу и посмотрим, какой файл обработки используется.
  3. Нам необходимо убедиться, что версия обработки соответствует версии прошивки на терминале Smartpeak. Зачастую разработчики (например, провайдеры системы «Kassa NP») выпускают обновления, и старая обработка перестает корректно формировать структуру чека.

Шаг 2. Анализ лог-файлов

Чтобы не гадать, почему чек не выходит, проанализируем лог-файлы драйвера. Большинство драйверов для Android-касс записывают все входящие и исходящие запросы. Обычно они находятся в папке пользователя %AppData%\Roaming\1C... или непосредственно в корне диска C:\. Ищем текстовые файлы с названиями kassa_np.log или smartpeak.txt. В них мы увидим конкретную ошибку, например: "Invalid format: Tax rate not found" (неверный формат: не найдена ставка налога).

Шаг 3. Доработка программного кода в 1С

Если обработка обслуживания верная, но чек все равно не печатается, потребуется вмешательство программиста в модуль документа ЧекККМ. Разберем ситуацию: часто в старых версиях УТ 10.3 печать чека происходит «построчно» (отправка каждой строки товара отдельно). Современные Android-терминалы требуют отправки всего чека целиком одним массивом.

Проанализируем пример кода, который может отвечать за формирование чека. В процедуре ПечатьЧека() необходимо проверить, как заполняется объект ОбъектДрайвера. Код должен выглядеть примерно так:


// Пример формирования структуры чека для сетевого драйвера
ДанныеЧека = Новый Структура;
ТоварыСписок = Новый Массив;

Для Каждого СтрокаТЧ Из Ссылка.Товары Цикл
    Позиция = Новый Структура("Name, Price, Quantity, Tax", 
                               СтрокаТЧ.Номенклатура.Наименование, 
                               СтрокаТЧ.Цена, 
                               СтрокаТЧ.Количество, 
                               "none");
    ТоварыСписок.Добавить(Позиция);
КонецЦикла;

ДанныеЧека.Вставить("Items", ТоварыСписок);
ДанныеЧека.Вставить("Total", Ссылка.СуммаДокумента);

// Отправка через внешнюю компоненту
Результат = ОбъектДрайвера.СформироватьЧек(ДанныеЧека);

Если ваша конфигурация пытается использовать методы старого образца типа ОбъектДрайвера.НапечататьСтроку(), терминал Smartpeak просто не будет на них реагировать.

Шаг 4. Настройка параметров Merchant ID и IP

Проверьте вкладку КАССА НП в настройках 1С. Важно помнить, что для печати чека (фискализации) терминалу может требоваться авторизация, отличная от той, что используется для сервисных команд (отчетов). Убедитесь, что Merchant ID введен без пробелов и соответствует тому, что указано в личном кабинете или настройках приложения на самом Android-устройстве.

Альтернативный вариант: Использование обмена

Как отметили участники обсуждения, работа с Android-терминалом напрямую из 1С:УТ 10.3 через WiFi — это зачастую «путь костылей». Рассмотрим альтернативный вариант: работу через Обмен данными.

В этом сценарии вы не нажимаете «Печать» в 1С. Вместо этого:

  1. Вы совершаете продажу непосредственно на терминале (как в Эвоторе или МТС-кассе).
  2. В конце дня или по расписанию 1С забирает данные о продажах из облачного сервиса кассы.
  3. В 1С автоматически создается документ «Отчет о розничных продажах».

Это избавляет от необходимости бороться с драйверами печати, но требует настройки синхронизации.

Заключение

Подведем итог: если ваш аппарат Smartpeak печатает отчеты, но молчит при продаже — связь есть, но 1С «говорит» на языке, который драйвер не понимает. Для решения проблемы рассмотрите обновление внешней обработки обслуживания или привлеките специалиста для корректировки передачи параметров в процедуре печати чека. Помните, что для стабильной работы мобильных касс критически важна стабильность WiFi-сети, так как любой разрыв связи в момент передачи массива данных чека приведет к ошибке печати.

← На главную