1С штрих коды

Печать штрихкодов в 1С осуществляется через компоненту 1C:Печать штрихкодов. Если компонента не установлена, то вместо документа со штрихкодом программа выдает сообщение об ошибке «Компонента 1С: Печать штрихкодов не установлена на данном компьютере!». Рассмотрим порядок действий в данной ситуации.

Установка компоненты 1C:Печать штрихкодов

Установка компоненты может отличаться в зависимости от режима запуска 1С:

  • обычное приложение;
  • управляемое приложение.

Обычное приложение

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

Для обычного приложения компоненту печати штрихкодов нужно установить вручную. Данную компоненту можно скачать с сайта https://users.v8.1c.ru.

Если компонента не установлена, то вместо документа со штрихкодом программа 1С выдает сообщение об ошибке.

Рассмотрим, как установить компоненту 1С:Печать штрихкодов вручную.

Ручная установка компоненты 1С:Печать штрихкодов

Скачав файл с сайта https://users.v8.1c.ru, запускаем установку и, следуя шагам установщика, нажимаем кнопку Далее.

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

Для запуска установки необходимо установить переключатель в положение Я принимаю условия лицензионного соглашения.

Выбрав вариант Полная установка, нажимаем кнопку Далее.

В следующем окне подтверждаем установку, нажав кнопку Установить.

После установки компоненты сообщение: «Компонента 1С:Печать штрихкодов не установлена на данном компьютере!» больше появляться не будет.

Управляемое приложение

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

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

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

Также могут помочь:

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

Переустановка компоненты печати штрихкодов в 1С

Переустановить компоненту печати можно в разделе Отчеты — Регламентированные отчеты — Настройки — Двумерный штрихкод — Шаблоны печати машиночитаемых форм.

При нажатии на кнопку Переустановить компоненту запустится процесс ее установки.

Следуя шагам мастера установки устанавливаем компоненту печати штрихкода.

Разрядность платформы для печати штрихкодов в 1С

Обратите внимание, что модули печати штрихкодов 32-битные. Т.е. при установленной 64-битной версии платформы 1С: Предприятие могут возникнуть проблемы с печатью.

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

Как пользователю определить, какая платформа установлена: 32-битная или 64-битная?

Откроем диск С. Там увидим папку, куда устанавливается программы. Так, 64-битная платформа была бы установлена в папку Program Files, а 32-битная — Program Files (х86).

В нашем примере платформа установлена в папку Program Files (х86), то есть является 32-битной.

Разрядность операционной системы можно также посмотреть, нажав правой кнопкой мышки на иконку Этот компьютер на рабочем столе и выбрав пункт Свойства.

См. также:

  • Лицензия не обнаружена. Не обнаружен ключ защиты программы 1С: как исправить
  • Не обнаружена установленная версия 1С Предприятия
  • Значение поля номер не уникально 1С 8.3: как исправить
  • Нарушение целостности системы 1С
  • Конфигурация базы данных не соответствует сохраненной конфигурации 1С

Если Вы еще не являетесь подписчиком системы БухЭксперт8:

Активировать демо-доступ бесплатно →

или

Оформить подписку на Рубрикатор →

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

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Вывести штрих-код в печатную форму

Для вывода штрих кода в печатную форму, в 1С:Предприятии предназначен объект «1С.V8.Печать штрих-кодов». Для того чтобы он стал доступен на компьютере должна быть установлена компонента «1CBarCode.exe».

Установка компоненты 1CBarCode.exe

Дистрибутив с компонентой для штрих-кодов можно или на диске ИТС в директории 1CITSEXETradeWare1C1CBarCode. После скачивания потребуется установка.
Запуск установки 1CBarCode.exe


После запуска программа подготовится к установке и предложит продолжить установку.

Для продолжения инсталяции программы нужно будет принять условия.

Затем необходимо выбрать место на жестком диске для установки программы и продолжить установку

Установка займет примерно 10-15 секунд в зависимости от комплектации ПК.

При успешном окончании появится окно.

Добавление штрих-кода в печатную форму

Во многих типовых конфигурациях уже реализован механизм присвоения штрих-кодов некоторым документам, или справочникам. Если данного функционала нет, то потребуется самостоятельно написать его в конфигурации. В примере ниже демонстрируется вывод произвольного штрих-кода.
Добавление рисунка в макет. Для того чтобы добавить рисунок нужно открыть в главном меню (Таблица)-(Рисунки)-(Вставить объект…).

В окне «Вставка объекта» необходимо выбрать «Элемент управления» и Тип объект: 1С.V8.Печать штрих-кодов.

После добавления рисунка к нему можно обратиться программно чтобы задать «ТипКода» и «ТекстКода». Как правило в типовых конфигурациях типы кодов хранятся в плане видов характеристик с наименованием «ТипыШтрихкодов». В конфигурации могут быть готовые функции для получения значения «ТипКода», например ПолучитьЗначениеТипаШтрихкодаДляЭУ().
Функция ПолучитьЗначениеТипаШтрихкодаДляЭУ(ТипКода)
Перем Значение;
Если ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN8 Тогда
Значение = 0;
ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13 Тогда
Значение = 1;
ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN128 Тогда
Значение = 2;
ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code39 Тогда
Значение = 3;
ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code128 Тогда
Значение = 4;
Иначе
Значение = -1;
КонецЕсли;
Возврат Значение;
КонецФункции
Процедура ВывестиШтрихКодВПечатнуюФорму(Кнопка)
//Для типовых конфигураций
ТипКода = ПолучитьЗначениеТипаШтрихкодаДляЭУ(ПланыВидовХарактеристик.ТипыШтрихкодов.EAN8);
//Для произвольных конфигураций
ТипКода = 0; //EAN8
ТипКода = 1; //EAN13
ТипКода = 2; //EAN128
ТипКода = 3; //CODE39
ТипКода = 4; //CODE128
ТипКода = 5; //CODE16K
ТипКода = 6; //PDF417

Штрихкоды в 1С:Розница 8.3 версия 2.2

Конфигурация: 1С:Розница

Версия конфигурации: 2.2.5.22

Дата публикации: 22.02.2017

Просмотров: 110315

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

Основными видами штрихкодов с которыми работает программа 1С:Розница это: CODE128, CODE39, EAN128, EAN13, EAN8 и ITF14. Но самыми распространенными являются всего 2 кода CODE39 и EAN13.

При использовании Штрихкодов довольно проблематично вводить их руками, особенно если это EAN13 и длинна такого кода 13 цифр. По этому потребуется дополнительное оборудование — сканер штрихкодов. Сканер упрощает ввод штрихкодов, некоторые сканеры работают по радиоканалу и могут мобильно использоваться в магазине, к примеру для инвентаризации на складе. Большинство сканеров, даже самые простые модели умеют работать почти со всеми видами штрихкодов, принципиальное отличие в скорости работы и точности считывания кодов.

Статья по теме: Настройка USB сканера штрихкодов

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

Основной принцип штрихкодирования товаров в магазине на базу 1С:Розница 2.2 это назначение одного или нескольких штрихкодов позиции номенклатуры. Список номенклатуры можно посмотреть в справочнике НСИ — Номенклатура.

В этом списке мы видим список вашей номенклатуры, которой мы в последующем будем назначать штрихкоды. Заходим в карточку номенклатуры.

Теперь мы можем перейти в Регистр сведений — Штрихкоды. Именно в нем хранятся все данные по штрихкодам.

У данной позиции номенклатуры Дырокол маленький Expert уже есть назначенный штрихкод он записан в базу 1С:Розница.

Если вы используете в работе Характеристики номенклатуры, то вам просто необходимо знать!

При использовании Характеристик штрихкод задается не Номенклатуре, а конкретной Характеристике номенклатуры!

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

При заполнении нового штрихкода, мы вводим

1. Номенклатуру для которой формируем штрихкод

2. Характеристику к которой он будет привязан (если не используете, то это поле будет недоступно)

3. Штрихкод

4. Тип кода определяется автоматически.

