Помогите пожалуйста,не могу разделить получение формы и и заполнение ее тч. Нужно перезаполнить значения тч формы. сейчас остается только последняя строка тч. Я понимаю почему,но не могу исправить..

```1c
    Результат = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ПараметрыФормы = Новый Структура("Ключ",ВыборкаДетальныеЗаписи.Ссылка);
    Форма = ПолучитьФорму("Документ.ПеремещениеТМЦ.Форма.ФормаДокумента",ПараметрыФормы );
    Форма.ТЧ.Очистить();
    НовСтр = Форма.ТЧ.Добавить();
    НовСтр.ВариантИсполненияГП=ВыборкаДетальныеЗаписи.ВариантИсполнения;
    НовСтр.НоменклатураГП=ВыборкаДетальныеЗаписи.Номенклатура ;
    НовСтр.ВидПотребности=Перечисления.ВидыПотребностейВТМЦ.Внешняя;
    НовСтр.ЕдИзм=ВыборкаДетальныеЗаписи.ЕдИзм;
    НовСтр.Кол=ВыборкаДетальныеЗаписи.Кол;
    НовСтр.ПодЗаказ=ВыборкаДетальныеЗаписи.ПодЗаказ;
    НовСтр.Коэффициент=ВыборкаДетальныеЗаписи.Коэффициент;
    НовСтр.ВариантИсполнения=ВыборкаДетальныеЗаписи.ВариантИсполнения;
    НовСтр.Номенклатура=ВыборкаДетальныеЗаписи.Номенклатура ; НовСтр.ЗаказНаПеремещениеТМЦ=ВыборкаДетальныеЗаписи.ЗаказНаПеремещениеТМЦ;
    НовСтр.Резервировать=Истина;
    НовСтр.ПС_ВыпускПродукции=ВыборкаДетальныеЗаписи.ПС_ВыпускПродукции;
    Форма.Записать();
    КонецЦикла;
    Сообщить(Строка(ВыборкаДетальныеЗаписи.Ссылка));
    КонецЦикла;
```
---
в вашем случае - еще раз не нужна в запросе табличная часть, получайте старые реквизиты так, они же все доступны для чтения
НовСтр.ВариантИсполненияГП=НовСтр.ВариантИсполнения;
НовСтр.НоменклатураГП=НовСтр.Номенклатура ;
НовСтр.ВидПотребности=НовСтр.ВидыПотребностейВТМЦ.Внешняя;
---
1.Если вы чистите ТЧ для каждой строки, почему они должны там накапливаться. Форма.ТЧ.Очистить();
2. Не пойму, зачем через форму строчки добавлять. Откройте документ просто без всяких форм, запишите туда чего надо.
---
1. это то я понимаю.
2. например?
---
в УФ иногда очень удобно делать через форму, потому-что, заполнив, например Номенклатура, в форме можно вызвать процедуру ПриИзмененииНоменклатура и она зама заполнит сопутствующие поля, как в интерактивном режиме а если через документ, то придется все заполнять руками
---
у меня обычные формы
---
тогда надо действительно через документ

```1c
    об = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
    об.ТЧ.Очистить();
    В Цикле
    НовСтр = об.ТЧ.Добавить();
    заполнить реквизиты НовСтр
    КонецЦикла;
    об.Записать();
```
---
Значение не является значением объектного типа (ПолучитьОбъект)
об = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();

