Всем добра. У меня на внешней печатной форме печатается картинка штрихкода. Генерится картинка через внешнюю компоненту 1С Печать штрихкодов.
Я пока каждый раз при печати делаю инициализацию компоненты. Талонов печати печатается в день до 800 штук.
Хотелось бы уточнить как првильнее и где лучше инициировать внешнюю компоненту для уменьшения накладных расходов по части производительности.
---
теперь посмотрите есть общий модуль ГенерацияШтрихкода и в нем метод ИзображениеШтрихкода.
Если есть, то замените нижнюю половину кода на приведенную мной.

```1c
    Если ОбластьШапка.Области.Найти("КартинкаШтрихкода") <> Неопределено Тогда
    ОбластьШтрихкода = ОбластьШапка.Область("КартинкаШтрихкода");
    ОбластьШтрихкода.РазмерКартинки = РазмерКартинки.РеальныйРазмер;
    ОбластьШтрихкода.Высота = 15;
    ПараметрыГенерацииШтрихкода = ГенерацияШтрихкода.ПараметрыГенерацииШтрихкода();
    ПараметрыГенерацииШтрихкода.Высота = 45;
    ПараметрыГенерацииШтрихкода.Ширина = 210;
    ПараметрыГенерацииШтрихкода.ТипКода = 1; //EAN 13
    ПараметрыГенерацииШтрихкода.Штрихкод = Прав("0000000000" + СтрЗаменить(Число(ДанныеПечати.Номер), Символы.НПП, "), 12); // номер преврашаем в штрихкод
    РезультатГенерацииШтрихкода = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);
    КартинкаШК = РезультатГенерацииШтрихкода.Картинка;
    ОбластьШтрихкода.Картинка = КартинкаШК;
    КонецЕсли;
```
---
В типовых компонента инициализируется при печати .

Но в теории можно сохранить внешнюю компоненту в переменную (В открытой форме) и генерировать новые штрихкоды...

Так же можно использовать методы БСП, если конфа типовая
---
я методы БСП и использую.
То есть ли каждый раз при старте приложения компоненту инициировать то в теории можно получать ее. только интересно где она хранится.
---
Хранится она в макете конфигурации,
При открытии формы - инициализируете ВК и загоняете в переменную, и в дальнейшей печати используете ее для генерации
---
при открытии какой формы инициировать если открытие формы документа в этом нет смысла так идет открытие большого числа докумкентов?
при открытии самого приложения разве нельзя это сделать.
---
можно в теории ) в глобальную переменную загнать
---
теперь вопрос: как инициируете и зачем?
Все же просто.
Формируете структура с параметрами для штрихкода.
Передаете эти параметры в метод:

```1c
    РезультатГенерацииШтрихкода = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);
```

В РезультатГенерацииШтрихкода.Картинка будет уже сформированная картинка штрихкода.
А внутри вызываемого метода идет вызов метода инициализации через общий модуль с Повторное использование возвращаемых значений На время сеанса. Т.е. инициализация будет не постоянно.
---
вот кусок кода который генерит ШК из фунгкции Печать() внешней печатной формы.

