Как исправить ошибку загрузки драйвера торгового оборудования при повторном входе в 1С:УПП

Программист 1С v8.3 (Обычные формы)
← На главную

При работе с конфигурацией «Управление производственным предприятием» (УПП 1.3) пользователи часто сталкиваются с неприятной ситуацией: после обновления платформы или релиза конфигурации (особенно замечено на ветке 1.3.112.х) при открытии второго сеанса базы на одном и том же компьютере возникает ошибка. Система сообщает: «Сканер штрихкода (общий): Не удалось загрузить драйвер торгового оборудования. Необходимо проверить корректность установки драйвера». При этом физически оборудование к компьютеру может быть даже не подключено.

В этой статье мы подробно разберем, почему возникает этот конфликт, как найти «фантомные» настройки в системе и каким образом программно устранить ошибку, если стандартные интерфейсы настройки оборудования оказываются бессильны.

Причина возникновения ошибки: Механизм идентификации рабочих мест

Для начала проанализируем, как 1С работает с торговым оборудованием (ТО) в режиме обычных форм. В архитектуре УПП 1.3 привязка сканеров, фискальных регистраторов и терминалов сбора данных осуществляется к имени компьютера (сетевому имени хоста). Когда вы открываете любую форму, связанную с торговой деятельностью (например, справочник Номенклатура), система автоматически инициализирует все устройства, закрепленные за текущим рабочим местом.

Рассмотрим ситуацию по шагам:

  1. Вы запускаете первый сеанс 1С. Система видит имя компьютера (например, IT-KRY), находит в базе настройки ТО для этого имени и загружает соответствующие DLL-драйверы.
  2. Вы запускаете второй сеанс 1С на этом же компьютере. Система снова видит имя IT-KRY и пытается инициализировать тот же драйвер.
  3. Поскольку драйвер (часто это COM-объект или внешняя компонента) уже монопольно захвачен первым процессом 1С, второй процесс получает отказ в доступе.

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

Шаг 1: Поиск скрытых настроек в регистрах сведений

Если в стандартном окне «Настройка торгового оборудования» список пуст, это не означает, что настроек нет. В УПП данные хранятся в регистре сведений ТорговоеОборудование. Выясним, как проверить его содержимое напрямую.

Проанализируем действия: нам необходимо зайти в базу под полными правами и через меню «Все функции» (или «Операции» -> «Регистры сведений» в обычном интерфейсе) найти регистр ТорговоеОборудование.

В этом регистре мы можем увидеть записи, где в колонке Компьютер указано ваше текущее рабочее место. Часто бывает так, что визуальная форма справочника фильтрует записи по каким-то критериям, а в регистре они остаются «активными» (стоит галочка Подключено).

Шаг 2: Программное отключение «фантомного» оборудования

Если интерфейс не позволяет редактировать записи в регистре (кнопки недоступны или форма защищена от изменений), нам потребуется написать простую обработку. Разберем пример кода, который поможет снять признак подключения для конкретного компьютера.

Создадим внешнюю обработку и в модуле пропишем следующий алгоритм для очистки признака Подключено:


Процедура ОчиститьПодключениеОборудования()
    // Укажите имя вашего компьютера, которое отображается в ошибке
    ИмяВашегоПК = "IT-KRY"; 
    
    МенеджерЗаписи = РегистрыСведений.ТорговоеОборудование.СоздатьМенеджерЗаписи();
    
    Выборка = РегистрыСведений.ТорговоеОборудование.Выбрать();
    Пока Выборка.Следующий() Цикл
        // Проверяем соответствие компьютера
        Если СокрЛП(Выборка.Компьютер) = ИмяВашегоПК Тогда
            ЗаполнитьЗначенияСвойств(МенеджерЗаписи, Выборка);
            МенеджерЗаписи.Прочитать();
            
            Если МенеджерЗаписи.Выбран() Тогда
                МенеджерЗаписи.Подключено = Ложь; // Снимаем флаг активности
                МенеджерЗаписи.Записать();
                Сообщить("Оборудование " + Выборка.Наименование + " отключено для ПК " + ИмяВашегоПК);
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

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

Шаг 3: Исправление ошибок релиза 1.3.112.5

Иногда проблема кроется глубже — в программных ошибках самого релиза конфигурации. В обновлениях УПП 1.3.112.3 и 1.3.112.5 были замечены опечатки в формах настройки торгового оборудования. Если вы решите заново настроить оборудование и столкнетесь с тем, что виды ТО выбираются некорректно, обратите внимание на следующие моменты в коде:

Дополнительные рекомендации

Рассмотрим еще несколько важных нюансов, которые помогут избежать проблем с драйверами:

  1. Разрядность платформы: Если вы перешли на 64-битную версию платформы 1С, убедитесь, что драйверы торгового оборудования также имеют 64-битную версию. Старые 32-битные COM-объекты не смогут загрузиться в 64-битном сеансе.
  2. Очистка кэша: Настройки подключенного оборудования иногда кэшируются локально. Попробуйте запустить 1С с параметром /ClearCache.
  3. Терминальный доступ: Если вы всё же работаете в терминальном режиме, помните, что ИмяКомпьютера() в 1С будет возвращать имя сервера. Чтобы разделять оборудование разных пользователей, необходимо дорабатывать механизм определения рабочего места, используя переменную окружения CLIENTNAME вместо системного имени хоста.

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

← На главную