← На главную
При автоматизации розничной торговли часто возникает необходимость связать автономный кассовый аппарат (электронный контрольно-кассовый аппарат, ЭККА) с конфигурациями 1С, такими как 1С:Управление торговым предприятием или 1С:Управление торговлей. Рассмотрим, как правильно организовать обмен данными, если вам требуется фиксировать пробитые на кассе чеки и загружать их в учетную систему.
Особенности работы автономного кассового аппарата (Offline-режим)
Проанализируем архитектуру работы устройства на примере аппарата ИКС-М510.01. В отличие от фискальных регистраторов (фискальных принтеров), данная категория устройств работает в автономном (Offline) режиме:
- Отсутствие прямой онлайн-печати чеков: Аппарат не может работать как фискальный принтер под прямым управлением 1С. Вызвать из 1С моментальное пробитие чека с обратным подтверждением в режиме реального времени невозможно.
- Автономный набор чека кассиром: Продавец выбирает товары непосредственно на кассовом аппарате по коду
PLU или сканером штрихкодов из встроенной памяти устройства.
- Накопление данных: Все пробитые чеки и отчеты сохраняются во внутренней памяти устройства (на встроенном накопителе или флеш-карте).
Подготовка и выгрузка справочника номенклатуры (PLU)
Чтобы кассовый аппарат знал, какие товары продаются, и передавал в 1С правильные сопоставления, предварительно необходимо выгрузить справочник номенклатуры из учетной системы в кассу.
Разберем порядок действий по шагам:
- Подключим кассовый аппарат к компьютеру или локальной сети по имеющемуся каналу связи (через кабель USB с эмуляцией COM-порта, Ethernet или GPRS).
- Задействуем специализированный OLE/COM-объект от производителя оборудования.
- Напишем внешнюю обработку в 1С, которая перебирает товары и формирует записи для встроенной базы аппарата. Для выгрузки позиций используется метод OLE-компоненты (например,
SetPLU).
Каждому товару присваивается его уникальный номер позиции в кассе (код PLU), наименование, цена, налоговая группа и штрихкод. После загрузки таблицы кассир сможет пробивать чеки по кодам PLU.
Получение данных о продажах и создание документов в 1С
Выясним, каким образом забрать пробитые чеки из памяти аппарата в 1С. Существует два основных подхода:
- Загрузка смены (штатный Offline-режим): В конце смены кассир закрывает смену (снимает Z-отчет). Из 1С запускается обработка, которая через OLE-объект вычитывает итоговые данные о продажах и автоматически формирует сводный документ
Отчет о розничных продажах.
- Периодическое чтение контрольной ленты: Если необходимо получать данные оперативно, в 1С настраивается периодический опрос электронного журнала кассы. Обработка вызывает метод чтения ленты (например,
GetLenta), запрашивает новые записи и сохраняет их в промежуточный регистр сведений или создает документы продаж.
Важное архитектурное замечание: Создавать документ Реализация товаров и услуг или Чек ККМ на каждую транзакцию в момент нажатия клавиши на автономной кассе не рекомендуется. Это создает высокую риск-нагрузку на базу данных и может вызывать расхождения при аннулировании или отмене чеков кассиром. Оптимальным решением является накопление транзакций и формирование итогового документа продаж за смену.
Диагностика ошибок связи и протокола
В процессе работы с OLE-объектом кассового аппарата могут возникать технические сбои. Например, при вызове методов чтения ленты GetLenta или записи товаров SetPLU система может возвращать ошибку:
Ошибка протокола : (erProto) !!! Тип ошибки : peChecksumMissmatch
Проанализируем основные причины этой ошибки и способы их устранения:
- Несоответствие контрольной суммы (peChecksumMissmatch): Означает, что пакет данных пришел в кассу или в 1С с искажениями. Проверьте настройки COM-порта (скорость передачи, четность), качество физического кабеля USB/RS232 или стабильность сетевого соединения (при подключении через Ethernet/GPRS).
- Разрядность платформы 1С: Большинство OLE-компонент для кассового оборудования являются 32-разрядными (x86). При запуске 64-разрядного клиента 1С подключение компоненты будет вызывать сбои. Используйте 32-битный клиент 1С для взаимодействия с драйвером.
- Занятость кассового аппарата: Если 1С запрашивает данные в момент, когда кассир выполняет печать чека или снятие отчета, касса вернет ошибку связи. В коде 1С необходимо предусмотреть обработку исключений и повторные попытки вызова методов с задержкой (таймаутом).
- Проверка через утилиты производителя: Перед отладкой кода в 1С всегда проверяйте связь с кассовым аппаратом через родные утилиты обслуживания (например,
InfiniteCash&Scale). Если стандартная утилита успешно считывает данные, OLE-объект в 1С также будет работать корректно.