![]() |
|
Автогруппировка строк при выводе макета | ☑ | ||
---|---|---|---|---|
0
NIGHTHUNTER
13.07.22
✎
07:11
|
Подскажите пожалуйста, как правильно сделать автогруппировку строк, в этом коде?
Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | АвансовыйОтчет.ПодотчетноеЛицо КАК ПодотчетноеЛицо, | АвансовыйОтчет.Номер КАК Номер, | АвансовыйОтчет.Дата КАК Дата, | АвансовыйОтчет.Ссылка КАК Ссылка |ИЗ | Документ.АвансовыйОтчет КАК АвансовыйОтчет |ГДЕ | АвансовыйОтчет.Дата МЕЖДУ &НачДата И &КонДата | |СГРУППИРОВАТЬ ПО | АвансовыйОтчет.ПодотчетноеЛицо, | АвансовыйОтчет.Ссылка, | АвансовыйОтчет.Номер, | АвансовыйОтчет.Дата | |УПОРЯДОЧИТЬ ПО | АвансовыйОтчет.ПодотчетноеЛицо.Наименование"; Запрос.УстановитьПараметр("НачДата", ЭтаФорма.НачДата); Запрос.УстановитьПараметр("КонДата", ЭтаФорма.КонДата); Рез = Запрос.Выполнить(); Ном = 1; Если Не Рез.Пустой() Тогда Выборка = Рез.Выбрать(); РезультатОтчета.НачатьАвтогруппировкуСтрок(); Пока Выборка.Следующий() Цикл ОбластьСтроки.Параметры.НомерПП = Ном; ОбластьСтроки.Параметры.ПодотчетноеЛицо = Выборка.ПодотчетноеЛицо; ОбластьСтроки.Параметры.Дата = Выборка.Дата; ОбластьСтроки.Параметры.Номер = Выборка.Номер; ОбластьСтроки.Параметры.Ссылка = Выборка.Ссылка; // РезультатОтчета.Вывести(ОбластьСтроки, 1, "ПодотчетноеЛицо"); Ном = Ном + 1; КонецЦикла; РезультатОтчета.ЗакончитьАвтоГруппировкуСтрок(); КонецЕсли; |
|||
1
NIGHTHUNTER
13.07.22
✎
07:21
|
Пробую так, вообще ничего не выводит. В чем ошибка?
РезультатОтчета.НачатьАвтогруппировкуСтрок(); Если Не Рез.Пустой() Тогда ВыборкаПоПодотчетномуЛицу = Рез.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ОбластьСтроки.Параметры.НомерПП = Ном; ОбластьСтроки.Параметры.ПодотчетноеЛицо = ВыборкаПоПодотчетномуЛицу.ПодотчетноеЛицо; РезультатОтчета.Вывести(ОбластьСтроки, 1, "ПодотчетноеЛицо"); ВыборкаПоАвансовымОтчетам = ВыборкаПоПодотчетномуЛицу.Выбрать(); Пока ВыборкаПоАвансовымОтчетам.Следующий() Цикл ОбластьСтроки.Параметры.НомерПП = Ном; ОбластьСтроки.Параметры.ПодотчетноеЛицо = ВыборкаПоАвансовымОтчетам.ПодотчетноеЛицо; ОбластьСтроки.Параметры.Дата = ВыборкаПоАвансовымОтчетам.Дата; ОбластьСтроки.Параметры.Номер = ВыборкаПоАвансовымОтчетам.Номер; ОбластьСтроки.Параметры.Ссылка = ВыборкаПоАвансовымОтчетам.Ссылка; // РезультатОтчета.Вывести(ОбластьСтроки, 2, "АвансовыйОтчет"); Ном = Ном + 1; КонецЦикла; РезультатОтчета.ЗакончитьАвтоГруппировкуСтрок(); КонецЕсли; |
|||
2
Гипервизор
13.07.22
✎
07:36
|
А чего вы ожидаете и как должен выглядеть результат?
|
|||
3
NIGHTHUNTER
13.07.22
✎
07:46
|
1 ФИО1
1 АвансовыйОтчет 2 АвансовыйОтчет 3 АвансовыйОтчет 2 ФИО2 1 АвансовыйОтчет 3 ФИО3 1 АвансовыйОтчет 2 АвансовыйОтчет 4 ФИО4 делаю что то подобное, пока что то с выборкой не пойму ((( |
|||
4
NIGHTHUNTER
13.07.22
✎
08:25
|
Почему у меня не срабатывает этот цикл ВыборкаПоАвансовымОтчетам ?
РезультатОтчета.НачатьАвтогруппировкуСтрок(); Если Не Рез.Пустой() Тогда ВыборкаПоПодотчетномуЛицу = Рез.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоПодотчетномуЛицу.Следующий() Цикл ОбластьСтроки.Параметры.НомерПП = Ном; ОбластьСтроки.Параметры.ПодотчетноеЛицо = ВыборкаПоПодотчетномуЛицу.ПодотчетноеЛицо; РезультатОтчета.Вывести(ОбластьСтроки, 1, "ПодотчетноеЛицо"); ВыборкаПоАвансовымОтчетам = ВыборкаПоПодотчетномуЛицу.Выбрать(); Пока ВыборкаПоАвансовымОтчетам.Следующий() Цикл ОбластьСтроки.Параметры.НомерПП = Ном; ОбластьСтроки.Параметры.ПодотчетноеЛицо = ВыборкаПоАвансовымОтчетам.ПодотчетноеЛицо; ОбластьСтроки.Параметры.Дата = ВыборкаПоАвансовымОтчетам.Дата; ОбластьСтроки.Параметры.Номер = ВыборкаПоАвансовымОтчетам.Номер; ОбластьСтроки.Параметры.Ссылка = ВыборкаПоАвансовымОтчетам.Ссылка; // РезультатОтчета.Вывести(ОбластьСтроки, 2, "АвансовыйОтчет"); Ном = Ном + 1; КонецЦикла; КонецЦикла; |
|||
5
Гипервизор
13.07.22
✎
08:34
|
(4) ОбходРезультатаЗапроса.ПоГруппировкам - это не те группировки, которые "СГРУППИРОВАТЬ ПО", а которые групповые итоги "ИТОГИ ПО".
|
|||
6
NIGHTHUNTER
13.07.22
✎
08:43
|
(5) Да, спасибо, я уже увиде, что не так понимаю. Обход по группировкам это ИТОГИ ПО ..
Вот вроде как то что я хотел, - Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | АвансовыйОтчет.ПодотчетноеЛицо КАК ПодотчетноеЛицо, | АвансовыйОтчет.Номер КАК Номер, | АвансовыйОтчет.Дата КАК Дата, | АвансовыйОтчет.Ссылка КАК Ссылка |ИЗ | Документ.АвансовыйОтчет КАК АвансовыйОтчет |ГДЕ | АвансовыйОтчет.Дата МЕЖДУ &НачДата И &КонДата | |СГРУППИРОВАТЬ ПО | АвансовыйОтчет.ПодотчетноеЛицо, | АвансовыйОтчет.Ссылка, | АвансовыйОтчет.Номер, | АвансовыйОтчет.Дата | |УПОРЯДОЧИТЬ ПО | АвансовыйОтчет.ПодотчетноеЛицо.Наименование |ИТОГИ ПО | ПодотчетноеЛицо, | Ссылка"; Запрос.УстановитьПараметр("НачДата", ЭтаФорма.НачДата); Запрос.УстановитьПараметр("КонДата", ЭтаФорма.КонДата); Рез = Запрос.Выполнить(); Ном = 1; РезультатОтчета.НачатьАвтогруппировкуСтрок(); Если Не Рез.Пустой() Тогда ВыборкаПоПодотчетномуЛицу = Рез.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ПодотчетноеЛицо"); Пока ВыборкаПоПодотчетномуЛицу.Следующий() Цикл ОбластьСтроки.Параметры.НомерПП = Ном; ОбластьСтроки.Параметры.ПодотчетноеЛицо = ВыборкаПоПодотчетномуЛицу.ПодотчетноеЛицо; РезультатОтчета.Вывести(ОбластьСтроки, 1, "ПодотчетноеЛицо"); ВыборкаПоАвансовымОтчетам = ВыборкаПоПодотчетномуЛицу.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Ссылка"); НомГр = 1; Пока ВыборкаПоАвансовымОтчетам.Следующий() Цикл ОбластьСтроки.Параметры.НомерПП = НомГр; ОбластьСтроки.Параметры.ПодотчетноеЛицо = ВыборкаПоАвансовымОтчетам.ПодотчетноеЛицо; ОбластьСтроки.Параметры.Дата = ВыборкаПоАвансовымОтчетам.Дата; ОбластьСтроки.Параметры.Номер = ВыборкаПоАвансовымОтчетам.Номер; ОбластьСтроки.Параметры.Ссылка = ВыборкаПоАвансовымОтчетам.Ссылка; // РезультатОтчета.Вывести(ОбластьСтроки, 2, "АвансовыйОтчет"); НомГр = НомГр + 1; КонецЦикла; Ном = Ном + 1; КонецЦикла; РезультатОтчета.ЗакончитьАвтоГруппировкуСтрок(); КонецЕсли; |
|||
7
NIGHTHUNTER
13.07.22
✎
08:50
|
(6) Почему, выборки на СКД и самостоятельный вывод в макет, имеют разные данные ?
|
|||
8
NIGHTHUNTER
13.07.22
✎
08:56
|
(7) Это кажется устранил. В своей выборке сам, же задал НачДата "20220121", а нужно "20220101", исправил, те же данные вышли.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |