Обход вложенных группировок запроса по регистру сведений Надо организовать обход результатов запроса к регистру сведений по двум группировкам в виде двух вложенных циклов (как в v7). Регистр сведений ЦеныНоменклатурыПоставщиков. Упрощенно: Измерения - Поставщик,Номенклатура. Ресурс - Цена. Т.е. надо для каждого поставщика получить по каждой номенклатуре цену (последнюю). Текст запроса: "ВЫБРАТЬ |ЦеныНоменклатурыПоставщиковСрезПоследних.Поставщи к КАК Поставщик, |ЦеныНоменклатурыПоставщиковСрезПоследних.Номенкла тура КАК Номенклатура, |ЦеныНоменклатурыПоставщиковСрезПоследних.Цена КАК Цена |ИЗ РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПо следних() |КАК ЦеныНоменклатурыПоставщиковСрезПоследних |СГРУППИРОВАТЬ ПО |ЦеныНоменклатурыПоставщиковСрезПоследних.Поставщи к, |ЦеныНоменклатурыПоставщиковСрезПоследних.Номенкла тура; Пытаюсь организовать обход группировок двумя циклами примерно так: Результат = Запрос.Выполнить(); ВыборкаП Результат.Выбрать(ОбходРезультатовЗапроса.ПоГруппи ровкам,"Поставщик"); Пока ВыборкаП.Следующий() Цикл Поставщик = ВыборкаП.Партнер; ... ВыборкаН = ВыборкаП.Выбрать(ОбходРезультатовЗапроса.ПоГруппир овкам,"Номенклатура"); Пока ВыборкаН.Следующий() Цикл Номенклатура = ВыборкаН.Номенклатура; ... КонецЦикла; КонецЦикла; И что-то заставить работать не могу. Ругается на неизвестную переменную ОбходРезультатовЗапроса. Понимаю, что надо как-то итоги в запрос добавить, но квалификации не хватает. Прошу помощи у коллег. |
секция ИТОГИ в запросе? Ну и ОбходРезульта_ТА_Запроса |
1-roma n >Я понимаю, что в запросе нужны ИТОГИ, но не вкурю, как правильно это написать. По какой переменной/группировке запроса и т.д. Если не затруднит, напишите этот кусок запроса. |
ИТОГИ ??? ПО ??? |
[quote=roma n;46071049]Ругается на неизвестную переменную ОбходРезультатовЗапроса[/quote] [quote=roma n;46071049] ОбходРезульта_ТА_Запроса[/quote] глаз размылить для начала) |
4-user1C >Меня в данном случае лучше, как слепого, перевести через улицу, и я дальше сам пойду :) Куда ОбходРезульта_ТА_Запроса вставить ? И как ИТОГИ правильно написать ? |
Други, не бросайте в годину тяжкую. Поможите, кто чем может. |
502 ошибка |
ВЫБРАТЬ ЦеныНоменклатурыПоставщиковСрезПоследних.Поставщи к КАК Поставщик, ЦеныНоменклатурыПоставщиковСрезПоследних.Номенкла тура КАК Номенклатура, ЦеныНоменклатурыПоставщиковСрезПоследних.Цена КАК Цена ИЗ РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних() КАК ЦеныНоменклатурыПоставщиковСрезПоследних ИТОГИ ПО ЦеныНоменклатурыПоставщиковСрезПоследних.Поставщик"; |
Результат = Запрос.Выполнить(); ВыборкаП Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппи ровкам); Пока ВыборкаП.Следующий() Цикл Поставщик = ВыборкаП.Партнер; ВыборкаН = ВыборкаП.Выбрать(); // без параметров |
Ругается "Переменная не определена ОбходРезультатовЗапроса". А СГРУППИРОВАТЬ ПО точно не нужно ? |
))) мда... |
(0) Если не секрет, линейный обход одним циклом чем не устраивает? Я так понимаю, что итожить цены не требуется (да и странно это было бы). Соответственно каждая связка Контрагент-Номенклатура уникальна и будет получена обычным перебором. |
12-US1C >А надо в конце каждого прохода внешнего цикла (после отработки внутреннего) выполнить определенные действия с использованием текущего значения переменной внешнего цикла. Конкретно, выгрузить данные по ценам всей номенклатуры каждого поставщика. Можно и перебором плоской таблицы. Но хотелось бы элегатнее. |
11-user1C >Понимаю, смех уместен. Но практическая помощь будет уместнее :)) |
Весело тут у вас... 14-mr Gilmor > Читай (4) столько раз, пока не поймешь |
15-Uho >Блин, вкурил, не РезультаТОВ, а РезультаТА. А все-таки СГРУППИРОВАТЬ ПО требуется ? |
Так, вроде чего-то полетело. roma_n - огромное спасибо. Да и всем остальным тоже. |
Попробуй так: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныНоменклатурыПоставщиковСрезПоследних.Поставщик КАК Поставщик, | ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура КАК Номенклатура, | ЦеныНоменклатурыПоставщиковСрезПоследних.Цена КАК Цена |ИЗ | РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних КАК ЦеныНоменклатурыПоставщиковСрезПоследних |ИТОГИ ПО | ТипЦен"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаПоставщик = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоставщик.Следующий() Цикл ВыборкаДетальныеЗаписи = ВыборкаПоставщик.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл КонецЦикла; КонецЦикла; |
18-US1C >Да, у меня тоже самое, только ИТОГИ ПО Поставщик (откуда ТипЦен?). И это вроде заработало (проверяю). |
(19) Да, конечно Поставщик. Просто у меня другая конфа, там похожий регистр с другими измерениями. Код адаптировал, но видно упустил кое-что. |
20-US1C >Спасибо. |
Текущее время: 13:18. Часовой пояс GMT +3. |