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

1. user1008893 10.04.20 12:25 Сейчас в теме
Помогите пожалуйста,не могу разделить получение формы и и заполнение ее тч. Нужно перезаполнить значения тч формы. сейчас остается только последняя строка тч. Я понимаю почему,но не могу исправить..
Результат = Запрос.Выполнить();
     ВыборкаДетальныеЗаписи = Результат.Выбрать();  
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		 ПараметрыФормы = Новый Структура("Ключ",ВыборкаДетальныеЗаписи.Ссылка);
		Форма = ПолучитьФорму("Документ.ПеремещениеТМЦ.Форма.ФормаДокумента",ПараметрыФормы );
		 Форма.ТЧ.Очистить();
		 НовСтр = Форма.ТЧ.Добавить();
		 НовСтр.ВариантИсполненияГП=ВыборкаДетальныеЗаписи.ВариантИсполнения;
		 НовСтр.НоменклатураГП=ВыборкаДетальныеЗаписи.Номенклатура ;
		 НовСтр.ВидПотребности=Перечисления.ВидыПотребностейВТМЦ.Внешняя;
		 НовСтр.ЕдИзм=ВыборкаДетальныеЗаписи.ЕдИзм;
		 НовСтр.Кол=ВыборкаДетальныеЗаписи.Кол;
		  НовСтр.ПодЗаказ=ВыборкаДетальныеЗаписи.ПодЗаказ;
		 НовСтр.Коэффициент=ВыборкаДетальныеЗаписи.Коэффициент;
		 НовСтр.ВариантИсполнения=ВыборкаДетальныеЗаписи.ВариантИсполнения;
		 НовСтр.Номенклатура=ВыборкаДетальныеЗаписи.Номенклатура ; НовСтр.ЗаказНаПеремещениеТМЦ=ВыборкаДетальныеЗаписи.ЗаказНаПеремещениеТМЦ;
		 НовСтр.Резервировать=Истина;
		 НовСтр.ПС_ВыпускПродукции=ВыборкаДетальныеЗаписи.ПС_ВыпускПродукции;
		 Форма.Записать();
		 КонецЦикла;
		 Сообщить(Строка(ВыборкаДетальныеЗаписи.Ссылка)); 
    КонецЦикла;
Показать
+
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
20. karamazoff 96 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 96 10.04.20 12:40 Сейчас в теме
(2)в УФ иногда очень удобно делать через форму, потому-что, заполнив, например Номенклатура, в форме можно вызвать процедуру ПриИзмененииНоменклатура и она зама заполнит сопутствующие поля, как в интерактивном режиме а если через документ, то придется все заполнять руками
+
6. user1008893 10.04.20 12:40 Сейчас в теме
(5)у меня обычные формы
+
7. karamazoff 96 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 96 10.04.20 13:08 Сейчас в теме
(10)нифига не понятно, вы пытаетесь перезаполнить ТЧ ссылки данными из этой-же ссылки...
+
14. user1008893 10.04.20 13:10 Сейчас в теме
(12)добавились новые реквизиты тч,которые не заполнены
+
15. karamazoff 96 10.04.20 13:25 Сейчас в теме
(14)т.е. в документах которые вы получаете по дате эти новые реквизиты еще не заполнены, но есть старые заполненные, которые надо сохранить?
+
16. user1008893 10.04.20 13:32 Сейчас в теме
(15)да,вот я их и заполняю
НовСтр.ВариантИсполненияГП=ВыборкаДетальныеЗаписи.ВариантИсполнения;
НовСтр.НоменклатураГП=ВыборкаДетальныеЗаписи.Номенклатура ;
НовСтр.ВидПотребности=Перечисления.ВидыПотребностейВТМЦ.Внешняя;
+
17. karamazoff 96 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 96 10.04.20 14:05 Сейчас в теме +0.5 $m
(19)в вашем случае - еще раз не нужна в запросе табличная часть, получайте старые реквизиты так, они же все доступны для чтения
НовСтр.ВариантИсполненияГП=НовСтр.ВариантИсполнения;
НовСтр.НоменклатураГП=НовСтр.Номенклатура ;
НовСтр.ВидПотребности=НовСтр.ВидыПотребностейВТМЦ.Внешняя;
user1008893; +1
21. karamazoff 96 10.04.20 14:33 Сейчас в теме
(19)получилось не правильно!!! вы получаете количество ссылок по количеству строк таблицы, правильно как в (20) и чтобы в запросе ничего кроме ссылки не выбиралось, иначе, если у вас в документе 20 строк, то вы 20 раз перезаполняете документ
user1008893; +1
11. karamazoff 96 10.04.20 13:05 Сейчас в теме
(8)Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
перед ПолучитьОбъект()
//////////////////////////////////////////////////////////////////////
 Результат = Запрос.Выполнить();
     ВыборкаДетальныеЗаписи = Результат.Выбрать(); 
     Пока ВыборкаДетальныеЗаписи.Следующий() Цикл


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


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

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

          КонецЦикла; 

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

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот