Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   v8. запутался под вечер в запросе (обход по группировкам) (http://forums.kuban.ru/f1040/v8_zaputalsya_pod_vecher_v_zaprose_obhod_po_gruppirovkam-3599271.html)

Uho 24.01.2013 16:16

v8. запутался под вечер в запросе (обход по группировкам)
 
упрощенный текст запроса:

ВЫБРАТЬ
РеализацияУслуг.Контрагент,
ПараметрыФормированияДокументов.Периодичность,
РеализацияУслуг.Ссылка
ИЗ
Документ.РеализацияУслуг КАК РеализацияУслуг
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПараметрыФормированияДокументов КАК ПараметрыФормированияДокументов
ПО РеализацияУслуг.Контрагент = ПараметрыФормированияДокументов.Контрагент
ИТОГИ ПО
Контрагент

...

ВыборкаКонтрагентов = Запрос.Выполнить.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаКонтрагентов.Следующий() Цикл
вот тут мне надо обратиться к полю Периодичность, но его в этой группировке нет, как мне исправить текст запроса, чтобы можно было обратиться к Периодичность на одном уровне с Контрагентом?

Туплю, направьте на путь истинный, плз.

roma n 24.01.2013 16:23

Единственная возможность [b]в запросе[/b] - применить агрегатную функцию к полю

angro 24.01.2013 16:24

(1) +1

angro 24.01.2013 16:25

а зачем итоги, если нужна периодичность, сделай итоги по контрагент и периодичность

Billi 24.01.2013 16:25

ИТОГИ МИНИМУМ(Периодичность) ПО Контрагент

Uho 24.01.2013 16:30

3-angro > Там не только периодичность - нужен обход по контрагентам и внутри обход по документам, обход по документам идет по разным алгоритмам в зависимости от [b]Периодичности и других полей[/b] относящихся к контрагенту.

1-roma n > дело в том, что если в запросе все равно есть Периодичность, получать ее же вне запроса как-то не хочется

roma n 24.01.2013 16:44

5-Uho > а что за тип в поле? Перечисление?
Можно разыменовать до порядка и дёргать при обходе значение из перечисления по индексу (но я как-то не уверен за равенство индекса и порядка... лучше уж тогда массив предварительно собрать)
Ну или (3)

roma n 24.01.2013 16:48

5-Uho > если значение Порядка гарантировано одно на контрагента
Выборка = ВыборкаКонтрагентов.Выбрать();
Выборка.Следующий()
Порядок = Выборка.Порядок;
...
Выборка.Сбросить()
Пока Выборка.Следующий()

Uho 24.01.2013 17:03

6-roma n > Периодичность - перечисление, но не только периодичность нужно получить во внешнем обходе, там и булево есть и др..

7-roma n > хм, имхо, уж лучше агрегатную функцию

roma n 24.01.2013 17:08

8-Uho > посмотри на ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений

Uho 24.01.2013 17:32

9-roma n > я как-то СКД только для отчетов пользую

Reaper 24.01.2013 20:10

10-Uho > Когда нужна группировка по 8 полям и запрос вернет 9-уровневую выборку я не задумываясь делаю схему компоновки. Пару раз напорешься и будешь лихо втыкать ее везде, где она упрощает жизнь. Я даже пару печатные формы иногда на СКД делаю, потому что быстрее накидать структуру, чем рисовать макет вручную.

Uho 01.02.2013 10:26

11-Reaper > примерчик использования СКД для "[b]неотчетов[/b]" можешь показать?


Текущее время: 11:15. Часовой пояс GMT +3.