30.06.2021

Внешний компонент “1C:Печать штрихкодов” (Native) для платформы «1С: Предприятие 8.3»

Внешний компонент "1С:Печать штрихкодов" для платформы "1С:Предприятие 8.3" поставляется в составе «1С:Библиотеки подключаемого оборудования» (далее БПО) и «1С:Библиотеки стандартных подсистем» (далее БСП) . Компонент предназначен для формирования изображений штрихкодов в формате PNG на основе передаваемых в компонент данных и параметров построения изображения. Компонент может использоваться только совместно с программными продуктами системы "1С:Предприятие 8" на рабочих местах, обеспеченных Лицензией на использование системы программ "1С:Предприятие 8".

Основные возможности

Внешний компонент "1С:Печать штрихкодов" позволяет формировать изображения штрихкодов следующих типов: EAN8, EAN13, EAN13 AddOn 2, EAN13 AddOn 5, ITF14, RSS14, EAN128, Code39, Code39 Full ASCII, Code93, Code128, Code16k Industrial 2 of 5, Interleaved 2 of 5, CodaBar, PDF417, QR, GS1 databar extended stacked, DataMatrix ASCII, DataMatrix Base256, DataMatrix Text, DataMatrix C40, DataMatrix X12, DataMatrix Edifact, GS1 Datamatrix. Компонент позволяет автоматически определять тип штрихкода исходя из передаваемых параметров (см. раздел «Свойства компонента»).

Алгоритм генерации изображений ШК

Внешний компонент "1С:Печать штрихкодов" реализует следующий алгоритм генерации изображений ШК:

  1. Валидация переданных параметров. На этапе валидации производится определение ТипаКода, если он не задан явно (см. свойство АвтоТип), преобразование ЗначенияКода в соответствии с ТипомВходныхДанных к внутреннему формату, а так же проверка возможности генерации ШК по полученным значениям.
  2. Генерация штрихкода, как таблицы значений закрашенных и не закрашенных областей
  3. Определение предельных габаритов ШК на изображении в соответствии с запрошенными Шириной и Высотой. Компонент рассчитывает максимально возможные размеры ШК, с элементами состоящими из максимального целого числа пикселей. Например, 1d ШК состоит из линий ширины 1ч-1б-2ч-2б-1ч - то есть 7(1+2+1 черных полосы и 1+2 белых), поэтому если будет запрошена Ширина, скажем, 27 пиксела, то будет сгенерирован ШК ширины 21 пиксел (максимальный кратный 7), остальное место на изображении останется не занятым. Таким образом, компонент генерирует точное растровое изображение: размер минимального элемента составляет минимум 1 пиксель и количество пикселей на элемент всегда целое.
  4. Определение габаритов генерируемого изображения. Если свойство УбратьЛишнийФон не задано, то будет сгенерировано изображение запрошенных Ширины и Высоты, иначе, изображение такого же размера как размер ШК определенный на предыдущем этапе. Так в примере выше, считая что запрашиваемые Ширина Высота, скажем 27 и 10 соответственно, если свойство УбратьЛишнийФон принимает значение Ложь, то будет сгенерировано изображение 27х10, ШК на котором будет 21х10(1d ШК). Т.е 6 пикселей - по 3 с левой и правой стороны от значащей части ШК, будут оставаться пустыми. Если же свойство УбратьЛишнийФон установлено, то будет сгенерировано изображение 21х10 со значащей частью 21х10 изображающей ШК.

УбратьЛишнийФон = Ложь

УбратьЛишнийФон = Истина

    5. Генерация изображения ШК с учетом заданного угла поворота и других параметров визуализации. Графически это можно представить следующим образом:

В случае успешной генерации изображения ШК свойство Результат будет содержать значение 0.

Невозможность генерации изображения

В случае, когда генерация изображения ШК невозможна, например из за несоответствия ЗначенияКода переданному ТипуКода или когда запрошены Ширина или Высота меньшие чем МинимальнаяШирина или МинимальнаяВысота кода, изображение будет сгенерировано в любом случае, однако вместо изображения ШК, оно будет содержать текст ошибки («invalid barcode» или «size too small») и значение свойства Результат будет содержать значение > 0.

Свойства

Название RU/EN Тип Чтение Запись Описание
Свойства, общие для всех типов штриховых кодов
ТипКода (CodeType) Число + + Свойство содержит идентификатор типа штрихкода. Может принимать одно из следующих значений:
0 (тип кода - EAN8)
1 (тип кода - EAN13)
2 (тип кода - EAN128)
3 (тип кода - CODE39)
4 (тип кода - CODE128)
5 (тип кода - CODE16K)
6 (тип кода - PDF417)
7 (тип кода - Industrial2of5)
8 (тип кода - Interleaved2of5)
9 (тип кода - Code39FullASCII)
10 (тип кода - CODE93)
11 (тип кода - ITF14)
12 (тип кода - RSS14)
13 (тип кода - CodaBar)
14 (тип кода - EAN13 AddOn 2)
15 (тип кода - EAN13 AddOn 5)
16(тип кода - QR)
17(тип кода - GS1 databar extended stacked), [с версии 9.0.2.2],
18(тип кода DataMatrix ASCII), [с версии 9.0.2.2],
19(тип кода DataMatrix Base256), [с версии 9.0.2.2],
20(тип кода DataMatrix Text), [с версии 9.0.2.2],
21(тип кода DataMatrix C40), [с версии 9.0.2.2],
22(тип кода DataMatrix X12), [с версии 9.0.2.2],
23(тип кода DataMatrix Edifact)[с версии 9.0.2.2],
24(тип кода GS1 Datamatrix) [с версии 9.0.6.4]
АвтоТип (CodeAuto, AutoType) Булево + + Свойство определяет признак автоматического определения ТипаКода в зависимости от значения переданных в свойствах ЗначениеКода и ТипВходныхДанных.
Когда значение свойства принимает значение «Истина» ТипКода определяется автоматически.
ЗначениеКода (CodeValue)) Строка + + Строка или Base64 Строка (см. свойство ТипВходныхДанных) содержащая данные генерируемого ШК
ТекстКода (CodeText) Строка + - Свойство содержит подпись штрихкода
ОтображатьТекст (TextVisible) Булево + + Свойство указывает необходимость отображать подпись штрихкода на сгенерированном изображении
Шрифт (Font) Шрифт + + Свойство содержит шрифт, используемый при отображении подписи штрихкода
РазмерШрифта (FontSize) Число + + Свойство содержит размер шрифта в пикселах
КоличествоШрифтов(FontCount) Число + - Свойство содержит количество шрифтов установленных в системе, которые может использовать компонент.
Разделители (CodeSentinel) Число + + Свойство содержит высоту полос-разделителей (только в EAN8 и EAN13) в процентах от высоты текста
Шрифт (Font) Шрифт + + Свойство содержит шрифт, используемый при отображении строки на поверхности штрихкода (свойство имеет смысл только в том случае, когда предусмотрен вывод данной строки).
РазмерШрифта (FontSize) Число + + Свойство содержит размер шрифта в пикселях
КоличествоШрифтов(FontCount) Число + - Свойство содержит количество шрифтов установленных в системе, которые может использовать компонента.
ПоложениеТекста (TextPosition) Число + + Свойство задаёт положение подписи. Свойство принимать следующие значения:
0 (снизу)
1 (сверху)
ПрозрачныйФон (BgTransparent) Булево + + Свойство содержит признак использования прозрачного фона
УголПоворота (CanvasRotation) Число + + Свойство содержит угол поворота (в градусах) штрихкода на сгенерированном изображении. Может принимать следующие значения:
0
90
180
270
УголПоворота (CanvasRotation) Число + + Свойство содержит угол поворота (в градусах) штрихкода.
Может принимать следующие значения:
0
90
180
270
ВертикальноеВыравниваниеКода(BarVerticalAlign, CodeVerticalAlign) Число + + Свойство задает способ вертикального выравнивания штрихкода на сгенерированном изображении.
Свойство может принимать следующие значения:
1 (по верхнему краю)
2 (по центру)
3 (по нижнему краю)
ТипВходныхДанных (InputDataType) Число + + Отмечает тип входных данных, которые задаются в свойстве ЗначениеКода. Свойство может принимать следующие значения
0 –Строка
1 – Base64 строка
Результат (Result) Число + - Возвращает результат генерации изображения ШК
0 – успешная генерация
1 – ошибка
УбратьЛишнийФон (RemoveExeedBackgroud, RemoveExtraBackgroud) Булево + + Указывает генератору, что требуется убрать лишний фон по краям ШК. В этом случае сгенерированное изображение ШК может быть меньше, чем указанные в свойствах Ширина и Высота. Изображение штрихкода будет совпадать с максимальным размером ШК, который можно вписать в указанные Ширину и Высоту
Ширина (Width) Число + + Свойство задает Ширину генерируемого изображения в пикселах
Высота (Height) Число + + Свойство задает Высоту генерируемого изображения в пикселах
УровеньКоррекции (ECL) Строка + + Свойство задаёт уровень коррекции ошибок. Актуально для PDF417.
МинимальнаяВысота (CodeMinHeight) Число + - Свойство содержит минимально возможную высоту области, на которой может быть отображён данный штрихкод
МинимальнаяШирина (CodeMinWidth) Число + - Свойство содержит минимально возможную ширину области, на которой может быть отображён штрихкод с заданными параметрами
Линейные (ld) штрихкоды
СодержитКС (CodeIsRaw, CodeHasCS) Булево + + Данное свойство содержит признак того, что переданное сообщение содержит контрольный символ
ВидимостьКС (CodeShowCS) Булево + + В случае, когда данное свойство принимает значение "Истина", контрольный символ будет включён в строку подписи
КонтрольныйСимвол (CodeCheckSymbol) Строка + - Свойство содержит контрольный символ, если тип штрихкода предполагает его использование
PDF417
КоличествоСтолбцов (ColumnCount) Число + + Свойство задаёт количество столбцов штрихкода. Актуально для PDF417
КоличествоСтрок (RowCount) Число + + Свойство задаёт количество строк штрихкода. Актуально для PDF417
Пропорции (AspectRatio) Строка + + Свойство задаёт соотношение высоты: ширины модулей штрихкода. Актуально для PDF417
УровеньКоррекции (ECL) Строка + + Свойство задаёт уровень коррекции ошибок. Актуально для PDF417
QR
УровеньКоррекцииQR(QRErrorCorrectionLevel) Число + + Свойство содержит значение уровня коррекции QR-кода.
Может принимать одно из следующих значений:
0 - L
1 - M
2 - Q
3 – H
ЛоготипКартинка(LogoImage)
ЛоготипКартинкаBase64(LogoImageBase64)
Строка + - Передает PNG картинку логотипа вписываемого в QR-код в виде Base64 строки
ЛоготипРазмерПроцентОтШК(LogoSizePercentFromBarcode) Число + + Отмечает процент заполнения логотипом изображения QR-кода
GS1 Databar extended stacked
GS1DatabarКоличествоСтрок(GS1DatabarRowCount) Число + + Свойство содержит количество строк штрихкода GS1 Databar extended stacked
Устаревшие свойства*
Разделители (CodeSentinel) Число + + Свойство содержит высоту полос-разделителей (только в EAN8 и EAN13) в процентах от высоты текста
ЦветТекста (TextColor Цвет + + Свойство содержит цвет, используемый при отображении строки на поверхности штрихкода (свойство имеет смысл только в том случае, когда предусмотрен вывод данной строки).
ЦветФона (BgColor) Цвет + + Свойство задаёт цвет заливки фона штрихкода. Имеет смысл только тогда, когда не используется прозрачный фон.
ЦветПолос (BarColor) Цвет + + Свойство содержит цвет, используемый для заливки полос на поверхности штрихкода
ГорСмещение (CanvasXOffset) Число + + (В настоящий момент не используется)
Свойство содержит значение горизонтального смещения изображения штрихкода
ВертСмещение (CanvasYOffset) Число + + (В настоящий момент не используется)
Свойство содержит значение вертикального смещения изображения штрихкода
РазмерКрая (CanvasMargin) Число + + (В настоящий момент не используется)
Свойство задаёт ширину рамки вокруг изображения штрихкода
ВыравниваниеКода (BarAlign) Число + + (В настоящий момент не используется)
Свойство задаёт способ автоматического расположения изображения штрихкода.
Может принимать следующие значения:
0 (не использовать автоматическое выравнивание)
1 (по левому краю области)
2 (по центру)
3 (по правому краю области)
ОриентацияТекста (TextAlign) Число + + Свойство задаёт способ размещения подписи штрихкода. Свойство может принимать следующие значения:
0 (выравнивание текста по центру области)
1 (выравнивание текста по левому краю области)
2 (выравнивание текста по правому краю области)
3 (растянуть текст по ширине области)
4,5,6 (варианты расположения текста, обычно применяемые на штрихкодах типов EAN8 и EAN13)

* Устаревшие свойства не используются в актуальных версиях компонента и будут удалены (станут недоступны) начиная с версии 10.1.1.1.

Методы

Название (алиас) Параметры Возвращаемое значение Описание
ПолучитьШтрихкод (GetBarcode) - Изображение Метод возвращает изображение сгенерированного штрихкода
ШрифтПоИндексу (FontAt) Индекс Шрифта (от 0 до КоличествоШрифтов(FontCount)-1) Строка Строка - имя Шрифта по индексу
НайтиШрифт (FindFont) Имя Шрифта Истина/Ложь Метод возвращает «Истина» если шрифт с указанным именем был найден, и «Ложь» в противном случае

Особенности работы с GS1 кодами

К GS1 типам кодов относятся – EAN128, GS1 Datamatrix и GS1 Databar extended stacked. При задании ЗначенияКода GS1 кодов допускается две формы ввода:

  1. В виде Строки. В этом случае ЗначениеКода должно содержать код GS1 в HRI (Human Readable Inеrpretation) виде, в котором коды групп применения заключены в круглые скобки, например, (01)04600822901507(11)161109(30)2434. В этом случае компонент интерпретирует строку как код GS1, раскрывает скобки, добавляет символ GS в конце каждой группы переменной длины и генерирует изображение, добавив графический символ начала кода FNC1.
  2. В виде Строки Base64. В этом случае внешняя система передает в компонент двоичные данные, содержащие в соответствии со стандартом GS1 группы применения и символ GS завершения группы переменной длины. Компонент генерирует изображение полученных данных, добавляя в штрихкод лидирующий графический символ FMC1. Проверка данных на соответствие стандарту GS1 не производиться. Пример входного значения - MDEwMDg1MTc2ODAwMzAyMDIxPktvbzNLUkx0Z0YicB05M2RHVno=

Пример генерации изображений штрихкода с помощью библиотек БПО и БСП

В состав БПО и БСП включены и необходимые методы по инициализации компоненты “1C:Печать штрихкодов” (Native) и генерации изображений штрихкодов в прикладных решениях 1С.
Для генерации картинки штрикода необходимо использовать метод «ИзображениеШтрихкода()» общего модуля «ГенерацияШтрихкода»
Внешняя компонента будет загружена и инициализирована автоматически при первом вызове этого метода.
Подробное описание возможных значений входящих параметров даны в описании функции конструктора для заполнения структуры входящих параметров «ПараметрыГенерацииШтрихкода()» общего модуля «ГенерацияШтрихкода».

Пример использования компоненты в составе БПО или БСП может быть представлен следующим листингом

Копировать в буфер обмена

Функция ПолучитьШтрихкод(ШиринаШтрихкода, ВысотаШтрихкода)



	Функция ПолучитьШтрихкод(ЗначШтрихкод, ЗначТипШтрихкода)
 
     ПараметрыШтрихкода = ГенерацияШтрихкодаКлиентСервер.ПараметрыГенерацииШтрихкода();
 
     ПараметрыШтрихкода = ГенерацияШтрихкода.ПараметрыГенерацииШтрихкода();
     ПараметрыШтрихкода.Ширина = ШиринаШтрихкода;
     ПараметрыШтрихкода.Высота = ВысотаШтрихкода;
     ПараметрыШтрихкода.ТипКода = ЗначТипШтрихкода;
     ПараметрыШтрихкода.УголПоворота = Число(УголПоворота);
     ПараметрыШтрихкода.Штрихкод = ЗначШтрихкод;
     ПараметрыШтрихкода.ПрозрачныйФон = ПрозрачныйФон;
     ПараметрыШтрихкода.УровеньКоррекцииQR = УровеньКоррекцииQR;
     ПараметрыШтрихкода.ОтображатьТекст = ОтображатьТекст;
     ПараметрыШтрихкода.Масштабировать = Масштабировать;
     ПараметрыШтрихкода.СохранятьПропорции = СохранятьПропорции;
     ПараметрыШтрихкода.ВертикальноеВыравнивание = ВертикальноеВыравнивание; 
     ПараметрыШтрихкода.GS1DatabarКоличествоСтрок = КоличествоСтрокGS1Databar;
     ПараметрыШтрихкода.ТипВходныхДанных = 0;  // Тип входных данных (0-Строка, 1-Base64).
     ПараметрыШтрихкода.УбратьЛишнийФон = УбратьЛишнийФон;
     ПараметрыШтрихкода.ЛоготипКартинка = КартинкаBase64;
     ПараметрыШтрихкода.ЛоготипРазмерПроцентОтШК = ЛоготипРазмерПроцентОтШК;
    
     РезультатШтрихкод = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);
 
     Если НЕ РезультатШтрихкод.Результат Тогда
         Сообщить(НСтр("ru='Ошибка генерации штрихкода.'"));
     КонецЕсли;
 
     Возврат РезультатШтрихкод.Картинка;
 
 КонецФункции