Если вы вводите свое штрихкодирование, то просто можно нажать клавишу Новый штрихкод и он будет сгенерирован. Программа генерирует коды только в формате EAN13 (с проверкой контрольного соотношения). Хоть данные штрихкоды и являются подлинными EAN13, они лежать в диапазоне который не используется производителями товаров.

Так же в программе заложена функция настроек работы с штрихкодами 1С:Розница. То есть порядки генерации Штрихкодов и Весового товара. Заходим в настройки Администрирование — Настройки номенклатуры.

Теперь рассмотрим более детально настройки раздела Штрихкодирование.

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

Префикс внутреннего штрихкода штучного товара(H) — это 2я цифра штрихкода, номенклатуры. Например, если стоит 5, то штрихкод начинается с 25.

Префикс Штрихкода узла РИБ — используется для уникальности штрихкодов для каждого узла РИБа.

Префикс штрихкода весового товара (2X) — служит для штрихкодирования весового товара, строка кодирует вес товара. Данная функция работает с Offline оборудованием. К примеру когда покупатель самостоятельно взвешивает товар, а по штрихкоду на кассе его пробивают без взвешивания.

Префикс штучного фасованного товара (2Y) — тоже что и для весового товара, только вместо веса колличество.

Важно! Данные диапазоны штрихкодов не должны пересекаться с вашими штрихкодами карт покупателя. Иначе программа будет считать бонусную, скидочную или иную карту весовым товаром!

Основным местом применения штрихкодов в 1С:Розница является Рабочее Место Кассира (РМК), при считывании штрихкода программа автоматически подбирает и добавляет товар в список. Так же можно использовать в других местах, карты покупателей, поступление товаров и услуг(например товарная накладная с штрихкодом, очень удобна!), инвентаризация, подарочные сертификаты, карты покупателей, дисконтные программы … в общем везде где есть подбор товаров можно пользоваться сканером.

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

Интересное по теме:

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

1С: Печать штрих кодов

Старый вариант печати штрих-кода в документах

ОбластьМакета = Макет.ПолучитьОбласть(«Заголовок»); ОбластьМакета.Рисунки.Штрихкод.Объект.ТипКода = 4; ОбластьМакета.Рисунки.Штрихкод.Объект.Сообщение = ПолучитьШтрихкодДокумента(Ссылка);

В итоге в документе будет выведен желаемый штрих-код.

Проблема, в режиме управляемого приложения вываливается ошибка:

ОбластьВывода.Рисунки.ШтрихКод.Объект – неопределено

Новый вариант печати штрих-кода через компоненту из макета

Дело в том, что для управляемого приложения внешние компоненты разрабатываются по другой технологии. Пример внешней компоненты для печати штрих-кода для управляемых форм есть в демонстрационной конфигурации «Управляемое приложение» в макетах справочника Товары, либо в конфигурации «1С:Управление торговлей» версии 11, макеты обработки «Печать этикеток и ценников».

Новую компоненту не надо вставлять непосредственно в макет печатаемого документа, надо передать ей строковое значение, в ответ она вернет штрих код в виде «картинки». Саму компоненту лучше загрузить компоненту в общий макет (в виде бинарных данных).

Сначала в макет вставляем обычную картинку:

Для картинки назначаем имя объекта «КартинкаШтрихкода»:

Далее надо получить объект внешней компоненты:

