Как исправить ошибку Поле объекта не обнаружено (ТипКода) при печати этикеток в 1С:УТ 10.3

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

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

Анализ проблемы и локализация ошибки

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


{ВнешняяОбработка.ПечатьЯрлыкЛС.МодульОбъекта(123)}: Поле объекта не обнаружено (ТипКода)
Макет.Рисунки.штрих.Объект.ТипКода = ТипКода;

Выясним причину такого поведения. В конфигурациях на обычных формах (УТ 10.3, КА 1.1, УПП 1.3) для генерации штрихкода традиционно используется внешний ActiveX-объект — компонента 1CBarCode.dll. В макете этикетки создается рисунок типа «Объект», который при формировании печатной формы должен инициализироваться как элемент управления «1С:Печать штрихкодов».

Когда платформа обращается к свойству Объект рисунка, она ожидает получить доступ к интерфейсу этой компоненты. Если компонента не зарегистрирована, имеет другую разрядность или блокируется системой безопасности платформы, свойство Объект возвращает Неопределено или пустой COM-объект. Следовательно, обращение к его свойству ТипКода вызывает закономерную ошибку, так как у неопределенного объекта такое поле отсутствует.

Причина №1: Несовместимость с новыми версиями платформы (8.3.16 и выше)

Как показывает практика и опыт участников форумов, одной из главных причин деградации функционала печати является переход на платформу версии 8.3.16.1148 и выше. Разберем, что именно изменилось в ядре 1С:

  1. Изоляция процессов: Начиная с версии 8.3.16, разработчики платформы усилили механизмы безопасности при работе с внешними компонентами и OLE-объектами. Это привело к тому, что старые методы обращения к рисункам макета через «точку» перестали работать корректно.
  2. Ошибки релиза: Конкретные сборки платформы (включая 8.3.16.1148) содержали внутренние ошибки работы с графической подсистемой табличных документов в режиме обычного приложения.

Решение: Проверенным способом является откат на стабильную версию платформы ветки 8.3.15 (например, 8.3.15.1830). Как подтвердил автор темы, после установки этой версии проблема исчезает без изменения кода обработки.

Причина №2: Проблема разрядности (x64 vs x86)

Проанализируем ситуацию с разрядностью. Компонента 1CBarCode.dll является 32-битной (x86). Если вы устанавливаете 64-битную версию платформы 1С:Предприятие (x86-64), она по умолчанию не сможет загрузить 32-битную библиотеку ActiveX в свой адресный процесс.

Рассмотрим порядок действий для проверки:

Решение: На рабочих местах, где требуется печать этикеток, необходимо устанавливать 32-битный толстый клиент платформы, даже если сама операционная система Windows 64-битная. 32-битная платформа прекрасно работает в режиме эмуляции WOW64 и корректно взаимодействует с 1CBarCode.

Причина №3: Регистрация компоненты в системе

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

Выполним следующие шаги:

  1. Найдем файл 1CBarCode.dll (обычно он находится в папке установленной платформы или в системных папках 1С).
  2. Запустим командную строку (cmd) от имени Администратора.
  3. Введем команду регистрации:

regsvr32 "C:\PathToComponent\1CBarCode.dll"

Если регистрация прошла успешно, появится сообщение «DllRegisterServer в ... успешно». После этого перезапустите 1С и проверьте печать.

Причина №4: Права доступа и запуск от имени администратора

Платформа 1С при первом обращении к компоненте пытается инициализировать ее настройки в реестре. Если у пользователя Windows ограничены права, процесс прерывается, и объект ТипКода становится недоступен.

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

Программная проверка доступности компоненты

Чтобы избежать «вылета» системы с ошибкой, мы рекомендуем добавить в код обработки проверку на наличие установленной компоненты. Рассмотрим пример того, как это можно реализовать программно:


Попытка
    ТестовыйОбъект = Новый COMОбъект("V83.BarcodeInput.1");
Исключение
    Сообщить("Компонента 1С:Печать штрихкодов не установлена на данном компьютере!");
    Возврат;
КонецПопытки;

// Если проверка прошла, можно обращаться к макету
ОбластьМакета = Макет.ПолучитьОбласть("Этикетка");
РисунокШтрихкод = ОбластьМакета.Рисунки.штрих;
Если РисунокШтрихкод.Объект <> Неопределено Тогда
    РисунокШтрихкод.Объект.ТипКода = 4; // EAN13
    РисунокШтрихкод.Объект.Сообщение = "4601234567890";
КонецЕсли;

Использование метода Новый COMОбъект позволяет нам заранее понять, видит ли операционная система нужную библиотеку, и вывести пользователю понятное предупреждение вместо программного сбоя.

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

Проанализировав все возможные факторы, мы можем составить краткий алгоритм действий при возникновении ошибки Поле объекта не обнаружено (ТипКода):

  1. Проверить версию платформы: Если стоит 8.3.16 или выше, рекомендуется выполнить откат до версии 8.3.15.1830.
  2. Проверить разрядность: Убедиться, что используется 32-битный (x86) клиент 1С.
  3. Зарегистрировать библиотеку: Выполнить regsvr32 1CBarCode.dll.
  4. Проверить версию компоненты: Для работы с новыми версиями ОС рекомендуется использовать версию «1С:Печать штрихкодов» не ниже 8.0.15.2.

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

← На главную