Внешняя печатная форма со штрих кодом

1. EvgeniyNP 13.11.18 16:51 Сейчас в теме
Здравствуйте!
Конфигурация ЗКГУ 3.0
Искал по интернету и пока не смог найти толком ничего
Установил 1cbarcode.
На ПФ добавил объект элемент управления 1C.V8.Печать штрих-кодов
Но как подключить внешнюю компоненту и вывести в штрих-код информацию я не понял.
Может кто подсказать?
Спасибо
По теме из базы знаний
Ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Boneman 298 13.11.18 16:57 Сейчас в теме
это конфигурация на каких формах ? На управляемых или на обычных ?
3. EvgeniyNP 14.11.18 08:43 Сейчас в теме
5. Boneman 298 14.11.18 09:15 Сейчас в теме
(3) тогда тебе не нужно никаких компонент. Все должно быть в подсистемах. Компонента там уже вшита в макетах, специальная для УФ.
а конкретно нужна функция,
МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);


а пример использования примерно такой.
    Эталон = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Эталон");
	КоличествоМиллиметровВПикселе = Эталон.Рисунки.Квадрат100Пикселей.Высота / 100;

	ПараметрыШтрихкода = Новый Структура;
	ПараметрыШтрихкода.Вставить("Ширина",          Окр(Нутро.Рисунки.КартинкаШтрихкода.Ширина / КоличествоМиллиметровВПикселе));
	ПараметрыШтрихкода.Вставить("Высота",          Окр(Нутро.Рисунки.КартинкаШтрихкода.Высота / КоличествоМиллиметровВПикселе));
	ПараметрыШтрихкода.Вставить("Штрихкод",        Латин(Эл.ИнвН));
	ПараметрыШтрихкода.Вставить("ТипКода",         99); // EAN13
	ПараметрыШтрихкода.Вставить("ОтображатьТекст", Истина);
	ПараметрыШтрихкода.Вставить("РазмерШрифта",    8);
			
	Нутро.Рисунки.КартинкаШтрихкода.Картинка = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
Показать

Эталон - это эталонная картинка, для определения размеров,какие должны быть.
Нутро - это уже макет, который заполняется.
Сам штрихкод - на макете это Рисунок.
Все остальное думаю по смыслу понятно.
4. Gladiator4021 14.11.18 09:14 Сейчас в теме
У меня тоже были проблемы с баркодом и я нашел другой для себя выход. Установил шрифт "Barcode.ttf" в макете просто сделал текстовое поле и нашел в инете процедурку кодировки символов.
Функция БарКод(Вход,БазаМодеС=6)
	АскиБар =                                      