Функция ПодключитьВнешнююКомпонентуПечатиШтрихкода() Экспорт ПодключениеВыполнено = ПодключитьВнешнююКомпоненту(«ОбщийМакет.КомпонентаПечатиШтрихкодов», «КартинкаШтрихкода», ТипВнешнейКомпоненты.Native); // Создадим объект внешней компоненты Если ПодключениеВыполнено Тогда ВнешняяКомпонента = Новый(«AddIn.КартинкаШтрихкода.Barcode»); Иначе Возврат Неопределено; КонецЕсли; // Если нет возможности рисовать Если НЕ ВнешняяКомпонента.ГрафикаУстановлена Тогда // То картинку сформировать не сможем Возврат Неопределено; Иначе // Установим основные параметры компоненты // Если в системе установлен шрифт Tahoma Если ВнешняяКомпонента.НайтиШрифт(«Tahoma») = Истина Тогда // Выбираем его как шрифт для формирования картинки ВнешняяКомпонента.Шрифт = «Tahoma»; Иначе // Шрифт Tahoma в системе отсутствует // Обойдем все доступные компоненте шрифты Для Сч = 0 По ВнешняяКомпонента.КоличествоШрифтов -1 Цикл // Получим очередной шрифт, доступный компоненте ТекущийШрифт = ВнешняяКомпонента.ШрифтПоИндексу(Сч); // Если шрифт доступен Если ТекущийШрифт <> Неопределено Тогда // Они и будет шрифтом для формирования штри-кода ВнешняяКомпонента.Шрифт = ТекущийШрифт; Прервать; КонецЕсли; КонецЦикла; КонецЕсли; // Утановим размер шрифта ВнешняяКомпонента.РазмерШрифта = 12; Возврат ВнешняяКомпонента; КонецЕсли; КонецФункции

В первой строке функции компонента загружается из макета, далее заполняются параметры и возвращается объект компоненты. Затем опишем функцию, которая, получив данные, сформирует нужную нам картинку с штрихкодом:

