Печать штрихкода для любой конфигурации на платформе 8.3

Платформы младше 8.3.12.1313 использовали ActivX для печати ШтрихКода, сейчас технология изменилась. Эта обработка — замена старого механизма на новый.

Столкнулся с тем, что на последних платформах перестали печататься ШК по старой технологии.

Раньше мы вставляли в макет объект 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)

и на пустой конфигурации.

2 Comments

  1. oleganatolievich

    многие (в том числе и я) делали подобный финт еще в лет 7-8 назад, когда перетаскивали в УТ 10.3 компоненты печати штрихкодов, сделанные по технологии Native API из УТ 11.

    Reply
  2. ah7777777

    а я только добрался и не нашел готового решения в инете. поэтому и поделился своим опытом

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *