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