Как подключить ТСД Opticon Smart к «1С:БГУ» и исправить ошибку «Порт недоступен (System Error. Code: 2)»?

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

При автоматизации государственного сектора часто возникает необходимость использования терминалов сбора данных (ТСД) для проведения инвентаризации основных средств. Одной из популярных моделей является Opticon Smart под управлением ПО MobileLogistics (ПО АТОЛ). Однако при попытке интеграции этого оборудования с конфигурацией «1С:Бухгалтерия государственного учреждения» (БГУ) технические специалисты сталкиваются с двумя серьезными проблемами:

  1. Отсутствие готовых внешних обработок обслуживания для БГУ в стандартном дистрибутиве оборудования (поставляются только обработки для торговых конфигураций «Управление торговлей» и «Розница»).
  2. Критическая аппаратная ошибка System Error. Code: 2. Не удается найти указанный файл (Порт недоступен) при физическом отключении ТСД от USB-кабеля в процессе работы.

В этой статье мы подробно рассмотрим и разберем по шагам, как решить обе проблемы, адаптировать обработку обмена под специфику учета БГУ и заставить драйвер стабильно работать при отключении провода без перезапуска всей системы 1С.

---

Часть 1. Интеграция ТСД Opticon Smart с «1С:Бухгалтерия государственного учреждения»

Проанализируем ситуацию: в отличие от коммерческих предприятий, где объектом учета и инвентаризации является номенклатура товаров со штрихкодами, в госучреждениях учет ведется в разрезе Основных средств (ОС) и Инвентарных номеров. В стандартных конфигурациях БГУ 1.0 и БГУ 2.0 заложен штатный механизм работы с ТСД, использующими драйвер «АТОЛ: Терминалы сбора данных MobileLogistics».

Если вам необходимо адаптировать имеющуюся обработку обслуживания (например, ATOLTSD_v2.epf) от УТ или Розницы под БГУ самостоятельно, нужно изменить логику сопоставления данных. Разберем этот процесс по шагам.

Шаг 1. Переориентация метаданных со справочника «Номенклатура» на «Основные средства»

В торговых конфигурациях ТСД ожидает получить структуру: Штрихкод — Наименование — Цена — Количество — Характеристика. В БГУ нам требуется передавать и принимать другие реквизиты: Штрихкод — Наименование ОС — Инвентарный номер — Количество (обычно 1) — Субъект учета (МОЛ).

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


// Создаем таблицу для выгрузки в ТСД по структуре MobileLogistics
ТаблицаВыгрузки = Новый ТаблицаЗначений;
ТаблицаВыгрузки.Колонки.Добавить("Штрихкод", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(20)));
ТаблицаВыгрузки.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(100)));
ТаблицаВыгрузки.Колонки.Добавить("ИнвентарныйНомер", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(50)));
ТаблицаВыгрузки.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 0)));

// Заполняем таблицу данными из документа Инвентаризация ОС
Для Каждого СтрокаОС Из ОбъектИнвентаризации.ОсновныеСредства Цикл
    НоваяСтрока = ТаблицаВыгрузки.Добавить();
    НоваяСтрока.Штрихкод = ПолучитьШтрихкодОС(СтрокаОС.ОсновноеСредство);
    НоваяСтрока.Наименование = СтрокаОС.ОсновноеСредство.Наименование;
    НоваяСтрока.ИнвентарныйНомер = СтрокаОС.ОсновноеСредство.Код; // или реквизит ИнвентарныйНомер
    НоваяСтрока.Количество = 1;
КонецЦикла;

Шаг 2. Использование встроенной Библиотеки Подключаемого Оборудования (БСП / БПО)

Выясним причину, почему не всегда требуется писать код с нуля. В современных релизах «1С:БГУ 2.0» внедрена подсистема БПО. Мы можем подключить Opticon Smart как стандартное оборудование. Для этого перейдем в меню «Администрирование» — «Подключаемое оборудование», добавим новое устройство с типом «Терминалы сбора данных» и выберем сертифицированный драйвер от АТОЛ. В этом случае БГУ будет использовать штатные механизмы обмена, транслируя данные из документов инвентаризации напрямую в драйвер.

Шаг 3. Использование готовых сторонних модулей

Если адаптация кода вызывает сложности из-за нехватки опыта программирования, рекомендуется обратить внимание на готовые решения, разработанные специально для БГУ (например, программные продукты Клеверенс или Сканпорт). Они предлагают готовые конфигурации для ТСД, умеющие "из коробки" работать со справочником основных средств, амортизацией и инвентарными номерами госучреждений, поддерживая обмен как через USB-кабель, так и по сети Wi-Fi.

---

Часть 2. Решение ошибки «Порт недоступен (System Error. Code: 2)»

Разберем природу возникновения популярной ошибки: Терминал сбора данных: ошибка при подключении. Порт недоступен (System Error. Code: 2. Не удается найти указанный файл).

