Есть ли возможность добавить на УФ штрихкод, что бы пользователь мог отсканировать его с формы. Как это сделать?
---
Для этого как минимум нужен сканер, который будет читать ШК с экрана. А так в большинстве типовых конфушек есть компонента для формирования картинки штрихкода и необходимые процедуры и функции. А вывести картинку на форму, думаю, сможете. Примерный код

```1c
    Функция ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода) Экспорт

    ВнешняяКомпонента = ПодключитьВнешнююКомпонентуПечатиШтрихкода();

    Если ВнешняяКомпонента = Неопределено Тогда
    ВызватьИсключение НСтр("ru = 'Ошибка подключения внешней компоненты печати штрихкода!'");
    КонецЕсли;

    // Зададим размер формируемой картинки.
    ВнешняяКомпонента.Ширина = Окр(ПараметрыШтрихкода.Ширина);
    ВнешняяКомпонента.Высота = Окр(ПараметрыШтрихкода.Высота);

    ВнешняяКомпонента.АвтоТип = Ложь;

    Если ПараметрыШтрихкода.ТипКода = 99 Тогда
    ТипШтрихкодаВрем = ОпределитьТипШтрихкода(ПараметрыШтрихкода.Штрихкод);
    Если ТипШтрихкодаВрем = "EAN8" Тогда
    ВнешняяКомпонента.ТипКода = 0;
    ИначеЕсли ТипШтрихкодаВрем = "EAN13" Тогда
    ВнешняяКомпонента.ТипКода = 1;
    // Если код содержит контрольный символ, обязательно указываем.
    ВнешняяКомпонента.СодержитКС = СтрДлина(ПараметрыШтрихкода.Штрихкод) = 13;
    ИначеЕсли ТипШтрихкодаВрем = "EAN128" Тогда
    ВнешняяКомпонента.ТипКода = 2;
    ИначеЕсли ТипШтрихкодаВрем = "CODE39" Тогда
    ВнешняяКомпонента.ТипКода = 3;
    ИначеЕсли ТипШтрихкодаВрем = "CODE128" Тогда
    ВнешняяКомпонента.ТипКода = 4;
    ИначеЕсли ТипШтрихкодаВрем = "ITF14" Тогда
    ВнешняяКомпонента.ТипКода = 11;
    ИначеЕсли ТипШтрихкодаВрем = "QR" Тогда
    ВнешняяКомпонента.ТипКода = 16;
    ИначеЕсли ТипШтрихкодаВрем = "EAN13Addon2" Тогда
    ВнешняяКомпонента.ТипКода = 14;
    ИначеЕсли ТипШтрихкодаВрем = "EAN13Addon5" Тогда
    ВнешняяКомпонента.ТипКода = 15;
    Иначе
    ВнешняяКомпонента.АвтоТип = Истина;
    КонецЕсли;
    Иначе
    ВнешняяКомпонента.АвтоТип = Ложь;
    ВнешняяКомпонента.ТипКода = ПараметрыШтрихкода.ТипКода;
    КонецЕсли;

    ВнешняяКомпонента.СодержитКС = Истина;
    Если ПараметрыШтрихкода.Свойство("ПрозрачныйФон") Тогда
    ВнешняяКомпонента.ПрозрачныйФон = ПараметрыШтрихкода.ПрозрачныйФон;
    КонецЕсли;

    ВнешняяКомпонента.ОтображатьТекст = ПараметрыШтрихкода.ОтображатьТекст;

    // Формируем картинку штрихкода.
    ВнешняяКомпонента.ЗначениеКода = ПараметрыШтрихкода.Штрихкод;
    // Угол поворота штрихкода.
    ВнешняяКомпонента.УголПоворота = ?(ПараметрыШтрихкода.Свойство("УголПоворота"), ПараметрыШтрихкода.УголПоворота, 0);
    // Уровень коррекции QR кода (L=0, M=1, Q=2, H=3).
    ВнешняяКомпонента.УровеньКоррекцииQR = ?(ПараметрыШтрихкода.Свойство("УровеньКоррекцииQR"), ПараметрыШтрихкода.УровеньКоррекцииQR, 1);

    // Если установленная нами ширина меньше минимально допустимой для этого штрихкода.
    Если ВнешняяКомпонента.Ширина < ВнешняяКомпонента.МинимальнаяШиринаКода Тогда
    ВнешняяКомпонента.Ширина = ВнешняяКомпонента.МинимальнаяШиринаКода;
    КонецЕсли;

    // Если установленная нами высота меньше минимально допустимой для этого штрихкода.
    Если ВнешняяКомпонента.Высота < ВнешняяКомпонента.МинимальнаяВысотаКода Тогда
    ВнешняяКомпонента.Высота = ВнешняяКомпонента.МинимальнаяВысотаКода;
    КонецЕсли;

    Если ПараметрыШтрихкода.Свойство("РазмерШрифта") И (ПараметрыШтрихкода.РазмерШрифта > 0)
    И (ПараметрыШтрихкода.ОтображатьТекст) И (ВнешняяКомпонента.РазмерШрифта <> ПараметрыШтрихкода.РазмерШрифта) Тогда
    ВнешняяКомпонента.РазмерШрифта = ПараметрыШтрихкода.РазмерШрифта;
    КонецЕсли;

    // Сформируем картинку
    ДвоичныеДанныеКартинки = ВнешняяКомпонента.ПолучитьШтрихкод();

    // Если картинка сформировалась.
    Если ДвоичныеДанныеКартинки <> Неопределено Тогда
    // Формируем из двоичных данных.
    Возврат Новый Картинка(ДвоичныеДанныеКартинки);
    КонецЕсли;

    Возврат Неопределено;

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

    Функция ПодключитьВнешнююКомпонентуПечатиШтрихкода()

    ПодключениеВыполнено = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодов", "ВС_КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);

    // Создадим объект внешней компоненты.
    Если ПодключениеВыполнено Тогда
    ВнешняяКомпонента = Новый("AddIn.ВС_КартинкаШтрихкода.Barcode");
    Иначе
    Возврат Неопределено;
    КонецЕсли;

    // Если нет возможности рисовать.
    Если НЕ ВнешняяКомпонента.ГрафикаУстановлена Тогда
    // То картинку сформировать не сможем.
    Возврат Неопределено;
    Иначе
    // Установим основные параметры компоненты.
    // Если в системе установлен шрифт Tahoma.
    Если ВнешняяКомпонента.НайтиШрифт("Tahoma") Тогда
    // Выбираем его как шрифт для формирования картинки.
    ВнешняяКомпонента.Шрифт = "Tahoma";
    Иначе
    // Шрифт Tahoma в системе отсутствует.
    // Обойдем все доступные компоненте шрифты.
    Для Сч = 0 По ВнешняяКомпонента.КоличествоШрифтов -1 Цикл
    // Получим очередной шрифт, доступный компоненте.
    ТекущийШрифт = ВнешняяКомпонента.ШрифтПоИндексу(Сч);
    // Если шрифт доступен
    Если ТекущийШрифт <> Неопределено Тогда
    // Они и будет шрифтом для формирования штрихкода.
    ВнешняяКомпонента.Шрифт = ТекущийШрифт;
    Прервать;
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    // Установим размер шрифта
    ВнешняяКомпонента.РазмерШрифта = 12;

    Возврат ВнешняяКомпонента;
    КонецЕсли;

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

    Функция ОпределитьТипШтрихкода(Штрихкод) Экспорт

    ТипШтрихкода = ";
    ДлинаШтрихкода = СтрДлина(Штрихкод);

    Если ДлинаШтрихкода = 0 Тогда
    Возврат ТипШтрихкода;
    КонецЕсли;

    Сумма = 0;

    Если ДлинаШтрихкода = 14 Тогда // ITF14

    Коэффициент = 1;
    Для Сч = 1 По 13 Цикл
    ВремКодСимвола = КодСимвола(Штрихкод, Сч);
    Если ВремКодСимвола < 48 Или ВремКодСимвола > 57 Тогда
    Прервать;
    КонецЕсли;
    Сумма = Сумма + Коэффициент * (ВремКодСимвола - 48);
    Коэффициент = 4 - Коэффициент;
    КонецЦикла;
    Сумма = (10 - Сумма % 10) % 10;
    Если КодСимвола(Штрихкод, 14) = Сумма + 48 Тогда
    ТипШтрихкода = "ITF14";
    КонецЕсли;

    ИначеЕсли ДлинаШтрихкода = 13 Тогда // EAN13

    EAN13 = Истина;
    Коэффициент = 1;
    Для Сч = 1 По 12 Цикл
    ВремКодСимвола = КодСимвола(Штрихкод, Сч);
    Если ВремКодСимвола < 48 Или ВремКодСимвола > 57 Тогда
    EAN13 = Ложь;
    Прервать;
    КонецЕсли;
    Сумма = Сумма + Коэффициент * (ВремКодСимвола - 48);
    Коэффициент = 4 - Коэффициент;
    КонецЦикла;
    Сумма = (10 - Сумма % 10) % 10;
    ПроверочныйСимвол = Символ(Сумма + 48);
    Если EAN13 И ПроверочныйСимвол = Прав(Штрихкод, 1) Тогда
    ТипШтрихкода = "EAN13";
    КонецЕсли;

    ИначеЕсли ДлинаШтрихкода = 8 Тогда // EAN8

    EAN8 = Истина;
    Коэффициент = 3;
    Для Сч = 1 По 7 Цикл
    ВремКодСимвола = КодСимвола(Штрихкод, Сч);
    Если ВремКодСимвола < 48 Или ВремКодСимвола > 57 Тогда
    EAN8 = Ложь;
    Прервать;
    КонецЕсли;
    Сумма = Сумма + Коэффициент * (ВремКодСимвола - 48);
    Коэффициент = 4 - Коэффициент;
    КонецЦикла;
    Сумма = (10 - Сумма % 10) % 10;
    Если EAN8 И (КодСимвола(Штрихкод, 8) = Сумма + 48) Тогда
    ТипШтрихкода = "EAN8";
    КонецЕсли;

    КонецЕсли;

    Если ТипШтрихкода= " Тогда // CODE39

    CODE39 = Истина;
    Для Сч = 1 По ДлинаШтрихкода Цикл
    ВремКодСимвола = КодСимвола(Штрихкод, Сч);
    Если (ВремКодСимвола <> 32)
    И (ВремКодСимвола < 36 Или ВремКодСимвола > 37)
    И (ВремКодСимвола <> 43)
    И (ВремКодСимвола < 45 Или ВремКодСимвола > 57)
    И (ВремКодСимвола < 65 Или ВремКодСимвола > 90) Тогда
    CODE39 = Ложь;
    Прервать;
    КонецЕсли;
    КонецЦикла;

    Если CODE39 Тогда
    ТипШтрихкода = "CODE39";
    КонецЕсли

    КонецЕсли;

    Если ТипШтрихкода= " Тогда // CODE128
    // CODE128 символы ASCII от 0 до 127 (цифры от «0» до «9», буквы от «A» до «Z» и от «a» до «z») и специальные символы;
    CODE128 = Истина;
    Для Сч = 1 По ДлинаШтрихкода Цикл
    ВремКодСимвола = КодСимвола(Штрихкод, Сч);
    Если (ВремКодСимвола > 127) Тогда
    CODE128 = Ложь;
    Прервать;
    КонецЕсли;
    КонецЦикла;

    Если CODE128 Тогда
    ТипШтрихкода = "CODE128";
    КонецЕсли

    КонецЕсли;

    Если ТипШтрихкода= "CODE128" Тогда // EAN128
    // В коде EAN128 регламентирован словарь CODE128 но регламентированы группы кодов.
    Если КодСимвола(Штрихкод, 1) = 40 Тогда
    ТипШтрихкода = "EAN128";
    КонецЕсли;
    КонецЕсли;

    Возврат ТипШтрихкода;

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

Если используете типовую конфу, то вам нужна функция

```1c
    МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода)
```
---
Для этого как минимум нужен сканер, который будет читать ШК с экрана. А так в большинстве типовых конфушек есть компонента для формирования картинки штрихкода и необходимые процедуры и функции. А вывести картинку на форму, думаю, сможете. Примерный код

```1c
    Функция ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода) Экспорт

    ВнешняяКомпонента = ПодключитьВнешнююКомпонентуПечатиШтрихкода();

    Если ВнешняяКомпонента = Неопределено Тогда
    ВызватьИсключение НСтр("ru = 'Ошибка подключения внешней компоненты печати штрихкода!'");
    КонецЕсли;

    // Зададим размер формируемой картинки.
    ВнешняяКомпонента.Ширина = Окр(ПараметрыШтрихкода.Ширина);
    ВнешняяКомпонента.Высота = Окр(ПараметрыШтрихкода.Высота);

    ВнешняяКомпонента.АвтоТип = Ложь;

    Если ПараметрыШтрихкода.ТипКода = 99 Тогда
    ТипШтрихкодаВрем = ОпределитьТипШтрихкода(ПараметрыШтрихкода.Штрихкод);
    Если ТипШтрихкодаВрем = "EAN8" Тогда
    ВнешняяКомпонента.ТипКода = 0;
    ИначеЕсли ТипШтрихкодаВрем = "EAN13" Тогда
    ВнешняяКомпонента.ТипКода = 1;
    // Если код содержит контрольный символ, обязательно указываем.
    ВнешняяКомпонента.СодержитКС = СтрДлина(ПараметрыШтрихкода.Штрихкод) = 13;
    ИначеЕсли ТипШтрихкодаВрем = "EAN128" Тогда
    ВнешняяКомпонента.ТипКода = 2;
    ИначеЕсли ТипШтрихкодаВрем = "CODE39" Тогда
    ВнешняяКомпонента.ТипКода = 3;
    ИначеЕсли ТипШтрихкодаВрем = "CODE128" Тогда
    ВнешняяКомпонента.ТипКода = 4;
    ИначеЕсли ТипШтрихкодаВрем = "ITF14" Тогда
    ВнешняяКомпонента.ТипКода = 11;
    ИначеЕсли ТипШтрихкодаВрем = "QR" Тогда
    ВнешняяКомпонента.ТипКода = 16;
    ИначеЕсли ТипШтрихкодаВрем = "EAN13Addon2" Тогда
    ВнешняяКомпонента.ТипКода = 14;
    ИначеЕсли ТипШтрихкодаВрем = "EAN13Addon5" Тогда
    ВнешняяКомпонента.ТипКода = 15;
    Иначе
    ВнешняяКомпонента.АвтоТип = Истина;
    КонецЕсли;
    Иначе
    ВнешняяКомпонента.АвтоТип = Ложь;
    ВнешняяКомпонента.ТипКода = ПараметрыШтрихкода.ТипКода;
    КонецЕсли;

    ВнешняяКомпонента.СодержитКС = Истина;
    Если ПараметрыШтрихкода.Свойство("ПрозрачныйФон") Тогда
    ВнешняяКомпонента.ПрозрачныйФон = ПараметрыШтрихкода.ПрозрачныйФон;
    КонецЕсли;

    ВнешняяКомпонента.ОтображатьТекст = ПараметрыШтрихкода.ОтображатьТекст;

    // Формируем картинку штрихкода.
    ВнешняяКомпонента.ЗначениеКода = ПараметрыШтрихкода.Штрихкод;
    // Угол поворота штрихкода.
    ВнешняяКомпонента.УголПоворота = ?(ПараметрыШтрихкода.Свойство("УголПоворота"), ПараметрыШтрихкода.УголПоворота, 0);
    // Уровень коррекции QR кода (L=0, M=1, Q=2, H=3).
    ВнешняяКомпонента.УровеньКоррекцииQR = ?(ПараметрыШтрихкода.Свойство("УровеньКоррекцииQR"), ПараметрыШтрихкода.УровеньКоррекцииQR, 1);

    // Если установленная нами ширина меньше минимально допустимой для этого штрихкода.
    Если ВнешняяКомпонента.Ширина < ВнешняяКомпонента.МинимальнаяШиринаКода Тогда
    ВнешняяКомпонента.Ширина = ВнешняяКомпонента.МинимальнаяШиринаКода;
    КонецЕсли;

    // Если установленная нами высота меньше минимально допустимой для этого штрихкода.
    Если ВнешняяКомпонента.Высота < ВнешняяКомпонента.МинимальнаяВысотаКода Тогда
    ВнешняяКомпонента.Высота = ВнешняяКомпонента.МинимальнаяВысотаКода;
    КонецЕсли;

    Если ПараметрыШтрихкода.Свойство("РазмерШрифта") И (ПараметрыШтрихкода.РазмерШрифта > 0)
    И (ПараметрыШтрихкода.ОтображатьТекст) И (ВнешняяКомпонента.РазмерШрифта <> ПараметрыШтрихкода.РазмерШрифта) Тогда
    ВнешняяКомпонента.РазмерШрифта = ПараметрыШтрихкода.РазмерШрифта;
    КонецЕсли;

    // Сформируем картинку
    ДвоичныеДанныеКартинки = ВнешняяКомпонента.ПолучитьШтрихкод();

    // Если картинка сформировалась.
    Если ДвоичныеДанныеКартинки <> Неопределено Тогда
    // Формируем из двоичных данных.
    Возврат Новый Картинка(ДвоичныеДанныеКартинки);
    КонецЕсли;

    Возврат Неопределено;

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

    Функция ПодключитьВнешнююКомпонентуПечатиШтрихкода()

    ПодключениеВыполнено = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодов", "ВС_КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);

    // Создадим объект внешней компоненты.
    Если ПодключениеВыполнено Тогда
    ВнешняяКомпонента = Новый("AddIn.ВС_КартинкаШтрихкода.Barcode");
    Иначе
    Возврат Неопределено;
    КонецЕсли;

    // Если нет возможности рисовать.
    Если НЕ ВнешняяКомпонента.ГрафикаУстановлена Тогда
    // То картинку сформировать не сможем.
    Возврат Неопределено;
    Иначе
    // Установим основные параметры компоненты.
    // Если в системе установлен шрифт Tahoma.
    Если ВнешняяКомпонента.НайтиШрифт("Tahoma") Тогда
    // Выбираем его как шрифт для формирования картинки.
    ВнешняяКомпонента.Шрифт = "Tahoma";
    Иначе
    // Шрифт Tahoma в системе отсутствует.
    // Обойдем все доступные компоненте шрифты.
    Для Сч = 0 По ВнешняяКомпонента.КоличествоШрифтов -1 Цикл
    // Получим очередной шрифт, доступный компоненте.
    ТекущийШрифт = ВнешняяКомпонента.ШрифтПоИндексу(Сч);
    // Если шрифт доступен
    Если ТекущийШрифт <> Неопределено Тогда
    // Они и будет шрифтом для формирования штрихкода.
    ВнешняяКомпонента.Шрифт = ТекущийШрифт;
    Прервать;
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    // Установим размер шрифта
    ВнешняяКомпонента.РазмерШрифта = 12;

    Возврат ВнешняяКомпонента;
    КонецЕсли;

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

    Функция ОпределитьТипШтрихкода(Штрихкод) Экспорт

    ТипШтрихкода = ";
    ДлинаШтрихкода = СтрДлина(Штрихкод);

    Если ДлинаШтрихкода = 0 Тогда
    Возврат ТипШтрихкода;
    КонецЕсли;

    Сумма = 0;

    Если ДлинаШтрихкода = 14 Тогда // ITF14

    Коэффициент = 1;
    Для Сч = 1 По 13 Цикл
    ВремКодСимвола = КодСимвола(Штрихкод, Сч);
    Если ВремКодСимвола < 48 Или ВремКодСимвола > 57 Тогда
    Прервать;
    КонецЕсли;
    Сумма = Сумма + Коэффициент * (ВремКодСимвола - 48);
    Коэффициент = 4 - Коэффициент;
    КонецЦикла;
    Сумма = (10 - Сумма % 10) % 10;
    Если КодСимвола(Штрихкод, 14) = Сумма + 48 Тогда
    ТипШтрихкода = "ITF14";
    КонецЕсли;

    ИначеЕсли ДлинаШтрихкода = 13 Тогда // EAN13

    EAN13 = Истина;
    Коэффициент = 1;
    Для Сч = 1 По 12 Цикл
    ВремКодСимвола = КодСимвола(Штрихкод, Сч);
    Если ВремКодСимвола < 48 Или ВремКодСимвола > 57 Тогда
    EAN13 = Ложь;
    Прервать;
    КонецЕсли;
    Сумма = Сумма + Коэффициент * (ВремКодСимвола - 48);
    Коэффициент = 4 - Коэффициент;
    КонецЦикла;
    Сумма = (10 - Сумма % 10) % 10;
    ПроверочныйСимвол = Символ(Сумма + 48);
    Если EAN13 И ПроверочныйСимвол = Прав(Штрихкод, 1) Тогда
    ТипШтрихкода = "EAN13";
    КонецЕсли;

    ИначеЕсли ДлинаШтрихкода = 8 Тогда // EAN8

    EAN8 = Истина;
    Коэффициент = 3;
    Для Сч = 1 По 7 Цикл
    ВремКодСимвола = КодСимвола(Штрихкод, Сч);
    Если ВремКодСимвола < 48 Или ВремКодСимвола > 57 Тогда
    EAN8 = Ложь;
    Прервать;
    КонецЕсли;
    Сумма = Сумма + Коэффициент * (ВремКодСимвола - 48);
    Коэффициент = 4 - Коэффициент;
    КонецЦикла;
    Сумма = (10 - Сумма % 10) % 10;
    Если EAN8 И (КодСимвола(Штрихкод, 8) = Сумма + 48) Тогда
    ТипШтрихкода = "EAN8";
    КонецЕсли;

    КонецЕсли;

    Если ТипШтрихкода= " Тогда // CODE39

    CODE39 = Истина;
    Для Сч = 1 По ДлинаШтрихкода Цикл
    ВремКодСимвола = КодСимвола(Штрихкод, Сч);
    Если (ВремКодСимвола <> 32)
    И (ВремКодСимвола < 36 Или ВремКодСимвола > 37)
    И (ВремКодСимвола <> 43)
    И (ВремКодСимвола < 45 Или ВремКодСимвола > 57)
    И (ВремКодСимвола < 65 Или ВремКодСимвола > 90) Тогда
    CODE39 = Ложь;
    Прервать;
    КонецЕсли;
    КонецЦикла;

    Если CODE39 Тогда
    ТипШтрихкода = "CODE39";
    КонецЕсли

    КонецЕсли;

    Если ТипШтрихкода= " Тогда // CODE128
    // CODE128 символы ASCII от 0 до 127 (цифры от «0» до «9», буквы от «A» до «Z» и от «a» до «z») и специальные символы;
    CODE128 = Истина;
    Для Сч = 1 По ДлинаШтрихкода Цикл
    ВремКодСимвола = КодСимвола(Штрихкод, Сч);
    Если (ВремКодСимвола > 127) Тогда
    CODE128 = Ложь;
    Прервать;
    КонецЕсли;
    КонецЦикла;

    Если CODE128 Тогда
    ТипШтрихкода = "CODE128";
    КонецЕсли

    КонецЕсли;

    Если ТипШтрихкода= "CODE128" Тогда // EAN128
    // В коде EAN128 регламентирован словарь CODE128 но регламентированы группы кодов.
    Если КодСимвола(Штрихкод, 1) = 40 Тогда
    ТипШтрихкода = "EAN128";
    КонецЕсли;
    КонецЕсли;

    Возврат ТипШтрихкода;

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

Если используете типовую конфу, то вам нужна функция

```1c
    МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода)
```
---
Да спасибо большое за пример, Я уже разобрался почти.
---
строковый реквизит на форму + соответствующий шрифт (ean...) для заголовка или значения
---
Я сделал Табличный документ, в нём вывел макет со штрихкодами которые с генерировал. И сделал активное поле под штрих код, куда попадает считанное значение.