Как получить драйвер оборудования в 1С:Бухгалтерия 3.0 после обновления?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

При обновлении конфигурации «1С:Бухгалтерия предприятия 3.0» на актуальные релизы (начиная с 3.0.173 и выше) многие разработчики сталкиваются с серьезной проблемой: привычный программный код для работы с оборудованием перестает работать. Ошибка «Переменная не определена (глПодключаемоеОборудование)» ломает внешние обработки и расширения, которые годами использовали эту глобальную переменную для доступа к драйверам. Разберем подробно, почему это произошло и как переписать код под актуальные требования Библиотеки подключаемого оборудования (БПО).

Выясняем причину изменений

Проанализируем ситуацию: в старых версиях БПО при запуске системы в модуле управляемого приложения инициализировалась глобальная переменная глПодключаемоеОборудование. Она хранила в себе кэш всех подключенных устройств и объектов драйверов. Однако такая модель имела существенный недостаток — избыточное потребление памяти при старте системы, даже если пользователь не планировал работать с кассой или сканером штрихкодов.

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

Использование актуального API: МенеджерОборудованияКлиент

Для замены старого кода нам необходимо обратиться к программному интерфейсу общих модулей. Основным модулем для работы на стороне клиента теперь является МенеджерОборудованияКлиент. Если вам требуется получить объект драйвера по его идентификатору, мы больше не обращаемся к коллекциям напрямую. Рассмотрим правильный алгоритм получения объекта драйвера (AddIn).

В новых версиях получение объекта драйвера выполняется через специализированные методы, которые самостоятельно проверяют наличие компоненты в системе и при необходимости устанавливают ее. Разберем пример кода для получения объекта драйвера:


// Вместо старого обращения к глПодключаемоеОборудование
// Используем методы МенеджерОборудованияКлиент

ИдентификаторДрайвера = "ОбщийДрайверККТ"; // Пример идентификатора
ОбъектДрайвера = Неопределено;

// В современных БПО объект драйвера зачастую получается 
// в процессе подключения устройства
Результат = МенеджерОборудованияКлиент.ПолучитьОбъектДрайвера(ИдентификаторДрайвера);

Если Результат <> Неопределено Тогда
    ОбъектДрайвера = Результат;
КонецЕсли;

Рекомендуемый способ: Подключение через МенеджерОборудования

Проанализируем задачу: если ваша цель — выполнить операцию (например, напечатать чек или считать штрихкод), крайне не рекомендуется пытаться «выудить» объект драйвера вручную. Правильный путь в БП 3.0 — это использование стандартного механизма подключения устройства. Посмотрим на этот процесс по шагам:

  1. Получение списка подключений: Сначала необходимо определить, какое устройство подключено для текущего рабочего места.
  2. Вызов метода подключения: Метод ПодключитьУстройство вернет структуру, содержащую уже готовый к работе экземпляр драйвера для печати чека.

Рассмотрим пример реализации такого подхода в коде:


ПараметрыПодключения = Неопределено;
ИдентификаторУстройства = "Ваш_Идентификатор_Из_Справочника";

// Вызываем стандартный метод подключения
РезультатПодключения = МенеджерОборудованияКлиент.ПодключитьУстройство(
    Неопределено, 
    ИдентификаторУстройства, 
    ПараметрыПодключения
);

Если РезультатПодключения Тогда
    // Теперь объект драйвера доступен в параметрах подключения
    ОбъектДрайвера = ПараметрыПодключения.ОбъектДрайвера;
    // Можно выполнять методы драйвера, например:
    // ОбъектДрайвера.ПечатьЧека(...);
Иначе
    Сообщить("Не удалось подключить устройство: " + ПараметрыПодключения.ОписаниеОшибки);
КонецЕсли;

Где теперь искать данные о драйверах (Справочники)

Если раньше драйверы были частью жестко заданной коллекции в коде, то теперь они полностью вынесены в данные. Выясним, где хранятся эти настройки. В «1С:Бухгалтерия 3.0» за это отвечают два ключевых справочника:

Если вам нужно программно подготовить драйвер к установке из справочника, следует использовать серверный вызов:


// На сервере
СсылкаНаДрайвер = Справочники.ДрайверыОборудования.НайтиПоНаименованию("ДрайверККТ_Атол");
РезультатПодготовки = МенеджерОборудованияВызовСервера.ПодготовитьДрайверКУстановке(СсылкаНаДрайвер);

Особенности для внешних обработок и тонкого клиента

Важно учитывать, что при работе в тонком клиенте прямое создание объекта через Новый("AddIn.Name") может не сработать, если компонента не зарегистрирована в системе. Подсистема БПО в БП 3.0 берет на себя управление регистрацией. Рассмотрим, как обеспечить работоспособность внешней обработки:

Вместо того чтобы искать глПодключаемоеОборудование, убедитесь, что в вашей форме или модуле подключены необходимые общие модули. В конфигурации «Бухгалтерия предприятия» 3.0.173 доступ к параметрам приложения осуществляется следующим образом (хотя это является внутренним API и его следует использовать с осторожностью):


// Получение структуры оборудования из параметров приложения (аналог глПодключаемоеОборудование)
ДанныеБПО = ПараметрыПриложения["СтандартныеПодсистемы.ПодключаемоеОборудование"];
Если ДанныеБПО <> Неопределено Тогда
    // Здесь можно найти кэшированные данные, но лучше использовать методы МенеджерОборудованияКлиент
КонецЕсли;

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

Подводя итог, отметим, что исчезновение глПодключаемоеОборудование — это не ошибка обновления, а плановый переход на более современную архитектуру. Для исправления вашего кода выполните следующие действия:

  1. Удалите все обращения к переменной глПодключаемоеОборудование.
  2. Замените получение объекта драйвера на вызов МенеджерОборудованияКлиент.ПодключитьУстройство.
  3. Если вам нужен доступ к списку драйверов, используйте запросы к справочнику ДрайверыОборудования.
  4. Для выполнения операций на устройстве всегда используйте структуру ПараметрыПодключения, возвращаемую штатным механизмом БПО.

Такой подход гарантирует стабильную работу вашей обработки вне зависимости от будущих изменений в платформе или конфигурации 1С.

← На главную