1C 8.3 (управляемое). Как обновить шрифт в табличной части про проведении инвентаризации со сканером?

В табличной части значения количества товара меняются в режиме реального времени, а шрифт не меняется (должен стать жирным). А если количество менять вручную, то шрифт меняется.

Наглядный пример, как выглядит табличная часть:

введите сюда описание изображения

Пробовал добавить такой код:

ПолучитьКэшДанныхПоПеремещению();
Обновить();

С помощью тестовой кнопки все работает отлично (т.е. без этого кода шрифт не менялся, а после добавления этого кода шрифт стал жирным в режиме реального времени).

А вот сканер уже выдает ошибку, т.е. не находит номенклатуру (без этого куска кода все прекрасно работает).

Код процедуры ПолучитьКэшДанныхПоПеремещению():

// перезаполнение кеша по перемещению
Процедура ПолучитьКэшДанныхПоПеремещению(ПоСкладу=Неопределено, Знач РезервыПоЗаказНаряду=Неопределено, СтруктураОтбора = Неопределено, ИсходнаяТаблица = Неопределено) Экспорт
    
    Если РезервыПоЗаказНаряду=Неопределено Тогда
        РезервыПоЗаказНаряду=ЗакрыватьЗаказыТолькоПоДанномуЗаказНаряду;
    КонецЕсли;
    
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    ТекстОтбораЗаказПокупателя = "";
    Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ЗаказПокупателя") И ЗначениеЗаполнено(ДокументОснование) Тогда
        ТекстОтбораЗаказПокупателя = " (Заказ=&ВыбЗаказПокупателя) ИЛИ ";
        Запрос.УстановитьПараметр("ВыбЗаказПокупателя", ДокументОснование);
    КонецЕсли;
    
    ОтборПоСтроке = Ложь;
    ТекстОтбора = "";
    ВиртТекстОтбора = "";
    СтруктураОтбораБезСклада = Новый Структура;
    Если ТипЗнч(КешИнформацииЗН) = Тип("ТаблицаЗначений") И ТипЗнч(СтруктураОтбора) = Тип("Структура") Тогда
        
        Для Каждого ТекЭлемент Из СтруктураОтбора Цикл
            ИмяЭлемента = ТекЭлемент.Ключ;
            ТекстОтбора = ТекстОтбора + ?(ТекстОтбора = "", "ГДЕ ", " И ") + "
            |   ЗаказНарядТовары."+ИмяЭлемента+" = &"+ИмяЭлемента;
            Если НЕ ИмяЭлемента = "СкладКомпании" Тогда
                ВиртТекстОтбора = ВиртТекстОтбора + " И 
                |   "+ИмяЭлемента+" = &"+ИмяЭлемента;
                СтруктураОтбораБезСклада.Вставить(ИмяЭлемента, ТекЭлемент.Значение);
            КонецЕсли;
            Запрос.УстановитьПараметр(ИмяЭлемента, ТекЭлемент.Значение);
            ОтборПоСтроке = Истина;
        КонецЦикла;
        
    КонецЕсли;
    
    // Таблица строк
    ТекстЗапроса="
    |ВЫБРАТЬ
    |   ЗаказНарядТовары.Номенклатура,
    |   ЗаказНарядТовары.ХарактеристикаНоменклатуры,
    |   ЗаказНарядТовары.СкладКомпании КАК СкладКомпании
    |ПОМЕСТИТЬ ЗаказНарядТовары
    |ИЗ
    |   &Товары КАК ЗаказНарядТовары
    |" + ТекстОтбора +"
    |;
    |
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |   ЗаказНарядТовары.Номенклатура КАК Номенклатура,
    |   ЗаказНарядТовары.СкладКомпании КАК СкладКомпании,
    |   ЗаказНарядТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
    |ПОМЕСТИТЬ
    |   ТаблицаТоваров
    |ИЗ
    |   ЗаказНарядТовары КАК ЗаказНарядТовары
    |ИНДЕКСИРОВАТЬ ПО
    |   Номенклатура,
    |   СкладКомпании
    |;
    |
    |ВЫБРАТЬ
    |   ПеремещениеТоваровВПроизводство.Ссылка КАК Регистратор
    |ПОМЕСТИТЬ
    |   ПеремещенияТоваровВПроизводство
    |ИЗ
    |   Документ.ПеремещениеТоваровВПроизводство КАК ПеремещениеТоваровВПроизводство
    |ГДЕ
    |   ПеремещениеТоваровВПроизводство.ДокументОснование = &ЗаказНаряд
    |;
    |
    |ВЫБРАТЬ
    |   ЗаказВнутренний.Ссылка КАК Регистратор
    |ПОМЕСТИТЬ
    |   ТаблицаЗаказов
    |ИЗ
    |   Документ.ЗаказВнутренний КАК ЗаказВнутренний
    |ГДЕ
    |   ЗаказВнутренний.ДокументОснование = &ЗаказНаряд
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |   ЗаказПокупателя.Ссылка
    |ИЗ
    |   Документ.ЗаказПокупателя КАК ЗаказПокупателя
    |ГДЕ
    |   ЗаказПокупателя.ДокументОснование = &ЗаказНаряд
    |;
    |
    |ВЫБРАТЬ
    |   ОбъединеннаяТаблица.Номенклатура КАК Номенклатура,
    |   ОбъединеннаяТаблица.СкладКомпании КАК СкладКомпании,
    |   ОбъединеннаяТаблица.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |   СУММА(ОбъединеннаяТаблица.ПеремещеноСоСклада) КАК ПеремещеноСоСклада,
    |   СУММА(ОбъединеннаяТаблица.Зарезервировано) КАК Зарезервировано,
    |   СУММА(ОбъединеннаяТаблица.ОстатокНаСкладе)+СУММА(ОбъединеннаяТаблица.Зарезервировано) КАК КоличествоОстаток,
    |   СУММА(ОбъединеннаяТаблица.ОстатокНаСкладе) КАК ОстатокНаСкладе
    |ИЗ(
    |   ВЫБРАТЬ
    |       ТаблицаТоваров.Номенклатура,
    |       ТаблицаТоваров.СкладКомпании,
    |       ТаблицаТоваров.ХарактеристикаНоменклатуры,
    |       0 КАК ПеремещеноСоСклада,
    |       0 КАК Зарезервировано,
    |       0 КАК ОстатокНаСкладе
    |   ИЗ
    |       ТаблицаТоваров КАК ТаблицаТоваров
    |
    |   ОБЪЕДИНИТЬ ВСЕ
    |
    |   ВЫБРАТЬ
    |       ОстаткиТоваровКомпании.Номенклатура,
    |       ОстаткиТоваровКомпании.СкладКомпании,
    |       ОстаткиТоваровКомпании.ХарактеристикаНоменклатуры,
    |       ОстаткиТоваровКомпании.Количество КАК ПеремещеноСоСклада,
    |       0 КАК Зарезервировано,
    |       0 КАК ОстатокНаСкладе
    |   ИЗ
    |       РегистрНакопления.ОстаткиТоваровКомпании КАК ОстаткиТоваровКомпании
    |   ГДЕ
    |       ОстаткиТоваровКомпании.Регистратор ССЫЛКА Документ.ПеремещениеТоваровВПроизводство И 
    |       ОстаткиТоваровКомпании.Регистратор В (ВЫБРАТЬ Регистратор ИЗ ПеремещенияТоваровВПроизводство)
    |
    |   ОБЪЕДИНИТЬ ВСЕ
    |
    |   ВЫБРАТЬ
    |       ЗаказыПокупателейОстатки.Номенклатура,
    |       ЗаказыПокупателейОстатки.СкладКомпании,
    |       ЗаказыПокупателейОстатки.ХарактеристикаНоменклатуры,
    |       0,
    |       ЕСТЬNULL(ЗаказыПокупателейОстатки.РезервОстаток, 0),
    |       0
    |   ИЗ 
    |       РегистрНакопления.ЗаказыПокупателей.Остатки(,
    |       "+?(РезервыПоЗаказНаряду, ТекстОтбораЗаказПокупателя+"Заказ В (ВЫБРАТЬ ТаблицаЗаказов.Регистратор ИЗ ТаблицаЗаказов КАК ТаблицаЗаказов)","
    |       ("+ТекстОтбораЗаказПокупателя+"(Заказ В (ВЫБРАТЬ ТаблицаЗаказов.Регистратор ИЗ ТаблицаЗаказов КАК ТаблицаЗаказов)) ИЛИ (Контрагент=&Контрагент И (СкладКомпании, Номенклатура, ХарактеристикаНоменклатуры) В 
    |           (ВЫБРАТЬ СкладКомпании, Номенклатура, ХарактеристикаНоменклатуры ИЗ ТаблицаТоваров КАК ТаблицаТоваров)))")+"
    |       "+?(ПоСкладу=Неопределено,"","И (СкладКомпании=&ПоСкладу)")+") КАК ЗаказыПокупателейОстатки
    |
    |   ОБЪЕДИНИТЬ ВСЕ
    |
    |   ВЫБРАТЬ
    |       ОстаткиТоваровКомпанииОстатки.Номенклатура,
    |       ОстаткиТоваровКомпанииОстатки.СкладКомпании,
    |       ОстаткиТоваровКомпанииОстатки.ХарактеристикаНоменклатуры,
    |       0,
    |       0,
    |       ОстаткиТоваровКомпанииОстатки.КоличествоОстаток-ОстаткиТоваровКомпанииОстатки.РезервОстаток
    |   ИЗ
    |       РегистрНакопления.ОстаткиТоваровКомпании.Остатки(, (СкладКомпании, Номенклатура, ХарактеристикаНоменклатуры) В 
    |           (ВЫБРАТЬ СкладКомпании, Номенклатура, ХарактеристикаНоменклатуры ИЗ ТаблицаТоваров КАК ТаблицаТоваров)) КАК ОстаткиТоваровКомпанииОстатки) КАК ОбъединеннаяТаблица
    |СГРУППИРОВАТЬ ПО
    |   ОбъединеннаяТаблица.Номенклатура,
    |   ОбъединеннаяТаблица.СкладКомпании,
    |   ОбъединеннаяТаблица.ХарактеристикаНоменклатуры
    |";
    
    Запрос.Текст = ТекстЗапроса;
    Если ИсходнаяТаблица = Неопределено Тогда
        Запрос.УстановитьПараметр("Товары", Товары);
    Иначе
        Запрос.УстановитьПараметр("Товары", ИсходнаяТаблица);
    КонецЕсли;
    Запрос.УстановитьПараметр("ЗаказНаряд", Ссылка);
    Запрос.УстановитьПараметр("Контрагент", Контрагент);
    Запрос.УстановитьПараметр("ПоСкладу",   ПоСкладу);
    
    Если ОтборПоСтроке Тогда
        Выборка = Запрос.Выполнить().Выбрать();
        Пока Выборка.Следующий() Цикл
            СтруктураПоиска = Новый Структура;
            СтруктураПоиска.Вставить("Номенклатура",               Выборка.Номенклатура);
            СтруктураПоиска.Вставить("СкладКомпании",              Выборка.СкладКомпании);
            СтруктураПоиска.Вставить("ХарактеристикаНоменклатуры", Выборка.ХарактеристикаНоменклатуры);
            НайденныеСтроки = КешИнформацииЗН.НайтиСтроки(СтруктураПоиска);
            Если НайденныеСтроки.Количество()>0 Тогда
                СтрокаКеша = НайденныеСтроки[0];
            Иначе
                СтрокаКеша = КешИнформацииЗН.Добавить();
            КонецЕсли;
            ЗаполнитьЗначенияСвойств(СтрокаКеша, Выборка);
        КонецЦикла;
    Иначе
        КешИнформацииЗН = Запрос.Выполнить().Выгрузить();
    КонецЕсли;
    
    Запрос.Текст = "
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |   ТаблицаТоваров.Номенклатура КАК Номенклатура,
    |   ТаблицаТоваров.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
    |ПОМЕСТИТЬ ТаблицаТоваровБезСкладов
    |ИЗ
    |   ТаблицаТоваров КАК ТаблицаТоваров
    |
    |ИНДЕКСИРОВАТЬ ПО
    |   Номенклатура
    |;
    |
    |ВЫБРАТЬ
    |   ОбъединенныйЗапрос.Номенклатура,
    |   ОбъединенныйЗапрос.ХарактеристикаНоменклатуры,
    |   СУММА(ОбъединенныйЗапрос.ВПроизводстве) КАК ВПроизводстве,
    |   СУММА(ОбъединенныйЗапрос.Заказано) КАК Заказано,
    |   СУММА(ОбъединенныйЗапрос.ЗаказаноПодЗН) КАК ЗаказаноПодЗН,
    |   СУММА(ОбъединенныйЗапрос.ЗарезервированоПодЗН) КАК ЗарезервированоПодЗН
    |ИЗ
    |   (
    |   ВЫБРАТЬ
    |       ТоварыВПроизводствеОстатки.Номенклатура КАК Номенклатура,
    |       ТоварыВПроизводствеОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |       ТоварыВПроизводствеОстатки.КоличествоОстаток КАК ВПроизводстве,
    |       0 КАК Заказано,
    |       0 КАК ЗаказаноПодЗН,
    |       0 КАК ЗарезервированоПодЗН
    |   ИЗ
    |       РегистрНакопления.ТоварыВПроизводстве.Остатки(, ЗаказНаряд = &ЗаказНаряд"+ВиртТекстОтбора+") КАК ТоварыВПроизводствеОстатки
    |
    |   ОБЪЕДИНИТЬ ВСЕ
    |
    |   ВЫБРАТЬ
    |       ЗаказыПокупателейОстатки.Номенклатура КАК Номенклатура,
    |       ЗаказыПокупателейОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |       0,
    |       ЗаказыПокупателейОстатки.ЗаказаноОстаток-ЗаказыПокупателейОстатки.РезервОстаток,
    |       0,
    |       0
    |   ИЗ
    |       РегистрНакопления.ЗаказыПокупателей.Остатки(,
    |       "+?(РезервыПоЗаказНаряду, ТекстОтбораЗаказПокупателя+"Заказ В (ВЫБРАТЬ ТаблицаЗаказов.Регистратор ИЗ ТаблицаЗаказов КАК ТаблицаЗаказов)","
    |       ("+ТекстОтбораЗаказПокупателя+"(Заказ В (ВЫБРАТЬ ТаблицаЗаказов.Регистратор ИЗ ТаблицаЗаказов КАК ТаблицаЗаказов)) ИЛИ (Контрагент=&Контрагент И (Номенклатура, ХарактеристикаНоменклатуры) В 
    |           (ВЫБРАТЬ Номенклатура, ХарактеристикаНоменклатуры ИЗ ТаблицаТоваровБезСкладов КАК ТаблицаТоваров)))")+") КАК ЗаказыПокупателейОстатки
    |
    |   ОБЪЕДИНИТЬ ВСЕ
    |
    |   ВЫБРАТЬ
    |       ЗаказыПокупателейОстатки.Номенклатура,
    |       ЗаказыПокупателейОстатки.ХарактеристикаНоменклатуры,
    |       0,
    |       0,
    |       ЗаказыПокупателейОстатки.ЗаказаноОстаток-ЗаказыПокупателейОстатки.РезервОстаток,
    |       ЗаказыПокупателейОстатки.РезервОстаток
    |   ИЗ
    |       РегистрНакопления.ЗаказыПокупателей.Остатки(,
    |       "+ТекстОтбораЗаказПокупателя+"Заказ В (ВЫБРАТЬ ТаблицаЗаказов.Регистратор ИЗ ТаблицаЗаказов КАК ТаблицаЗаказов)) КАК ЗаказыПокупателейОстатки) КАК ОбъединенныйЗапрос
    |СГРУППИРОВАТЬ ПО
    |   ОбъединенныйЗапрос.Номенклатура,
    |   ОбъединенныйЗапрос.ХарактеристикаНоменклатуры
    |   ";
    
    Если ОтборПоСтроке Тогда
        Выборка = Запрос.Выполнить().Выбрать();
        Пока Выборка.Следующий() Цикл
            СтруктураПоиска = Новый Структура;
            СтруктураПоиска.Вставить("Номенклатура",               Выборка.Номенклатура);
            СтруктураПоиска.Вставить("ХарактеристикаНоменклатуры", Выборка.ХарактеристикаНоменклатуры);
            НайденныеСтроки = КешИтоговойИнформацииЗН.НайтиСтроки(СтруктураПоиска);
            Если НайденныеСтроки.Количество()>0 Тогда
                СтрокаКеша = НайденныеСтроки[0];
            Иначе
                СтрокаКеша = КешИтоговойИнформацииЗН.Добавить();
            КонецЕсли;
            ЗаполнитьЗначенияСвойств(СтрокаКеша, Выборка);
        КонецЦикла;
    Иначе
        КешИтоговойИнформацииЗН = Запрос.Выполнить().Выгрузить();
    КонецЕсли;
    
    Если ОтборПоСтроке Тогда
        ПересчитатьКеш(ПоСкладу, СтруктураОтбора, ИсходнаяТаблица);
    Иначе
        ПересчитатьКеш(ПоСкладу,, ИсходнаяТаблица);
    КонецЕсли;