Функция ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода) Экспорт ВнешняяКомпонента = ПодключитьВнешнююКомпонентуПечатиШтрихкода(); Если ВнешняяКомпонента = Неопределено Тогда ВызватьИсключение НСтр(«ru = ‘Ошибка подключения внешней компоненты печати штрихкода!'»); КонецЕсли; // Зададим размер картинки ВнешняяКомпонента.Ширина = Окр(ПараметрыШтрихкода.Ширина); ВнешняяКомпонента.Высота = Окр(ПараметрыШтрихкода.Высота); ВнешняяКомпонента.АвтоТип = Ложь; ВнешняяКомпонента.ТипКода = ПараметрыШтрихкода.ТипКода; ВнешняяКомпонента.ОтображатьТекст = ПараметрыШтрихкода.ОтображатьТекст; ВнешняяКомпонента.РазмерШрифта = ПараметрыШтрихкода.РазмерШрифта; // Или установим код EAN-13 // ВнешняяКомпонента.ТипКода = 1; // // Тип смотрим в документации на внешнуюю компоненту // Если код содержит контрольный символ, обязательно указываем ВнешняяКомпонента.СодержитКС = СтрДлина(ПараметрыШтрихкода.Штрихкод) = 13; // Если отображать контрольный символ не нужно // ВнешняяКомпонента.ВидимостьКС = Ложь; // Формируем картинку штрихкода ВнешняяКомпонента.ЗначениеКода = ПараметрыШтрихкода.Штрихкод; // Если установленная нами ширина меньше минимально допустимой для этого штрихкода Если ВнешняяКомпонента.Ширина < ВнешняяКомпонента.МинимальнаяШиринаКода Тогда ВнешняяКомпонента.Ширина = ВнешняяКомпонента.МинимальнаяШиринаКода + 10; КонецЕсли; // Сформируем картинку ДвоичныеДанныеКартинки = ВнешняяКомпонента.ПолучитьШтрихкод(); // Если картинка сформировалась Если ДвоичныеДанныеКартинки <> Неопределено Тогда // Формируем из двоичных данных Возврат Новый Картинка(ДвоичныеДанныеКартинки); КонецЕсли; Возврат Неопределено; КонецФункции

ТипКода — число от 0 до 15: 0 — EAN8, 1 — EAN13, 2 — EAN128. Вот полный список типов по порядку:

Кроме типа штрихкода, компонента имеет ряд других свойств, например ВнешняяКомпонента.ОтображатьТекст, ВнешняяКомпонента.РазмерШрифта и прочие, можно посмотреть в свойствах.

Наконец последнее, получаем и выводим штрихкод в картинку:

Эталон = ПолучитьОбщийМакет(«Эталон»); КоличествоМиллиметровВПикселе = Эталон.Рисунки.Квадрат100Пикселей.Высота / 100; ПараметрыШтрихкода = Новый Структура; ПараметрыШтрихкода.Вставить(«Ширина», Окр(ОбластьМакета.Рисунки.КартинкаШтрихкода.Ширина / КоличествоМиллиметровВПикселе)); ПараметрыШтрихкода.Вставить(«Высота», Окр(ОбластьМакета.Рисунки.КартинкаШтрихкода.Высота / КоличествоМиллиметровВПикселе)); ПараметрыШтрихкода.Вставить(«Штрихкод», ?(ЗначениеШК=»»,СокрЛП(ЧисловойКодПоСсылке(Ссылка)), ЗначениеШК)); ПараметрыШтрихкода.Вставить(«ТипКода», 4); // Code128 ПараметрыШтрихкода.Вставить(«ОтображатьТекст», Ложь); ПараметрыШтрихкода.Вставить(«РазмерШрифта», 6); ОбластьМакета.Рисунки.КартинкаШтрихкода.Картинка = ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода); ТабличныйДокумент.Вывести(ОбластьМакета);

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

Ошибка при печати штрихкодов на х64-клиенте 1С: Компонента 1С:Печать штрихкодов не установлена на данном компьютере

Итак, буквально вчера я столкнулся с проблемой, что типовая 1С УТ 10.3 при печати формы с штрихкодом стала выдавать:

Компонента 1С:Печать штрихкодов не установлена на данном компьютере

Код, инициализирующий данную компоненту:

Попытка КомпонентШК = Новый COMОбъект(«V8.Barcod.1»); Исключение Сообщить(«Компонента 1С:Печать штрихкодов не установлена на данном компьютере!», СтатусСообщения.Важное); Возврат; КонецПопытки;

Как показал дальнейший поиск информации, проблема в том, что клиентское приложение, в котором штрихкоды не хотели печататься — 64-х разрядное (в 32-х разрядных клиентах печаталось всё как надо). Кстати, на сайте 1С так же лежит 32-х разрядная компонента, которая никак проблему не решает, а описание того, что делать в случае 64-х разрядных клиентов отсутствует.

Разумеется, самым очевидным видится решение — просто установить вместо х64 — клиента его 32-х разрядную версию. Но, мне что-то показалось это слишком простым вариантом (хотя и он полностью рабочий).

Следующее, что я решил попробовать это воспользоваться инструкцией по запуску x32 COM-объектов из x64 приложения, но ничего не заработало.

После этого, я решил посмотреть в сторону УТ11 и того как там решена эта проблема(и есть ли она там). Я развернул УТ11(11.4.5.143) и оказалось, что там такой проблемы просто нет.

В УТ11 в общем модуле «МенеджерОборудованияСерверПовтИсп» имеется функция, которая инициализирует соответствующую нативную компоненту, которая лежит в общем макете «КомпонентаПечатиШтрихкодов». Причем там лежит сразу несколько компонент — и под х32, и под х64 и под линукс (см. один из рисунков. Их все можно получить выгрузив данные из макета в каталог на диске).

Поскольку я не особенно хотел что-то кодировать, то я в свою конфигурацию просто скопировал общий макет «КомпонентаПечатиШтрихкодов», а так же несколько вспомогательных функций (я здесь приведу их полный текст, а то ведь вдруг у кого нет под рукой УТ11):

// Функция выполняет подключение внешней компоненты и ее первоначальную настройку. // Возвращаемое значение: НЕОПРЕДЕЛЕНО — компоненту не удалось загрузить. Функция ПодключитьВнешнююКомпонентуПечатиШтрихкода() Экспорт ПодключениеВыполнено = ПодключитьВнешнююКомпоненту(«ОбщийМакет.КомпонентаПечатиШтрихкодов», «КартинкаШтрихкода», ТипВнешнейКомпоненты.Native); // Создадим объект внешней компоненты. Если ПодключениеВыполнено Тогда ВнешняяКомпонента = Новый(«AddIn.КартинкаШтрихкода.Barcode»); Иначе Возврат Неопределено; КонецЕсли; // Если нет возможности рисовать. Если НЕ ВнешняяКомпонента.ГрафикаУстановлена Тогда // То картинку сформировать не сможем. Возврат Неопределено; Иначе // Установим основные параметры компоненты. // Если в системе установлен шрифт Tahoma. Если ВнешняяКомпонента.НайтиШрифт(«Tahoma») Тогда // Выбираем его как шрифт для формирования картинки. ВнешняяКомпонента.Шрифт = «Tahoma»; Иначе // Шрифт Tahoma в системе отсутствует. // Обойдем все доступные компоненте шрифты. Для Сч = 0 По ВнешняяКомпонента.КоличествоШрифтов -1 Цикл // Получим очередной шрифт, доступный компоненте. ТекущийШрифт = ВнешняяКомпонента.ШрифтПоИндексу(Сч); // Если шрифт доступен Если ТекущийШрифт <> Неопределено Тогда // Они и будет шрифтом для формирования штрихкода. ВнешняяКомпонента.Шрифт = ТекущийШрифт; Прервать; КонецЕсли; КонецЦикла; КонецЕсли; // Установим размер шрифта ВнешняяКомпонента.РазмерШрифта = 12; Возврат ВнешняяКомпонента; КонецЕсли; КонецФункции Функция ОпределитьТипШтрихкода(Штрихкод) Экспорт ТипШтрихкодаЗнач = «»; ДлинаШтрихкода = СтрДлина(Штрихкод); Если ДлинаШтрихкода = 0 Тогда Возврат ТипШтрихкодаЗнач; КонецЕсли; Сумма = 0; Если ДлинаШтрихкода = 14 Тогда // ITF14 Коэффициент = 1; Для Сч = 1 По 13 Цикл ВремКодСимвола = КодСимвола(Штрихкод, Сч); Если ВремКодСимвола < 48 Или ВремКодСимвола > 57 Тогда Прервать; КонецЕсли; Сумма = Сумма + Коэффициент * (ВремКодСимвола — 48); Коэффициент = 4 — Коэффициент; КонецЦикла; Сумма = (10 — Сумма % 10) % 10; Если КодСимвола(Штрихкод, 14) = Сумма + 48 Тогда ТипШтрихкодаЗнач = «ITF14»; КонецЕсли; ИначеЕсли ДлинаШтрихкода = 13 Тогда // EAN13 EAN13 = Истина; Коэффициент = 1; Для Сч = 1 По 12 Цикл ВремКодСимвола = КодСимвола(Штрихкод, Сч); Если ВремКодСимвола < 48 Или ВремКодСимвола > 57 Тогда EAN13 = Ложь; Прервать; КонецЕсли; Сумма = Сумма + Коэффициент * (ВремКодСимвола — 48); Коэффициент = 4 — Коэффициент; КонецЦикла; Сумма = (10 — Сумма % 10) % 10; ПроверочныйСимвол = Символ(Сумма + 48); Если EAN13 И ПроверочныйСимвол = Прав(Штрихкод, 1) Тогда ТипШтрихкодаЗнач = «EAN13»; КонецЕсли; ИначеЕсли ДлинаШтрихкода = 8 Тогда // EAN8 EAN8 = Истина; Коэффициент = 3; Для Сч = 1 По 7 Цикл ВремКодСимвола = КодСимвола(Штрихкод, Сч); Если ВремКодСимвола < 48 Или ВремКодСимвола > 57 Тогда EAN8 = Ложь; Прервать; КонецЕсли; Сумма = Сумма + Коэффициент * (ВремКодСимвола — 48); Коэффициент = 4 — Коэффициент; КонецЦикла; Сумма = (10 — Сумма % 10) % 10; Если EAN8 И (КодСимвола(Штрихкод, 8) = Сумма + 48) Тогда ТипШтрихкодаЗнач = «EAN8»; КонецЕсли; КонецЕсли; Если ТипШтрихкодаЗнач= «» Тогда // CODE39 CODE39 = Истина; Для Сч = 1 По ДлинаШтрихкода Цикл ВремКодСимвола = КодСимвола(Штрихкод, Сч); Если (ВремКодСимвола <> 32) И (ВремКодСимвола < 36 Или ВремКодСимвола > 37) И (ВремКодСимвола <> 43) И (ВремКодСимвола < 45 Или ВремКодСимвола > 57) И (ВремКодСимвола < 65 Или ВремКодСимвола > 90) Тогда CODE39 = Ложь; Прервать; КонецЕсли; КонецЦикла; Если CODE39 Тогда ТипШтрихкодаЗнач = «CODE39»; КонецЕсли КонецЕсли; Если ТипШтрихкодаЗнач= «» Тогда // CODE128 // CODE128 символы ASCII от 0 до 127 (цифры от «0» до «9», буквы от «A» до «Z» и от «a» до «z») и специальные символы; CODE128 = Истина; Для Сч = 1 По ДлинаШтрихкода Цикл ВремКодСимвола = КодСимвола(Штрихкод, Сч); Если (ВремКодСимвола > 127) Тогда CODE128 = Ложь; Прервать; КонецЕсли; КонецЦикла; Если CODE128 Тогда ТипШтрихкодаЗнач = «CODE128»; КонецЕсли КонецЕсли; Если ТипШтрихкодаЗнач = «CODE128» Тогда // EAN128 // В коде EAN128 регламентирован словарь CODE128 но регламентированы группы кодов. Если КодСимвола(Штрихкод, 1) = 40 Тогда ТипШтрихкодаЗнач = «EAN128»; КонецЕсли; КонецЕсли; Возврат ТипШтрихкодаЗнач; КонецФункции Функция ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода) Экспорт //ВнешняяКомпонента = МенеджерОборудованияСерверПовтИсп.ПодключитьВнешнююКомпонентуПечатиШтрихкода(); ВнешняяКомпонента = ПодключитьВнешнююКомпонентуПечатиШтрихкода(); Если ВнешняяКомпонента = Неопределено Тогда ВызватьИсключение НСтр(«ru = ‘Ошибка подключения внешней компоненты печати штрихкода.'»); КонецЕсли; // Зададим размер формируемой картинки. ВнешняяКомпонента.Ширина = Окр(ПараметрыШтрихкода.Ширина); ВнешняяКомпонента.Высота = Окр(ПараметрыШтрихкода.Высота); ВнешняяКомпонента.АвтоТип = Ложь; Если ПараметрыШтрихкода.ТипКода = 99 Тогда ТипШтрихкодаВрем = ОпределитьТипШтрихкода(ПараметрыШтрихкода.Штрихкод); Если ТипШтрихкодаВрем = «EAN8» Тогда ВнешняяКомпонента.ТипКода = 0; ИначеЕсли ТипШтрихкодаВрем = «EAN13» Тогда ВнешняяКомпонента.ТипКода = 1; // Если код содержит контрольный символ, обязательно указываем. ВнешняяКомпонента.СодержитКС = СтрДлина(ПараметрыШтрихкода.Штрихкод) = 13; ИначеЕсли ТипШтрихкодаВрем = «EAN128» Тогда ВнешняяКомпонента.ТипКода = 2; ИначеЕсли ТипШтрихкодаВрем = «CODE39» Тогда ВнешняяКомпонента.ТипКода = 3; ИначеЕсли ТипШтрихкодаВрем = «CODE128» Тогда ВнешняяКомпонента.ТипКода = 4; ИначеЕсли ТипШтрихкодаВрем = «ITF14» Тогда ВнешняяКомпонента.ТипКода = 11; ИначеЕсли ТипШтрихкодаВрем = «QR» Тогда ВнешняяКомпонента.ТипКода = 16; ИначеЕсли ТипШтрихкодаВрем = «EAN13Addon2» Тогда ВнешняяКомпонента.ТипКода = 14; ИначеЕсли ТипШтрихкодаВрем = «EAN13Addon5» Тогда ВнешняяКомпонента.ТипКода = 15; Иначе ВнешняяКомпонента.АвтоТип = Истина; КонецЕсли; Иначе ВнешняяКомпонента.АвтоТип = Ложь; ВнешняяКомпонента.ТипКода = ПараметрыШтрихкода.ТипКода; КонецЕсли; Если ПараметрыШтрихкода.Свойство(«ПрозрачныйФон») Тогда ВнешняяКомпонента.ПрозрачныйФон = ПараметрыШтрихкода.ПрозрачныйФон; КонецЕсли; ВнешняяКомпонента.ОтображатьТекст = ПараметрыШтрихкода.ОтображатьТекст; // Формируем картинку штрихкода. ВнешняяКомпонента.ЗначениеКода = ПараметрыШтрихкода.Штрихкод; // Угол поворота штрихкода. ВнешняяКомпонента.УголПоворота = ?(ПараметрыШтрихкода.Свойство(«УголПоворота»), ПараметрыШтрихкода.УголПоворота, 0); // Уровень коррекции QR кода (L=0, M=1, Q=2, H=3). ВнешняяКомпонента.УровеньКоррекцииQR = ?(ПараметрыШтрихкода.Свойство(«УровеньКоррекцииQR»), ПараметрыШтрихкода.УровеньКоррекцииQR, 1); // Если установленная нами ширина меньше минимально допустимой для этого штрихкода. Если ВнешняяКомпонента.Ширина < ВнешняяКомпонента.МинимальнаяШиринаКода Тогда ВнешняяКомпонента.Ширина = ВнешняяКомпонента.МинимальнаяШиринаКода; КонецЕсли; // Если установленная нами высота меньше минимально допустимой для этого штрихкода. Если ВнешняяКомпонента.Высота < ВнешняяКомпонента.МинимальнаяВысотаКода Тогда ВнешняяКомпонента.Высота = ВнешняяКомпонента.МинимальнаяВысотаКода; КонецЕсли; Если ПараметрыШтрихкода.Свойство(«РазмерШрифта») И (ПараметрыШтрихкода.РазмерШрифта > 0) И (ПараметрыШтрихкода.ОтображатьТекст) И (ВнешняяКомпонента.РазмерШрифта <> ПараметрыШтрихкода.РазмерШрифта) Тогда ВнешняяКомпонента.РазмерШрифта = ПараметрыШтрихкода.РазмерШрифта; КонецЕсли; // Сформируем картинку ДвоичныеДанныеКартинки = ВнешняяКомпонента.ПолучитьШтрихкод(); // Если картинка сформировалась. Если ДвоичныеДанныеКартинки <> Неопределено Тогда // Формируем из двоичных данных. Возврат Новый Картинка(ДвоичныеДанныеКартинки); КонецЕсли; Возврат Неопределено; КонецФункции

Таким образом, теперь имеется возможность получать картинку штрихкода и вставлять её (как и раньше) прямо в макет. Я делаю это таким образом:

ОбластьШапки.Рисунки.Штрихкод.Картинка = ОбработкаШтрихкодирования.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);

