При отладке кассового оборудования или автоматизации торговых точек с разным парком кассовой техники часто возникает необходимость подключить к одному компьютеру оборудование разных производителей — например, ККТ Атол и Штрих-М. Разберем подробнее, могут ли возникнуть аппаратные и программные конфликты при установке двух системных драйверов на одну операционную систему и как правильно доработать 1С 7.7 («Торговля и Склад») для корректной работы с новым форматом фискальных данных (ФФД 1.05).
На уровне операционной системы драйверы ККТ от компаний Атол и Штрих-М представляют собой изолированные динамические библиотеки (DLL) и службы Windows. Они используют разное пространство имен в реестре и не перехватывают системные функции друг друга. Драйверы Атол и Штрих-М не конфликтуют между собой и могут быть одновременно установлены на одну рабочую станцию.
Однако на практике при использовании виртуальных и физических COM-портов возникают ошибки захвата ресурсов. Рассмотрим основные причины таких проблем:
ЗагрузитьВнешнююКомпоненту() и подключении к устройству драйвер открывает порт и удерживает его до явного метода отключения или закрытия сеанса программы.Проанализируем шаги, которые необходимо выполнить для разграничения ресурсов между кассами разных вендоров:
COM1/COM2 для оборудования Штрих-М, а COM3/COM4 — для фискальных регистраторов Атол.settings.xml обязательно укажите именно второй служебный порт, чтобы служба не блокировала основной порт управления.Выясним важные технические ограничения при выборе драйвера ДТО (Драйверы Торгового Оборудования) для работы под Windows XP:
Платформа 1С 7.7 работает как 32-битное приложение, поэтому внешние компоненты всех касс должны быть зарегистрированы через 32-разрядный регистратор. При этом 10-я ветка драйверов Атол (DTO 10, объект AddIn.Fptr10) требует современные библиотеки Visual C++ Redistributable 2015–2019 и свежий .NET Framework, которые не поддерживаются в Windows XP.
Решение: Для операционной системы Windows XP предельной рабочей веткой остаются драйверы Атол ДТО 8.x (например, 8.16.x). Если требуется использование более новых библиотек, рекомендуется организовать вызовы к удаленному веб-серверу ККТ через HTTP-запросы из 1С 7.7.
При обновлении прошивки кассы (например, Атол 30Ф) и замене фискального накопителя устройство переводится на формат фискальных данных 1.05. В отличие от версии 1.0, формат ФФД 1.05 требует обязательно передавать дополнительные реквизиты в чеке.
Проанализируем обязательные параметры, которые необходимо добавить в программный код печати чека 1С 7.7:
Посмотрим на пример формирования структуры позиции товарной строки в коде 1С 7.7 для драйвера Атол ДТО 8:
// Создание объекта драйвера Атол ДТО 8
Драйвер = СоздатьОбъект("AddIn.FPrint");
// Регистрация кассира с ИНН
Драйвер.AttrNumber = 1021; // ФИО кассира
Драйвер.AttrValue = "Иванов И.И.";
Драйвер.WriteAttribute();
Драйвер.AttrNumber = 1203; // ИНН кассира
Драйвер.AttrValue = "770123456789";
Драйвер.WriteAttribute();
Драйвер.RegisterFiskalSign();
// Передача позиций чека с реквизитами ФФД 1.05
Драйвер.Name = "Товарная позиция (Образец)";
Драйвер.Price = 100.00;
Драйвер.Quantity = 1;
Драйвер.Department = 1;
// Установка признака способа расчета (1 - Полный расчет)
Драйвер.AttrNumber = 1214;
Драйвер.AttrValue = 1;
Драйвер.WriteAttribute();
// Установка признака предмета расчета (1 - Товар)
Драйвер.AttrNumber = 1212;
Драйвер.AttrValue = 1;
Драйвер.WriteAttribute();
Драйвер.Registration();
Чтобы избежать аппаратных сбоев, когда в рамках одной сессии 1С необходимо попеременно обращаться к оборудованию Штрих-М и Атол, в коде модулей обслуживания следует строго придерживаться алгоритма «Подключил $\rightarrow$ Выполнил операцию $\rightarrow$ Отключил»:
// Алгоритм безопасной печати
Функция НапечататьЧекНаАтол()
ECR = СоздатьОбъект("AddIn.FPrint");
// Установка параметров связи
ECR.DeviceEnabled = 1; // Занимаем COM-порт
Если ECR.ResultCode <> 0 Тогда
Сообщить("Ошибка открытия порта Атол: " + ECR.ResultDescription);
Возврат 0;
КонецЕсли;
// Выполнение фискальных операций
// ... логика печати чека ...
// Обязательное освобождение COM-порта для других программ
ECR.DeviceEnabled = 0;
Возврат 1;
КонецФункции
Соблюдение правил корректной разводки COM-портов, своевременное освобождение ресурсов в коде 1С 7.7 и передача всех обязательных тегов ФФД 1.05 позволят обеспечить стабильную и бесперебойную работу ККТ обоих производителей на одной рабочей станции.