При доработке нетиповых или самописных конфигураций на платформе 1С:Предприятие 7.7 для работы с онлайн-кассами (ККТ/ККМ) часто переносят подсистему «Торговое оборудование» из типовой конфигурации «Торговля и Склад». Однако после успешной настройки кассы, печати чеков и отправки данных ОФД разработчики часто сталкиваются с проблемой: при закрытии программы и повторном входе параметры ККМ сбрасываются, и оборудование приходится подключать вручную заново.
Рассмотрим подробно причины возникновения этой проблемы и разберем практические способы её решения.
В архитектуре подсистемы «Торговое оборудование» 1С 7.7 недостаточно просто настроить и сохранить параметры один раз. При старте нового сеанса программа не инициализирует внешние компоненты и параметры связи автоматически, если соответствующий вызов не прописан в глобальном модуле.
Разберем, как добавить автоподключение оборудования. Для этого необходимо открыть глобальный модуль конфигурации и в предопределенную процедуру ПриНачалеРаботыСистемы() добавить модальный вызов обработки торгового оборудования с режимом подключения:
Процедура ПриНачалеРаботыСистемы()
// Инициализация и подключение торгового оборудования при запуске сеанса
ОткрытьФормуМодально("Обработка.ТорговоеОборудование", "Подключить");
КонецПроцедуры
После добавления этой строки при запуске 1С 7.7 подсистема автоматически считает сохраненную конфигурацию оборудования и восстановит связь с фискальным регистратором.
Типовой механизм из конфигурации «Торговля и Склад» по умолчанию сохраняет файл параметров подключения (например, 1stRozn.txt) в системную папку Windows, определяемую с помощью функции ФС.WindowsКаталог(). Стандартный фрагмент кода выглядит следующим образом:
ИмяФайлаНастройки = ФС.WindowsКаталог() + "\" + "1stRozn.txt";
Проанализируем, почему здесь могут возникать сбои:
C:\Windows.AppData\Local\VirtualStore текущего пользователя. В результате при запуске 1С под другой учетной записью или с другими правами программа не сможет прочитать ранее созданный файл.Для предотвращения подобных сбоев рекомендуется изменить путь к файлу настроек в обработке торгового оборудования и глобальном модуле, перенеся его в каталог пользователя или каталог информационной базы:
// Использование персонального каталога пользователя 1С
ИмяФайлаНастройки = КаталогПользователя() + "1stRozn.txt";
// Или использование каталога информационной базы
// ИмяФайлаНастройки = КаталогИБ() + "1stRozn.txt";
Так как платформа 1С 7.7 является 32-разрядной (x86), драйвер фискального регистратора или ККТ должен быть корректно зарегистрирован в операционной системе через 32-битный регистратор. Если библиотека драйвера не зарегистрирована для всех пользователей, вызов ЗагрузитьВнешнююКомпоненту() при старте сеанса вернет ошибку, и статус подключения сбросится.
Выполним регистрацию библиотеки под правами администратора в командной строке:
C:\Windows\SysWOW64\regsvr32.exe "C:\PathToDriver\DriverKKT.dll"
Чтобы избежать зависимости от внешних текстовых файлов конфигурации и структуры типовой подсистемы торгового оборудования, можно вызывать COM-объект драйвера кассы напрямую из модуля документа или формы чека.
Рассмотрим пример прямой инициализации объекта драйвера:
Перем ДрайверККТ;
Процедура ПодключитьКассу()
Если ЗагрузитьВнешнююКомпоненту("FprnM8.dll") = 0 Тогда
Сообщить("Ошибка загрузки внешней компоненты ККТ!");
Возврат;
КонецЕсли;
ДрайверККТ = СоздатьОбъект("AddIn.FprnM8");
// Установка параметров подключения (номер COM-порта и скорость)
ДрайверККТ.ComNumber = 1;
ДрайверККТ.BaudRate = 115200;
Если ДрайверККТ.Connect() <> 0 Тогда
Сообщить("Не удалось установить связь с ККТ!");
КонецЕсли;
КонецПроцедуры
Хранение настроек подключения в таком случае можно вынести в константы или справочники информационной базы 1С 7.7, что полностью исключит проблемы с записью во внешние файлы.