По теме из базы знаний
- Печатная форма "Счет - фактура выданная" со штрих кодами
- Счет-фактура для УНФ 1.4 (внешняя печатная форма со штрих-кодом для работы по договору факторинга с Альфа-Банком)
- Внешняя печатная форма "Платежного поручения" с QR кодом для Бух 3 УФ
- 1С:Медицина. 3.0. Поликлиника. Пакет из 15 -ти внешних печатных форм: Информированных добровольных согласий на проведение обследований, манипуляций и процедур с выводом QR-кода медкарты пациента.
- 1С:Медицина. 3.0. Поликлиника. Пакет из 15 -ти внешних печатных форм: Информированных добровольных согласий на проведение обследований, манипуляций и процедур с выводом Штрих-кода медкарты пациента.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) тогда тебе не нужно никаких компонент. Все должно быть в подсистемах. Компонента там уже вшита в макетах, специальная для УФ.
а конкретно нужна функция,
а пример использования примерно такой.
Эталон - это эталонная картинка, для определения размеров,какие должны быть.
Нутро - это уже макет, который заполняется.
Сам штрихкод - на макете это Рисунок.
Все остальное думаю по смыслу понятно.
а конкретно нужна функция,
МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
а пример использования примерно такой.
Эталон = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Эталон");
КоличествоМиллиметровВПикселе = Эталон.Рисунки.Квадрат100Пикселей.Высота / 100;
ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("Ширина", Окр(Нутро.Рисунки.КартинкаШтрихкода.Ширина / КоличествоМиллиметровВПикселе));
ПараметрыШтрихкода.Вставить("Высота", Окр(Нутро.Рисунки.КартинкаШтрихкода.Высота / КоличествоМиллиметровВПикселе));
ПараметрыШтрихкода.Вставить("Штрихкод", Латин(Эл.ИнвН));
ПараметрыШтрихкода.Вставить("ТипКода", 99); // EAN13
ПараметрыШтрихкода.Вставить("ОтображатьТекст", Истина);
ПараметрыШтрихкода.Вставить("РазмерШрифта", 8);
Нутро.Рисунки.КартинкаШтрихкода.Картинка = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
ПоказатьЭталон - это эталонная картинка, для определения размеров,какие должны быть.
Нутро - это уже макет, который заполняется.
Сам штрихкод - на макете это Рисунок.
Все остальное думаю по смыслу понятно.
У меня тоже были проблемы с баркодом и я нашел другой для себя выход. Установил шрифт "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
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот