Столкнулся с тем, что на последних платформах перестали печататься ШК по старой технологии.
Раньше мы вставляли в макет объект ActivX
давали ему имя Штрихкод и тексте прописывали
ОбластьМакета.Рисунки.Штрихкод.Объект.ТипКода = 1;
ОбластьМакета.Рисунки.Штрихкод.Объект.отображатьТекст=истина;
ОбластьМакета.Рисунки.Штрихкод.Объект.УстановитьШрифт(,2);
ОбластьМакета.Рисунки.Штрихкод.Объект.Сообщение = Штрихкод;
ОбластьМакета.Рисунки.Штрихкод.Объект.ТекстКода = Штрихкод;
ТабДокумент.Вывести(ОбластьМакета);
Платформы старше 8.3.12.1313 перестали это поддерживать и старые обработки и отчеты вылетают по ошибке.
Теперь что бы поправить печатные формы надо подключить внешнюю компоненту положить в макет Картинку (можно взять любую из стандартных) растянуть ее до нужных размеров и программным способом заменить ее на то что вернет подключенная внешняя компонента 1CBarcodWin32_9_0_4_7.dll или 1CBarcodWin64_9_0_4_7.dll .
Для управляемых форм:
ШК="000000000025768";
о=РеквизитФормыВЗначение("Объект");
ВК=о.ПодключитьВнешнююКомпонентуПечатиШтрихкода();
табдок=Новый ТабличныйДокумент;
макет=о.ПолучитьМакет("Макет");
Ш=макет.ПолучитьОбласть("Шапка");
//Эталон = ПолучитьМакет("Эталон");
//КоличествоМиллиметровВПикселе = Эталон.Рисунки.Квадрат100Пикселей.Высота / 100; //0.26454
КоличествоМиллиметровВПикселе = 0.26454; //Можно указывать напрямую без Эталон = ПолучитьМакет("Эталон"); и КоличествоМиллиметровВПикселе = Эталон.Рисунки.....
ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("Ширина", Окр(Ш.Рисунки.Штрихкод.Ширина / КоличествоМиллиметровВПикселе));
ПараметрыШтрихкода.Вставить("Высота", Окр(Ш.Рисунки.Штрихкод.Высота / КоличествоМиллиметровВПикселе));
ПараметрыШтрихкода.Вставить("Штрихкод", ШК);//СокрЛП(ЧисловойКодПоСсылке(Ссылка)));
ПараметрыШтрихкода.Вставить("ОтображатьТекст", истина);
ПараметрыШтрихкода.Вставить("РазмерШрифта", 6);
Ш.Рисунки.Штрихкод.Картинка = о.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода,ВК);
табдок.Вывести(Ш);
Возврат табдок;
Для обычных форм:
ШК="000000000025768";
ВК=ПодключитьВнешнююКомпонентуПечатиШтрихкода();
табдок=Новый ТабличныйДокумент;
макет=ПолучитьМакет("Макет");
Ш=макет.ПолучитьОбласть("Шапка");
Эталон = ПолучитьМакет("Эталон");
КоличествоМиллиметровВПикселе = Эталон.Рисунки.Квадрат100Пикселей.Высота / 100; //0.26454
//КоличествоМиллиметровВПикселе = 0.26454; //Можно указывать напрямую без Эталон = ПолучитьМакет("Эталон"); и КоличествоМиллиметровВПикселе = Эталон.Рисунки.....
ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("Ширина", Окр(Ш.Рисунки.Штрихкод.Ширина / КоличествоМиллиметровВПикселе));
ПараметрыШтрихкода.Вставить("Высота", Окр(Ш.Рисунки.Штрихкод.Высота / КоличествоМиллиметровВПикселе));
ПараметрыШтрихкода.Вставить("Штрихкод", ШК);//СокрЛП(ЧисловойКодПоСсылке(Ссылка)));
ПараметрыШтрихкода.Вставить("ОтображатьТекст", истина);
ПараметрыШтрихкода.Вставить("РазмерШрифта", 6);
Ш.Рисунки.Штрихкод.Картинка = ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода,ВК);
табдок.Вывести(Ш);
табдок.Показать();
К публикации прикреплена обработка, которая реализует печать ШК для УФ и Обычных форм. В Макетах содержаться компоненты для windows 32 и 64. Если ваша конфигурация снята с поддержки, то встраиваем внешнюю обработку в конфигурацию, немного изменяем код. Публикация для программистов! Это всего лишь болванка для реализации ваших потребностей!
Хоть от конфигурации и не зависит напишу что проверялось на платформе 1С:Предприятие 8.3 (8.3.15.1700)
Бухгалтерия предприятия, редакция 3.0 (3.0.73.54)
Управление торговлей, редакция 10.3 (103.5)
Управление торговлей, редакция 11 (11.4.9.91)
и на пустой конфигурации.
Как читать ШК во внешней обработке:
Берем БП3 3.0 (3.0.75.104)
&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
//ставим точку останова на КонецПроцедуры
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПоддерживаемыеТипыВО = Новый Массив();
ПоддерживаемыеТипыВО.Добавить("СканерШтрихкода");
ОповещенияПриПодключении = Новый ОписаниеОповещения("ПодключитьОборудованиеЗавершение", ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПоТипу(ОповещенияПриПодключении, УникальныйИдентификатор, ПоддерживаемыеТипыВО);
КонецПроцедуры
&НаКлиенте
Процедура ПодключитьОборудованиеЗавершение(РезультатВыполнения, Параметры) Экспорт
Если Не РезультатВыполнения.Результат Тогда
ТекстСообщения = НСтр( "ru = 'При подключении оборудования произошла ошибка:""%ОписаниеОшибки%"".'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ОписаниеОшибки%" , РезультатВыполнения.ОписаниеОшибки);
Сообщить(ТекстСообщения);
Иначе
ТекстСообщения = НСтр("ru = 'Оборудование подключено.'" );
Сообщить(ТекстСообщения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
ПоддерживаемыеТипыВО = Новый Массив();
ПоддерживаемыеТипыВО.Добавить("СканерШтрихкода");
ОповещенияПриПодключении = Новый ОписаниеОповещения("ОтключитьОборудованиеЗавершение", ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПоТипу(ОповещенияПриПодключении, УникальныйИдентификатор, ПоддерживаемыеТипыВО);
КонецПроцедуры
&НаКлиенте
Процедура ОтключитьОборудованиеЗавершение(РезультатВыполнения, Параметры) Экспорт
Если Не РезультатВыполнения.Результат Тогда
ТекстСообщения = НСтр( "ru = 'При отключении оборудования произошла ошибка: ""%ОписаниеОшибки%"".'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ОписаниеОшибки%" , РезультатВыполнения.ОписаниеОшибки);
Сообщить(ТекстСообщения);
Иначе
ТекстСообщения = НСтр("ru = 'Оборудование отключено.'" );
Сообщить(ТекстСообщения);
КонецЕсли;
КонецПроцедуры
обработка ВнешняяОбработка_ВнешнееСобытие.epf