|
v8: Как получить детальные записи в запросе | ☑ | ||
|---|---|---|---|---|
|
0
rajas
12.07.11
✎
07:24
|
Здравствуйте.
Есть запрос: Код Запр = новый Запрос("ВЫБРАТЬ | ХозрасчетныйОборотыДтКт.СубконтоКт1 КАК Контрагент, | ХозрасчетныйОборотыДтКт.СубконтоДт1 КАК Номенклатура, | ХозрасчетныйОборотыДтКт.КоличествоОборотДт КАК Количество, | ХозрасчетныйОборотыДтКт.Период КАК Период |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт (&ДатаНач, &ДатаКон, МЕСЯЦ, СчетДт = &Счет41, , СчетКт =&Счет60) КАК ХозрасчетныйОборотыДтКт |ИТОГИ | СУММА(Количество) |ПО | ОБЩИЕ, | Контрагент КАК Контрагент, | Номенклатура ТОЛЬКО ИЕРАРХИЯ КАК Номенклатура"); Если обхожу группировки последовательно, тогда все в порядке, все выводится как надо: Код в1 = Запр.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); //общие итоги Пока в1.Следующий() Цикл Сообщить(в1.Количество); в2 = в1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); //итоги по контрагенту Пока в2.Следующий() Цикл Сообщить(в2.Количество); в3 = в2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);//итоги по иерархии номенклатуры Пока в3.Следующий() Цикл Сообщить(в3.Количество); в4 = в3.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);//детальные записи по номенклатуре Пока в4.Следующий() Цикл Сообщить(Строка(в4.Количество)+в4.Номенклатура); КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; НОООООО, Если я обхожу записи, начиная с группировки Контрагент: Код в2 = Запр.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Контрагент"); Пока в2.Следующий() Цикл Сообщить("в2 ном = "+в2.Номенклатура+" кво = "+в2.Количество); в3 = в2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока в3.Следующий() Цикл Сообщить(" в3 ном = "+в3.Номенклатура+" кво = "+в3.Количество); в4 = в3.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,,"все"); Пока в4.Следующий() Цикл Сообщить(" в4 ном = "+в4.Номенклатура+" кво = "+в4.Количество,СтатусСообщения.ОченьВажное); КонецЦикла; КонецЦикла; КонецЦикла; То возникают проблемы с детальными записями по номенклатуре, в место них Код Сообщить(" в4 ном = "+в4.Номенклатура+" кво = "+в4.Количество,СтатусСообщения.ОченьВажное); Выводит ближайшего родителя для детальной записи (НО ведь все «родители» номенклатуры уже выведены предыдущей группировкой). Я попробовал добавить еще одну группировку Код в5 = в4.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока в5.Следующий() Цикл Сообщить(" в5 ном = "+в5.Номенклатура+" кво = "+в5.Количество,СтатусСообщения.ОченьВажное); КонецЦикла; Тогда выводится вообще, что попало, где – то как надо детальные записи , а где-то в месте с деталями выводится опять родители (которые уже выводились). Подскажите как мне правильно добраться до детальных записей, если я начинаю обход с группировки «Контрагент»? |
|||
|
1
rajas
12.07.11
✎
08:28
|
?
|
|||
|
2
rajas
12.07.11
✎
09:02
|
help!!!!!!!!!!
|
|||
|
3
Рэйв
12.07.11
✎
09:05
|
>>Если обхожу группировки последовательно, тогда все в порядке, все выводится как надо
Работает? Не трожь! |
|||
|
4
rajas
12.07.11
✎
09:11
|
(3) так мне не надо последовательно, мне надо начинать с группировки "контрагент" (в определенной ситуации).
|
|||
|
5
hhhh
12.07.11
✎
09:14
|
(4) группировка "общие" имеет ровно обну строчку. Поэтому просто при обходе пропусти ее и не парь людям мозг.
|
|||
|
6
rajas
12.07.11
✎
09:18
|
(5) Я знаю, что так можно сделать, мне просто интересно, почаму, если начинать с группировки "Контрагент", то появляются проблемы при получении детальных записей.
|
|||
|
7
hhhh
12.07.11
✎
09:22
|
(6) ну ты же написал "все". Значит, должны попасть все группировки. С чего ты взял, что детальные записи там должны быть?
|
|||
|
8
rajas
12.07.11
✎
09:29
|
(7) Тогда так Как мне получить детальные записи после получения иерархической группировки по номенклатуре (попробовал без "все", все равно не получилось :(( )
[code] в2 = Запр.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Контрагент");//итоги по контрагенту Пока в2.Следующий() Цикл Сообщить("в2 ном = "+в2.Номенклатура+" кво = "+в2.Количество); в3 = в2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); //итоги по иерархии номенклатуры Пока в3.Следующий() Цикл Сообщить(" в3 ном = "+в3.Номенклатура+" кво = "+в3.Количество); ///????????????????????????? Как тут получить детальные записи КонецЦикла; КонецЦикла; [/code] |
|||
|
9
unregistered
12.07.11
✎
09:30
|
(0) >> НО ведь все «родители» номенклатуры уже выведены предыдущей группировкой
Ну а как бы чего ты хотел? Ты ведь попросил вывести все группировки, указав третий параметр "все"..... |
|||
|
10
rajas
12.07.11
✎
09:32
|
(9) убрал параметр "все" не помогло
|
|||
|
11
unregistered
12.07.11
✎
09:35
|
///????????????????????????? Как тут получить детальные записи
ВыборкаДетальныеЗаписи = в3.Выбрать(); |
|||
|
12
rajas
12.07.11
✎
09:39
|
(11) Выводит ближайшего родителя для детальной записи и детальную запись
|
|||
|
13
unregistered
12.07.11
✎
09:52
|
//????????????????????????? Как тут получить детальные записи
ВыборкаДетальныеЗаписи = в3.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующи() Цикл Если ВыборкаДетальныеЗаписи.ТипЗаписи() = ТипзаписиЗапроса.ИтогПоИерархии Тогда Продолжить(); КонецЕсли; // работаем с детальной записью КонецЦикла; |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |