Имя: Пароль:
1C
1С v8
Помогите со штрих-кодом
0 Cчactливый
 
29.11.11
17:57
Генерация штрих-кода PDF417.
Генерация штрих-кода происходит аналогично конфигурации «Демонстрационная конфигурация "Управляемое приложение"». При этом время генерации составляет порядка 30-40 секунд. Как можно ускорить этот процесс.
Значение штрих-кода «0*1062_1057_1050_47_1063_1085_47_50_50_47_55_46_57_46_49_49_*14246489*234*3*»
Текст функции
Функция ПолучитьКартинкуШтрихкода()
// В зависимости от типа платформы подключим соответствующую внешнюю компоненту
   ИнформацияОСистеме = Новый СистемнаяИнформация;
   Если ИнформацияОСистеме.ТипПлатформы = ТипПлатформы.Windows_x86 Тогда
   ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодовWindows32", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);
   ИначеЕсли ИнформацияОСистеме.ТипПлатформы = ТипПлатформы.Windows_x86_64 Тогда
   ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодовWindows64", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);
ИначеЕсли ИнформацияОСистеме.ТипПлатформы = ТипПлатформы.Linux_x86 Тогда
   ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодовLinux32", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);        
   Иначе
   ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодовLinux64", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);
   КонецЕсли;
   // Создадим объект внешней компоненты
   Компонент = Новый("AddIn.КартинкаШтрихкода.Barcode");
   // Если нет возможности рисовать
   Если НЕ Компонент.ГрафикаУстановлена Тогда
       // То картинку сформировать не сможем
       Возврат Неопределено;
   КонецЕсли;
   // Если в системе установлен шрифт Tahoma
   Если Компонент.НайтиШрифт("Tahoma") = Истина Тогда
       // Выбираем его как шрифт для формирования картинки
       Компонент.Шрифт = "Tahoma";
   Иначе
       // Шрифт Tahoma в системе отсутствует
       // Обойдем все доступные компоненте шрифты
       Для Сч = 0 По Компонент.КоличествоШрифтов -1 Цикл
           // Получим очередной шрифт, доступный компоненте
           ТекущийШрифт = Компонент.ШрифтПоИндексу(Сч);
           // Если шрифт доступен
           Если ТекущийШрифт <> Неопределено Тогда
               // Они и будет шрифтом для формирования штрихкода
               Компонент.Шрифт = ТекущийШрифт;
               Прервать;
           КонецЕсли;
       КонецЦикла;
   КонецЕсли;
   // Установим размер шрифта
   Компонент.РазмерШрифта = 12;
   // Зададим размер картинки
   Компонент.Ширина = 100;
   Компонент.Высота = 90;
   // Разрешим компоненте самой определять тип кода
   Компонент.АвтоТип = Ложь;
   Компонент.ТипКода = 6;
   // ИЛИ установим код EAN-13
   // Компонент.ТипКода = 1;
   //
   // Тип смотрим в документации на внешнюю компоненту

   // Если код содержит контрольный символ, обязательно указываем
   Компонент.СодержитКС = СтрДлина(ЭтотОбъект.Штрихкод) = 13;
   // Если отображать контрольный символ не нужно
   // Компонент.ВидимостьКС = Ложь;
   // Формируем картинку штрихкода
   Компонент.ЗначениеКода = ЭтотОбъект.Штрихкод;
   // Если установленная нами ширина меньше минимально допустимой для этого штрихкода
   Если Компонент.Ширина < Компонент.МинимальнаяШиринаКода Тогда
       // Скорректируем ширину
       Компонент.Ширина = Компонент.МинимальнаяШиринаКода + 10;
   КонецЕсли;
   // Сформируем картинку
   ДвоичныеДанныеКартинки = Компонент.ПолучитьШтрихкод();
   // Если картинка сформировалась
   Если НЕ ДвоичныеДанныеКартинки = Неопределено Тогда
       // Формируем из двоичных данных
       Возврат Новый Картинка(ДвоичныеДанныеКартинки);
   КонецЕсли;
   Возврат Неопределено;
КонецФункции
1 pumbaEO
 
29.11.11
18:14
А замер производительности, что говорит?