Как интегрировать старую или самописную конфигурацию 1С с онлайн-кассой

Программист Торговля и дистрибуция
← На главную

При работе с нестандартными или сильно доработанными конфигурациями 1С, которые не базируются на Библиотеке стандартных подсистем (БСП), задача подключения онлайн-кассы становится нетривиальной. Разберем основные архитектурные подходы, которые позволяют подружить «нетленку» с современным торговым оборудованием в соответствии с требованиями 54-ФЗ. Рассмотрим каждый вариант — от внедрения готовых библиотек до написания собственного микросервиса.

Вариант 1: Использование библиотеки CEL (1C:Cloud Electronics Library)

Проанализируем возможность использования специализированных библиотек от фирмы «1С». Одним из наиболее актуальных решений является 1C:Библиотека подключаемого оборудования (БПО) или ее облегченная версия CEL (Cloud Electronics Library). Этот путь хорош тем, что в библиотеку уже заложены механизмы работы с большинством популярных моделей ККТ (АТОЛ, Штрих-М, Эвотор и др.).

Для интеграции нам потребуется:

  1. Загрузить актуальную версию библиотеки CEL с портала поддержки пользователей.
  2. Перенести необходимые объекты (справочники, общие модули, обработки драйверов) в свою конфигурацию.
  3. Настроить вызов методов печати чека из ваших документов (например, «Реализация» или «Приходный кассовый ордер»).

Преимущество этого метода в том, что при выходе новых форматов фискальных данных (ФФД), например, при переходе на 1.2, вам будет проще обновить встроенную библиотеку, чем переписывать собственный код формирования JSON-структуры чека.

Вариант 2: Прямая работа с драйвером через JSON API (на примере АТОЛ 10)

Если внедрение тяжелой БПО кажется избыточным, рассмотрим более гибкий и «легкий» способ — прямое взаимодействие с драйвером ККТ. Современные драйверы, такие как АТОЛ 10.х, позволяют взаимодействовать с кассой не через сложные COM-объекты, а с помощью структурированных заданий в формате JSON.

Разберем алгоритм работы:

  1. Устанавливаем на рабочий компьютер драйвер ККТ версии 10.
  2. В коде 1С создаем объект драйвера как AddIn.Atol_KKT_10.
  3. Формируем текстовую строку в формате JSON, описывающую состав чека, налоги, способы оплаты и признаки способа расчета.

Посмотрим на пример логики формирования задания:


// Создание объекта драйвера
Попытка
    Драйвер = Новый ("AddIn.Atol_KKT_10");
    Драйвер.УстановитьСвойство("Model", 67); // Автоматическое определение модели
    Драйвер.УстановитьСвойство("Port", 1);  // USB
    Драйвер.Занять();
Исключение
    Сообщить("Ошибка инициализации ККТ: " + ОписаниеОшибки());
    Возврат;
КонецПопытки;

// Формирование JSON чека
ТекстЗадания = "{
| ""type"": ""sell"",
| ""taxationType"": ""osn"",
| ""ignoreNonFiscalPrintErrors"": false,
| ""items"": [
|  {
|   ""type"": ""position"",
|   ""name"": ""Товар тестовый"",
|   ""price"": 100.0,
|   ""quantity"": 1,
|   ""amount"": 100.0,
|   ""tax"": { ""type"": ""vat20"" }
|  }
| ],
| ""payments"": [
|  { ""type"": ""cash"", ""sum"": 100.0 }
| ]
|}";

// Отправка задания в кассу
Драйвер.УстановитьСвойство("InputData", ТекстЗадания);
Если Драйвер.ProcessJson() <> 0 Тогда
    Сообщить("Ошибка печати: " + Драйвер.УстановитьСвойство("ErrorDescription"));
КонецЕсли;

Этот метод исключает зависимость от типовых модулей 1С и позволяет реализовать именно ту логику, которая нужна вашему бизнесу. Выясним причину популярности этого метода: он стабильно работает как на 32-битных, так и на 64-битных клиентах платформы.

Вариант 3: Интеграция через HTTP-сервис (Middleware)

Выясним, как поступить, если ваша конфигурация 1С очень старая (например, 7.7 или 8.0/8.1) и работа с современными DLL затруднена. В этом случае идеальным решением станет использование промежуточного ПО, такого как KKM-Server или встроенные Web-серверы драйверов.

При такой архитектуре 1С не общается с кассой напрямую. Вместо этого программа отправляет стандартный HTTP-запрос на локальный или удаленный сервер печати. Рассмотрим преимущества этого подхода:

Вариант 4: Перенос на типовую базу через расширение

Иногда самым рациональным решением будет не попытка внедрить кассу в старую систему, а использование типовой конфигурации (например, 1С:Розница или 1С:Бухгалтерия 3.0) в качестве «фискального принтера». Рассмотрим, как это реализовать:

  1. Ваша самописная база обменивается данными с типовой (через COM-соединение, веб-сервисы или файлы).
  2. В типовой базе создается документ (например, «Чек ККМ»), который автоматически пробивается на подключенной кассе.
  3. Результат (номер чека, фискальный признак) возвращается обратно в вашу основную базу.

Этот путь позволяет полностью снять с программиста головную боль по поддержке ФФД, маркировки и требований регуляторов, переложив ее на плечи разработчиков типовых решений «1С».

Важные аспекты: Маркировка и теги

Проанализируем ситуацию с продажей маркированного товара (Честный ЗНАК). С переходом на ФФД 1.2 требования к передаче данных в ККТ ужесточились. Теперь недостаточно просто передать название товара. При продаже маркированной продукции необходимо передавать код маркировки в специальном формате (тег 1162 или 1163).

Если вы пишете интеграцию самостоятельно, вам придется реализовать алгоритм разбора DataMatrix и передачи его в структуру JSON. В случае работы через БПО или CEL, эти механизмы уже встроены, что является серьезным аргументом в пользу использования готовых библиотек.

Резюмируем: выбор способа интеграции зависит от ваших навыков и состояния текущей системы. Если конфигурация позволяет использовать управляемые формы и современные компоненты — выбирайте АТОЛ JSON API. Если система критически устарела — смотрите в сторону HTTP-сервисов или связки с типовой базой.

← На главную