УТ, Внешняя обработка. В форме обработки заполняю реквизиты будущего документа, затем открываю файл Excel, из которого заполняю таб.часть формы обработки и теперь на основании этих данных нужно создать новый документ, заполнить его реквизиты и ТЧ, которые в обработке и провести документ. Нужно сделать заполнение ТЧ нового документа именно с помощью методов БСП ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ или ОбработкаТабличнойЧастиСервер.ОбработатьТЧ, но когда пытаюсь провести документ из обработк, то вылетает ошибка. Ниже сам код и после него уже текст ошибки.Подскажите пожалуйста, как правильно подключить ОбработкаТабличнойЧастиСервер.ОбработатьТЧ, что делаю не так?

```1c
    &НаКлиенте
    Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

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

    Проводник.Фильтр = Фильтр;

    Оповещение = Новый ОписаниеОповещения("ПослеВыборФайла", ЭтотОбъект);

    Проводник.Показать(Оповещение);

    КонецПроцедуры

    &НаКлиенте
    Процедура ПослеВыборФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт

    Если ВыбранныеФайлы = Неопределено Тогда
    Возврат;
    КонецЕсли;
    Объект.ПутьКФайлу = ВыбранныеФайлы[0];

    КонецПроцедуры // ()

    &НаКлиенте
    Процедура ПрочитатьФайл(Команда)
    ДД = Новый ДвоичныеДанные(Объект.ПутьКФайлу);
    АдресДД = ПоместитьВоВременноеХранилище(ДД);
    ПрочитатьФайл_XLS_НаСервере(АдресДД);

    КонецПроцедуры

    &НаСервере
    Процедура ПрочитатьФайл_XLS_НаСервере(АдресДД)

    Объект.ДанныеФайла.Очистить();
    ПутьКФайлуНаСервере = ПолучитьИмяВременногоФайла("xlsx");
    ДвоичДанные = ПолучитьИзВременногоХранилища(АдресДД);
    ДвоичДанные.Записать(ПутьКФайлуНаСервере);

    ТабДок = Новый ТабличныйДокумент;
    Попытка
    ТабДок.Прочитать(ПутьКФайлуНаСервере, СпособЧтенияЗначенийТабличногоДокумента.Значение);
    Исключение
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = ОписаниеОшибки();
    Сообщение.Сообщить();
    Возврат;
    КонецПопытки;

    //Определяем количество строк
    КоличествоСтрок = ТабДок.ВысотаТаблицы;
    Для НомерСтроки = 2 по КоличествоСтрок Цикл
    СтрокаДанных = Объект.ДанныеФайла.Добавить();
    //Обращаемся к ячейки и забираем данные
    СтрокаДанных.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию((ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 1).ТекущаяОбласть.Текст));
    СтрокаДанных.Количество = Число(ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 2).ТекущаяОбласть.Текст);
    СтрокаДанных.Цена = Число(ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 3).ТекущаяОбласть.Текст);
    КонецЦикла;

    КонецПроцедуры

    &НаКлиенте
    Процедура ЗаписатьДанные(Команда)
    //СсылкаНаДокумент = СоздатьНовыйДокумент();
    ЗаписатьДанныеНаСервере();
    КонецПроцедуры

    &НаСервере
    Процедура ЗаписатьДанныеНаСервере()

    Если Объект.ДанныеФайла.Количество()>0 Тогда

    НовыйДокумент = Документы.ПриобретениеТоваровУслуг.СоздатьДокумент();
    НовыйДокумент.Дата = ТекущаяДата();
    НовыйДокумент.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика;
    НовыйДокумент.Организация = Объект.Организация;
    НовыйДокумент.Договор = Объект.Договор;
    НовыйДокумент.Склад = Объект.Склад;
    НовыйДокумент.Партнер = Объект.Поставщик;

    Для Каждого Строка Из Объект.ДанныеФайла Цикл
    НоваяСтрока = НовыйДокумент.Товары.Добавить();
    НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Номенклатура);
    НоваяСтрока.Количество = Строка.Количество;
    НоваяСтрока.Цена = Строка.Цена;

    СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(НовыйДокумент);

    СтруктураДействий = Новый Структура;
    СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
    СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
    СтруктураДействий.Вставить("ПересчитатьСумму");
    СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
    СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
    СтруктураДействий.Вставить("ПересчитатьСуммуСверхЗаказа", Новый Структура("РеализацияПоступлениеПоЗаказу, ТребуетсяЗалогЗаТару",
    НовыйДокумент.ПоступлениеПоЗаказам, НовыйДокумент.ТребуетсяЗалогЗаТару));
    ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, Неопределено);

    КонецЦикла;
    НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
    ОбщегоНазначения.СообщитьПользователю("Создан новый документ" + НовыйДокумент, НовыйДокумент.Ссылка);
    КонецЕсли;
    КонецПроцедуры
```

