Заполнение табличной части после выполненного запроса

1. user1656634 23.03.23 14:50 Сейчас в теме
Добрый день!
Столкнулся с маленькой задачей, не могу заполнить табличную часть акта сверки по данным организации значением из запроса.
Процедура ЗаполнитьПоДаннымУправленческогоУчета(ФильтрСписокСчетов = неопределено) Экспорт
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Организация",        ОбъектЭ.Организация);
	Запрос.УстановитьПараметр("Контрагент",         ОбъектЭ.Контрагент);
				
	ТекстФильтра = "
	|		Организация = &Организация И Контрагент = &Контрагент ";
		
	Запрос.Текст = 
	"ВЫБРАТЬ 
	|	ДоговорКонтрагента               КАК ДоговорКонтрагента
	|ИЗ 
	|	РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(,, , ,"	+ ТекстФильтра + ")";
	
	
	Результат = Запрос.Выполнить();
	Если Результат.Пустой() Тогда
	
		Сообщить("Ничего не найдено");
	Иначе
	
		Выборка = Результат.Выбрать();
		
		
		Пока Выборка.СледующийПоЗначениюПоля("ДоговорКонтрагента") Цикл 
			Запрос = Новый Запрос;
			Запрос.УстановитьПараметр("ДатаНачала",         ОбъектЭ.ДатаНачала);
			Запрос.УстановитьПараметр("ДатаОкончания",      КонецДня(ОбъектЭ.ДатаОкончания));
			Запрос.УстановитьПараметр("Организация",        ОбъектЭ.Организация);
			Запрос.УстановитьПараметр("Контрагент",         ОбъектЭ.Контрагент);
			Запрос.УстановитьПараметр("ДоговорКонтрагента", Выборка.ДоговорКонтрагента);
			
		
	ТекстФильтра = "
	|		Организация = &Организация И Контрагент = &Контрагент ";
	ТекстФильтра = ТекстФильтра + " И ДоговорКонтрагента В (&ДоговорКонтрагента) ";
	
	
	Запрос.Текст = 
	"ВЫБРАТЬ 
	|	ЕСТЬNULL(Взаиморасчеты.СуммаВзаиморасчетовНачальныйОстаток, 0) КАК ОстатокНаНачалоПоДоговору,
	|   ДоговорКонтрагента                                             КАК ДоговорКонтрагента
	|ИЗ 
	|	РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, , ,"	+ ТекстФильтра + ") КАК Взаиморасчеты";
	
	Результат = Запрос.Выполнить();
	
	РезультатЗапроса = Результат.Выбрать();
	РезультатЗапроса.Следующий();
	
		
	ТЗ = Новый ТаблицаЗначений;
	ТЗ.Колонки.Добавить("ДоговорКонтрагента");
	НоваяСтрока = ТЗ.Добавить();

	
	НоваяСтрока.ДоговорКонтрагента = РезультатЗапроса.ДоговорКонтрагента;
						
	тз.ЗаполнитьЗначения(РезультатЗапроса.ДоговорКонтрагента, "ДоговорКонтрагента");
	
					 
	КонецЦикла;
	ТаблицаЗначений = ТЗ.Выгрузить();
	    ПоДаннымОрганизации.Загрузить(ТаблицаЗначений);
		
	
	КонецЕсли;
КонецПроцедуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. anton13m 3 23.03.23 15:13 Сейчас в теме
(1)
У вас в цикле ТЗ каждый раз заново создается, если договоров несколько, то в результат попадет только последний.
А так вообще не понятно для чего вы первым запросом получаете сначала договора, потом остатки по нему, еще с таблицами значений что-то делаете, хотя можно сделать проще и понятнее.
	ПоДаннымОрганизации.Очистить();
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("ДатаНачала",         ОбъектЭ.ДатаНачала);
	Запрос.УстановитьПараметр("ДатаОкончания",      КонецДня(ОбъектЭ.ДатаОкончания));
	Запрос.УстановитьПараметр("Организация",        ОбъектЭ.Организация);
	Запрос.УстановитьПараметр("Контрагент",         ОбъектЭ.Контрагент);
	
	ТекстФильтра = "
	|        Организация = &Организация И Контрагент = &Контрагент ";	
	
	Запрос.Текст = 
	"ВЫБРАТЬ 
	|   ЕСТЬNULL(Взаиморасчеты.СуммаВзаиморасчетовНачальныйОстаток, 0) КАК ОстатокНаНачалоПоДоговору,
	|   ДоговорКонтрагента                                             КАК ДоговорКонтрагента
	|ИЗ 
	|    РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, , ,"    + ТекстФильтра + ") КАК Взаиморасчеты";
		
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		ЗаполнитьЗначенияСвойств(ПоДаннымОрганизации.Добавить(), Выборка);	
	КонецЦикла;
Показать
8. user1656634 23.03.23 15:23 Сейчас в теме
(5)Да, попробовал, запрос упростился, результат запроса тоже есть а табличная часть все равно не заполнилась.
9. user1656634 23.03.23 15:31 Сейчас в теме
(5)
ПоДаннымОрганизации.Очистить();
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("ДатаНачала",         ОбъектЭ.ДатаНачала);
	Запрос.УстановитьПараметр("ДатаОкончания",      КонецДня(ОбъектЭ.ДатаОкончания));
	Запрос.УстановитьПараметр("Организация",        ОбъектЭ.Организация);
	Запрос.УстановитьПараметр("Контрагент",         ОбъектЭ.Контрагент);
	
	ТекстФильтра = "
	|        Организация = &Организация И Контрагент = &Контрагент ";	
	
	Запрос.Текст = 
	"ВЫБРАТЬ 
	|   ЕСТЬNULL(Взаиморасчеты.СуммаВзаиморасчетовНачальныйОстаток, 0) КАК ОстатокНаНачалоПоДоговору,
	|   ДоговорКонтрагента                                             КАК ДоговорКонтрагента
	|ИЗ 
	|    РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, , ,"    + ТекстФильтра + ") КАК Взаиморасчеты";
		
	Выборка = Запрос.Выполнить();
	ТаблицаЗначений = Выборка.Выгрузить();	
	ПоДаннымОрганизации.Загрузить (ТаблицаЗначений);
Показать


Спасибо! Заработало, немного выгрузку изменил.
2. user1656634 23.03.23 14:52 Сейчас в теме
Использую внешнюю обработку с заполнением табличных частей
3. Vitaly1C8 23.03.23 15:11 Сейчас в теме
// заполняем значения очередной строки табличной части
ЗаполнитьЗначенияСвойств(СтрокаСоставаРасходнойНакладной, Выборка);
4. пользователь 23.03.23 15:11
Сообщение было скрыто модератором.
...
6. user1656634 23.03.23 15:16 Сейчас в теме
(4) Делаю запрос, получаю необходимый результат запроса. Все проверил выборка работает корректно, как нужно. мне нужно записать его в табличную часть . Методы выгрузить () и загрузить () не заполняют табличную часть. Вот в это и проблема.
7. пользователь 23.03.23 15:22
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

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