```1c
    Если ОбластьШапка.Области.Найти("КартинкаШтрихкода") <> Неопределено Тогда
    ОбластьШтрихкода = ОбластьШапка.Область("КартинкаШтрихкода");
    ОбластьШтрихкода.РазмерКартинки = РазмерКартинки.РеальныйРазмер;
    ОбластьШтрихкода.Высота = 15;
    ПараметрыГенерацииШтрихкода = ГенерацияШтрихкода.ПараметрыГенерацииШтрихкода();
    ПараметрыГенерацииШтрихкода.Высота = 45;
    ПараметрыГенерацииШтрихкода.Ширина = 210;
    ПараметрыГенерацииШтрихкода.ТипКода = 1; //EAN 13
    ПараметрыГенерацииШтрихкода.Штрихкод = Прав("0000000000" + СтрЗаменить(Число(ДанныеПечати.Номер), Символы.НПП, "), 12); // номер преврашаем в штрихкод
    СистемнаяИнформация = Новый СистемнаяИнформация;
    //Внешняя компонрента для генерации ШК, по хорошему надо перенсти ее инициализацию в модуль сеанса
    //и каждый раз вызывать уже инициализированную
    ВнешняяКомпонента = ГенерацияШтрихкодаСерверПовтИсп.ПодключитьКомпонентуГенерацииИзображенияШтрихкода(Строка(СистемнаяИнформация.ТипПлатформы));

    Если ВнешняяКомпонента = Неопределено Тогда
    ТекстСообщения = НСтр("ru = 'Ошибка подключения внешней компоненты печати штрихкода.'");
    ЗаписьЖурналаРегистрации(ТекстСообщения,
    ОбщегоНазначения.КодОсновногоЯзыка(),
    УровеньЖурналаРегистрации.Ошибка,,,
    ТекстСообщения);
    ВызватьИсключение ТекстСообщения;
    КонецЕсли;
    КартинкаШК = Штрихкодирование.ПолучитьКартинкуШтрихкода(ВнешняяКомпонента, ПараметрыГенерацииШтрихкода);
    ОбластьШтрихкода.Картинка = КартинкаШК;
    КонецЕсли;
```
---
теперь посмотрите есть общий модуль ГенерацияШтрихкода и в нем метод ИзображениеШтрихкода.
Если есть, то замените нижнюю половину кода на приведенную мной.

```1c
    Если ОбластьШапка.Области.Найти("КартинкаШтрихкода") <> Неопределено Тогда
    ОбластьШтрихкода = ОбластьШапка.Область("КартинкаШтрихкода");
    ОбластьШтрихкода.РазмерКартинки = РазмерКартинки.РеальныйРазмер;
    ОбластьШтрихкода.Высота = 15;
    ПараметрыГенерацииШтрихкода = ГенерацияШтрихкода.ПараметрыГенерацииШтрихкода();
    ПараметрыГенерацииШтрихкода.Высота = 45;
    ПараметрыГенерацииШтрихкода.Ширина = 210;
    ПараметрыГенерацииШтрихкода.ТипКода = 1; //EAN 13
    ПараметрыГенерацииШтрихкода.Штрихкод = Прав("0000000000" + СтрЗаменить(Число(ДанныеПечати.Номер), Символы.НПП, "), 12); // номер преврашаем в штрихкод
    РезультатГенерацииШтрихкода = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);
    КартинкаШК = РезультатГенерацииШтрихкода.Картинка;
    ОбластьШтрихкода.Картинка = КартинкаШК;
    КонецЕсли;
```
---
ваш вариант тоже рабочий. А в чем отличие?
---
БСП сама все сделает и как нужно. Инициализация будет не чаще 1 раза в 20 минут.
---
да вижу, есть такое.,

```1c
    Функция ИзображениеШтрихкода(ПараметрыШтрихкода) Экспорт

    СистемнаяИнформация = Новый СистемнаяИнформация;
    ТипПлатформыКомпоненты = Строка(СистемнаяИнформация.ТипПлатформы);

    ВнешняяКомпонента = ГенерацияШтрихкодаСерверПовтИсп.ПодключитьКомпонентуГенерацииИзображенияШтрихкода(ТипПлатформыКомпоненты);

    Если ВнешняяКомпонента = Неопределено Тогда
    ТекстСообщения = НСтр("ru = 'Ошибка подключения внешней компоненты печати штрихкода.'", ОбщегоНазначения.КодОсновногоЯзыка());
    #Если НЕ МобильноеПриложениеСервер Тогда
    ЗаписьЖурналаРегистрации(НСтр("ru = 'Ошибка генерации штрихкода'",
    ОбщегоНазначения.КодОсновногоЯзыка()),
    УровеньЖурналаРегистрации.Ошибка,,,
    ТекстСообщения);
    #КонецЕсли
    ВызватьИсключение ТекстСообщения;
    КонецЕсли;

    Возврат ПодготовитьИзображениеШтрихкода(ВнешняяКомпонента, ПараметрыШтрихкода);

    КонецФункции
```

Спасибо, за помощь.