Зацикливание табл. части док-та

lira89

Well-Known Member
12.03.2010
154
0
28
Гомель
#1
Есть оборотный регистр с измерением Назначение и ресурсом Сумма. Надо вытащить из него данные включая информацию о документе, который сделал движение по данному регистру. Документ имеет табличную часть. Получив данные из регистра, надо обратиться к этому документу и если его табл. часть не пуста, то пройти по строкам и записать данные.
Проблема в том, что я точно знаю что у меня в документе есть 1 строка, а когда я делаю цикл по строкам Пока Запрос1.Док.ПолучитьСтроку()=1 Цикл то у меня зацикливается на этой строке т.е бесконечно показывает что строка есть и не переходит на следующий док-т. Метод КоличествоСтрок показывает наличие одной строки. В чем может быть проблема??? Код приведен ниже, 1С77.

Код:
	Запрос1 = СоздатьОбъект("Запрос");
Текст1 = "//{{Запрос1()
|Период с ДатаР по ДатаК;
|Назн = Регистр.РазовыеПлатежи.Назначение;
|Сумма = Регистр.РазовыеПлатежи.Сумма;
|Док = Регистр.РазовыеПлатежи.ТекущийДокумент.ОплатаОбщаяПоНазначению.ТекущийДокумент;
|Функция СуммаПост = Сумма(Сумма);
|Группировка Назн;
|Группировка Док;
|"//
;

ТЗ111 = СоздатьОбъект("ТаблицаЗначений");
ТЗ111.НоваяКолонка("Эл","Справочник.Назначения"); 
ТЗ111.НоваяКолонка("Док","Документ.ОплатаОбщаяПоНазначению"); 
ТЗ111.НоваяКолонка("Сумма","Число",10,0,"Сумма",10); 
ТЗ111.НоваяКолонка("ФИО","Строка",80,,"ФИО",30); 	
Если Запрос1.Выполнить(Текст1) = 1 Тогда
Пока Запрос1.Группировка(1)=1 Цикл 
Пока Запрос1.Группировка(2)=1 Цикл
Если Запрос1.Док.ВыбратьСтроки()=1 тогда
Запрос1.Док.ВыбратьСтроки();
Пока Запрос1.Док.ПолучитьСтроку()=1 Цикл //здесь зацикливание, ПолучитьСтроку всегда показывает = 1
ТЗ111.НоваяСтрока(); 
ТЗ111.Эл = Запрос1.Назн;
ТЗ111.Док = Запрос1.Док;
ТЗ111.Сумма = Запрос1.СуммаПост;
Если ПустоеЗначение(Запрос1.Док.НеСтудент)=1 Тогда
ТЗ111.ФИО = СокрЛП(Запрос1.Док.Студент);
Иначе
ТЗ111.ФИО = СокрЛП(Запрос1.Док.НеСтудент);
КонецЕсли;		
КонецЦикла;
Иначе
ТЗ111.НоваяСтрока(); 
ТЗ111.Эл = Запрос1.Назн;
ТЗ111.Док = Запрос1.Док;
ТЗ111.Сумма = Запрос1.СуммаПост;
КонецЕсли;
КонецЦикла;
КонецЦикла; 
ТЗ111.ВыбратьСтроку();
КонецЕсли;
 
A

Andruha

Гость
#2
Код:
Если Запрос1.Док.ВыбратьСтроки()=1 тогда
Запрос1.Док.ВыбратьСтроки();
Пока Запрос1.Док.ПолучитьСтроку()=1 Цикл
здесь идет повтор - попробуй так:
Код:
Если Запрос1.Док.ВыбратьСтроки()=1 тогда
Пока Запрос1.Док.ПолучитьСтроку()=1 Цикл
и вообще:
Код:
_док = Запрос1.Док;
Если _док.ВыбратьСтроки()=1 тогда
Пока _док.ПолучитьСтроку()=1 Цикл