Имя: Пароль:
1C
1С v8
Добавить на Печатную форму ШтрихКод
0 frau
 
29.05.18
16:58
Стоит задача создать механизм штрихкодирования документов (на базе Розницы).
То есть на уже существующие печатные формы документов формировать и выводить Штрихкод. Пытаюсь разбираться в ОбщийМодуль.УправлениеПечатьюПереопределяемый - ПриПечати(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода), т.к. туда обращаются документы при печати.
Может у кого был опыт - прошу посоветовать в каком направлении двигаться. Подойдут ли методы а-ля .ПолучитьОбласть? Заранее спасибо
1 anatoly
 
29.05.18
17:20
"в каком направлении двигаться."
подключить 1cbarcod.dll и искать примеры.

а что в рознице нет разве ТОРГ-12 со штрихкодом?
или этикеток?
2 frau
 
29.05.18
17:23
(1) есть некоторые формы с штрихкодами (в т.ч. этикетки), но мне надо предоставить пользователю выбор: перед ним перечень всех печатных форм, а он отмечает на каких печатать штрихкод.
3 dezss
 
29.05.18
17:29
(2) посмотреть как сделано там
4 LienXo
 
29.05.18
18:17
(0) если нет любви к длл-кам можно через шрифты замутить, но тогда его на нужные машины ставить надо
5 Вафель
 
29.05.18
18:32
в типовых же есть компонента штрихкода
6 d4rkmesa
 
гуру
29.05.18
19:21
(0) Примерно так (если это актуальная конфигурация - работает на УТ 11.3.4):

// Вставить содержимое обработчика.
ТабличныйДокумент = Новый ТабличныйДокумент;

Обработка =  РеквизитФормыВЗначение("Объект");

Макет = Обработка.ПолучитьМакет("Макет");

ОбластьМакета = Макет.ПолучитьОбласть("ОбластьМакета");

Сообщение = "(01)" + "04600822901507" + "(11)" + "161109" + "(10)" + "16453I";    

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

ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("Ширина",          Окр(ОбластьМакета.Рисунки.КартинкаШтрихкода.Высота / КоличествоМиллиметровВПикселе));
ПараметрыШтрихкода.Вставить("Высота",          Окр(ОбластьМакета.Рисунки.КартинкаШтрихкода.Ширина / КоличествоМиллиметровВПикселе));

ПараметрыШтрихкода.Вставить("Штрихкод",        Сообщение);
ПараметрыШтрихкода.Вставить("ТипКода",         2); //ean-128
ПараметрыШтрихкода.Вставить("ОтображатьТекст", Истина);
ПараметрыШтрихкода.Вставить("РазмерШрифта",    12);
ПараметрыШтрихкода.Вставить("УголПоворота",    270);    

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

ТабличныйДокумент.Вывести(ОбластьМакета);

Возврат ТабличныйДокумент;
7 d4rkmesa
 
гуру
29.05.18
19:25
Правда, процедура МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода) довольно капризная, к примеру, у меня не получилось сделать "повернутый" на 90 градусов ШК, нужно переделать процедуру, а также ширину и высоту картинки делать фиксированной, а не от эталона.
8 tesseract
 
29.05.18
23:36
(5) Там DLL c зависимостями от  imagemagick (которая нативная, а не com).

(7) Так у ШК параметры фиксированные. Если его сделать совсем произвольным - то считываться не будет. Хотя иногда слишком капризная это точно.