Текст ошибки:
Ошибка при вызове метода контекста (Записать)
{ВнешняяОбработка.ЗаполнениеДокумента.Форма.Форма.Форма(176)}: НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
{ВнешняяОбработка.ЗаполнениеДокумента.Форма.Форма.Форма(98)}: ЗаписатьДанныеНаСервере();
по причине:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{ОбщийМодуль.ПроведениеСерверУТ.Модуль(355)}: Ошибка при вызове метода контекста (Записать)
 НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
по причине:
Запись не верна! Значение поля "Склад" не может быть пустым! (Регистр накопления: Свободные остатки; Номер строки: 1)

по причине:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{ОбщийМодуль.ПроведениеСерверУТ.Модуль(355)}: Ошибка при вызове метода контекста (Записать)

по причине:
Запись не верна! Значение поля "Склад" не может быть пустым! (Регистр накопления: Свободные остатки; Номер строки: 1)
Ошибка при вызове метода контекста (Записать)
{ОбщийМодуль.ПроведениеСерверУТ.Модуль(355)}: Объект.Движения.Записать();
{Документ.ПриобретениеТоваровУслуг.МодульОбъекта(891)}: ПроведениеСерверУТ.ЗаписатьНаборыЗаписей(ЭтотОбъект);
{ВнешняяОбработка.ЗаполнениеДокумента.Форма.Форма.Форма(176)}: НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
{ВнешняяОбработка.ЗаполнениеДокумента.Форма.Форма.Форма(98)}: ЗаписатьДанныеНаСервере();
по причине:
Запись не верна! Значение поля "Склад" не может быть пустым! (Регистр накопления: Свободные остатки; Номер строки: 1)
Запись не верна! Значение поля "Склад" не может быть пустым! (Регистр накопления: Свободные остатки; Номер строки: 1)
---
Заполните склад в строке табличной части. И потом вызывайте обработку строк
---
НоваяСтрока.Количество = Строка.Количество;
(5) Количество (на скрине) это всего навсего Заголовок. Само поле ссылается на Объект.Товары.КоличествоУпаковок. Соответственно и заполнять нужно:
НоваяСтрока.КоличествоУпаковок
От него же рассчитывается и Сумма.
---
Заполните склад в строке табличной части. И потом вызывайте обработку строк
---
Есть, благодарю Вас!) Новый документ создался, подскажите пожалуйста, а почему не заполнились поля - количество, сумма, ставка НДС, когда количество для ТЧ я заполнил, а сумма и ставка должны рассчитаться благодаря структуре действий(ведь я там указал пересчет суммы и ндс) и благодаря ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ
(2)
---
новаястрока.количествоупаковок заполнить надо
---
Ошибка с полем Склад решилась, документ создается и проводится, но почему-то в документе не заполняются поля Контрагент, Договор - хотя они в коде указываются и в ТЧ не заполняются колонки - Количество, хотя оно также в коде заполняется и просчитываются Сумма и Ставка НДС, хотя они должны по идее благодаря СтруктуреДействий и процедуре обработать ТЧ также заполняться, подскажите пожалуйста, в чем может быть причина?
---
НоваяСтрока.Количество = Строка.Количество;
(5) Количество (на скрине) это всего навсего Заголовок. Само поле ссылается на Объект.Товары.КоличествоУпаковок. Соответственно и заполнять нужно:
НоваяСтрока.КоличествоУпаковок
От него же рассчитывается и Сумма.
---
Ага, посмотрел в конфигураторе в документе, с этим разобрался, с прошлой ошибкой также разобрался, прошелся отладчиком и нашел, что не заполнялось значение Документ.ВалютаВзаиморасчетов, добавил еще его в обработку и док провелся!) НО теперь новая ошибка "ЗаполнитьСтавкуНДС", правильно я понимаю, что нужно в структуру действий ее добавить?
(6)
---
Добавил Кол-воУпаковок, теперь вылетела ошибка по поле Валюта, заполнил
НовыйДокумент.Валюта = Объект.Договор.ВалютаВзаиморасчетов;

Но все равно вылетает эта ошибка по Ваюте:
Ошибка при вызове метода контекста (Записать)
{ВнешняяОбработка.ЗаполнениеДокумента.Форма.Форма.Форма(127)}: НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
{ВнешняяОбработка.ЗаполнениеДокумента.Форма.Форма.Форма(87)}: ЗаписатьДанныеНаСервере();
по причине:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{ОбщийМодуль.ПроведениеСерверУТ.Модуль(355)}: Ошибка при вызове метода контекста (Записать)
  НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
