Имя: Пароль:
1C
1С v8
как сделать хороший штрихкод УФ
0 yanejsh
 
04.10.12
08:48
в УФ создаю штрихкод как в УТ11. он получается какой-то не очень качественный. Я печатаю большую этикетку, шириной 80 мм и там видно что фон какой-то сероватая сеточка, а не прозрачная. и цифры какие-то кривые, все расползаются.
Собственно из УТ11 печатаю - там так же. большая этикетка выглядит плохо.
Как так получается? Там же на основе картинки создается штрихкод.
Устанавливаю свойство ПрозрачныйФон = истина, так все равно грязный фон виден
Подскажите что нибудь...
1 IamAlexy
 
04.10.12
08:50
принтер смени

у меня все более чем суперски печатается
2 yanejsh
 
04.10.12
08:56
объект ВнешняяКомпонента какого должен быть типа?
у меня такой
ВнешняяКомпонента = Новый("AddIn.КартинкаШтрихкода.Barcode");


так я на нескольких принтерах пробовал. А если печатать на зебре, то все равно видны какие-то точки-мухи и шрифт отстойный
3 yanejsh
 
04.10.12
08:57
да даже в предпросмотре видно, если шрифт крупный, то он на пиксели расползается
4 yanejsh
 
04.10.12
09:12
эта строчка почему игнорируется
до нее шрифт равен ""
ВнешняяКомпонента.Шрифт = "Tahoma";
и после тоже равен ""
как шрифт-то свой присвоить в этой компоненте?
5 Мимохожий Однако
 
04.10.12
09:15
Не стесняйся. Показывай код.
6 yanejsh
 
04.10.12
09:23
показать код? так он такой же как и в демке УТ11? я ж говорю, что в УТ11 тоже плохо получается.

Функция ПодключитьВнешнююКомпонентуПечатиШтрихкода() Экспорт
   
   // В зависимости от типа платформы подключим соответствующую внешнюю компоненту
   ПодключениеВыполнено = Неопределено;
   СистемнаяИнформация = Новый СистемнаяИнформация;
   Если СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86 Тогда
       ПодключениеВыполнено = ПодключитьВнешнююКомпоненту("Обработка.ПечатьЭтикеток.Макет.КомпонентаПечатиШтрихкодовWindows32", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);
   ИначеЕсли СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64 Тогда
       ПодключениеВыполнено = ПодключитьВнешнююКомпоненту("Обработка.ПечатьЭтикеток.Макет.КомпонентаПечатиШтрихкодовWindows64", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);
   ИначеЕсли СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86 Тогда
       ПодключениеВыполнено = ПодключитьВнешнююКомпоненту("Обработка.ПечатьЭтикеток.Макет.КомпонентаПечатиШтрихкодовLinux32", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);
   Иначе
       ПодключениеВыполнено = ПодключитьВнешнююКомпоненту("Обработка.ПечатьЭтикеток.Макет.КомпонентаПечатиШтрихкодовLinux64", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);
   КонецЕсли;
   
   // Создадим объект внешней компоненты
   Если ПодключениеВыполнено Тогда
       ВнешняяКомпонента = Новый("AddIn.КартинкаШтрихкода.Barcode");
   Иначе
       Возврат Неопределено;
   КонецЕсли;
   
   // Если нет возможности рисовать
   Если НЕ ВнешняяКомпонента.ГрафикаУстановлена Тогда
       // То картинку сформировать не сможем
       Возврат Неопределено;
   Иначе
       
       // Установим основные параметры компоненты
       
       // Если в системе установлен шрифт Tahoma
       Если ВнешняяКомпонента.НайтиШрифт("Tahoma") = Истина Тогда
         // Выбираем его как шрифт для формирования картинки
          ВнешняяКомпонента.Шрифт = "Tahoma";
       Иначе
       // Шрифт Tahoma в системе отсутствует
       // Обойдем все доступные компоненте шрифты
           Для Сч = 0 По ВнешняяКомпонента.КоличествоШрифтов -1 Цикл
               // Получим очередной шрифт, доступный компоненте
               ТекущийШрифт = ВнешняяКомпонента.ШрифтПоИндексу(Сч);
               // Если шрифт доступен
               Если ТекущийШрифт <> Неопределено Тогда
                   // Они и будет шрифтом для формирования штри-кода
                   ВнешняяКомпонента.Шрифт = ТекущийШрифт;
                   Прервать;
               КонецЕсли;
           КонецЦикла;
       КонецЕсли;
       
       // Утановим размер шрифта
       ВнешняяКомпонента.РазмерШрифта = 12;
       
       Возврат ВнешняяКомпонента;
       
   КонецЕсли;
   
КонецФункции


Функция ПолучитьКартинкуШтрихкода(ВнешняяКомпонента, ПараметрыШтрихкода) Экспорт
   
   // Зададим размер картинки
   ВнешняяКомпонента.Ширина = Окр(ПараметрыШтрихкода.Ширина);
   ВнешняяКомпонента.Высота = Окр(ПараметрыШтрихкода.Высота);
   
   // Разрешим компоненте самой определять тип кода
   ВнешняяКомпонента.АвтоТип = Ложь;
   ВнешняяКомпонента.ТипКода         = ПараметрыШтрихкода.ТипКода;
   ВнешняяКомпонента.ОтображатьТекст = ПараметрыШтрихкода.ОтображатьТекст;
   //ВнешняяКомпонента.РазмерШрифта    = ПараметрыШтрихкода.РазмерШрифта;
   
   // Или установим код EAN-13
   // ВнешняяКомпонента.ТипКода = 1;
   //
   // Тип смотрим в документации на внешнуюю компоненту
   
   // Если код содержит контрольный символ, обязательно указываем
   ВнешняяКомпонента.СодержитКС = СтрДлина(ПараметрыШтрихкода.Штрихкод) = 13;
   
   // Если отображать контрольный символ не нужно
   // ВнешняяКомпонента.ВидимостьКС = Ложь;
   
   // Формируем картинку штрихкода
   ВнешняяКомпонента.ЗначениеКода = ПараметрыШтрихкода.Штрихкод;
   
   // Если установленная нами ширина меньше минимально допустимой для этого штрихкода
   Если ВнешняяКомпонента.Ширина < ВнешняяКомпонента.МинимальнаяШиринаКода Тогда
       // Скорректируем ширину
       ВнешняяКомпонента.Ширина = ВнешняяКомпонента.МинимальнаяШиринаКода + 10;
   КонецЕсли;
   ВнешняяКомпонента.ПрозрачныйФон = Истина;
   ВнешняяКомпонента.Шрифт = "Verdana";
   // Сформируем картинку
   ДвоичныеДанныеКартинки = ВнешняяКомпонента.ПолучитьШтрихкод();
   
   // Если картинка сформировалась
   Если ДвоичныеДанныеКартинки <> Неопределено Тогда
       // Формируем из двоичных данных
       Возврат Новый Картинка(ДвоичныеДанныеКартинки);
   КонецЕсли;
   
   Возврат Неопределено;
   
КонецФункции


Функция Этикетка(МассивОбъектов, ОбъектыПечати)
   
   ВнешняяКомпонента = ПодключитьВнешнююКомпонентуПечатиШтрихкода();
   Если ВнешняяКомпонента = Неопределено Тогда
       ВызватьИсключение НСтр("ru = 'Ошибка подключения внешней компоненты печати штрихкода!'");
   КонецЕсли;
.....
Рисунок = ОбластьШК.Рисунки.ШтрихКод;
           ПараметрыШтрихкода = Новый Структура;
           ПараметрыШтрихкода.Вставить("Ширина",          150);
           ПараметрыШтрихкода.Вставить("Высота",          50);
           ПараметрыШтрихкода.Вставить("Штрихкод",        ЗначениеШтрихкода);
           ПараметрыШтрихкода.Вставить("ТипКода",         1);
           ПараметрыШтрихкода.Вставить("ОтображатьТекст", Истина);
           ПараметрыШтрихкода.Вставить("РазмерШрифта",    12);
           
           Рисунок.Картинка = ПолучитьКартинкуШтрихкода(ВнешняяКомпонента, ПараметрыШтрихкода);
7 yanejsh
 
04.10.12
09:24
платформа 8.2.16