При подключении фискальных регистраторов и онлайн-касс АТОЛ (например, моделей АТОЛ 55Ф, 22Ф и других) к платформе 1С 7.7 разработчики часто сталкиваются с неприятным поведением: при каждом старте сеанса конфигурация сбрасывает выбранную модель устройства на значение по умолчанию. В результате кассиру или администратору приходится каждый раз вручную открывать окно свойств драйвера, заново выбирать порт, модель аппарата и параметры связи.
Разберем причины такого сбоя, выясним разницу между библиотеками драйверов торгового оборудования АТОЛ и рассмотрим правильный способ инициализации объекта в коде 1С 7.7.
Проанализируем ситуацию: в дистрибутиве драйверов торгового оборудования (ДТО 8) поставляется несколько разных внешних компонент и программных интерфейсов, предназначенных для разных версий платформы «1С:Предприятие»:
AddIn.FPrnM8 параметры не связываются с профилем пользователя 1С и при каждом запуске обращаются к нулевому дефолтному профилю устройства.Если в коде 1С 7.7 загружается компонента для «восьмерки» или создается общий OLE-объект AddIn.FPrnM8, настройки не подхватываются штатными диалогами платформы, что и приводит к постоянному сбросу параметров на модель по умолчанию.
Посмотрим на ошибочный вариант инициализации, который часто приводит к потере настроек:
// Ошибочный вариант: использование компоненты и объекта от 1С 8
итог = ЗагрузитьВнешнююКомпоненту("C:\Program Files\ATOL\Drivers8\Bin\FprnM1C82_54FZ.dll");
Если итог <> 0 Тогда
Попытка
ECR = СоздатьОбъект("AddIn.FPrnM8");
Исключение
Предупреждение("Ошибка при создании объекта AddIn.FPrnM8");
КонецПопытки;
КонецЕсли;
Разберем правильный вариант подключения. Для корректного сохранения параметров необходимо использовать библиотеку FprnM1C.dll и зарегистрированный объект AddIn.FprnM45:
// Корректный вариант для 1С 7.7
ПутьКДрайверу = "FprnM1C.dll"; // Если dll лежит в каталоге BIN платформы 1С 7.7
Если ЗагрузитьВнешнююКомпоненту(ПутьКДрайверу) <> 1 Тогда
// Если файла нет в каталоге платформы, пробуем абсолютный путь установки ДТО
ПутьКДрайверу = "C:\Program Files\ATOL\Drivers8\Bin\FprnM1C.dll";
Если ЗагрузитьВнешнююКомпоненту(ПутьКДрайверу) <> 1 Тогда
Предупреждение("Не удалось загрузить внешнюю компоненту FprnM1C.dll!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецЕсли;
Попытка
ECR = СоздатьОбъект("AddIn.FprnM45");
Исключение
Предупреждение("Не удалось создать объект торгового оборудования AddIn.FprnM45!");
СтатусВозврата(0);
Возврат;
КонецПопытки;
После смены программного идентификатора на AddIn.FprnM45 настройки драйвера становятся доступны для сохранения через стандартные механизмы торгового оборудования 1С 7.7, а выбранная модель ККТ перестает сбрасываться.
Параметры работы драйвера АТОЛ сохраняются в реестре операционной системы Windows. Если даже при использовании правильной компоненты параметры сбрасываются, проверим ветку реестра текущего пользователя:
HKEY_CURRENT_USER\Software\ATOL\Drivers\8.0\FprnM
Обратим внимание на следующие особенности:
VirtualStore.
ECR.Model = 67; // Код модели для АТОЛ 55Ф в ДТО 8
ECR.PortNumber = 3; // Номер COM-порта
ECR.BaudRate = 115200; // Скорость соединения
ECR.DeviceEnabled = 1; // Подключение к аппарату
Если ECR.ResultCode <> 0 Тогда
Сообщить("Ошибка подключения ККТ: " + ECR.ResultDescription);
КонецЕсли;
При тестировании кассовых доработок разработчики нередко переводят аппарат в нефискальный режим или режим чекового принтера. Важно учитывать, что при переходе в боевой фискальный режим поведение ККТ существенно меняется: