Как перейти с драйвера Атол ДТО 8/9 на ДТО 10 в 1С 7.7: подробное руководство по подключению, изменению API и оптимизации работы

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

Рано или поздно перед каждым разработчиком и системным администратором, обслуживающим исторические конфигурации на платформе 1С 7.7 («клюшки»), встает задача обновления торгового оборудования. Драйверы Атол ДТО 8 и 9 версий давно признаны устаревшими и не поддерживаются производителем. С введением новых законодательных требований, таких как обязательная маркировка товаров («Честный Знак»), разрешительный режим на кассах (ФФД 1.2), а также появление новых ставок НДС (например, 5% и 7% для упрощенной системы налогообложения с 2025 года), старые версии драйверов окончательно теряют свою актуальность. Единственным рабочим решением становится переход на Атол ДТО 10.

В этой статье мы подробно разберем, как правильно подружить современный драйвер Атол ДТО 10 с платформой 1С 7.7, преодолеем технические ограничения совместимости, проанализируем новую философию программирования API драйвера и решим классическую проблему медленной печати чеков при работе в терминальном режиме (RDP).

Почему переход на ДТО 10 неизбежен?

Прежде чем приступать к кодингу, давайте выясним ключевые причины, почему оставаться на ДТО 8/9 больше невозможно:

  1. Прекращение поддержки: Компания Атол полностью прекратила развитие линеек ДТО 8 и 9. Любые изменения в форматах фискальных документов (ФФД) или правилах работы ККТ не будут отражены в старых драйверах.
  2. Платформа 5.0: Современные кассовые аппараты Атол работают под управлением внутреннего программного обеспечения «Платформа 5.0». Корректная и стабильная работа с этой платформой гарантируется исключительно при использовании драйвера 10-й версии.
  3. Маркировка и ФФД 1.2: Для работы с маркированными товарами в разрешительном режиме требуется отправка и проверка фискальных признаков кодов маркировки перед пробитием чека. Реализовать эту цепочку на старых драйверах в среде 1С 7.7 технически невозможно.

---

Шаг 1. Особенности подключения COM-объекта в 1С 7.7

При первой попытке подключить новую библиотеку стандартным для 1С 7.7 методом программисты неизбежно сталкиваются с проблемой. Попытка выполнить привычную команду:

ЗагрузитьВнешнююКомпоненту("addin_fptr10_x86.dll");

завершится критической ошибкой: «Отсутствует интерфейс IInitDone». Выясним причину этой ошибки. Дело в том, что библиотека ДТО 10 не проектировалась как традиционная внешняя компонента по технологии 1С 7.7. Это полноценный COM/ActiveX-объект. Следовательно, инициализировать его нужно совершенно иначе.

Разберем по шагам правильный алгоритм подключения:

  1. Поскольку платформа 1С 7.7 является строго 32-разрядным приложением, нам потребуется именно 32-битная версия библиотеки драйвера. Даже если ваша операционная система Windows имеет разрядность x64, для 1С нужно брать файл addin_fptr10_x86.dll из каталога установки ДТО 10.
  2. Данную библиотеку необходимо предварительно зарегистрировать в операционной системе Windows. Для этого запустите командную строку (cmd) обязательно от имени администратора и выполните следующую команду: regsvr32 "C:\ПутьКДрайверу\addin_fptr10_x86.dll"
  3. После успешной регистрации библиотеки в системе мы можем инициализировать объект в коде 1С 7.7 напрямую через механизм OLE/COM. Код подключения будет выглядеть следующим образом:

Попытка
    Касса = СоздатьОбъект("AddIn.Fptr10");
Исключение
    Предупреждение("Не удалось инициализировать драйвер Атол ДТО 10! Проверьте регистрацию DLL.");
    Возврат;
КонецПопытки;

---

Шаг 2. Кардинальные изменения в логике программирования (Новое API)

Если в ДТО 8/9 под каждое действие существовало свое именованное свойство или метод (например, присвоить значение свойству Драйвер.Name = "Товар", а затем вызвать метод Драйвер.Registration()), то в ДТО 10 архитектура взаимодействия изменилась кардинально. Разработчики Атол перешли на универсальную параметрическую модель работы.

Рассмотрим подробнее принцип работы нового API:

Посмотрим на конкретный пример регистрации позиции товара в чеке. Для выполнения этой простой операции нам потребуется передать драйверу целый стек параметров:


// Пример регистрации позиции товара в ДТО 10 для 1С 7.7
Касса.setParam(Касса.LIBFPTR_PARAM_COMMODITY_NAME, "Колбаса Докторская"); // Название товара
Касса.setParam(Касса.LIBFPTR_PARAM_PRICE, 450.00);                       // Цена за единицу
Касса.setParam(Касса.LIBFPTR_PARAM_QUANTITY, 1.5);                       // Количество (дробное)
Касса.setParam(Касса.LIBFPTR_PARAM_TAX_TYPE, Касса.LIBFPTR_TAX_NO);      // Тип налога (без НДС)

