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

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

	
	НоваяСтрока.ДоговорКонтрагента = РезультатЗапроса.ДоговорКонтрагента;
						
	тз.ЗаполнитьЗначения(РезультатЗапроса.ДоговорКонтрагента, "ДоговорКонтрагента");
	
					 
	КонецЦикла;
	ТаблицаЗначений = ТЗ.Выгрузить();
	    ПоДаннымОрганизации.Загрузить(ТаблицаЗначений);
		
	
	КонецЕсли;
КонецПроцедуры
Показать
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
5. anton13m 2 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
Сообщение было скрыто модератором.
...
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

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

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

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

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