Правда перед самим вызовом необходимо задать параметры штрихкода:

ПараметрыШтрихкода = Новый Структура; ПараметрыШтрихкода.Вставить(«Ширина», Окр(РисунокШтрихкода.Ширина / 0.1)); ПараметрыШтрихкода.Вставить(«Высота», Окр(РисунокШтрихкода.Высота / 0.1)); ПараметрыШтрихкода.Вставить(«Штрихкод», Штрихкод); //здесь д.б. наша строка ШК ПараметрыШтрихкода.Вставить(«ТипКода», 4); //ПараметрыШтрихкода.Вставить(«GS1DatabarКоличествоСтрок», GS1DatabarКоличествоСтрок); ПараметрыШтрихкода.Вставить(«МонохромныйШрифт», Истина); //ПараметрыШтрихкода.Вставить(«УголПоворота», УголПоворота); ПараметрыШтрихкода.Вставить(«ОтображатьТекст», Истина); ПараметрыШтрихкода.Вставить(«РазмерШрифта», 15); ПараметрыШтрихкода.Вставить(«Масштабировать», Истина); //ПараметрыШтрихкода.Вставить(«СохранятьПропорции», СохранятьПропорции); //ПараметрыШтрихкода.Вставить(«ВертикальноеВыравнивание», ВертикальноеВыравнивание);

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

На этом всё, надеюсь статья была вам полезна.