Имя: Пароль:
1C
1С v8
Проблема с печатью штрих-кода в pdf
0 karpik666
 
30.07.14
06:42
Добрый день, есть документы Реализации товаров и услуг, в них программно выводится в макет двумерный штрих-код. Штрих-код генерируется с помощью компоненты, а затем переводится в формат картинки и вставляется в макет. Проблема возникает на этапе печати. Если задать компоненте штрих-кода параметр "реальный размер", то на печать выводится корректный штрих-код без искажений, и считывается хорошо, на всех макетах штрих-код одинакового размера. Однако у нас есть еще обработка, которые через модуль менеджера переводит некоторое количество макетов реализаций в формат pdf, и здесь макет получается масштабируется, а штрих-код нет, из-за этого невозможно считать.
Если же задать компоненте размер "пропорционально", то в макете штрих-код разного размера получается при печати, а при печати pdf, все корректно. Можно конечно добавить передаваемый параметр на размер печати в функцию печати, но не хочется править типовую функцию. Не знаю, как выйти из этого положения. Помогите, кто сталкивался
1 Бешеная Нога
 
30.07.14
07:35
имхо придется использовать передачу дополнительного параметра
2 karpik666
 
30.07.14
17:34
АП
3 Ёпрст
 
гуру
30.07.14
17:38
печать через внеш. печ формы ?
Если да, то примитив, в обработке печати (там где пдф лепите) получить таблицу и ей уже тупо воткнуть в попытку исключение области штрихкода пропорциональный размер
4 Ёпрст
 
гуру
30.07.14
17:38
и не важно, есть ли штрихкод или нет, попытка-исключение усё проглотит
5 karpik666
 
31.07.14
07:35
(3) Нет, печатается не через ВПФ, поэтому и запихиваю программно в область и печатаю через картинку, чтобы не было ошибок при работе с компонентой штрих-кода. Код такой к примеру

Функция ПечатьАктаОбОказанииУслугТовары(СуммыВРублях = Ложь)
***
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ДК_РаботаСоШтрихкодами.ПоместитьШтрихкодВМакет(ОбластьМакета, Ссылка, 100, 0);
***
КонецФункции

Процедура ПоместитьШтрихкодВМакет(ОбластьМакета, СсылкаНаОбъект, ПоложениеСлева, ПоложениеСверху) Экспорт
    //Для всех макетов размер штрих-кода будет одинаков, поэтому он задается в модуле.
    лШиринаКартинки             = 45;
    лВысотаКартинки             = 9;
    лВысотаШтрихкода             = 39;
    лШиринаШтрихкода             = 250;
    лКодировкаШтрихкода         = 6; //PDF417
    
    лВКШтрихкод = ДК_РаботаСоШтрихкодами.ПодключитьВнешнююКомпонентуШтрихкод();
    лКартинкаШтрихкод = ДК_РаботаСоШтрихкодами.ПолучитьКартинкуШтрихкода(лВКШтрихкод, лКодировкаШтрихкода, Строка(СсылкаНаОбъект.УникальныйИдентификатор()),лШиринаШтрихкода, лВысотаШтрихкода);    
    лРисунокШтрихкода = ОбластьМакета.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);    
    лРисунокШтрихкода.Лево                 = ПоложениеСлева;
    лРисунокШтрихкода.Верх                 = ПоложениеСверху;
    лРисунокШтрихкода.Ширина             = лШиринаКартинки;
    лРисунокШтрихкода.Высота             = лВысотаКартинки;
    лРисунокШтрихкода.РазмерКартинки     = РазмерКартинки.РеальныйРазмер;
    лРисунокШтрихкода.Картинка             = лКартинкаШтрихкод;
    лРисунокШтрихкода.ГраницаСверху     = Ложь;
    лРисунокШтрихкода.ГраницаСлева         = Ложь;
    лРисунокШтрихкода.ГраницаСнизу         = Ложь;
    лРисунокШтрихкода.ГраницаСправа     = Ложь;
КонецПроцедуры


Насчет попытки не понял, а не будет разве искажения картинки, если я буду пытаться ее пихать в таблицу, которая будет пропорционально расти?
6 Ёпрст
 
гуру
31.07.14
09:21
(5) на счет попытки, это прокатило бы с ВПФ:
ТабДокумент = УниверсальныеМеханизмы.НапечататьВнешнююФорму(....)
Попытка
  ТабДокумент.Рисунки.ШтрихКод.ТипКода = ....

ну и т.д
7 karpik666
 
31.07.14
10:06
У тебя в коде используется внешняя компонента, у меня не так, я не могу задавать ей параметры на этапе вывода, я генерю вначале штрих-код, а затем добавляю его как картинку.

   лКартинкаШтрихкод = ДК_РаботаСоШтрихкодами.ПолучитьКартинкуШтрихкода(лВКШтрихкод, лКодировкаШтрихкода, Строка(СсылкаНаОбъект.УникальныйИдентификатор()),лШиринаШтрихкода, лВысотаШтрихкода);  
***
  лРисунокШтрихкода.Картинка             = лКартинкаШтрихкод;

Это картинка формата jpeg, и ей на этапе вывода уже нельзя оперировать штрих-кодом.
8 karpik666
 
31.07.14
13:14
АП