Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Вывод данных перед циклом  (Прочитано 7000 раз)
0 Пользователей и 1 Гость смотрят эту тему.
jonik_joker
Участник

ru
Offline Offline

« : 10-10-2013 08:28 » 

Всем привет. Ситуация следующая : создаю Отчет, в ФормеОтчета есть Запрос. По результату запроса делаю выборку

Код:
ВыборкаПоЗаявке=РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоЗаявке.Следующий() Цикл
 
ОбластьШапкаЗаявки.Параметры.Заявка=ВыборкаПоЗаявке.Заявка;
    ДокументДанных.Вывести(ОбластьШапкаЗаявки);
 
ВыборкаПоИнвойсу=ВыборкаПоЗаявке.Выбрать();
        Пока ВыборкаПоИнвойсу.Следующий() Цикл
ОбластьСтрока.Параметры.НомерЗаявка=ВыборкаПоИнвойсу.НомерЗаявка;

ОбластьШапкаОплаты.Параметры.ВариантОплаты=ВыборкаПоИнвойсу.ВариантОплаты;

ДокументДанных.Вывести(ОбластьСтрока);

Данные по ВариантОплаты я получаю только во вложенном цикле,а их вывод
(ОбластьШапкаОплаты) хотелось бы сделать перед этим циклом. Надеюсь понятно изложил. Такое возможно?

Добавлено через 2 минуты и 38 секунд:
Советовали сделать еще одну группировку в запросе. Сделал так

Код:
ВыборкаПоВариантОплаты=ВыборкаПоИнвойсу.Выбрать();
                     
                     Пока ВыборкаПоВариантОплаты.Следующий() Цикл
                         ОбластьШапкаОплаты.Параметры.ВариантОплаты=ВыборкаПоИнвойсу.ВариантОплаты;
                           ДокументДанных.Вывести(ОбластьШапкаОплаты);   
                    КонецЦикла;

результат-в цикл вообще не попадает,т.к. ВариантОплаты строка и перебирать нечего.
« Последнее редактирование: 10-10-2013 08:31 от jonik_joker » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 10-10-2013 10:39 » 

Текст запроса покажи
Записан
jonik_joker
Участник

ru
Offline Offline

« Ответ #2 : 10-10-2013 10:48 » 

сорри , строчку не дописал

Код:
ВыборкаПоИнвойсу=ВыборкаПоЗаявке.Выбрать();

Пока ВыборкаПоИнвойсу.Следующий() Цикл
       
     ВыборкаПоВариантОплаты=ВыборкаПоИнвойсу.Выбрать();
  Пока ВыборкаПоВариантОплаты.Следующий() Цикл
                         ОбластьШапкаОплаты.Параметры.ВариантОплаты=ВыборкаПоВариантОплаты.ВариантОплаты;
                           ДокументДанных.Вывести(ОбластьШапкаОплаты);   
                    КонецЦикла;

Добавлено через 31 секунду:
запрос

Код:
Запрос.Текст="ВЫБРАТЬ
             | ОборотыДенежныхСредствОстаткиИОбороты.СуммаПриход КАК СуммаИнвойс,
             | ОборотыДенежныхСредствОстаткиИОбороты.Инвойс,
             | ЗаявкаНаПоставкуУсловиеОплаты.Ссылка КАК Заявка,
             | ОборотыДенежныхСредствОстаткиИОбороты.Инвойс.Номер КАК НомерИнвойс,
             | ОборотыДенежныхСредствОстаткиИОбороты.Инвойс.Дата КАК ДатаИнвойс,
             | ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ВнутреннийНомер КАК НомерЗаказ,
             | ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ВнутреннийНомерЗаказаНаПроизводство КАК НомерЗаявка,
             | ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Дата КАК ДатаЗаявка,
             | ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.СоставИтогСтоимость КАК СуммаЗаявка,
             | ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Клиент,
             | ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Грузополучатель,
             | ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Валюта,
             | ЗаявкаНаПоставкуУсловиеОплаты.ВариантОплаты КАК ВариантОплаты,
             | ЗаявкаНаПоставкуУсловиеОплаты.Процент,
             | ЗаявкаНаПоставкуУсловиеОплаты.СДаты,
             | ЗаявкаНаПоставкуУсловиеОплаты.ВТечение
             |ИЗ
             | Документ.ЗаявкаНаПоставку.УсловиеОплаты КАК ЗаявкаНаПоставкуУсловиеОплаты
             | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОборотыДенежныхСредств.ОстаткиИОбороты КАК ОборотыДенежныхСредствОстаткиИОбороты
             | ПО ЗаявкаНаПоставкуУсловиеОплаты.Ссылка = ОборотыДенежныхСредствОстаткиИОбороты.Заявка
             |ГДЕ
             | ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Клиент = &Клиент
             | И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Грузополучатель = &Грузополучатель
             | И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
             |ИТОГИ ПО
             | Заявка,
             | ВариантОплаты";
« Последнее редактирование: 10-10-2013 10:48 от jonik_joker » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 10-10-2013 12:44 » 

Во-первых, ты открываешь 3 выборки, а итогов в запросе - 2
Во-вторых в последнем варианте ты не используешь параметр метода Выбрать() - а значит выборка идет без группировок
В-третьих учись пользоваться отладчиком: стань в начале цикла и пройдись построчно. Посмотри, сколько раз проходишь цикл, какие данные в каждой выборке
Записан
jonik_joker
Участник

ru
Offline Offline

« Ответ #4 : 11-10-2013 06:57 » 

Kivals,
1) https://forum.shelek.ru/index.php/topic,29575.0.html, почему тогда здесь 2 выборки,итогов-1,но все корректно работает?
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 11-10-2013 11:10 » new

Когда выборок меньше, чем итогов - то последняя выборка (без параметров) отбирает все детальные записи.
Обратное (выборок больше, чем итогов) недопустимо - данные выбираться не будут
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines