Привет всем.

Есть Документ пересчет товара в УТ 11
Есть Внешняя обработка заполнения табличной части
Там я читаю EXCEL файл получаю ячейки КодТовара и КоличествоОстаток

В Обработке доступ к документу ЭтотОбъект.ВладелецФормы
Все телодвижения делаю &НаКлиенте
Номенклатуру получаю НаСервере и возвращаю НаКлиент
А теперь сам вопрос:
Как в табличной части найти строку с номенклатурой и проставить в этой строке КоличествоФакт

Вот часть кода внешней обработки:

```1c
    Для СтрокаОтсчета = 2 по КоличествоСтрок Цикл
    КодТовара = Excel.Cells(СтрокаОтсчета, 4).Text;
    Номенклатура = ПолучитьНоменклатуруПоКоду(КодТовара);
    ВладелецФормы.Модифицированность = Истина;
    Отбор = Новый Структура();
    Отбор.Вставить("Номенклатура", Номенклатура);
    Сообщить(Номенклатура);
    НайденноеЗначение = ВладелецФормы.Объект.Товары.НайтиСтроки(Отбор);
    Сообщить(НайденноеЗначение);
    НайденноеЗначение.КоличествоУпаковокФакт = Число(Excel.Cells(СтрокаОтсчета, 6).Text);

    КонецЦикла;
    Excel.DisplayAlerts = 0;
    Excel.Quit();
    Excel.DisplayAlerts = 1;
```

Но получаю ошибку:
Поле объекта не обнаружено (КоличествоУпаковокФакт)
{ВнешняяОбработка.ЗагрузкаДанныхИзВнешнихФайлов.Форма.Форма.Форма(2567)}: НайденноеЗначение.КоличествоУпаковокФакт = Число(Excel.Cells(СтрокаОтсчета, 6).Text);
Номенклатуру находит, а вот строку непонятно, не могу отладить внешнюю обработку
Реквизит на форме владельца есть КоличествоУпаковокФакт
---
Только сейчас увидел НайденноеЗначение " это же массив строк...У нему надо обращаться так
НайденноеЗначение [0].КоличествоУпаковокФакт = Число(Excel.Cells(СтрокаОтсчета, 6).Text);
---
НайтиСтроки возвращает массив. Поэтому и ошибка возникает
---
Добавил ВладелецФормы.Прочитать(); Всеравно не показывает что заполнил
Вместо Прочитать использовать ОповеститьОбИзменении.
---
Как в табличной части найти строку с номенклатурой и проставить в этой строке КоличествоФакт
НайденноеЗначение.КоличествоУпаковокФакт = Число(Excel.Cells(СтрокаОтсчета, 6).Text);

Так все таки как называется реквизит табличной части? КоличестоФакт или КоличествоУпаковокФакт ?
---
КоличествоУпаковокФакт
---
Это реквизит табличной части или реквизит формы?
---
НайтиСтроки возвращает массив. Поэтому и ошибка возникает
---
Только сейчас увидел НайденноеЗначение " это же массив строк...У нему надо обращаться так
НайденноеЗначение [0].КоличествоУпаковокФакт = Число(Excel.Cells(СтрокаОтсчета, 6).Text);
---
что то он заполняет, но форму не обновляет...
---
И не должен. Форма обновляется только когда изменения в ней вносятся в её контексте.
А вы пытаетесь в чужой форме изменять объект. Никакого автоматического обновления там не будет. Читаем мануалы.
---
Добавил ВладелецФормы.Прочитать(); Всеравно не показывает что заполнил

```1c
    &НаКлиенте
    Процедура ПриОткрытии(Отказ)

    Режим = РежимДиалогаВыбораФайла.Открытие;
    ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытия.ПолноеИмяФайла = ";
    Фильтр = "XLS (*.xls)|*.xls|XLSX (*.xlsx)|*.xlsx";
    ДиалогОткрытия.Фильтр = Фильтр;
    ДиалогОткрытия.МножественныйВыбор = Ложь;
    ДиалогОткрытия.Заголовок = "Выберите файлы EXEL";
    Если ДиалогОткрытия.Выбрать() Тогда
    ПутьКФайлу = ДиалогОткрытия.ПолноеИмяФайла;

    Иначе
    Предупреждение("Нет выбранных файлов!");
    КонецЕсли;

    Попытка
    Excel = Новый COMОбъект("Excel.Application");
    Excel.WorkBooks.Open(ПутьКФайлу);
    Исключение
    Сообщить("При открытии файла произошла ошибка! Операция прервана!");
    Сообщить(ОписаниеОшибки());
    Возврат;
    КонецПопытки;

    // Попытка выбрать первый лист
    // Можно указать любой другой
    Попытка
    Excel.Sheets(1).Select();
    Исключение
    // Закрытие файла в том случае, если первый лист не найден
    Excel.ActiveWorkbook.Close();
    Excel = 0;
    Сообщить("Первый лист не найден!");

    Возврат;
    КонецПопытки;

    // Вычисление количества строк и колонок в зависимости от версии Excel
    vExcel = Лев(Excel.Version, Найти(Excel.Version,".")-1);
    Если vExcel = "8" тогда
    КоличествоСтрок = Excel.Cells.CurrentRegion.Rows.Count;
    КоличествоКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13);
    Иначе
    КоличествоСтрок = Excel.Cells(1,1).SpecialCells(11).Row;
    КоличествоКолонок = Excel.Cells(1,1).SpecialCells(11).Column;
    Конецесли;

    Для СтрокаОтсчета = 2 по КоличествоСтрок Цикл
    Если СтрокаОтсчета = 15 Тогда Прервать КонецЕсли;
    КодТовара = Excel.Cells(СтрокаОтсчета, 4).Text;
    Номенклатура = ПолучитьНоменклатуруПоКоду(КодТовара);
    Состояние("Загружаем таблицу", СтрокаОтсчета * 100 / КоличествоСтрок,Номенклатура);

    ВладелецФормы.Модифицированность = Истина;
    Отбор = Новый Структура();
    Отбор.Вставить("Номенклатура", Номенклатура);
    Сообщить(Номенклатура);
    НайденноеЗначение = ВладелецФормы.Объект.Товары.НайтиСтроки(Отбор);
    //Сообщить(НайденноеЗначение);
    Если НайденноеЗначение.Количество() >0 тогда
    НайденноеЗначение[0].КоличествоУпаковокФакт = Число(Excel.Cells(СтрокаОтсчета, 6).Text);
    Сообщить("Найден");
    Иначе
    Сообщить("НЕНайден");
    КонецЕсли;

    КонецЦикла;
    Excel.DisplayAlerts = 0;
    Excel.Quit();
    Excel.DisplayAlerts = 1;
    ЭтаФорма.Закрыть();
    ВладелецФормы.Прочитать();
    КонецПроцедуры
```
---
Всеравно не показывает что заполнил Вы ведь меняете документ? А где сохранение изменений? Где Записать()?
---
Добавил ВладелецФормы.Прочитать(); Всеравно не показывает что заполнил
Вместо Прочитать использовать ОповеститьОбИзменении.
---
Спасибо друг.
Добавил:

```1c
    ОповеститьОбИзменении(ВладелецФормы.Объект.Ссылка);
```
 и все заполняет без записи)