1. На печатную орму в область добавляем просто пустой рисунок. Убираем на нем границы рисунка (обводку) 2. В менеджере где формируеться печатная форма на этапе набора строк с позициями длобавляем свою обработку. Например для ЗаказаПокупателя в МодулеМенеджера.СформироватьЗаказПокупателя(..) в цикле (Для каждого СтрокаЗапасы Из Шапка.ТаблицаЗапасы Цикл)
ОбщийМодульРасширенныйФункционал.ЗаполнитьШКДляПечати(ОбластьМакета,ПечатнаяФорма,СтрокаЗапасы);
3. В общем модуле сам код добавления такой
&НаСервере Процедура ЗаполнитьШКДляПечати (ОбластьМакета,ПечатнаяФорма,СтрокаМакетаДляУстановкиШК) Экспорт //Получаем область Рисунка и данные по нему Для каждого стрРисунки Из ОбластьМакета.Рисунки Цикл Рисунок = стрРисунки; КонецЦикла; Эталон = Обработки.ПечатьЭтикетокИЦенников.ПолучитьМакет("Эталон"); КоличествоМиллиметровВПикселе = Эталон.Рисунки.Квадрат100Пикселей.Высота / 100; //ОпределяемНоменклатуру мНоменклатура = ОпределитьНоменклатуру(СтрокаМакетаДляУстановкиШК); мХарактеристика = СтрокаМакетаДляУстановкиШК.Характеристика; Если не ЗначениеЗаполнено(мНоменклатура) Тогда мсооб = новый СообщениеПользователю; мсооб.Текст = "Не удалось определить одну из номенклатур для получения Штрих-кода"; мсооб.Сообщить(); Возврат; КонецЕсли; //ПолучаемЗначениеШК ЗначениеШтрихкода = ""; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод |ИЗ | РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры |ГДЕ | ШтрихкодыНоменклатуры.Номенклатура = &Номенклатура | И ШтрихкодыНоменклатуры.Характеристика = &Характеристика"; Запрос.УстановитьПараметр("Номенклатура",мНоменклатура); Запрос.УстановитьПараметр("Характеристика",мХарактеристика); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ЗначениеШтрихкода =ВыборкаДетальныеЗаписи.Штрихкод; КонецЦикла; //Заполняем ШК Если ЗначениеЗаполнено(ЗначениеШтрихкода) Тогда ПараметрыШтрихкода = Новый Структура; ПараметрыШтрихкода.Вставить("Ширина", Окр(Рисунок.Ширина / КоличествоМиллиметровВПикселе)); ПараметрыШтрихкода.Вставить("Высота", Окр(Рисунок.Высота / КоличествоМиллиметровВПикселе)); //Если ОписаниеШаблона.ТипКода = 16 Тогда //МинСторона = Мин(ПараметрыШтрихкода.Ширина, ПараметрыШтрихкода.Высота); //ПараметрыШтрихкода.Ширина = МинСторона; //ПараметрыШтрихкода.Высота = МинСторона; //КонецЕсли; ПараметрыШтрихкода.Вставить("УровеньКоррекцииQR", 0); ПараметрыШтрихкода.Вставить("Штрихкод", ЗначениеШтрихкода); ПараметрыШтрихкода.Вставить("ТипКода", 1); ПараметрыШтрихкода.Вставить("ОтображатьТекст", Истина); ПараметрыШтрихкода.Вставить("РазмерШрифта", 12); ПараметрыШтрихкода.Вставить("УголПоворота", 0); ПараметрыШтрихкода.Вставить("ПрозрачныйФон", истина); Рисунок.Картинка = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода); КонецЕсли; КонецПроцедуры
Функция ОпределитьНоменклатуру(СТрокаПФ) мноменклатура = Справочники.Номенклатура.ПустаяСсылка(); Если Не ЗначениеЗаполнено(мноменклатура) И ЗначениеЗаполнено(СТрокаПФ.Код) Тогда мноменклатура = Справочники.Номенклатура.НайтиПоКоду(СТрокаПФ.Код); КонецЕсли; Если Не ЗначениеЗаполнено(мноменклатура) И ЗначениеЗаполнено(СТрокаПФ.Наименование) Тогда мноменклатура = Справочники.Номенклатура.НайтиПоНаименованию(СТрокаПФ.Наименование); КонецЕсли; Возврат мноменклатура; КонецФункции