КонецПроцедуры //ПолучитьКэшДанныхПоПеремещению()

Строка кода, где конкретно выдавалась ошибка (ОбщиеМодули - дкДокументы):

Если Источник = "Сканер" Тогда
            ОбработкаОбъектШтрихКоды = Обработки.ШтрихКоды.Создать();
            СтруктураНоменклатуры = ОбработкаОбъектШтрихКоды.НайтиСтруктуруПоШтрихКоду(Данные);
            Если (НЕ обЗначениеНеЗаполнено(СтруктураНоменклатуры)) И (Метаданные.Документы.Содержит(ЭтаФорма.Метаданные()) ИЛИ ЭтаФорма.Метаданные() = Метаданные.Обработки.АРМКорзина) Тогда
                Если ТипЗнч(СтруктураНоменклатуры.Объект) = Тип("СправочникСсылка.Номенклатура") Тогда
                    //В системе с данным штрихкодом зарегистрирована номенклатура
                    СписокТоваров = Неопределено;
                    //тут можно вставить поиск других ТЧ
                    Попытка 
                        СписокТоваров  = ЭтаФорма.Товары;
                        ТоварыТабличноеПоле = ЭтаФорма.ЭлементыФормы.Товары;
                        ИмяТабличнойЧасти = "Товары";
                    Исключение 
                        Попытка 
                            СписокТоваров  = ЭтаФорма.Скидки;
                            ТоварыТабличноеПоле = ЭтаФорма.ЭлементыФормы.Скидки;
                            ИмяТабличнойЧасти = "Скидки";
                        Исключение                          
                        КонецПопытки;                       
                    КонецПопытки;
                    
                    //если не определились с ТЧ то и делать ничего не будем
                    Если СписокТоваров = Неопределено ИЛИ 
                            ТоварыТабличноеПоле.ТолькоПросмотр ИЛИ 
                            (Не ТоварыТабличноеПоле.Доступность) Тогда
                        Возврат Ложь;
                    КонецЕсли;
                    
                    //поищем номенклатуру
                    СтрокаНоменклатура = Неопределено;
                    
                    Если ИмяТабличнойЧасти <> "Скидки" Тогда
                        
                        //теперь определим наличие колонок ТЧ
                        ЕстьЕдиницаИзмерения   = дкДокументЕстьРеквизитТабЧасти("ЕдиницаИзмерения", ВидДокумента, ИмяТабличнойЧасти);
                        ЕстьХарактеристикаНоменклатуры = дкДокументЕстьРеквизитТабЧасти("ХарактеристикаНоменклатуры", ВидДокумента, ИмяТабличнойЧасти);
                        ЕстьКоличество     = дкДокументЕстьРеквизитТабЧасти("Количество", ВидДокумента, ИмяТабличнойЧасти);
                        
                        //установим флаг того что поиск не производился
                        ПоискПроизводился = Ложь;
                        МассивСтрок = Новый Массив();
                        Если СтруктураНоменклатуры.Свойство("ЕдиницаИзмерения") И ЕстьЕдиницаИзмерения Тогда
                            //МассивСтрок = СписокТоваров.НайтиСтроки(Новый Структура("Номенклатура,ЕдиницаИзмерения",
                            //СтруктураНоменклатуры.Объект,СтруктураНоменклатуры.ЕдиницаИзмерения));
                            МассивСтрок = СписокТоваров.НайтиСтроки(Новый Структура("Номенклатура",СтруктураНоменклатуры.Объект));
                            ПоискПроизводился = Истина;
                        ИначеЕсли СтруктураНоменклатуры.Свойство("ХарактеристикаНоменклатуры") И ЕстьХарактеристикаНоменклатуры Тогда
                            МассивСтрок = СписокТоваров.НайтиСтроки(Новый Структура("Номенклатура,ХарактеристикаНоменклатуры",СтруктураНоменклатуры.Объект,СтруктураНоменклатуры.ХарактеристикаНоменклатуры));
                            ПоискПроизводился = Истина;
                        КонецЕсли;
                        //если не искали тогда будем искать только по номенклатуре
                        Если НЕ ПоискПроизводился Тогда
                            МассивСтрок = СписокТоваров.НайтиСтроки(Новый Структура("Номенклатура",СтруктураНоменклатуры.Объект));
                        КонецЕсли;
                        Если МассивСтрок.Количество() > 0 Тогда
                            СтрокаНоменклатура = МассивСтрок[0];
                        КонецЕсли;
                        КолСтр = "Количество";
                        // попытаемся получить нестандартное имя реквизита который является количеством
                        Попытка 
                            КолСтр = ЭтаФорма.ИмяРеквизитаКоличество;
                        Исключение
                        КонецПопытки;
                    Иначе
                        Если НЕ дкДокументЕстьРеквизитТабЧасти("Номенклатура", ВидДокумента, ИмяТабличнойЧасти) Тогда
                            Возврат Ложь;   
                        КонецЕсли;
                        ЕстьЕдиницаИзмерения            = Ложь;
                        ЕстьХарактеристикаНоменклатуры  = Ложь;
                        ЕстьКоличество                  = Ложь;
                    КонецЕсли;
                    
                    //если товар в ТЧ не найден то добавим строку
                    Если обЗначениеНеЗаполнено(СтрокаНоменклатура) Тогда
                        //добавим новую строчку в ТЧ 
                        СтрокаНоменклатура = СписокТоваров.Добавить();
                        ТоварыТабличноеПоле.ТекущаяСтрока = СтрокаНоменклатура;
                        СтрокаНоменклатура.Номенклатура = СтруктураНоменклатуры.Объект;
                        
                        ДопПараметры = Неопределено;
                        Если ВидДокумента = "Инвентаризация" Тогда
                            // У документа инвентаризация обработка заполнения табличной части
                            // зависит от реквизита формы "флЗаполнятьПоСебестоимости".
                            ДопПараметры = Новый Структура;
                            Попытка флЗаполнятьПоСебестоимости = ЭтаФорма.флЗаполнятьПоСебестоимости Исключение флЗаполнятьПоСебестоимости = Ложь КонецПопытки;
                            ДопПараметры.Вставить("флЗаполнятьПоСебестоимости", флЗаполнятьПоСебестоимости);
                        КонецЕсли;
                        
                        // Пытаемся обработать реквизит "Номенклатура" табличной части документа.
                        Попытка 
                            ЭтаФорма.ОбработкаРеквизита(ИмяТабличнойЧасти + ".Номенклатура", СтрокаНоменклатура,ЭтаФорма, ДопПараметры);
                        Исключение
                        КонецПопытки; 
                        
                        Попытка
                            НоменклатураНовойСтроки = СтрокаНоменклатура.Номенклатура;
                        Исключение
                            //Это если это был набор и мы удалили эту строку
                            дкВывестиЗаголовокСуммаДокумента(ЭтаФорма);
                            Возврат Истина; 
                        КонецПопытки; 
                        //а теперь если есть характеристика или единица измерения поставим и их
                        Если СтруктураНоменклатуры.Свойство("ЕдиницаИзмерения") И ЕстьЕдиницаИзмерения Тогда
                            СтрокаНоменклатура.ЕдиницаИзмерения = СтруктураНоменклатуры.ЕдиницаИзмерения;
                            Попытка
                                ЭтаФорма.ОбработкаРеквизита(ИмяТабличнойЧасти + ".ЕдиницаИзмерения",СтрокаНоменклатура,ЭтаФорма);
                            Исключение
                            КонецПопытки;
                        ИначеЕсли СтруктураНоменклатуры.Свойство("ХарактеристикаНоменклатуры") И ЕстьХарактеристикаНоменклатуры Тогда
                            СтрокаНоменклатура.ХарактеристикаНоменклатуры = СтруктураНоменклатуры.ХарактеристикаНоменклатуры;
                            // Пытаемся обработать реквизит "Номенклатура" табличной части документа.
                            Попытка 
                                ЭтаФорма.ОбработкаРеквизита(ИмяТабличнойЧасти + ".ХарактеристикаНоменклатуры", СтрокаНоменклатура,ЭтаФорма, ДопПараметры);
                            Исключение
                            КонецПопытки;
                        КонецЕсли;
                        
                        Если ЕстьКоличество Тогда
                            
                            Если ЗапросКоличестваПриВводеТовараСоСканераШК Тогда
                                ФормаКоличества = ПолучитьОбщуюФорму("ВводПараметровПодбора");
                                ФормаКоличества.ИмяРеквизитаКоличества = КолСтр;
                                ФормаКоличества.ВладелецФормы = ЭтаФорма;
                                ФормаКоличества.ТекущаяСтрока = СтрокаНоменклатура;
                                ФормаКоличества.Номенклатура  = СтрокаНоменклатура.Номенклатура;
                                ФормаКоличества.ВидПодбора    = 3;
                                
                                Если ЕстьЕдиницаИзмерения Тогда
                                    ФормаКоличества.ЕдиницаИзмерения = СтрокаНоменклатура.ЕдиницаИзмерения;
                                    ФормаКоличества.ЕдиницаИзмеренияСтарая = СтрокаНоменклатура.ЕдиницаИзмерения;
                                КонецЕсли;
                                
                                Если ЕстьХарактеристикаНоменклатуры Тогда
                                    ФормаКоличества.ХарактеристикаНоменклатуры = СтрокаНоменклатура.ХарактеристикаНоменклатуры;
                                КонецЕсли;
                                
                                ФормаКоличества.СтруктураПараметровПодбора = Новый Структура("ИмяТабличногоПоляИсточника", ИмяТабличнойЧасти);
                                
                                // "на шарца" попробуем установить количество
                                Если СтруктураНоменклатуры.Свойство("Вес") И СтруктураНоменклатуры.Вес<>Неопределено И СтруктураНоменклатуры.Вес > 0 Тогда
                                    ФормаКоличества.Количество = СтруктураНоменклатуры.Вес;
                                Иначе
                                    ФормаКоличества.Количество = 1;
                                КонецЕсли;
                                
                                Если дкДокументЕстьРеквизитТабЧасти("Цена", ВидДокумента, ИмяТабличнойЧасти) Тогда
                                    ФормаКоличества.Цена  = СтрокаНоменклатура.Цена;
                                    ФормаКоличества.ЦенаСтарая = СтрокаНоменклатура.Цена;
                                ИначеЕсли дкДокументЕстьРеквизитТабЧасти("ЦенаРасход", ВидДокумента, ИмяТабличнойЧасти) Тогда
                                    ФормаКоличества.Цена  = СтрокаНоменклатура.ЦенаРасход;
                                    ФормаКоличества.ЦенаСтарая = СтрокаНоменклатура.ЦенаРасход;
                                КонецЕсли;
                                
                                Если дкДокументЕстьРеквизитТабЧасти("Сумма", ВидДокумента, ИмяТабличнойЧасти) Тогда
                                    ФормаКоличества.СуммаСтарая = СтрокаНоменклатура.Сумма;
                                ИначеЕсли дкДокументЕстьРеквизитТабЧасти("СуммаРасход", ВидДокумента, ИмяТабличнойЧасти) Тогда
                                    ФормаКоличества.СуммаСтарая = СтрокаНоменклатура.СуммаРасход;
                                КонецЕсли;
                                
                                ФормаКоличества.ОткрытьМодально();
                            Иначе
                                Если СтруктураНоменклатуры.Свойство("Вес") И СтруктураНоменклатуры.Вес<>Неопределено И СтруктураНоменклатуры.Вес > 0 Тогда
                                    СтрокаНоменклатура[КолСтр] = СтруктураНоменклатуры.Вес;
                                Иначе
                                    СтрокаНоменклатура[КолСтр] = 1;
                                КонецЕсли;
                            КонецЕсли;
                            Попытка ЭтаФорма.ОбработкаРеквизита(ИмяТабличнойЧасти + "." + КолСтр,СтрокаНоменклатура,ЭтаФорма); Исключение КонецПопытки;
                        КонецЕсли;
                        //если найден - перейдем
                    Иначе
                        ТоварыТабличноеПоле.ТекущаяСтрока = СтрокаНоменклатура;
                        Если ЕстьКоличество Тогда
                            Если ЗапросКоличестваПриВводеТовараСоСканераШК Тогда
                                ФормаКоличества = ПолучитьОбщуюФорму("ВводПараметровПодбора");
                                ФормаКоличества.ИмяРеквизитаКоличества = КолСтр;
                                ФормаКоличества.ВладелецФормы           = ЭтаФорма;
                                ФормаКоличества.ТекущаяСтрока           = СтрокаНоменклатура;
                                ФормаКоличества.Номенклатура            = СтрокаНоменклатура.Номенклатура;
                                ФормаКоличества.Количество              = СтрокаНоменклатура[КолСтр];
                                ФормаКоличества.КоличествоСтарое        = СтрокаНоменклатура[КолСтр];
                                ФормаКоличества.ВидПодбора              = 3;
                                
                                Если ЕстьЕдиницаИзмерения Тогда
                                    ФормаКоличества.ЕдиницаИзмерения       = СтрокаНоменклатура.ЕдиницаИзмерения;
                                    ФормаКоличества.ЕдиницаИзмеренияСтарая = СтрокаНоменклатура.ЕдиницаИзмерения;
                                КонецЕсли;
                                
                                Если ЕстьХарактеристикаНоменклатуры Тогда
                                    ФормаКоличества.ХарактеристикаНоменклатуры = СтрокаНоменклатура.ХарактеристикаНоменклатуры;
                                КонецЕсли;
                                
                                ФормаКоличества.СтруктураПараметровПодбора = Новый Структура("ИмяТабличногоПоляИсточника", ИмяТабличнойЧасти);
                                
                                Если дкДокументЕстьРеквизитТабЧасти("Цена", ВидДокумента, ИмяТабличнойЧасти) Тогда
                                    ФормаКоличества.Цена       = СтрокаНоменклатура.Цена;
                                    ФормаКоличества.ЦенаСтарая = СтрокаНоменклатура.Цена;
                                ИначеЕсли дкДокументЕстьРеквизитТабЧасти("ЦенаРасход", ВидДокумента, ИмяТабличнойЧасти) Тогда
                                    ФормаКоличества.Цена       = СтрокаНоменклатура.ЦенаРасход;
                                    ФормаКоличества.ЦенаСтарая = СтрокаНоменклатура.ЦенаРасход;
                                КонецЕсли;
                                
                                Если дкДокументЕстьРеквизитТабЧасти("Сумма", ВидДокумента, ИмяТабличнойЧасти) Тогда
                                    ФормаКоличества.СуммаСтарая = СтрокаНоменклатура.Сумма;
                                ИначеЕсли дкДокументЕстьРеквизитТабЧасти("СуммаРасход", ВидДокумента, ИмяТабличнойЧасти) Тогда
                                    ФормаКоличества.СуммаСтарая = СтрокаНоменклатура.СуммаРасход;
                                КонецЕсли;
                                
                                ФормаКоличества.ОткрытьМодально();
                            Иначе
                                Если СтруктураНоменклатуры.Свойство("Вес") И СтруктураНоменклатуры.Вес<>Неопределено И СтруктураНоменклатуры.Вес > 0 Тогда
                                    СтрокаНоменклатура[КолСтр] = СтрокаНоменклатура[КолСтр] + СтруктураНоменклатуры.Вес;
                                Иначе
                                    СтрокаНоменклатура[КолСтр] = СтрокаНоменклатура[КолСтр] + 1;
                                КонецЕсли;
                            КонецЕсли;
                            Попытка ЭтаФорма.ОбработкаРеквизита(ИмяТабличнойЧасти + "." + КолСтр,СтрокаНоменклатура,ЭтаФорма); Исключение КонецПопытки;
                        КонецЕсли;
                    КонецЕсли;
                    ЭтаФорма.Модифицированность = Истина;
                    дкВывестиЗаголовокСуммаДокумента(ЭтаФорма);
                ИначеЕсли ТипЗнч(СтруктураНоменклатуры.Объект) = Тип("СправочникСсылка.Карточки") Тогда
                    //В системе с данным штрихкодом зарегистрирована карточка
                    Если ТипЗнч(СтруктураНоменклатуры.Объект.Объект) = Тип("СправочникСсылка.Контрагенты") Тогда
                        //Данная карточка есть дисконтная, т.к. зарегистрирована за контрагентом
                        Попытка
                            ЭтаФорма.Карточка = СтруктураНоменклатуры.Объект;
                            ЭтаФорма.ОбработкаРеквизита("Карточка",,ЭтаФорма);
                        Исключение
                        КонецПопытки; 
                        //В этом случае подставляет владельца карточки в качестве контрагента в документ
                        Попытка
                            Если ЭтаФорма.Контрагент <> СтруктураНоменклатуры.Объект.Объект И НЕ обЗначениеНеЗаполнено(СтруктураНоменклатуры.Объект.Объект) Тогда
                                //В документе выбран другой контрагент - заменяем на владельца карточки
                                //Запомним старого контрагента
                                ВремКонтрагент = ЭтаФорма.Контрагент;
                                ЭтаФорма.Контрагент = СтруктураНоменклатуры.Объект.Объект;
                                Попытка
                                    //Попытаемся инициировать событие по изменению контрагента
                                    //Для этого процедура "КонтрагентПриИзменении" в форме должна быть объявлена как экспортная
                                    ЭтаФорма.КонтрагентПриИзменении(ЭтаФорма.ЭлементыФормы.Контрагент);
                                Исключение
                                    //Такой процедуры нет или она не экспортная
                                    //В этом случае подмена контрагента на владельца карточки
                                    //должна быть отменена
                                    ЭтаФорма.Контрагент = ВремКонтрагент;
                                КонецПопытки; 
                            КонецЕсли; 
                        Исключение
                        КонецПопытки; 
                    ИначеЕсли ТипЗнч(СтруктураНоменклатуры.Объект.Объект) = Тип("СправочникСсылка.Пользователи") Тогда
                        Попытка 
                            ЭтаФорма.Менеджер = СтруктураНоменклатуры.Объект.Объект.Сотрудник;
                        Исключение
                        КонецПопытки;
                    КонецЕсли; 
                    дкВывестиЗаголовокСуммаДокумента(ЭтаФорма);
                Иначе
                    //Документ не умеет обрабатывать объекты других типов
                    Возврат Ложь;
                КонецЕсли; 
            ИначеЕсли обЗначениеНеЗаполнено(СтруктураНоменклатуры) Тогда
                Предупреждение("Штрихкод " + Данные + " не найден!",5);
                Возврат Ложь;
            Иначе
                Возврат Ложь;
            КонецЕсли; 
        КонецЕсли;

Ответы (0 шт):