К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Обход вложенных группировок запроса по регистру сведений

0 - 10.10.2018 - 15:47
Надо организовать обход результатов запроса к регистру сведений по двум группировкам в виде двух вложенных циклов (как в v7).
Регистр сведений ЦеныНоменклатурыПоставщиков.
Упрощенно:
Измерения - Поставщик,Номенклатура.
Ресурс - Цена.
Т.е. надо для каждого поставщика получить по каждой номенклатуре цену (последнюю).
Текст запроса:
"ВЫБРАТЬ
|ЦеныНоменклатурыПоставщиковСрезПоследних.Поставщи к КАК Поставщик,
|ЦеныНоменклатурыПоставщиковСрезПоследних.Номенкла тура КАК Номенклатура,
|ЦеныНоменклатурыПоставщиковСрезПоследних.Цена КАК Цена
|ИЗ
РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПо следних()
|КАК ЦеныНоменклатурыПоставщиковСрезПоследних
|СГРУППИРОВАТЬ ПО
|ЦеныНоменклатурыПоставщиковСрезПоследних.Поставщи к,
|ЦеныНоменклатурыПоставщиковСрезПоследних.Номенкла тура;
Пытаюсь организовать обход группировок двумя циклами примерно так:
Результат = Запрос.Выполнить();
ВыборкаП Результат.Выбрать(ОбходРезультатовЗапроса.ПоГруппи ровкам,"Поставщик");
Пока ВыборкаП.Следующий() Цикл
Поставщик = ВыборкаП.Партнер;
...
ВыборкаН = ВыборкаП.Выбрать(ОбходРезультатовЗапроса.ПоГруппир овкам,"Номенклатура");
Пока ВыборкаН.Следующий() Цикл
Номенклатура = ВыборкаН.Номенклатура;
...
КонецЦикла;
КонецЦикла;

И что-то заставить работать не могу.
Ругается на неизвестную переменную ОбходРезультатовЗапроса. Понимаю, что надо как-то итоги в запрос добавить, но квалификации не хватает.
Прошу помощи у коллег.



1 - 10.10.2018 - 15:53
секция ИТОГИ в запросе?
Ну и ОбходРезульта_ТА_Запроса

Отредактировано roma n; 10.10.2018 в 15:54. Причина: уточнение
2 - 10.10.2018 - 15:57
1-roma n >Я понимаю, что в запросе нужны ИТОГИ, но не вкурю, как правильно это написать. По какой переменной/группировке запроса и т.д.
Если не затруднит, напишите этот кусок запроса.
3 - 10.10.2018 - 15:58
ИТОГИ ??? ПО ???
4 - 10.10.2018 - 15:59
Цитата:
Сообщение от roma n Посмотреть сообщение
Ругается на неизвестную переменную ОбходРезультатовЗапроса
Цитата:
Сообщение от roma n Посмотреть сообщение
ОбходРезульта_ТА_Запроса
глаз размылить для начала)
5 - 10.10.2018 - 16:06
4-user1C >Меня в данном случае лучше, как слепого, перевести через улицу, и я дальше сам пойду :)
Куда ОбходРезульта_ТА_Запроса вставить ?
И как ИТОГИ правильно написать ?
6 - 10.10.2018 - 20:12
Други, не бросайте в годину тяжкую.
Поможите, кто чем может.
7 - 11.10.2018 - 09:20
502 ошибка
8 - 11.10.2018 - 09:23
ВЫБРАТЬ
ЦеныНоменклатурыПоставщиковСрезПоследних.Поставщи к КАК Поставщик,
ЦеныНоменклатурыПоставщиковСрезПоследних.Номенкла тура КАК Номенклатура,
ЦеныНоменклатурыПоставщиковСрезПоследних.Цена КАК Цена
ИЗ РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПо следних()
КАК ЦеныНоменклатурыПоставщиковСрезПоследних
ИТОГИ ПО
ЦеныНоменклатурыПоставщиковСрезПоследних.Поставщик ";
9 - 11.10.2018 - 09:24
Результат = Запрос.Выполнить();
ВыборкаП Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппи ровкам);
Пока ВыборкаП.Следующий() Цикл
Поставщик = ВыборкаП.Партнер;

ВыборкаН = ВыборкаП.Выбрать(); // без параметров
10 - 11.10.2018 - 14:10
Ругается "Переменная не определена ОбходРезультатовЗапроса".
А СГРУППИРОВАТЬ ПО точно не нужно ?
11 - 11.10.2018 - 14:19
)))
мда...
12 - 11.10.2018 - 14:58
(0) Если не секрет, линейный обход одним циклом чем не устраивает?
Я так понимаю, что итожить цены не требуется (да и странно это было бы). Соответственно каждая связка Контрагент-Номенклатура уникальна и будет получена обычным перебором.
13 - 11.10.2018 - 15:32
12-US1C >А надо в конце каждого прохода внешнего цикла (после отработки внутреннего) выполнить определенные действия с использованием текущего значения переменной внешнего цикла. Конкретно, выгрузить данные по ценам всей номенклатуры каждого поставщика.
Можно и перебором плоской таблицы. Но хотелось бы элегатнее.
14 - 11.10.2018 - 15:37
11-user1C >Понимаю, смех уместен. Но практическая помощь будет уместнее :))
Uho
15 - 11.10.2018 - 15:42
Весело тут у вас...
14-mr Gilmor > Читай (4) столько раз, пока не поймешь
16 - 11.10.2018 - 15:55
15-Uho >Блин, вкурил, не РезультаТОВ, а РезультаТА.
А все-таки СГРУППИРОВАТЬ ПО требуется ?
17 - 11.10.2018 - 16:02
Так, вроде чего-то полетело.
roma_n - огромное спасибо. Да и всем остальным тоже.
18 - 11.10.2018 - 16:04
Попробуй так:

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЦеныНоменклатурыПоставщиковСрезПоследних.Поставщик КАК Поставщик,
| ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклат ура КАК Номенклатура,
| ЦеныНоменклатурыПоставщиковСрезПоследних.Цена КАК Цена
|ИЗ
| РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПо следних КАК ЦеныНоменклатурыПоставщиковСрезПоследних
|ИТОГИ ПО
| ТипЦен";

РезультатЗапроса = Запрос.Выполнить();

ВыборкаПоставщик = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.По Группировкам);

Пока ВыборкаПоставщик.Следующий() Цикл

ВыборкаДетальныеЗаписи = ВыборкаПоставщик.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

КонецЦикла;
КонецЦикла;
19 - 11.10.2018 - 16:12
18-US1C >Да, у меня тоже самое, только ИТОГИ ПО Поставщик (откуда ТипЦен?).
И это вроде заработало (проверяю).
20 - 11.10.2018 - 17:14
(19) Да, конечно Поставщик. Просто у меня другая конфа, там похожий регистр с другими измерениями. Код адаптировал, но видно упустил кое-что.
21 - 11.10.2018 - 20:38
20-US1C >Спасибо.


К списку вопросов
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск




Copyright ©, Все права защищены