Имя: Пароль:
1C
 
1С 8.3 УФ Вывести штрих-код на печатную форму
0 laby1
 
30.09.20
15:03
Друзья, подскажите, как сейчас будет правильно вывести штрих-код на печатную форму?
Конфигурация УНФ.
1 laby1
 
30.09.20
15:22
Ну ладно там правильно, как вообще можно на ПФ вывести ШК?
2 laby1
 
30.09.20
16:28
Пока нашел только вот это:

ПодключениеВыполнено = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодов", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);
    
    // Создадим объект внешней компоненты
    Если ПодключениеВыполнено Тогда
        ВнешняяКомпонента = Новый("AddIn.КартинкаШтрихкода.Barcode");
    Иначе
        Возврат Неопределено;
    КонецЕсли;

но куда это лепить непонятно.
3 laby1
 
01.10.20
09:44
Помогите гугл-программисту
4 laby1
 
01.10.20
10:10
нагуглил такую штуку https://its.1c.ru/db/metod8dev#content:5963:hdoc

Внешняя компонента "1С:Печать штрихкодов" для платформы "1С:Предприятие 8.3" поставляется в составе Библиотеки подключаемого оборудования.

пример использования дан:

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

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

    Возврат МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);

КонецФункции
5 laby1
 
01.10.20
10:12
да, есть такая функция, только пишут устарела:
// Устарела. Следует использовать ГенерацияШтрихкодаВызовСервера.ИзображениеШтрихкода()
// Формирование изображения штрихкода.
//
// Параметры:
//   ПараметрыШтрихкода - Структура (Конструктор ГенерацияШтрихкодаКлиентСервер.ПараметрыГенерацииШтрихкода())
//
// Возвращаемое значение:
//   Картинка - Картинка со сформированным штрихкодом или НЕОПРЕДЕЛЕНО.
//
Функция ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода) Экспорт
    
    РезультатОперации = ГенерацияШтрихкодаВызовСервера.ИзображениеШтрихкода(ПараметрыШтрихкода);
    Если РезультатОперации.Результат Тогда
        Возврат РезультатОперации.Картинка;
    Иначе
        Возврат Неопределено;
    КонецЕсли;
    
КонецФункции
6 laby1
 
01.10.20
10:13
хотя она же и вызывается ...
7 laby1
 
01.10.20
10:14
// Формирование изображения штрихкода.
//
// Параметры:
//   ПараметрыШтрихкода - Структура (Конструктор ГенерацияШтрихкодаКлиентСервер.ПараметрыГенерацииШтрихкода())
//
// Возвращаемое значение:
//   Картинка - Картинка со сформированным штрихкодом или НЕОПРЕДЕЛЕНО.
//
Функция ИзображениеШтрихкода(ПараметрыШтрихкода) Экспорт
    
    ВнешняяКомпонента = ГенерацияШтрихкодаСерверПовтИсп.ПодключитьКомпонентуГенерацииИзображенияШтрихкода();
    
    Если ВнешняяКомпонента = Неопределено Тогда
        ТекстОшибки = НСтр("ru = 'Ошибка подключения внешней компоненты печати штрихкода.'");
        ЗаписьЖурналаРегистрации(ТекстОшибки, УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
        ВызватьИсключение ТекстОшибки;
    КонецЕсли;
    
    Возврат ГенерацияШтрихкодаКлиентСервер.ИзображениеШтрихкода(ВнешняяКомпонента, ПараметрыШтрихкода);
    
КонецФункции
8 Philix
 
01.10.20
10:24
На макет надо воткнуть любую рисунок нужного размера. Он получит имя, например, D1.
Далее - получить картинку штрихкода через функцию ИзображениеШтрихкода и установить полученное из функции как картинку того рисунка.

Область.Рисунки.D1.Картинка = ПолученнаяИзфункцииКартинка;

и вывести область в табличный документ
9 laby1
 
01.10.20
10:28
Да, есть в конфе вызов, только тут QR-код:

&НаСервере
Функция ПолучитьШтрихкод(ШиринаШтрихкода, ВысотаШтрихкода, Штрихкод)
    
    ПараметрыШтрихкода = ГенерацияШтрихкодаКлиентСервер.ПараметрыГенерацииШтрихкода();
    ПараметрыШтрихкода.Ширина  = ШиринаШтрихкода;
    ПараметрыШтрихкода.Высота  = ВысотаШтрихкода;
    ПараметрыШтрихкода.ТипКода = 16;
    ПараметрыШтрихкода.ОтображатьТекст = Истина;
    ПараметрыШтрихкода.РазмерШрифта   = 12;
    ПараметрыШтрихкода.УголПоворота   = 0;
    ПараметрыШтрихкода.Штрихкод       = Штрихкод;
    ПараметрыШтрихкода.ПрозрачныйФон  = Ложь;
    ПараметрыШтрихкода.Масштабировать = Ложь;
    
    РезультатОперации = ГенерацияШтрихкодаВызовСервера.ИзображениеШтрихкода(ПараметрыШтрихкода);
    Возврат РезультатОперации.Картинка;
    
КонецФункции

&НаСервере
Процедура СформироватьНаСервере(Текст, QRКодЧека)
    
    QRКод.Очистить();
    
    Макет = РегистрыСведений.ОчередьЧековККТ.ПолучитьМакет("Макет");
    Область = Макет.ПолучитьОбласть("Строка|Колонка");
    Рисунок = Область.Рисунки.ШтрихКод;
    
    ОбластьТекст = Макет.ПолучитьОбласть("Текст");
    ОбластьТекст.Область("Текст").Текст = Текст;
    QRКод.Вывести(ОбластьТекст);
    
    Если QRКодЧека <> Неопределено Тогда
        Эталон = Справочники.ПодключаемоеОборудование.ПолучитьМакет("МакетДляОпределенияКоэффициентовЕдиницИзмерения");
        КоличествоМиллиметровВПикселеВысота = Эталон.Рисунки.Квадрат100Пикселей.Высота / 100;
        КоличествоМиллиметровВПикселеШирина = Эталон.Рисунки.Квадрат100Пикселей.Ширина / 100;
        ШиринаШтрихкода = Окр(Рисунок.Ширина / КоличествоМиллиметровВПикселеШирина);
        ВысотаШтрихкода = Окр(Рисунок.Высота / КоличествоМиллиметровВПикселеВысота);
        Картинка = ПолучитьШтрихкод(ШиринаШтрихкода, ВысотаШтрихкода, QRКодЧека);
        Рисунок.Картинка = Картинка;
        QRКод.Вывести(Область);
    КонецЕсли;
    
КонецПроцедуры
10 laby1
 
01.10.20
10:30
QRКод тут табличный документа на форме
11 laby1
 
01.10.20
10:31
(8) ага, мне надо получить картинку и вывести в макет, кажись понял, спасибо, попробую
12 laby1
 
01.10.20
12:18
какая-то лажа выходит, тип кода ставлю 1, всё равно как QR
https://yadi.sk/i/3-g4h-Q1p2cyvg
13 laby1
 
01.10.20
12:20
ПараметрыШтрихкода    Структура    Структура
GS1DatabarКоличествоСтрок    2    Число
ВертикальноеВыравнивание    1    Число
Высота    10,6715277777778    Число
Масштабировать    Истина    Булево
ОтображатьТекст    Ложь    Булево
ПрозрачныйФон    Ложь    Булево
РазмерШрифта    12    Число
СохранятьПропорции    Ложь    Булево
ТипВходныхДанных    0    Число
ТипКода    1    Число
УбратьЛишнийФон    Ложь    Булево
УголПоворота    0    Число
УровеньКоррекцииQR    1    Число
Ширина    73,025    Число
Штрихкод    "1273720200908"    Строка
14 laby1
 
01.10.20
12:26
в саму компоненту передаётся:
Свойство    Значение    Тип
ВнешняяКомпонента    AddIn.BarcodeSymbolicName.Barcode    AddIn.BarcodeSymbolicName.Barcode
ECL    1    Число
GS1DatabarКоличествоСтрок    1    Число
АвтоТип    Ложь    Булево
Версия    "9.0.10.1"    Строка
ВертСмещение    0    Число
ВертикальноеВыравниваниеКода    1    Число
ВидимостьКС    Истина    Булево
ВыравниваниеКода    2    Число
Высота    11    Число
ГорСмещение    0    Число
ГрафикаУстановлена    Истина    Булево
ЗначениеКода    Недоступно для чтения    
ИмяФайла    ""    Строка
КоличествоСтолбцов    0    Число
КоличествоСтрок    0    Число
КоличествоШрифтов    142    Число
КонтрольныйСимвол    "8"    Строка
МаксимальныйРазмерШрифтаДляПринтеровНизкогоРазрешения    16    Число
МинимальнаяВысотаКода    2    Число
МинимальнаяШиринаКода    109    Число
ОриентацияТекста    4    Число
ОтображатьТекст    Ложь    Булево
ПоложениеТекста    0    Число
ПрозрачныйФон    Ложь    Булево
Пропорции    "1:4"    Строка
РазделителиКода    30    Число
РазмерКрая    0    Число
РазмерШрифта    12    Число
Результат    1    Число
СодержитКС    Ложь    Булево
ТекстКода    ""    Строка
ТипВходныхДанных    0    Число
ТипКода    1    Число
УбратьЛишнийФон    Ложь    Булево
УголПоворота    0    Число
УровеньКоррекцииQR    1    Число
ЦветПолос    -16 777 216    Число
ЦветТекста    -16 777 216    Число
ЦветФона    -16 777 216    Число
Ширина    109    Число
Шрифт    "Tahoma"    Строка
15 laby1
 
01.10.20
12:27
GS1DatabarКоличествоСтрок   я поставил 1 вместо 2 - тот же результат
16 laby1
 
01.10.20
12:30
значение кода недоступно для чтения, но туда передаётся код "1273720200908"    Строка
17 laby1
 
01.10.20
12:42
почему-то получается штрих-код только в "CODE39" (ВнешняяКомпонента.ТипКода = 3)
18 SadrArt
 
01.10.20
12:54
Извините, а вы с кем разговариваете? )
19 laby1
 
01.10.20
12:59
да, после мытарств с подбором параметром получилось:
Функция ПолучитьШтрихкод(ШиринаШтрихкода, ВысотаШтрихкода, Штрихкод)
    
    ПараметрыШтрихкода = ГенерацияШтрихкодаКлиентСервер.ПараметрыГенерацииШтрихкода();
    ПараметрыШтрихкода.GS1DatabarКоличествоСтрок = 2;
    ПараметрыШтрихкода.Ширина  = ШиринаШтрихкода;
    ПараметрыШтрихкода.Высота  = ВысотаШтрихкода;
    ПараметрыШтрихкода.ТипКода = 1;
    ПараметрыШтрихкода.ОтображатьТекст = Ложь;
    ПараметрыШтрихкода.РазмерШрифта   = 0;
    ПараметрыШтрихкода.УголПоворота   = 0;
    ПараметрыШтрихкода.Штрихкод       = Штрихкод;
    ПараметрыШтрихкода.ПрозрачныйФон  = Ложь;
    ПараметрыШтрихкода.Масштабировать = Истина;
    
    РезультатОперации = ГенерацияШтрихкодаВызовСервера.ИзображениеШтрихкода(ПараметрыШтрихкода);
    Возврат РезультатОперации.Картинка;
    
КонецФункции

&Вместо("ПечатнаяФорма")
Функция Расш_ПечатнаяФорма(МассивОбъектов, ОбъектыПечати, ИмяМакета)
...
    РисунокШК = ОбластьМакета.Рисунки.ШтрихКод;
    ШтрихКод = "01" + Прав(Шапка.Номер,4) + Формат(Шапка.ДатаДокумента,"ДФ=yyMMdd");
    РисунокШК.Картинка = ПолучитьШтрихкод(РисунокШК.Ширина,РисунокШК.Высота, Штрихкод);
...
КонецФункции
20 laby1
 
01.10.20
14:18
Тот странный рисунок - это как бы надпись "invalid barcode"
А возникал он потому, что для формата EAN-13 оказывается воспринимает только 12 цифр,
а для ITF14 - максимум 13. А я пытался 13 и 14 соответственно.
А когда ошибся с кол-вом цифр и о чудо, штрихкод появился.

гугл-программист ха-ха
21 laby1
 
02.10.20
16:04
А кто-нибудь в курсе, можно ли, чтоб эта компонента выводила вместе со штрихкодом и соответствующий ему числовой код.
Если я в параметры добавляю  
ПараметрыШтрихкода.ОтображатьТекст = Истина;
то выводятся большие пиксельные цифры без самого штрих-кода. Там в компоненте по умолчанию размер шрифта 12.
А если пытаюсь передать другой размер шрифта к примеру
ПараметрыШтрихкода.РазмерШрифта   = 10;
То выпадает ошибка
Ошибка при установке значения атрибута контекста (РазмерШрифта)
    ВнешняяКомпонента.РазмерШрифта = ПараметрыШтрихкода.РазмерШрифта;