// Регистрируем позицию на фискальном накопителе
Касса.registerPosition();

Как мы видим, старый код обработок обслуживания придется полностью отправить в утиль и переписать логику формирования чека буквально с нуля. Однако программисты отмечают, что новая логика работы со стеком параметров гораздо более гибкая и прозрачная, так как исключает случайное наложение старых неразобранных свойств драйвера на новые операции.

---

Шаг 3. Решение проблем работы по RDP (Удаленный рабочий стол)

Очень часто кассы подключаются к локальным компьютерам пользователей, а сама база 1С 7.7 крутится на удаленном терминальном сервере. Стандартный способ проброса COM-портов через свойства RDP-подключения в ДТО 10 показывает себя крайне неэффективно:

Проанализируем современное и стабильное решение этой проблемы, которое разработчики Атол встроили непосредственно в дистрибутив ДТО 10. Это RPC-сервер (Сервер удаленного подключения ККТ).

Разберем по шагам схему его настройки:

  1. На локальном компьютере, к которому ККТ физически подключена по USB-кабелю, устанавливается служба «Сервер удаленного подключения ККТ» (входит в стандартный пакет установки Атол ДТО 10).
  2. Эта служба запускается локально и начинает транслировать кассовый аппарат в локальную сеть по сетевому протоколу TCP/IP (по умолчанию используется порт 6220).
  3. На терминальном сервере в настройках подключения ККТ в 1С 7.7 мы полностью отказываемся от использования COM-портов. Вместо этого в параметрах связи драйвера мы указываем:
    • Тип подключения: TCP/IP (или Сеть).
    • IP-адрес: Сетевой IP-адрес локального компьютера, к которому подключена касса.
    • Порт: 6220.

Такой подход полностью решает проблему «отваливающихся» портов, гарантирует мгновенный отклик кассы и позволяет печатать чеки со скоростью локального подключения (чек на сотни позиций вылетает за несколько секунд). Кроме того, это позволяет нескольким пользователям терминального сервера бесконфликтно использовать один физический кассовый аппарат по очереди.

---

Шаг 4. Ограничения работы через Web-сервер (WebRequests)

В ДТО 10 присутствует еще один альтернативный режим работы — через локальный Web-сервер ККТ, принимающий задания на печать чеков в формате JSON. Это действительно удобно для интеграции, так как позволяет отправлять структурированные JSON-пакеты напрямую на порт веб-сервиса.

Однако здесь существует критически важное ограничение, о котором необходимо знать заранее. В современных прошивках ККТ Атол (Платформа 5.0) полноценная работа встроенного веб-сервера требует наличия платной лицензии, которую необходимо регулярно продлевать. Без этой лицензии отправка чеков через JSON-запросы будет блокироваться.

Именно поэтому для интеграции с 1С 7.7 большинство специалистов выбирают классический COM-объект в связке с RPC-сервером удаленного подключения Атол, так как данный функционал является абсолютно бесплатным и поставляется в базовом комплекте драйвера.

---

Шаг 5. Получение важных данных из ККТ (Номер чека и ФН)

В процессе работы часто требуется получить от кассового аппарата фискальные данные пробитого чека (например, номер чека, номер ФД или ФПД) для сохранения их в информационной базе 1С 7.7. В ДТО 10 для этих целей используются два различных метода, которые разработчики часто путают:

Посмотрим на пример кода получения номера фискального документа (номера чека) после успешного закрытия чека:


// Устанавливаем тип запроса для получения информации о последнем документе
Касса.setParam(Касса.LIBFPTR_PARAM_DATA_TYPE, Касса.LIBFPTR_DT_STATUS);
Касса.queryData();

// Извлекаем номер документа из полученного стека параметров
НомерДокумента = Касса.getParamInt(Касса.LIBFPTR_PARAM_DOCUMENT_NUMBER);
Сообщить("Чек успешно пробит. Номер документа: " + НомерДокумента);

---

Подведем итоги

Переход с устаревших ДТО 8/9 на ДТО 10 в среде 1С 7.7 — задача вполне решаемая и необходимая. Несмотря на то что логику печати чеков в обработках обслуживания придется полностью переписать из-за перехода на параметрическое API, разработчик получает современное, быстрое и отказоустойчивое решение. Использование 32-разрядного COM-объекта в связке с сетевым RPC-сервером Атол обеспечивает великолепную скорость печати даже в сложных терминальных средах RDP, позволяя вашей исторической системе 1С 7.7 полностью соответствовать всем актуальным требованиям современного законодательства.

← На главную