Почему 1С 7.7 не сохраняет настройки подключенной ККМ при перезапуске и как это исправить?

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

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

Рассмотрим подробно причины возникновения этой проблемы и разберем практические способы её решения.

Причина 1. Отсутствие вызова автоподключения оборудования при старте системы

В архитектуре подсистемы «Торговое оборудование» 1С 7.7 недостаточно просто настроить и сохранить параметры один раз. При старте нового сеанса программа не инициализирует внешние компоненты и параметры связи автоматически, если соответствующий вызов не прописан в глобальном модуле.

Разберем, как добавить автоподключение оборудования. Для этого необходимо открыть глобальный модуль конфигурации и в предопределенную процедуру ПриНачалеРаботыСистемы() добавить модальный вызов обработки торгового оборудования с режимом подключения:


Процедура ПриНачалеРаботыСистемы()
    // Инициализация и подключение торгового оборудования при запуске сеанса
    ОткрытьФормуМодально("Обработка.ТорговоеОборудование", "Подключить");
КонецПроцедуры

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

Причина 2. Ограничения прав доступа к системному каталогу Windows и UAC

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

ИмяФайлаНастройки = ФС.WindowsКаталог() + "\" + "1stRozn.txt";

Проанализируем, почему здесь могут возникать сбои:

  1. Ограничения прав записи: Учетная запись оператора Windows может не иметь прав на запись и редактирование файлов в каталоге C:\Windows.
  2. Виртуализация UAC (VirtualStore): При включенном контроле учетных записей (UAC) Windows перенаправляет запись из системной папки в каталог AppData\Local\VirtualStore текущего пользователя. В результате при запуске 1С под другой учетной записью или с другими правами программа не сможет прочитать ранее созданный файл.

Для предотвращения подобных сбоев рекомендуется изменить путь к файлу настроек в обработке торгового оборудования и глобальном модуле, перенеся его в каталог пользователя или каталог информационной базы:


// Использование персонального каталога пользователя 1С
ИмяФайлаНастройки = КаталогПользователя() + "1stRozn.txt";

// Или использование каталога информационной базы
// ИмяФайлаНастройки = КаталогИБ() + "1stRozn.txt";

Причина 3. Ошибки регистрации внешних компонент (DLL)

Так как платформа 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, что полностью исключит проблемы с записью во внешние файлы.

← На главную