Как настроить передачу данных с автономного кассового аппарата в 1С?

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

При автоматизации розничной торговли часто возникает необходимость связать автономный кассовый аппарат (электронный контрольно-кассовый аппарат, ЭККА) с конфигурациями 1С, такими как 1С:Управление торговым предприятием или 1С:Управление торговлей. Рассмотрим, как правильно организовать обмен данными, если вам требуется фиксировать пробитые на кассе чеки и загружать их в учетную систему.

Особенности работы автономного кассового аппарата (Offline-режим)

Проанализируем архитектуру работы устройства на примере аппарата ИКС-М510.01. В отличие от фискальных регистраторов (фискальных принтеров), данная категория устройств работает в автономном (Offline) режиме:

  1. Отсутствие прямой онлайн-печати чеков: Аппарат не может работать как фискальный принтер под прямым управлением 1С. Вызвать из 1С моментальное пробитие чека с обратным подтверждением в режиме реального времени невозможно.
  2. Автономный набор чека кассиром: Продавец выбирает товары непосредственно на кассовом аппарате по коду PLU или сканером штрихкодов из встроенной памяти устройства.
  3. Накопление данных: Все пробитые чеки и отчеты сохраняются во внутренней памяти устройства (на встроенном накопителе или флеш-карте).

Подготовка и выгрузка справочника номенклатуры (PLU)

Чтобы кассовый аппарат знал, какие товары продаются, и передавал в 1С правильные сопоставления, предварительно необходимо выгрузить справочник номенклатуры из учетной системы в кассу.

Разберем порядок действий по шагам:

  1. Подключим кассовый аппарат к компьютеру или локальной сети по имеющемуся каналу связи (через кабель USB с эмуляцией COM-порта, Ethernet или GPRS).
  2. Задействуем специализированный OLE/COM-объект от производителя оборудования.
  3. Напишем внешнюю обработку в 1С, которая перебирает товары и формирует записи для встроенной базы аппарата. Для выгрузки позиций используется метод OLE-компоненты (например, SetPLU).

Каждому товару присваивается его уникальный номер позиции в кассе (код PLU), наименование, цена, налоговая группа и штрихкод. После загрузки таблицы кассир сможет пробивать чеки по кодам PLU.

Получение данных о продажах и создание документов в 1С

Выясним, каким образом забрать пробитые чеки из памяти аппарата в 1С. Существует два основных подхода:

  1. Загрузка смены (штатный Offline-режим): В конце смены кассир закрывает смену (снимает Z-отчет). Из 1С запускается обработка, которая через OLE-объект вычитывает итоговые данные о продажах и автоматически формирует сводный документ Отчет о розничных продажах.
  2. Периодическое чтение контрольной ленты: Если необходимо получать данные оперативно, в 1С настраивается периодический опрос электронного журнала кассы. Обработка вызывает метод чтения ленты (например, GetLenta), запрашивает новые записи и сохраняет их в промежуточный регистр сведений или создает документы продаж.

Важное архитектурное замечание: Создавать документ Реализация товаров и услуг или Чек ККМ на каждую транзакцию в момент нажатия клавиши на автономной кассе не рекомендуется. Это создает высокую риск-нагрузку на базу данных и может вызывать расхождения при аннулировании или отмене чеков кассиром. Оптимальным решением является накопление транзакций и формирование итогового документа продаж за смену.

Диагностика ошибок связи и протокола

В процессе работы с OLE-объектом кассового аппарата могут возникать технические сбои. Например, при вызове методов чтения ленты GetLenta или записи товаров SetPLU система может возвращать ошибку:

Ошибка протокола : (erProto) !!! Тип ошибки : peChecksumMissmatch

Проанализируем основные причины этой ошибки и способы их устранения:

  1. Несоответствие контрольной суммы (peChecksumMissmatch): Означает, что пакет данных пришел в кассу или в 1С с искажениями. Проверьте настройки COM-порта (скорость передачи, четность), качество физического кабеля USB/RS232 или стабильность сетевого соединения (при подключении через Ethernet/GPRS).
  2. Разрядность платформы 1С: Большинство OLE-компонент для кассового оборудования являются 32-разрядными (x86). При запуске 64-разрядного клиента 1С подключение компоненты будет вызывать сбои. Используйте 32-битный клиент 1С для взаимодействия с драйвером.
  3. Занятость кассового аппарата: Если 1С запрашивает данные в момент, когда кассир выполняет печать чека или снятие отчета, касса вернет ошибку связи. В коде 1С необходимо предусмотреть обработку исключений и повторные попытки вызова методов с задержкой (таймаутом).
  4. Проверка через утилиты производителя: Перед отладкой кода в 1С всегда проверяйте связь с кассовым аппаратом через родные утилиты обслуживания (например, InfiniteCash&Scale). Если стандартная утилита успешно считывает данные, OLE-объект в 1С также будет работать корректно.
← На главную