по причине:
Запись не верна! Значение поля "Валюта" не может быть пустым! (Регистр накопления: Расчеты с поставщиками; Номер строки: 1)

по причине:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{ОбщийМодуль.ПроведениеСерверУТ.Модуль(355)}: Ошибка при вызове метода контекста (Записать)

по причине:
Запись не верна! Значение поля "Валюта" не может быть пустым! (Регистр накопления: Расчеты с поставщиками; Номер строки: 1)
Ошибка при вызове метода контекста (Записать)
{ОбщийМодуль.ПроведениеСерверУТ.Модуль(355)}: Объект.Движения.Записать();
{Документ.ПриобретениеТоваровУслуг.МодульОбъекта(891)}: ПроведениеСерверУТ.ЗаписатьНаборыЗаписей(ЭтотОбъект);
{ВнешняяОбработка.ЗаполнениеДокумента.Форма.Форма.Форма(127)}: НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
{ВнешняяОбработка.ЗаполнениеДокумента.Форма.Форма.Форма(87)}: ЗаписатьДанныеНаСервере();
по причине:
Запись не верна! Значение поля "Валюта" не может быть пустым! (Регистр накопления: Расчеты с поставщиками; Номер строки: 1)
Запись не верна! Значение поля "Валюта" не может быть пустым! (Регистр накопления: Расчеты с поставщиками; Номер строки: 1)

(5)
---
Благодарю Всех за помощь!) Решил вопрос. Спасибо Вам огромное!!!) И для будущих неофитов, как я оставлю код, который у меня теперь работает!) Может я плохо искал, но видел очень мало примеров с применением методов БСП с заполнением ТЧ, поэтому оставлю код, который теперь у меня работает!)

```1c
    &НаСервере
    Процедура ЗаписатьДанныеНаСервере()

    Если Объект.ДанныеФайла.Количество()>0 Тогда

    НовыйДокумент = Документы.ПриобретениеТоваровУслуг.СоздатьДокумент();
    НовыйДокумент.Дата = ТекущаяДата();
    НовыйДокумент.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика;
    НовыйДокумент.Организация = Объект.Организация;
    НовыйДокумент.Договор = Объект.Договор;
    НовыйДокумент.Соглашение = Справочники.СоглашенияСПоставщиками.НайтиПоРеквизиту("Статус", Перечисления.СтатусыСоглашенийСКлиентами.Действует);
    НовыйДокумент.Склад = Объект.Склад;
    НовыйДокумент.Контрагент = Объект.Контрагент;
    НовыйДокумент.Партнер = Объект.Поставщик;
    НовыйДокумент.Валюта = Объект.Договор.ВалютаВзаиморасчетов;
    НовыйДокумент.ВалютаВзаиморасчетов = Объект.Договор.ВалютаВзаиморасчетов;
    НовыйДокумент.НалогообложениеНДС = Объект.Договор.НалогообложениеНДС;

    Для Каждого Строка Из Объект.ДанныеФайла Цикл
    НоваяСтрока = НовыйДокумент.Товары.Добавить();
    НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Номенклатура);
    НоваяСтрока.Количество = Строка.Количество;
    НоваяСтрока.Цена = Строка.Цена;
    НоваяСтрока.Склад = Объект.Склад;
    НоваяСтрока.КоличествоУпаковок = Строка.Количество;
    НоваяСтрока.СтавкаНДС = НовыйДокумент.Договор.СтавкаНДС;

    СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(НовыйДокумент);

    СтруктураДействий = Новый Структура;
    СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
    СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
    СтруктураДействий.Вставить("ПересчитатьСумму");
    СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
    СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
    СтруктураДействий.Вставить("ПересчитатьСуммуСверхЗаказа", Новый Структура("РеализацияПоступлениеПоЗаказу, ТребуетсяЗалогЗаТару",
    НовыйДокумент.ПоступлениеПоЗаказам, НовыйДокумент.ТребуетсяЗалогЗаТару));

    ОбработкаТабличнойЧастиСервер.ОбработатьТЧ(НовыйДокумент.Товары,СтруктураДействий,Неопределено);

    Если НЕ ЗначениеЗаполнено(НоваяСтрока.СтавкаНДС) Тогда
    НоваяСтрока.СтавкаНДС = Перечисления.СтавкиНДС.НДС20;
    КонецЕсли;

    КонецЦикла;
    НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
    ОбщегоНазначения.СообщитьПользователю("Создан новый документ " + НовыйДокумент, НовыйДокумент.Ссылка);
    КонецЕсли;
    КонецПроцедуры
```