L
lira89
Есть оборотный регистр с измерением Назначение и ресурсом Сумма. Надо вытащить из него данные включая информацию о документе, который сделал движение по данному регистру. Документ имеет табличную часть. Получив данные из регистра, надо обратиться к этому документу и если его табл. часть не пуста, то пройти по строкам и записать данные.
Проблема в том, что я точно знаю что у меня в документе есть 1 строка, а когда я делаю цикл по строкам Пока Запрос1.Док.ПолучитьСтроку()=1 Цикл то у меня зацикливается на этой строке т.е бесконечно показывает что строка есть и не переходит на следующий док-т. Метод КоличествоСтрок показывает наличие одной строки. В чем может быть проблема??? Код приведен ниже, 1С77.
Проблема в том, что я точно знаю что у меня в документе есть 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.ВыбратьСтроку();
КонецЕсли;