////     0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 
    "15551555144948584545849485454858494405641645206542546156050­6542164524212245605641254614650"+ //29
    "11919191108980988109881889018890898001:0928120290:18212211829021281:0122209281:01218290:10"+ //59
    "2305<0;0004=0<540=4<1<05<4105<0=441<4=0<14<50=4050<320=048300474074­43074434470344704740113"+ //89
    "13131100;0838030380;0308380023032203302";//102
	
	
	//Фильтр пустого входа
    Если Вход = "" Тогда Возврат(""); КонецЕсли;
    
    //Очищаем выход
	ИтоговаяТабл = Новый ТаблицаЗначений;
    ИтоговаяТабл.Колонки.Добавить("А",,"Аск",4);
    Дл = СтрДлина(СокрЛП(Вход));
    
    //Разборки со стартовым кодом
    //Принимаем решение о смене подсистемы кодирования "моде" (А-1, В-2, С-3)
    //Анализируем тип двух первых символов
    ТекСимв = КодСимвола(Сред(Вход,1,1));
    ТипТекСимв = ТипСимв(ТекСимв);
    Если Дл > 1 тогда
        СлСимв  = КодСимвола(Сред(Вход,2,1));
        ТипСлСимв = ТипСимв(СлСимв);
    Иначе
        ТипСлСимв = 2;
    КонецЕсли;
    Моде = ТипТекСимв;
    Если (ТипТекСимв = 3) и (ТипСлСимв = 3) тогда Моде = 3; КонецЕсли;
    
    //В выходную таблицу добавляем символ старта подсистемы
    ВыхТ = ИтоговаяТабл.Добавить();
    ВыхТ.А = 102 + Моде;
    Вых = Символ(64 + Моде);    
    //Анализируем входные символы
    Для Сч = 1 по  Дл Цикл
        ТекСимв = КодСимвола(Сред(Вход,Сч,1));
        Если ТекСимв > 127 тогда 
            Сообщить("Символ № "+Сч+ " со значением="+ ТекСимв+" не разрешен в штрихкоде");
            Продолжить;
        КонецЕсли;    
        ТипТекСимв = ТипСимв(ТекСимв);
        
        //Принимаем решение о смене подсистемы кодирования (моде).
        Если ТипТекСимв <> Моде тогда
            Если ТипТекСимв < 3 Тогда
                //Нужно менять моде либо с А на В, либо с В на А
                ВыхТ = ИтоговаяТабл.Добавить();
                Если Моде = 1 тогда
                    ВыхТ.А = 100;   //Переключаемся из А в В
                Иначе    
                    ВыхТ.А = 101;    //Переключаемся из В в А
                КонецЕсли;
                Моде = ТипТекСимв;
            Иначе
                //Находимся в моде А или В, встретили цифру.
                //Прикидываем, стоит ли переключаться в МодеС
                //Смотрим на БазаМодеС знаков вперед. 
                //Оптимально, БазаМодеС = 6 (См. описание)
                ДлМ = ?(Дл < Сч+БазаМодеС-1, Дл, Сч+БазаМодеС-1);
                СчЦ = 0;
                Для СчМ = Сч по ДлМ Цикл
                    МодМ = ТипСимв(КодСимвола(Сред(Вход,СчМ,1)));
                    
                    //Если цифра - смотрим дальше
                    Если МодМ = 3 тогда 
                        СчЦ = СчЦ+1;
                        Продолжить; 
                    Иначе
                        СчЦ = 0;
                        Прервать;
                    КонецЕсли;
                КонецЦикла;
                //Если нужно переключится в С
                Если СчЦ - БазаМодеС = 0 тогда
                    Моде = 3;
                     ВыхТ = ИтоговаяТабл.Добавить();
                    ВыхТ.А = 99;   //Переключаемся из А или В в С
                КонецЕсли;
            КонецЕсли;        
        КонецЕсли;        
        
        //Добавляем очередной символ
        
        //Если символ в МодеС
        Если Моде = 3 тогда
            СлСимв  = КодСимвола(Сред(Вход,Сч+1,1));
            ТипСлСимв = ТипСимв(СлСимв);
            //Если входная строка кончается на первой цифре, или 
            //конец входной строки цифра+не цифра
            Если (Сч = Дл) или (ТипТекСимв <> 3) или (ТипСлСимв <> 3) тогда
                //Переключаемся из режима С в режим В
                Моде = 2;
                 ВыхТ = ИтоговаяТабл.Добавить();
                ВыхТ.А = 100;   
            Иначе
                //Добавляем символ в МодеС
                Если (ТипТекСимв <> 3) или (ТипСлСимв <> 3) тогда 
                    Сообщить("Ош."+ Сч+" "+ ТекСимв+" "+СлСимв);
                Иначе    
                     ВыхТ = ИтоговаяТабл.Добавить();
                    ВыхТ.А = Число(Символ(ТекСимв)+Символ(СлСимв));
                    Сч = Сч+1;
                    Продолжить;
                КонецЕсли;
            КонецЕсли;    
        КонецЕсли;
        
        //Добавляем символ в МодеА, или МодеВ
         ВыхТ = ИтоговаяТабл.Добавить();
        Если Моде = 1 тогда
            ВыхТ.А = ТекСимв+64;
        Иначе
            ВыхТ.А = ТекСимв-32;
        КонецЕсли;    
    КонецЦикла;
    //Считаем контрольную сумму и формируем баркод
	//ВыхТ.ВыбратьСтроки();
    Сум = 0;
    Ном = 0;
    Для Каждого ВыхТ из ИтоговаяТабл Цикл
        Если Ном > 0 тогда 
            Сум = Мод(Сум+ВыхТ.А*Ном,103);
            Вых = Вых+Сред(АскиБар,(ВыхТ.А+1)*3-2,3);
        Иначе    
            Сум = Мод(ВыхТ.А,103);
        КонецЕсли;
        Ном = Ном+1;
    КонецЦикла;
    Возврат(Вых+Сред(АскиБар,(Сум+1)*3-2,3)+"@");
КонецФункции
Показать
Прикрепленные файлы:
Barcode.ttf
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот