Перезаполнение ТЧ документа

1. user1008893 10.04.20 12:25 Сейчас в теме
Помогите пожалуйста,не могу разделить получение формы и и заполнение ее тч. Нужно перезаполнить значения тч формы. сейчас остается только последняя строка тч. Я понимаю почему,но не могу исправить..
Результат = Запрос.Выполнить();
     ВыборкаДетальныеЗаписи = Результат.Выбрать();  
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		 ПараметрыФормы = Новый Структура("Ключ",ВыборкаДетальныеЗаписи.Ссылка);
		Форма = ПолучитьФорму("Документ.ПеремещениеТМЦ.Форма.ФормаДокумента",ПараметрыФормы );
		 Форма.ТЧ.Очистить();
		 НовСтр = Форма.ТЧ.Добавить();
		 НовСтр.ВариантИсполненияГП=ВыборкаДетальныеЗаписи.ВариантИсполнения;
		 НовСтр.НоменклатураГП=ВыборкаДетальныеЗаписи.Номенклатура ;
		 НовСтр.ВидПотребности=Перечисления.ВидыПотребностейВТМЦ.Внешняя;
		 НовСтр.ЕдИзм=ВыборкаДетальныеЗаписи.ЕдИзм;
		 НовСтр.Кол=ВыборкаДетальныеЗаписи.Кол;
		  НовСтр.ПодЗаказ=ВыборкаДетальныеЗаписи.ПодЗаказ;
		 НовСтр.Коэффициент=ВыборкаДетальныеЗаписи.Коэффициент;
		 НовСтр.ВариантИсполнения=ВыборкаДетальныеЗаписи.ВариантИсполнения;
		 НовСтр.Номенклатура=ВыборкаДетальныеЗаписи.Номенклатура ; НовСтр.ЗаказНаПеремещениеТМЦ=ВыборкаДетальныеЗаписи.ЗаказНаПеремещениеТМЦ;
		 НовСтр.Резервировать=Истина;
		 НовСтр.ПС_ВыпускПродукции=ВыборкаДетальныеЗаписи.ПС_ВыпускПродукции;
		 Форма.Записать();
		 КонецЦикла;
		 Сообщить(Строка(ВыборкаДетальныеЗаписи.Ссылка)); 
    КонецЦикла;
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
20. karamazoff 95 10.04.20 14:05 Сейчас в теме +0.5 $m
(19)в вашем случае - еще раз не нужна в запросе табличная часть, получайте старые реквизиты так, они же все доступны для чтения
НовСтр.ВариантИсполненияГП=НовСтр.ВариантИсполнения;
НовСтр.НоменклатураГП=НовСтр.Номенклатура ;
НовСтр.ВидПотребности=НовСтр.ВидыПотребностейВТМЦ.Внешняя;
user1008893; +1 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. duhin 10.04.20 12:33 Сейчас в теме
1.Если вы чистите ТЧ для каждой строки, почему они должны там накапливаться. Форма.ТЧ.Очистить();
2. Не пойму, зачем через форму строчки добавлять. Откройте документ просто без всяких форм, запишите туда чего надо.
3. user1008893 10.04.20 12:34 Сейчас в теме
(2)1. это то я понимаю.
2. например?
5. karamazoff 95 10.04.20 12:40 Сейчас в теме
(2)в УФ иногда очень удобно делать через форму, потому-что, заполнив, например Номенклатура, в форме можно вызвать процедуру ПриИзмененииНоменклатура и она зама заполнит сопутствующие поля, как в интерактивном режиме а если через документ, то придется все заполнять руками
6. user1008893 10.04.20 12:40 Сейчас в теме
7. karamazoff 95 10.04.20 12:44 Сейчас в теме
(6)тогда надо действительно через документ

об = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
об.ТЧ.Очистить();
В Цикле
НовСтр = об.ТЧ.Добавить();
заполнить реквизиты НовСтр
КонецЦикла;
об.Записать();
alex-l19041; user1008893; +2 Ответить
8. user1008893 10.04.20 12:57 Сейчас в теме
(7)Значение не является значением объектного типа (ПолучитьОбъект)
об = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
 Результат = Запрос.Выполнить();
     ВыборкаДетальныеЗаписи = Результат.Выбрать(); 
	 

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


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

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

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

		 Сообщить(Строка(ВыборкаДетальныеЗаписи.Ссылка));
Показать
9. aka Любитель XML 10.04.20 12:58 Сейчас в теме
(8) текст запроса покажите
10. user1008893 10.04.20 12:59 Сейчас в теме
(9)
Запрос=Новый Запрос;
	  Запрос.Текст=
	"ВЫБРАТЬ
	|	ПеремещениеТМЦТЧ.Ссылка КАК Ссылка,
	|	ПеремещениеТМЦТЧ.НомерСтроки КАК НомерСтроки,
	|	ПеремещениеТМЦТЧ.Номенклатура КАК Номенклатура,
	|	ПеремещениеТМЦТЧ.ВариантИсполнения КАК ВариантИсполнения,
	|	ПеремещениеТМЦТЧ.Кол КАК Кол,
	|	ПеремещениеТМЦТЧ.ЕдИзм КАК ЕдИзм,
	|	ПеремещениеТМЦТЧ.Коэффициент КАК Коэффициент,
	|	ПеремещениеТМЦТЧ.ЗаказНаПеремещениеТМЦ КАК ЗаказНаПеремещениеТМЦ,
	|	ПеремещениеТМЦТЧ.Резервировать КАК Резервировать,
	|	ПеремещениеТМЦТЧ.ПодЗаказ КАК ПодЗаказ,
	|	ПеремещениеТМЦТЧ.ПС_ВыпускПродукции КАК ПС_ВыпускПродукции,
	|	ПеремещениеТМЦТЧ.ВидПотребности КАК ВидПотребности,
	|	ПеремещениеТМЦТЧ.НоменклатураГП КАК НоменклатураГП,
	|	ПеремещениеТМЦТЧ.ВариантИсполненияГП КАК ВариантИсполненияГП
	|ИЗ
	|	Документ.ПеремещениеТМЦ.ТЧ КАК ПеремещениеТМЦТЧ
	|ГДЕ
	|	ПеремещениеТМЦТЧ.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон";
	 
	 Запрос.УстановитьПараметр("ДатаНач",ДатаНач);
	 Запрос.УстановитьПараметр("ДатаКон",ДатаКон);
Показать
12. karamazoff 95 10.04.20 13:08 Сейчас в теме
(10)нифига не понятно, вы пытаетесь перезаполнить ТЧ ссылки данными из этой-же ссылки...
14. user1008893 10.04.20 13:10 Сейчас в теме
(12)добавились новые реквизиты тч,которые не заполнены
15. karamazoff 95 10.04.20 13:25 Сейчас в теме
(14)т.е. в документах которые вы получаете по дате эти новые реквизиты еще не заполнены, но есть старые заполненные, которые надо сохранить?
16. user1008893 10.04.20 13:32 Сейчас в теме
(15)да,вот я их и заполняю
НовСтр.ВариантИсполненияГП=ВыборкаДетальныеЗаписи.ВариантИсполнения;
НовСтр.НоменклатураГП=ВыборкаДетальныеЗаписи.Номенклатура ;
НовСтр.ВидПотребности=Перечисления.ВидыПотребностейВТМЦ.Внешняя;
17. karamazoff 95 10.04.20 13:41 Сейчас в теме
(16)тогда в запросе надо получать только ссылку на документ, остальное не надо.

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


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


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

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

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

Сообщить(Строка(ВыборкаДетальныеЗаписи.Ссылка));
об.Записать();
КонецЦикла;
Показать
user1008893; +1 Ответить
18. user1008893 10.04.20 13:50 Сейчас в теме
(17)так хорошо,но мне нужно получить значение из тч,чтобы заполнить значение НоменклатураГП
НовСтр.ВариантИсполненияГП=ВыборкаДетальныеЗаписи.ВариантИсполнения;
НовСтр.НоменклатураГП=ВыборкаДетальныеЗаписи.Номенклатура ;
НовСтр.ВидПотребности=Перечисления.ВидыПотребностейВТМЦ.Внешняя;
19. user1008893 10.04.20 13:58 Сейчас в теме
(17)
	Запрос=Новый Запрос;
Запрос.Текст=
"ВЫБРАТЬ
|	ПеремещениеТМЦ.Ссылка КАК Ссылка,
|	ПеремещениеТМЦТЧ.Номенклатура КАК Номенклатура,
|	ПеремещениеТМЦТЧ.ВариантИсполнения КАК ВариантИсполнения
|ИЗ
|	Документ.ПеремещениеТМЦ КАК ПеремещениеТМЦ
|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТМЦ.ТЧ КАК ПеремещениеТМЦТЧ
|		ПО ПеремещениеТМЦ.Ссылка = ПеремещениеТМЦТЧ.Ссылка
|ГДЕ
|	ПеремещениеТМЦ.Дата МЕЖДУ &ДатаНач И &ДатаКон";

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


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


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

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

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

КонецЦикла;

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


Вот так получилось,спасибо)
20. karamazoff 95 10.04.20 14:05 Сейчас в теме +0.5 $m
(19)в вашем случае - еще раз не нужна в запросе табличная часть, получайте старые реквизиты так, они же все доступны для чтения
НовСтр.ВариантИсполненияГП=НовСтр.ВариантИсполнения;
НовСтр.НоменклатураГП=НовСтр.Номенклатура ;
НовСтр.ВидПотребности=НовСтр.ВидыПотребностейВТМЦ.Внешняя;
user1008893; +1 Ответить
21. karamazoff 95 10.04.20 14:33 Сейчас в теме
(19)получилось не правильно!!! вы получаете количество ссылок по количеству строк таблицы, правильно как в (20) и чтобы в запросе ничего кроме ссылки не выбиралось, иначе, если у вас в документе 20 строк, то вы 20 раз перезаполняете документ
user1008893; +1 Ответить
11. karamazoff 95 10.04.20 13:05 Сейчас в теме
(8)Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
перед ПолучитьОбъект()
//////////////////////////////////////////////////////////////////////
 Результат = Запрос.Выполнить();
     ВыборкаДетальныеЗаписи = Результат.Выбрать(); 
     Пока ВыборкаДетальныеЗаписи.Следующий() Цикл


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


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

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

          КонецЦикла; 

        Сообщить(Строка(ВыборкаДетальныеЗаписи.Ссылка));
         об.Записать();
            КонецЦикла;
Показать
user1008893; +1 Ответить
13. user1008893 10.04.20 13:09 Сейчас в теме
(11) Переменная НовыеСтроки не определена
4. karamazoff 95 10.04.20 12:37 Сейчас в теме
Если ТЧ это реквизит Документа выведенный на форму , а не формы, то надо так

Форма.Объект.ТЧ.Очистить();
в цикле
НовСтр = Форма.Объект.ТЧ.Добавить();
заполнить реквизиты НовСтр
КонецЦикла;
Форма.Записать();
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)