Почему не отображается или не печатается штрихкод Barcode.ocx в 1С 7.7 на 64-битных ОС?

Программист 1С v7.7 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

При работе с платформой 1С 7.7 на 64-разрядных операционных системах (Windows Server 2008, Windows 7, 10 x64) часто возникает проблема с ActiveX-компонентой Barcode.ocx. Библиотека может успешно регистрироваться в системе, однако при попытке добавить OLE-объект в макет печатной формы или вывести его на печать, штрихкод не отображается в списке элементов либо выводится в виде пустого прямоугольника.

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

Причины неполадок с компонентой Barcode.ocx в 1С 7.7

Проанализируем основные факторы, из-за которых 32-битный ActiveX-элемент некорректно работает в 64-битной среде Windows:

  1. Регистрация не через SysWOW64. В 64-разрядных версиях Windows 32-битные компоненты должны регистрироваться через утилиту regsvr32.exe, расположенную в системном каталоге SysWOW64, а не в System32.
  2. Недостаток прав доступа при первом запуске (HKCU и UAC). Компонента сохраняет рабочие параметры в ветке реестра текущего пользователя HKCU\Software. Если при первом вызове ActiveX у пользователя нет прав на запись в реестр, объект не сохранит свои настройки.
  3. Блокировка механизмом DEP (Data Execution Prevention). Защита предотвращения выполнения данных часто блокирует вывод графики старыми 32-битными ActiveX-элементами внутри процесса 1cv7.exe.
  4. Нестандартное масштабирование экрана (DPI). При значении масштаба Windows выше 100% OLE-контейнер платформы 1С 7.7 может ошибочно рассчитывать координаты и свернуть область штрихкода в пустую рамку.

Шаг 1. Правильная регистрация библиотеки в 64-битной системе

Разберем процесс регистрации библиотеки Barcode.ocx через 32-битную командную строку под учетной записью администратора:

  1. Скопируем файл Barcode.ocx в папку C:\Windows\SysWOW64 или в каталог BIN платформы 1С 7.7.
  2. Запустим командную строку от имени Администратора напрямую из 32-битного каталога: C:\Windows\SysWOW64\cmd.exe
  3. Выполним регистрацию с помощью соответствующей версии regsvr32.exe: C:\Windows\SysWOW64\regsvr32.exe "C:\Windows\SysWOW64\Barcode.ocx"

Шаг 2. Первый запуск 1С под правами Администратора

Выясним, почему зарегистрированная компонента может не работать в терминальном сеансе или у обычного пользователя. При первом инициализировании Barcode.ocx создает структуры данных в реестре текущего пользователя.

  1. Предоставим учетной записи пользователя права Администратора на компьютере или сервере.
  2. Запустим платформу 1С 7.7 (файл 1cv7.exe или 1cv7s.exe) от имени Администратора.
  3. Откроем печатную форму, содержащую объект штрихкода, и сформируем документ один раз.
  4. Убедившись, что штрихкод правильно вывелся на экран, закроем 1С и вернем пользователю стандартные права доступа.

Шаг 3. Настройка параметров DEP и макета таблицы

Если штрихкод виден в макете, но пропадает непосредственно при отправке на принтер, проанализируем настройки системы и макета:

  1. Добавим исполняемый файл 1cv7.exe в список исключений DEP («Параметры системы» -> «Дополнительно» -> «Быстродействие» -> «Предотвращение выполнения данных»).
  2. Убедимся, что в параметрах экрана Windows установлен стандартный масштаб 100%.
  3. В режиме редактирования макета 1С откроем свойства ActiveBarcode и установим признак Auto Type, принудительно указав тип штрихкода (например, EAN-13 или Code 39).

Альтернативные решения без использования Barcode.ocx

Если нестабильная работа Barcode.ocx сохраняется из-за особенностей 64-битных драйверов принтеров в RDP-сессиях, рассмотрим альтернативные методы вывода штрихкодов в 1С 7.7:

  1. Использование штрихкодовых шрифтов (TrueType Fonts / TTF). В систему устанавливается специальный шрифт (например, Code 39, Code 128 или EAN-13). В коде 1С формируется строка с символами штрихкода и выводится в обычную текстовую ячейку макета.
  2. Генерация штрихкода в картинку. Формируем штрихкод во временный графический файл (BMP, PNG) с помощью сторонней утилиты, после чего вставляем картинку в макет таблицы 1С с помощью стандартного метода Таблица.Рисунок().
  3. Переход на компоненту «1С:Печать штрихкодов» (1CBarCode). Использование библиотеки 1CBarCode.dll, которая работает значительно стабильнее на современных ОС.
← На главную