![]() |
|
v7: обход результата запроса | ☑ | ||
---|---|---|---|---|
0
Bigbro
18.06.20
✎
07:06
|
товарищи динозавры кто еще помнит, практикует.
как правиильно из запроса выбрать записи по 2й группировке, отфильтровав по конкретному значению 1й? Группировка("Объект") Группировка("Событие") Объект меня интересует конкретный, если бы и событие было конкретное, то Сделал бы Запрос.Получить(Объект,Событие) а как выбрать все события по конкретному Объекту? в запрос условие не хочу добавлять - мне по всем нужны данные, это в цикле гонять запросы. как то правильно спозиционироваться в выборке. с пустым вторым параметром Запрос.Получить(Объект,) - ничего не дает. в доке написано что дальнейшая выборка с помощью группировки() возможна. наставьте на путь) |
|||
1
Ёпрст
гуру
18.06.20
✎
07:12
|
С аомощью прямого позиционирования..для первой группировки получить, а вторую обходишь циклом. Усё
|
|||
2
Ёпрст
гуру
18.06.20
✎
07:13
|
И не забывать потом первую сбросить
|
|||
3
Андрей_Андреич
naïve
18.06.20
✎
07:16
|
(2) Сбросить - это Запрос.ВНачалоВыборки()?
|
|||
4
Ёпрст
гуру
18.06.20
✎
07:19
|
(3) ага, просто уже наложение снеговика в мозгу)
|
|||
5
Ёпрст
гуру
18.06.20
✎
07:20
|
Емли не сбрасывать, то может не найти, если второе получить будет раньше первого..это как найти в тз
|
|||
6
Bigbro
18.06.20
✎
07:23
|
так не работает же.
если пишу просто Запрос.Получить(Объект) - то ошибка, надо запятую добавлять а когда Запрос.Получить(Объект,) то в отладчике он возвращает 0, то есть не получил данные. и дальнейшая группировка естественно ничего не дает. |
|||
7
Bigbro
18.06.20
✎
07:24
|
хотя я кажется знаю в чем может быть проблема .... сейчас проверим.
|
|||
8
Ёпрст
гуру
18.06.20
✎
07:26
|
Если не находит, то нет такоготобъекта в выборке
|
|||
9
Bigbro
18.06.20
✎
07:29
|
там есть нюанс, объект - справочник, может быть разных видов. в запросе я отбираю только тот вид что мне нужен. ну и значение для поиска - конкретный элемент.
может это влиять? в выборке есть, я в ТЗ попробовал выгрузил - все записи на месте. |
|||
10
Ёпрст
гуру
18.06.20
✎
07:32
|
Сделай вначаловыборкиипередтполучить
|
|||
11
Bigbro
18.06.20
✎
07:32
|
это сразу сделал.
|
|||
12
Ёпрст
гуру
18.06.20
✎
07:33
|
Ну тогда, покажи свой код, может не ссылку, а переменную с типом пихаешь в методтполучить
|
|||
13
Ёпрст
гуру
18.06.20
✎
07:34
|
.текущийэлемент() пихай, если это не реквизит ыормы, а че рез создать объект слеплено
|
|||
14
Bigbro
18.06.20
✎
07:39
|
я пихал значение из ТЗ, тип вид значения в нем верный.
попробовал создал справочник нужного вида, спозиционировался на Текущийэлемент() - не помогло. |
|||
15
Bigbro
18.06.20
✎
07:43
|
ладно, похоже проще будет в ТЗ выгрузить и оттуда уже выдергивать.
|
|||
16
Ёпрст
гуру
18.06.20
✎
08:15
|
Код покажи
|
|||
17
Ёпрст
гуру
18.06.20
✎
08:15
|
и текст запроса
|
|||
18
Bigbro
18.06.20
✎
08:23
|
да не могу я код показывать..
но там все достаточно тривиально. соседний запрос где по 2 группировкам получаю конкретное значение работает нормально, а тут вот засада. я уже переделал на вывод через ТЗ. |
|||
19
Ёпрст
гуру
18.06.20
✎
08:25
|
должно работать, такой метод часто для шахматки использовался, где был обход всех дат и через получить позиционирование..
|
|||
20
Bigbro
18.06.20
✎
08:29
|
ну там возможно по 2 параметрам позиционировалось - так работает.
а я не знаю заранее ни сколько будет событий, ни самих этих событий у меня нет списка. поэтому думал что смогу спозиционироваться по объекту а дальше выгрести все что есть по второй группировке но почему то не пошло. |
|||
21
Ёпрст
гуру
18.06.20
✎
09:08
|
(20) должно работать, без текста запроса не видно. Единственное, нельзя опускать первые значения группировок, все последующие можно, при позиционировании.
|
|||
22
Bigbro
18.06.20
✎
09:23
|
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = " |Объект = Справочник.События.Объект; |Событие = Справочник.События.ТекущийЭлемент; |Время = Справочник.События.ВыбВремя; |Условие(Объект.Вид() = ""Сотрудники""); |Группировка Объект Упорядочить По Объект.Наименование Без Групп; |Группировка Событие; |Условие(Объект В СЗСотр); |Без Итогов; |"; вот такой запрос, отбросив детали. Запрос.Получить(Объект,) возвращает 0. |
|||
23
Ёпрст
гуру
18.06.20
✎
10:00
|
(22) ёпт... БезИтогов же..там нет группировок, она одна всегда
|
|||
24
Ёпрст
гуру
18.06.20
✎
10:01
|
Выкини без итогов из текста и заработает
|
|||
25
Bigbro
18.06.20
✎
10:21
|
выкинул, все равно получить ноль возвращает.
в топку короче, надо дальше делать. потом как нибудь будет время поэкспериментирую. |
|||
26
vladko
18.06.20
✎
10:23
|
(6)
Если у тебя 3 группировки в запросе, тогда в методе Запрос.Получить() уже должно быть 3 параметра и т.д. |
|||
27
Bigbro
18.06.20
✎
10:37
|
(26) да, я понимаю.
|
|||
28
Ёпрст
гуру
18.06.20
✎
11:02
|
(25) Ну значит пихаешь не ссылочный объект в метод Получить
|
|||
29
Ёпрст
гуру
18.06.20
✎
11:02
|
кинь реквизит на форму с нужным типом справочника, выбери туда значение, которое точно есть в выборке и проверь на нём
|
|||
30
Ёпрст
гуру
18.06.20
✎
11:04
|
и вот это выкинь
Упорядочить По Объект.Наименование оно и так будет упорядочено по наименованию всегда (если конечно, основное представление в виде наименования, а не кода) |
|||
31
Bigbro
18.06.20
✎
11:08
|
там еще несколько упорядочиваний, запрос побольше, я вырезал все что не относится к ситуации.
по форме проверю, еще мысль возникла, проверю но попозже когда доделаю. |
|||
32
Ёпрст
гуру
18.06.20
✎
11:11
|
Или.. выгрузить запрос в индексированнуюТЗ и там уже группировки какие угодно и обход по нужным ключам
|
|||
33
Bigbro
18.06.20
✎
11:12
|
(32) ну да, я пока так и сделал.
|
|||
34
vladko
18.06.20
✎
14:29
|
Но конструкция, типа,
Спр = СоздатьОбъект("Справочники.ОбъектыСобытий"); Спр.НайтиПоКоду("1",0); Объект = Спр.ТекущийЭлемент(); Запрос.ВНачалоВыборки(); Если Запрос.Получить(Объект,) > 0 Тогда Пока Запрос.Группировка("Событие") = 1 Цикл .............. КонецЦикла; КонецЕсли; Должна безупречно срабатывать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |