При работе с нестандартными или сильно доработанными конфигурациями 1С, которые не базируются на Библиотеке стандартных подсистем (БСП), задача подключения онлайн-кассы становится нетривиальной. Разберем основные архитектурные подходы, которые позволяют подружить «нетленку» с современным торговым оборудованием в соответствии с требованиями 54-ФЗ. Рассмотрим каждый вариант — от внедрения готовых библиотек до написания собственного микросервиса.
Проанализируем возможность использования специализированных библиотек от фирмы «1С». Одним из наиболее актуальных решений является 1C:Библиотека подключаемого оборудования (БПО) или ее облегченная версия CEL (Cloud Electronics Library). Этот путь хорош тем, что в библиотеку уже заложены механизмы работы с большинством популярных моделей ККТ (АТОЛ, Штрих-М, Эвотор и др.).
Для интеграции нам потребуется:
CEL с портала поддержки пользователей.Преимущество этого метода в том, что при выходе новых форматов фискальных данных (ФФД), например, при переходе на 1.2, вам будет проще обновить встроенную библиотеку, чем переписывать собственный код формирования JSON-структуры чека.
Если внедрение тяжелой БПО кажется избыточным, рассмотрим более гибкий и «легкий» способ — прямое взаимодействие с драйвером ККТ. Современные драйверы, такие как АТОЛ 10.х, позволяют взаимодействовать с кассой не через сложные COM-объекты, а с помощью структурированных заданий в формате JSON.
Разберем алгоритм работы:
AddIn.Atol_KKT_10.Посмотрим на пример логики формирования задания:
// Создание объекта драйвера
Попытка
Драйвер = Новый ("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-битных клиентах платформы.
Выясним, как поступить, если ваша конфигурация 1С очень старая (например, 7.7 или 8.0/8.1) и работа с современными DLL затруднена. В этом случае идеальным решением станет использование промежуточного ПО, такого как KKM-Server или встроенные Web-серверы драйверов.
При такой архитектуре 1С не общается с кассой напрямую. Вместо этого программа отправляет стандартный HTTP-запрос на локальный или удаленный сервер печати. Рассмотрим преимущества этого подхода:
Иногда самым рациональным решением будет не попытка внедрить кассу в старую систему, а использование типовой конфигурации (например, 1С:Розница или 1С:Бухгалтерия 3.0) в качестве «фискального принтера». Рассмотрим, как это реализовать:
Этот путь позволяет полностью снять с программиста головную боль по поддержке ФФД, маркировки и требований регуляторов, переложив ее на плечи разработчиков типовых решений «1С».
Проанализируем ситуацию с продажей маркированного товара (Честный ЗНАК). С переходом на ФФД 1.2 требования к передаче данных в ККТ ужесточились. Теперь недостаточно просто передать название товара. При продаже маркированной продукции необходимо передавать код маркировки в специальном формате (тег 1162 или 1163).
Если вы пишете интеграцию самостоятельно, вам придется реализовать алгоритм разбора DataMatrix и передачи его в структуру JSON. В случае работы через БПО или CEL, эти механизмы уже встроены, что является серьезным аргументом в пользу использования готовых библиотек.
Резюмируем: выбор способа интеграции зависит от ваших навыков и состояния текущей системы. Если конфигурация позволяет использовать управляемые формы и современные компоненты — выбирайте АТОЛ JSON API. Если система критически устарела — смотрите в сторону HTTP-сервисов или связки с типовой базой.