Нам часто приходится сталкиваться с задачей интеграции нового оборудования или обновлением драйверов в наших самописных конфигурациях 1С. Одним из таких актуальных вопросов является добавление поддержки ККТ АТОЛ версии 10.х с фискальным накопителем, работающим по формату фискальных данных (ФФД) 1.2. При этом простое обновление Библиотеки подключаемого оборудования (БПО) до последних версий, например, с БПО 2.х до БПО 3.х, может привести к значительным сложностям и ошибкам в уже работающей конфигурации из-за капитальных изменений в структуре и API БПО. Рассмотрим, как решить эту задачу с минимальными изменениями и максимальной эффективностью.
Понимание проблемы: Почему обновление БПО бывает сложным
Когда мы говорим о самописных конфигурациях, мы понимаем, что каждый такой проект уникален. Изначально, возможно, наша конфигурация была разработана на базе старых версий БПО, например, БПО 2.1. Переход на БПО 3.0 и выше часто означает не просто замену нескольких модулей, а полную переработку логики взаимодействия с подключаемым оборудованием. Это связано с тем, что БПО 3.0 вносит существенные изменения в архитектуру, используемые объекты и методы, что затрагивает множество мест в коде, которые ранее обращались к БПО 2.х. Такая "капитальная" переделка требует значительных ресурсов и времени для адаптации, тестирования и исправления возникающих ошибок. Возникает естественное желание найти более модульное и менее инвазивное решение.
Ключевые требования для работы с АТОЛ 10.х и ФФД 1.2
Прежде чем погружаться в методы интеграции, давайте убедимся, что мы понимаем основные технические требования для корректной работы драйвера АТОЛ 10.х с ФФД 1.2. Эти моменты критически важны для успешной настройки любого из предложенных далее подходов.
Версия драйвера АТОЛ: Нам потребуется скачать и установить дистрибутив драйвера АТОЛ версии 10.10.6.0 или выше с официального сайта производителя. Более старые версии могут не поддерживать ФФД 1.2 в полной мере.
Компонент "Драйвер 1С": При установке драйвера АТОЛ обязательно необходимо установить специальный компонент под названием "Драйвер 1С". Этот компонент обеспечивает двухуровневую архитектуру взаимодействия: интеграционный компонент (предоставляемый 1С) перенаправляет вызовы к основному драйверу АТОЛ.
Разрядность драйвера и клиента 1С: Критически важно, чтобы разрядность устанавливаемого драйвера (32-бит или 64-бит) соответствовала разрядности клиента 1С, с которым будет работать касса. Например, если мы используем 64-битный клиент 1С, то и драйвер АТОЛ должен быть 64-битным.
Прошивка кассового аппарата: Сам фискальный регистратор должен аппаратно поддерживать ФФД 1.2. Для этого необходимо проверить и обновить прошивку ККТ до актуальной версии. Например, для фискальных регистраторов АТОЛ часто требуется прошивка версии 5.16.0 или выше для соответствия последним требованиям ФНС.
Совпадение ФФД: Формат фискальных данных (ФФД) в драйвере, в прошивке ККТ и в программе 1С должен совпадать. Для полного соответствия ФФД 1.2 и последним требованиям ФНС рекомендуется обновлять БПО до версии 3.2.7.21 или выше, хотя, как мы уже говорили, это может быть не всегда просто. Важно знать, что в некоторых свежих типовых конфигурациях 1С поддержка драйверов АТОЛ 10.х для ФФД 1.05 может быть исключена в пользу ФФД 1.2.
Решение 1: Использование веб-сервера АТОЛ (ATOL Web Server)
Одним из наиболее эффективных и модульных подходов для работы с ККТ АТОЛ в самописных конфигурациях является использование веб-сервера АТОЛ (ATOL Web Server). Этот подход позволяет значительно снизить зависимость вашей конфигурации от постоянных обновлений БПО и обеспечить более гибкое взаимодействие с оборудованием.
Как это работает?
Установка веб-сервера: ATOL Web Server устанавливается на том компьютере, к которому физически подключена касса (например, по USB или COM-порту). Он включается в дистрибутив драйвера АТОЛ, и его установка активируется специальным флажком при выборе компонентов во время инсталляции драйвера. После установки на компьютере появится служба "ATOL Fiscal Printer Web-Server".
Взаимодействие по сети: Наша конфигурация 1С, независимо от того, запущена ли она на том же компьютере, на другом ПК в локальной сети или на терминальном сервере, может взаимодействовать с ККТ через этот веб-сервер по протоколу TCP/IP. Запросы к веб-серверу отправляются в формате JSON.
Преимущества модульности и скорости:
Модульность: Этот подход значительно повышает модульность системы. Мы взаимодействуем с внешним сервисом по стандартному HTTP-протоколу, а не напрямую с низкоуровневыми компонентами драйвера. Это означает, что изменения в драйвере АТОЛ или БПО гораздо меньше влияют на нашу конфигурацию.
Асинхронность: 1С не ожидает напрямую результата печати чека. Вместо этого она отправляет команду в очередь веб-сервера, что может улучшить скорость работы пользовательского интерфейса, так как операции с ККТ выполняются фоново.
Малое изменение API: Как показывает практика, API самого веб-сервера АТОЛ менялся минимально (например, с v1 на v2, где изменения сводились к добавлению GUID кассы в тексты запросов). Это существенно упрощает поддержку кода взаимодействия.
Важный нюанс – лицензирование: Стоит учесть, что АТОЛ ввел ограничение: для работы в этом режиме требуется ежемесячное продление лицензии непосредственно на ККТ. Это может стать дополнительным расходом, который необходимо учитывать при принятии решения.
Для реализации этого решения нам потребуется написать в 1С код, который будет формировать JSON-запросы и отправлять их на IP-адрес/порт ATOL Web Server. Например, мы можем использовать стандартные объекты 1С для работы с HTTP-запросами.
// Пример упрощенного JSON-запроса для печати чека (структура может отличаться в зависимости от версии API Web Server)
ЗапросККТ = Новый Структура();
ЗапросККТ.Вставить("Command", "PrintReceipt");
ЗапросККТ.Вставить("Receipt", Новый Структура());
ЗапросККТ.Receipt.Вставить("Type", "Sale");
ЗапросККТ.Receipt.Вставить("Items", Новый Массив());
// Добавляем позиции чека
Позиция = Новый Структура();
Позиция.Вставить("Name", "Товар 1");
Позиция.Вставить("Price", 100);
Позиция.Вставить("Quantity", 1);
Позиция.Вставить("Amount", 100);
ЗапросККТ.Receipt.Items.Добавить(Позиция);
// Сериализуем структуру в JSON
СтрокаJSON = СериализаторJSON.Записать(ЗапросККТ);
// Создаем HTTP-запрос
HTTPСоединение = Новый HTTPСоединение("localhost", , , , , , Новый ЗащищенноеСоединениеOpenSSL(), 10); // Адрес и порт Web Server
HTTPЗапрос = Новый HTTPЗапрос("/v2/requests", СтрокаJSON); // Путь для запросов
HTTPЗапрос.УстановитьЗаголовок("Content-Type", "application/json");
// Отправляем запрос
Попытка
HTTPОтвет = HTTPСоединение.Отправить(HTTPЗапрос);
Если HTTPОтвет.КодСостояния = 200 Тогда
// Обработка успешного ответа
Результат = HTTPОтвет.ПолучитьТелоКакСтроку();
// Разбираем JSON-ответ, например, чтобы получить ID запроса или статус
Иначе
// Обработка ошибок HTTP
Сообщить("Ошибка HTTP: " + HTTPОтвет.КодСостояния);
КонецЕсли;
Исключение
Сообщить("Ошибка отправки запроса: " + ОписаниеОшибки());
КонецПопытки;
Обратите внимание, что приведенный код является лишь примером. Реальная структура JSON-запросов и ответов для ATOL Web Server будет зависеть от его версии API и конкретных операций, которые мы хотим выполнить с ККТ.
Решение 2: Обновление до БПО 2.1 вместо БПО 3.0
Если радикальный переход на Web Server кажется слишком сложным или лицензионные ограничения неприемлемы, мы можем рассмотреть менее затратный вариант. Зачастую, поддержка АТОЛ 10.х (с ФФД 1.2) уже реализована в последних релизах БПО 2.1. Это может стать хорошим промежуточным решением, так как переход внутри одной мажорной версии БПО (с 2.х на 2.1) обычно требует гораздо меньше доработок, чем переход на новую мажорную версию (с 2.х на 3.х).
Преимущества:
Меньше изменений: Структура и API БПО 2.1 гораздо ближе к более ранним версиям БПО 2.х, что минимизирует объем работ по адаптации нашей самописной конфигурации.
Быстрое решение: Мы сможем быстрее получить рабочее решение, обновив только необходимые компоненты, связанные с БПО 2.1.
Недостатки:
Ограниченная поддержка: Важно понимать, что вторая редакция БПО уже не поддерживается фирмой "1С". Это означает, что в какой-то момент нам все равно придется переходить на БПО 3.х, чтобы получать актуальные обновления и поддержку новых требований законодательства. Это решение лишь откладывает неизбежное, но может дать нам необходимое время.
Решение 3: Использование Сервера удаленного подключения АТОЛ (RPC Server)
Если наша конфигурация 1С работает на терминальном сервере, и к одной ККТ требуется одновременный доступ нескольких клиентов, нам может быть полезен Сервер удаленного подключения АТОЛ (RPC Server).
Как это работает?
Установка на ПК с ККТ: Драйверы АТОЛ и Сервер удаленного подключения устанавливаются на компьютер, к которому физически подключена ККТ.
Установка на ПК с 1С: На терминальный сервер (или компьютер с клиентом 1С) также устанавливается драйвер АТОЛ, и его файлы копируются в папку bin платформы 1С.
Взаимодействие: Клиенты 1С на терминальном сервере будут обращаться к установленному на них драйверу, который, в свою очередь, будет взаимодействовать с Сервером удаленного подключения, а тот уже — с физической ККТ. Этот механизм позволяет нескольким клиентам одновременно работать с одной ККТ, управляя очередностью запросов.
Этот подход также обеспечивает централизованное управление ККТ и позволяет разнести компоненты по разным машинам, что удобно для серверных архитектур.
Решение 4: Прямое подключение ККТ с ручным копированием файлов
Если ККТ подключена непосредственно к компьютеру, на котором работает 1С (то есть мы не используем терминальный сервер и не планируем сетевое взаимодействие через веб-сервер), мы можем использовать метод прямого подключения с ручным копированием необходимых файлов.
Шаги реализации:
Установка драйвера: Установите полный дистрибутив драйвера АТОЛ 10.х на компьютер, к которому подключена ККТ. Убедитесь, что установлен компонент "Драйвер 1С".
Копирование DLL-файлов: Найдите необходимые DLL-файлы драйвера АТОЛ. Обычно они расположены в папках типа C:\Program Files (x86)\ATOL\Drivers10\KKT\USB_Drivers или аналогичных, в зависимости от типа подключения и версии драйвера. Скопируйте эти DLL-файлы (и, возможно, другие компоненты, требуемые драйвером) в каталог bin вашей установленной платформы 1С (например, C:\Program Files\1cv8\8.3.18.1289\bin).
Настройка в 1С: После копирования файлов вам потребуется настроить подключение ККТ в вашей конфигурации 1С через соответствующую обработку обслуживания. Мы можем использовать стандартные механизмы работы с подключаемым оборудованием, которые уже есть в нашей конфигурации, или адаптировать их для прямого вызова функций драйвера через COMОбъект.
Этот метод дает нам полный контроль, но требует точного знания, какие файлы и куда необходимо скопировать, а также как настроить взаимодействие в 1С. Он наименее модульный и может быть подвержен проблемам при обновлении платформы 1С или драйвера АТОЛ.
Решение 5: Разработка или адаптация собственной обработки обслуживания (.epf)
Платформа 1С взаимодействует с оборудованием через специальные внешние обработки, называемые "обработками обслуживания" (файлы с расширением .epf). Если ни один из вышеперечисленных вариантов не подходит или мы стремимся к максимальному контролю и независимости, мы можем разработать или адаптировать собственную обработку обслуживания.
Подход:
Прямое взаимодействие: Наша самописная обработка будет напрямую обращаться к функциям драйвера АТОЛ, используя, например, COMОбъект для взаимодействия с установленными компонентами драйвера.
Минуя БПО: Этот подход позволяет полностью обойти стандартные, возможно, слишком "тяжелые" или неподходящие обновления БПО, используя только те функции драйвера, которые нам действительно необходимы.
Усилия по разработке и поддержке: Такой путь предоставляет наибольший контроль над процессом, но требует значительных усилий по разработке, отладке и последующей поддержке этой обработки. Мы должны будем самостоятельно реализовывать всю логику взаимодействия с ККТ, обработку ошибок, получение статусов и т.д.
Это решение подойдет для высокоспециализированных систем, где есть ресурсы для собственной разработки и потребность в уникальном поведении ККТ.
Общие рекомендации по настройке и проверке
Независимо от выбранного нами подхода, есть несколько общих рекомендаций, которые помогут нам обеспечить успешную интеграцию и стабильную работу ККТ.
Используем последнюю версию драйвера: Всегда рекомендуется использовать самую свежую версию драйвера АТОЛ, доступную на официальном сайте, чтобы обеспечить максимальную совместимость и доступ к новым функциям или исправлениям.
Тестируем подключение:
После установки драйвера и физического подключения ККТ обязательно выполним "Тест драйвера ККТ" – это утилита, поставляемая с драйвером АТОЛ. Она поможет убедиться, что драйвер видит ККТ и может с ней взаимодействовать.
Затем выполним "Тест подключения" в самой 1С (в разделе настройки подключаемого оборудования), чтобы удостовериться, что 1С корректно взаимодействует с драйвером.
Указываем часовую зону: В настройках ККТ в 1С (или непосредственно в драйвере) нам необходимо указать правильную часовую зону кассового места. Это критично для корректного формирования фискальных документов и их передачи в ОФД.
Выбираем правильный драйвер в 1С: В нашей конфигурации 1С, в разделе "Подключаемое оборудование", нам следует выбрать тип оборудования "ККТ с передачей данных" и указать драйвер "АТОЛ:ККТ с передачей данных в ОФД (54-ФЗ) 10.х". Это позволит 1С использовать корректный интеграционный компонент для взаимодействия с драйвером АТОЛ 10.х.
Таким образом, мы видим, что задача добавления поддержки драйвера АТОЛ 10.х с ФФД 1.2 в самописную конфигурацию 1С имеет несколько путей решения. Выбор конкретного подхода зависит от множества факторов: от сложности нашей конфигурации, доступных ресурсов, требований к модульности и асинхронности, а также от готовности к дополнительным лицензионным расходам. Важно тщательно проанализировать каждый вариант и выбрать тот, который наилучшим образом соответствует нашим задачам и возможностям.