```1c
    Результат = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();

    об = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
    об.ТЧ.Очистить();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

    НовСтр = об.ТЧ.Добавить();

    НовСтр.ВариантИсполненияГП=ВыборкаДетальныеЗаписи.ВариантИсполнения;
    НовСтр.НоменклатураГП=ВыборкаДетальныеЗаписи.Номенклатура ;
    НовСтр.ВидПотребности=Перечисления.ВидыПотребностейВТМЦ.Внешняя;
    НовСтр.ЕдИзм=ВыборкаДетальныеЗаписи.ЕдИзм;
    НовСтр.Кол=ВыборкаДетальныеЗаписи.Кол;
    НовСтр.ПодЗаказ=ВыборкаДетальныеЗаписи.ПодЗаказ;
    НовСтр.Коэффициент=ВыборкаДетальныеЗаписи.Коэффициент;
    НовСтр.ВариантИсполнения=ВыборкаДетальныеЗаписи.ВариантИсполнения;
    НовСтр.Номенклатура=ВыборкаДетальныеЗаписи.Номенклатура ;
    НовСтр.ЗаказНаПеремещениеТМЦ=ВыборкаДетальныеЗаписи.ЗаказНаПеремещениеТМЦ;
    НовСтр.Резервировать=Истина;
    НовСтр.ПС_ВыпускПродукции=ВыборкаДетальныеЗаписи.ПС_ВыпускПродукции;

    КонецЦикла;
    об.Записать();

    Сообщить(Строка(ВыборкаДетальныеЗаписи.Ссылка));
```
---
текст запроса покажите
---
```1c
    Запрос=Новый Запрос;
    Запрос.Текст=
    "ВЫБРАТЬ
    | ПеремещениеТМЦТЧ.Ссылка КАК Ссылка,
    | ПеремещениеТМЦТЧ.НомерСтроки КАК НомерСтроки,
    | ПеремещениеТМЦТЧ.Номенклатура КАК Номенклатура,
    | ПеремещениеТМЦТЧ.ВариантИсполнения КАК ВариантИсполнения,
    | ПеремещениеТМЦТЧ.Кол КАК Кол,
    | ПеремещениеТМЦТЧ.ЕдИзм КАК ЕдИзм,
    | ПеремещениеТМЦТЧ.Коэффициент КАК Коэффициент,
    | ПеремещениеТМЦТЧ.ЗаказНаПеремещениеТМЦ КАК ЗаказНаПеремещениеТМЦ,
    | ПеремещениеТМЦТЧ.Резервировать КАК Резервировать,
    | ПеремещениеТМЦТЧ.ПодЗаказ КАК ПодЗаказ,
    | ПеремещениеТМЦТЧ.ПС_ВыпускПродукции КАК ПС_ВыпускПродукции,
    | ПеремещениеТМЦТЧ.ВидПотребности КАК ВидПотребности,
    | ПеремещениеТМЦТЧ.НоменклатураГП КАК НоменклатураГП,
    | ПеремещениеТМЦТЧ.ВариантИсполненияГП КАК ВариантИсполненияГП
    |ИЗ
    | Документ.ПеремещениеТМЦ.ТЧ КАК ПеремещениеТМЦТЧ
    |ГДЕ
    | ПеремещениеТМЦТЧ.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон";

    Запрос.УстановитьПараметр("ДатаНач",ДатаНач);
    Запрос.УстановитьПараметр("ДатаКон",ДатаКон);
```
---
нифига не понятно, вы пытаетесь перезаполнить ТЧ ссылки данными из этой-же ссылки...
---
добавились новые реквизиты тч,которые не заполнены
---
т.е. в документах которые вы получаете по дате эти новые реквизиты еще не заполнены, но есть старые заполненные, которые надо сохранить?
---
да,вот я их и заполняю
НовСтр.ВариантИсполненияГП=ВыборкаДетальныеЗаписи.ВариантИсполнения;
НовСтр.НоменклатураГП=ВыборкаДетальныеЗаписи.Номенклатура ;
НовСтр.ВидПотребности=Перечисления.ВидыПотребностейВТМЦ.Внешняя;
---
тогда в запросе надо получать только ссылку на документ, остальное не надо.

```1c
    Запрос=Новый Запрос;
    Запрос.Текст=
    "ВЫБРАТЬ
    | ПеремещениеТМЦ.Ссылка КАК Ссылка
    |ИЗ
    | Документ.ПеремещениеТМЦ КАК ПеремещениеТМЦ
    |ГДЕ
    | ПеремещениеТМЦ.Дата МЕЖДУ &ДатаНач И &ДатаКон";

    Запрос.УстановитьПараметр("ДатаНач",ДатаНач);
    Запрос.УстановитьПараметр("ДатаКон",ДатаКон);

    далее
    ////////////////////////////////////////////////////////////­­//////////
    Результат = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

    об = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();

    Для каждой НовСтр из об.ТЧ цикл

    НовСтр.новыйРеквизит1 = ЗначениеНовогоРеквизита1; //у вас не понятно, чем будет заполняться, но думаю вы понимаете пример
    НовСтр.новыйРеквизит2 = ЗначениеНовогоРеквизита2;
    ... //и так все новые, старые реквизиты трогать не надо
    КонецЦикла;

    Сообщить(Строка(ВыборкаДетальныеЗаписи.Ссылка));
    об.Записать();
    КонецЦикла;
```
---
так хорошо,но мне нужно получить значение из тч,чтобы заполнить значение НоменклатураГП

```1c
    НовСтр.ВариантИсполненияГП=ВыборкаДетальныеЗаписи.ВариантИсполнения;
    НовСтр.НоменклатураГП=ВыборкаДетальныеЗаписи.Номенклатура ;
    НовСтр.ВидПотребности=Перечисления.ВидыПотребностейВТМЦ.Внешняя;
```
---
```1c
    Запрос=Новый Запрос;
    Запрос.Текст=
    "ВЫБРАТЬ
    | ПеремещениеТМЦ.Ссылка КАК Ссылка,
    | ПеремещениеТМЦТЧ.Номенклатура КАК Номенклатура,
    | ПеремещениеТМЦТЧ.ВариантИсполнения КАК ВариантИсполнения
    |ИЗ
    | Документ.ПеремещениеТМЦ КАК ПеремещениеТМЦ
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТМЦ.ТЧ КАК ПеремещениеТМЦТЧ
    | ПО ПеремещениеТМЦ.Ссылка = ПеремещениеТМЦТЧ.Ссылка
    |ГДЕ
    | ПеремещениеТМЦ.Дата МЕЖДУ &ДатаНач И &ДатаКон";

    Запрос.УстановитьПараметр("ДатаНач",ДатаНач);
    Запрос.УстановитьПараметр("ДатаКон",ДатаКон);

    Результат = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

    об = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();

    Для каждого НовСтр из об.ТЧ цикл

    НовСтр.ВариантИсполненияГП=ВыборкаДетальныеЗаписи.ВариантИсполнения;
    НовСтр.НоменклатураГП=ВыборкаДетальныеЗаписи.Номенклатура ;
    НовСтр.ВидПотребности=Перечисления.ВидыПотребностейВТМЦ.Внешняя;

    КонецЦикла;

    Сообщить(Строка(ВыборкаДетальныеЗаписи.Ссылка));
    об.Записать();
    КонецЦикла;
```

Вот так получилось,спасибо)
---
в вашем случае - еще раз не нужна в запросе табличная часть, получайте старые реквизиты так, они же все доступны для чтения
НовСтр.ВариантИсполненияГП=НовСтр.ВариантИсполнения;
НовСтр.НоменклатураГП=НовСтр.Номенклатура ;
НовСтр.ВидПотребности=НовСтр.ВидыПотребностейВТМЦ.Внешняя;
---
получилось не правильно!!! вы получаете количество ссылок по количеству строк таблицы, правильно как в (20) и чтобы в запросе ничего кроме ссылки не выбиралось, иначе, если у вас в документе 20 строк, то вы 20 раз перезаполняете документ
---
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
перед ПолучитьОбъект()

```1c
    //////////////////////////////////////////////////////////////////////
    Результат = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

    об = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
    об.ТЧ.Очистить();

    Для каждой новойстроки из НовыеСтроки цикл
    НовСтр = об.ТЧ.Добавить();

    НовСтр.ВариантИсполненияГП=ВыборкаДетальныеЗаписи.ВариантИсполнения;
    НовСтр.НоменклатураГП=ВыборкаДетальныеЗаписи.Номенклатура ;
    НовСтр.ВидПотребности=Перечисления.ВидыПотребностейВТМЦ.Внешняя;
    НовСтр.ЕдИзм=ВыборкаДетальныеЗаписи.ЕдИзм;
    НовСтр.Кол=ВыборкаДетальныеЗаписи.Кол;
    НовСтр.ПодЗаказ=ВыборкаДетальныеЗаписи.ПодЗаказ;
    НовСтр.Коэффициент=ВыборкаДетальныеЗаписи.Коэффициент;
    НовСтр.ВариантИсполнения=ВыборкаДетальныеЗаписи.ВариантИсполнения;
    НовСтр.Номенклатура=ВыборкаДетальныеЗаписи.Номенклатура ;
    НовСтр.ЗаказНаПеремещениеТМЦ=ВыборкаДетальныеЗаписи.ЗаказНаПеремещениеТМЦ;
    НовСтр.Резервировать=Истина;
    НовСтр.ПС_ВыпускПродукции=ВыборкаДетальныеЗаписи.ПС_ВыпускПродукции;

    КонецЦикла;

    Сообщить(Строка(ВыборкаДетальныеЗаписи.Ссылка));
    об.Записать();
    КонецЦикла;
```
---
Переменная НовыеСтроки не определена
---
Если ТЧ это реквизит Документа выведенный на форму , а не формы, то надо так

```1c
    Форма.Объект.ТЧ.Очистить();
    в цикле
    НовСтр = Форма.Объект.ТЧ.Добавить();
    заполнить реквизиты НовСтр
    КонецЦикла;
    Форма.Записать();
```