Имя: Пароль:
1C
1С v8
Штрих код в отчет на СКД
,
0 pessok
 
15.10.12
09:17
Коллеги, всем доброго времени суток понедельника. Выручайте, плз. Задача, казалось бы, тривиальная, вывести в отчет штрих код. Проблема в том, что сам штрих код - это ActiveX объект, и создавать его динамически не выходит. Решил сделать второй макет, в котором этот штрих код есть, и для начала присоединять область при компоновке. Работает, но выводит коряво.

Пробовал находить находить рисунок во втором макете, и распологать его в нужном мне макете по тексту в табличном документе, но не хочет. Подозреваю, что расположить работает только для картинок конкретного табдока. В общем, куда ковырять?
1 pessok
 
15.10.12
09:28
upd: объект Рисунок таки вставляется, но он почему-то пустой
2 pessok
 
15.10.12
09:50
собственно код процедуры, не работающей... процдеура вызывается при компоновке для каждоый строки

Процедура СоздатьШтрихКод(ДокРезультат, ОбластьШтрихКодаСтар, Владелец)
   
   Макет = ПолучитьМакет("Макет");
   ТабДок = Новый ТабличныйДокумент;
   ОбластьШтрихКод = Макет.ПолучитьОбласть("ШтрихКод");    
   
   Штрихкод = "";
   
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
   |    Штрихкоды.Штрихкод
   |ИЗ
   |    РегистрСведений.Штрихкоды КАК Штрихкоды
   |ГДЕ
   |    Штрихкоды.Владелец = &Владелец";
   
   Запрос.УстановитьПараметр("Владелец", Владелец);
   
   Результат = Запрос.Выполнить();
   Выборка = Результат.Выбрать();
   
   Штрихкод = "";
   Пока Выборка.Следующий() Цикл
       
       Штрихкод = Выборка.Штрихкод;
       
       Прервать;
       
   КонецЦикла;
   
   Если Не ПустаяСтрока(Штрихкод) Тогда
       
       ОбластьШтрихКод.Рисунки[0].Объект.ТипКода = УправлениеРозничнойТорговлей.ПолучитьЗначениеТипаШтрихкодаДляЭУ(ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13);
       ОбластьШтрихКод.Рисунки[0].Объект.Сообщение = Штрихкод;
   
       Рис = ДокРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Объект);
       
       Рис = ОбластьШтрихКод.Рисунки[0]; //вот эта строка однозначно работает неверно, и затык в ней.

       Рис.Расположить(ОбластьШтрихКодаСтар);
       
   КонецЕсли;
   
   //ТабДок.Показать();
       
КонецПроцедуры

есть у кого какие идеи?
3 pessok
 
15.10.12
10:05
в общем плюнул и забил на Active X, что и надо было сделать с самого начала. Решил условным оформлением с нужным шрифтом тупо
4 Aprobator
 
15.10.12
10:07
а где вывод то штрихкода? Вижу, что у объекта выведенного в рисунке присваивается какое то свойство. И почему штрихкод - ACTIVE объект? Всегда как то считал, что штрихкод по своей сути определенный шрифт. Могу, конечно, ошибаться.
5 Aprobator
 
15.10.12
10:07
(3) правильно - нефиг извращаться.
6 pessok
 
15.10.12
15:11
Блин. А вот фиг! Вывести то что-то вывелось, но он не считывается и даже внешне абсолютно непохоже на Active X :( чего-то с самим текстом надо делать еще?
7 Aprobator
 
15.10.12
16:07
(6) шрифт правильный поставить и его размер. Ну может еще с межсимвольным расстоянием чего, хотя сомнительно.
8 Aprobator
 
15.10.12
16:08
ты штрихкод то сначала в поле табличного документа для опыта попробуй сделать, а потом уж в макет его пихать будешь.
9 Aprobator
 
15.10.12
16:09
а то значит быть похожим на ActiveX?
10 pessok
 
16.10.12
09:09
в итоге сделал таки макетом и ActiveX... хз, время уже поджимало с СКД ковыряться, а шрифтом перепробовал три. Там реально дело в межсимвольном интервале
11 pessok
 
16.10.12
09:09
спасибо, энивей!