При использовании старых ТСД (например, Opticon 1004) устройство устанавливается в подставку (крэдл), которая постоянно подключена к ПК. С точки зрения операционной системы Windows, виртуальный COM-порт, созданный драйвером USB-to-Serial, активен круглосуточно. В случае с Opticon Smart подключение идет напрямую через интерфейсный кабель microUSB-USB.

Когда выдергивается кабель из разъема, Windows мгновенно уничтожает виртуальный COM-порт. Драйвер АТОЛ, инициализированный внутри 1С при запуске, теряет дескриптор связи. При повторном подключении кабеля Windows создает COM-порт заново, но сессия 1С продолжает обращаться по "старому" адресу, который завис в памяти драйвера, выдавая ошибку отсутствия файла COM-порта в операционной системе.

Рассмотрим подробнее способы исправления этой ситуации без необходимости перезапуска программы 1С.

Способ 1. Активация настройки «Освобождать порт» в драйвере

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

  1. Перейдем в 1С в меню настройки подключаемого оборудования.
  2. Откроем параметры нашего ТСД Opticon Smart.
  3. В окне свойств драйвера (утилита настройки АТОЛ) найдем параметр «Освобождать порт» (в некоторых версиях он называется «Отключаться после операции» или «Режим удержания порта»).
  4. Установим этот флаг в положение Истина (Включено).

В чем суть настройки? Теперь 1С не будет держать COM-порт постоянно открытым в течение всего сеанса работы. Порт будет инициализироваться программой ровно на долю секунды — только в момент нажатия кнопок «Выгрузить данные» или «Загрузить данные». Все остальное время ТСД можно безопасно отключать от кабеля, перемещаться по складу/учреждению и подключать обратно. Windows будет корректно пересоздавать порт, а 1С обратится к нему только в момент непосредственного обмена.

Способ 2. Программный сброс подключения в коде обработки

Если вы разрабатываете собственную обработку обмена, мы можем управлять активностью порта принудительно. Для этого используется свойство драйвера DeviceEnabled (или Включено). Перед началом передачи данных необходимо программно включить устройство, а по окончании — обязательно выключить его, чтобы освободить порт для операционной системы.

Посмотрим на пример реализации такого механизма:


// Функция безопасного обмена данными с ТСД
Процедура ВыполнитьОбменДанными(ОбъектДрайвера, ТаблицаДанных)
    
    // Шаг 1. Пытаемся занять порт и активировать устройство
    Попытка
        ОбъектДрайвера.DeviceEnabled = 1; // Включаем устройство в драйвере
    Исключение
        Предупреждение("Не удалось открыть COM-порт! Проверьте подключение кабеля ТСД.");
        Возврат;
    КонецПопытки;
    
    // Шаг 2. Производим запись или чтение данных
    ЗаписатьДанныеВТерминал(ОбъектДрайвера, ТаблицаДанных);
    
    // Шаг 3. Обязательно освобождаем COM-порт для ОС Windows
    Попытка
        ОбъектДрайвера.DeviceEnabled = 0; // Отключаем устройство
    Исключение
        ЗаписьЖурналаРегистрации("ТСД. Ошибка отключения порта", УровеньЖурналаРегистрации.Предупреждение);
    КонецПопытки;
    
КонецПроцедуры

Способ 3. Быстрый сброс порта через интерфейс 1С

Если ошибка System Error. Code: 2 уже произошла, а перезапускать тяжелую базу 1С:БГУ крайне нежелательно (например, открыто много несохраненных документов), восстановить связь можно вручную:

  1. Откройте форму списка подключаемого оборудования.
  2. Зайдите в карточку вашего ТСД Opticon и нажмите кнопку «Параметры подключения».
  3. Нажмите кнопку «Тест устройства». Программа принудительно переинициализирует драйвер, опросит доступные в системе COM-порты и восстановит связь.
  4. Также можно временно снять флаг «Устройство используется», записать карточку, а затем снова установить его.

Способ 4. Нюансы работы при терминальном доступе (RDP)

Проанализируем специфику работы, если база 1С развернута на сервере, а пользователи подключаются через удаленный рабочий стол (RDP). При физическом выдергивании кабеля на локальном ПК механизм проброса портов (Port Mapping) протокола RDP полностью ломается и не восстанавливается автоматически.

Для решения этой проблемы в терминальном режиме рекомендуется соблюдать следующие правила:

  1. В Диспетчере устройств локального ПК жестко зафиксируйте за драйвером ТСД свободный номер порта (например, COM5), запретив Windows назначать его динамически.
  2. В свойствах RDP-подключения (вкладка «Локальные ресурсы» -> «Подробнее») обязательно должен стоять флаг перенаправления портов.
  3. Если стандартный проброс RDP работает нестабильно, используйте сторонние программные эмуляторы USB-over-IP. Они создают постоянное виртуальное соединение на стороне сервера, которое не "отваливается" при кратковременном разрыве физического контакта кабеля.

Применяя указанные методики настройки драйверов и адаптации кода под таблицы основных средств БГУ, вы сможете добиться стабильного, бесперебойного процесса инвентаризации с использованием ТСД Opticon Smart.

← На главную