При работе со специализированным ПО для печати этикеток, таким как LabelView, программисты 1С часто сталкиваются с проблемой инициализации внешних объектов. Ошибка Интерфейс не поддерживается при выполнении конструктора Новый COMОбъект("LblVw.Application") обычно означает, что операционная система не может корректно связать запрос от 1С с установленным программным обеспечением. В этой статье мы подробно разберем причины возникновения этой ошибки и рассмотрим несколько способов её решения — от исправления текущего кода до перехода на более современные и надежные методы печати.
Рассмотрим ситуацию, когда в конфигурации 1С:Управление торговлей 10.3 (на платформе 8.1 или 8.3 в режиме обычных форм) используется старый механизм печати через внешнее приложение LabelView. Код инициализации обычно выглядит следующим образом:
// Попытка создания объекта для управления LabelView
Попытка
Printer = Новый COMОбъект("LblVw.Application");
Исключение
Сообщить("Не удалось создать объект LabelView. Возможно, программа не установлена.");
Возврат;
КонецПопытки;
Если система возвращает ошибку "Интерфейс не поддерживается", это говорит о том, что в реестре Windows существует запись о классе LblVw.Application, но фактический программный интерфейс (API), к которому пытается обратиться 1С, недоступен. Проанализируем основные причины этого сбоя.
Программный комплекс LabelView выпускается в нескольких редакциях: Basic, Pro и Gold. Важно понимать, что возможность управления программой через COM-интерфейс (Automation) заложена производителем только в старших версиях — Gold и Runtime. Если на рабочем месте была произведена переустановка программы и установлена версия Pro, то прямой доступ из 1С будет заблокирован на уровне лицензии самого продукта. Выясним, какая версия установлена в вашем случае, и при необходимости обновим её до редакции Gold.
Платформа 1С:Предприятие 8.1 является 32-битным приложением. Если LabelView установлен в 64-битной версии на современную ОС Windows x64, механизм COM может давать сбой. 32-битный процесс 1С не всегда может достучаться до 64-битного COM-сервера без дополнительных настроек в dcomcnfg (Службы компонентов). Проверим разрядность установленного ПО и попробуем использовать 32-битную версию LabelView, если это возможно.
Иногда записи в реестре становятся некорректными после обновлений Windows. Разберем шаги по принудительной регистрации интерфейса:
labelview.exe) и попробуйте запустить его с ключом /regserver.regsvr32.Кроме того, стоит заглянуть в оснастку "Службы компонентов" (команда dcomcnfg в строке выполнения). Найдите в списке DCOM-объектов LabelView, откройте его свойства и на вкладке "Безопасность" разрешите запуск и активацию для текущего пользователя Windows, под которым работает 1С.
Как отмечают опытные специалисты, использование тяжеловесного графического редактора для печати простых этикеток часто бывает избыточным. Если ваша этикетка содержит только текст, штрихкод и простые линии, мы рекомендуем переписать алгоритм на использование штатного объекта ТабличныйДокумент.
Для этого выполним следующие действия:
Пример кода для вывода на печать:
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("МакетЭтикетки");
Область = Макет.ПолучитьОбласть("Строка");
// Заполнение параметров области
Область.Параметры.Наименование = "Товар №1";
Область.Параметры.Штрихкод = "2000000001234";
ТабДок.Вывести(Область);
ТабДок.ИмяПринтера = "ZDesigner TLP 2824";
ТабДок.Напечатать(РежимИспользованияПринтера.ПечатьБезПросмотра);
Принтер Zebra TLP 2824 понимает команды языка EPL2. Это самый быстрый и надежный способ печати, который не зависит от установленных в системе драйверов или стороннего софта. Мы можем сформировать текстовую строку с командами и отправить её напрямую в порт принтера.
Проанализируем пример простой этикетки на языке EPL2:
N
A50,50,0,4,1,1,N,"Наименование товара"
B50,100,0,1,2,2,100,B,"12345678"
P1
Где:
N — очистка буфера принтера;A — вывод текстовой строки;B — вывод штрихкода;P1 — команда печати одной копии.Для реализации этого метода в 1С 8.1 можно использовать объект ТекстовыйДокумент, сохранить его во временный файл и отправить на принтер через команду системы (copy /b file.txt \\computer\printer) или использовать специализированные внешние компоненты для Raw-печати.
Ошибка "Интерфейс не поддерживается" является сигналом того, что связка 1С и LabelView стала нестабильной. Если регистрация COM-объекта и проверка лицензии Gold не помогают, лучшим решением будет отказ от использования LabelView. Переход на стандартные Табличные документы 1С или прямую отправку EPL-команд позволит вам навсегда забыть о проблемах с COM-интерфейсами и сделает печать этикеток на Zebra TLP 2824 быстрой и стабильной.