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

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

Компоненты печати штрихкодов можно найти в демонстрационной конфигурации “Управляемое приложение”. Там же находится пример печати штрихкодов. Загрузить конфигурацию можно здесь при наличии доступа или здесь.

Одна из компонент печати штрихкодов – для платформы windows 32, прикреплена к данной статье в формате 7z (это архив, извлекается winrar-ом).

Рассмотрим пример процедуры печати штрихкодов для случая, когда у нас имеются компоненты для различных платформ:

// Формирование изображения штрихкода для указанного объекта
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Картинка – Картинка со сформированным штрихкодом ИЛИ НЕОПРЕДЕЛЕНО
Функция ПолучитьКартинкуШтрихкода(ШтрихКод, ТипКода=Неопределено) Экспорт

 // В зависимости от типа платформы подключим соответствующую внешнюю компоненту
 ИнформацияОСистеме = Новый СистемнаяИнформация;
 
 Если ИнформацияОСистеме.ТипПлатформы = ТипПлатформы.Windows_x86 Тогда
   ПодключитьВнешнююКомпоненту(“ОбщийМакет.КомпонентаПечатиШтрихкодовWindows32”, “КартинкаШтрихкода”, ТипВнешнейКомпоненты.Native);
  ИначеЕсли ИнформацияОСистеме.ТипПлатформы = ТипПлатформы.Windows_x86_64 Тогда
   ПодключитьВнешнююКомпоненту(“ОбщийМакет.КомпонентаПечатиШтрихкодовWindows64”, “КартинкаШтрихкода”, ТипВнешнейКомпоненты.Native);
  ИначеЕсли ИнформацияОСистеме.ТипПлатформы = ТипПлатформы.Linux_x86 Тогда
   ПодключитьВнешнююКомпоненту(“ОбщийМакет.КомпонентаПечатиШтрихкодовLinux32”, “КартинкаШтрихкода”, ТипВнешнейКомпоненты.Native);  
  Иначе
   ПодключитьВнешнююКомпоненту(“ОбщийМакет.КомпонентаПечатиШтрихкодовLinux64”, “КартинкаШтрихкода”, ТипВнешнейКомпоненты.Native);
  КонецЕсли;

 // Создадим объект внешней компоненты
 Компонент = Новый(“AddIn.КартинкаШтрихкода.Barcode”);

 // Если нет возможности рисовать
 Если НЕ Компонент.ГрафикаУстановлена Тогда

  // То картинку сформировать не сможем
  Возврат Неопределено;

 КонецЕсли;

 // Если в системе установлен шрифт Tahoma
 Если Компонент.НайтиШрифт(“Tahoma”) = Истина Тогда

  // Выбираем его как шрифт для формирования картинки
  Компонент.Шрифт = “Tahoma”;

 Иначе

  // Шрифт Tahoma в системе отсутствует

  // Обойдем все доступные компоненте шрифты
  Для Сч = 0 По Компонент.КоличествоШрифтов -1 Цикл

   // Получим очередной шрифт, доступный компоненте
   ТекущийШрифт = Компонент.ШрифтПоИндексу(Сч);

   // Если шрифт доступен
   Если ТекущийШрифт <> Неопределено Тогда

    // Они и будет шрифтом для формирования штрихкода
    Компонент.Шрифт = ТекущийШрифт;
    Прервать;

   КонецЕсли;

  КонецЦикла;

 КонецЕсли;

 // Установим размер шрифта
 Компонент.РазмерШрифта = 12;

 // Зададим размер картинки
 Компонент.Ширина = 100;
 Компонент.Высота = 90;

 Если ТипКода = Неопределено Тогда
  // Разрешим компоненте самой определять тип кода
  Компонент.АвтоТип = Истина;
  // ИЛИ установим код EAN-13
  // Компонент.ТипКода = 1;
  //
  // Тип смотрим в документации на внешнюю компоненту
 Иначе
  Компонент.ТипКода = ТипКода;
 КонецЕсли;
 
 // Если код содержит контрольный символ, обязательно указываем
 Компонент.СодержитКС = СтрДлина(Штрихкод) = 13;

 // Если отображать контрольный символ не нужно
 // Компонент.ВидимостьКС = Ложь;

 // Формируем картинку штрихкода
 Компонент.ЗначениеКода = Штрихкод;

 // Если установленная нами ширина меньше минимально допустимой для этого штрихкода
 Если Компонент.Ширина < Компонент.МинимальнаяШиринаКода Тогда

  // Скорректируем ширину
  Компонент.Ширина = Компонент.МинимальнаяШиринаКода + 10;

 КонецЕсли;

 // Сформируем картинку
 ДвоичныеДанныеКартинки = Компонент.ПолучитьШтрихкод();

 // Если картинка сформировалась
 Если НЕ ДвоичныеДанныеКартинки = Неопределено Тогда

  // Формируем из двоичных данных
  Возврат Новый Картинка(ДвоичныеДанныеКартинки);

 КонецЕсли;

 Возврат Неопределено;

КонецФункции

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

Свойства объекта Компонента можно посмотреть на картинке:

Удачи в работе!

С.С.С.