Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: обход результата запроса

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

вот такой запрос, отбросив детали.
Запрос.Получить(Объект,) возвращает 0.
   Ёпрст
 
23 - 18.06.20 - 10:00
(22) ёпт... БезИтогов же..там нет группировок, она одна всегда
   Ёпрст
 
24 - 18.06.20 - 10:01
Выкини без итогов из текста и заработает
   Bigbro
 
25 - 18.06.20 - 10:21
выкинул, все равно получить ноль возвращает.
в топку короче, надо дальше делать.
потом как нибудь будет время поэкспериментирую.
   vladko
 
26 - 18.06.20 - 10:23
(6)
Если у тебя 3 группировки в запросе, тогда в методе Запрос.Получить() уже должно быть 3 параметра и т.д.
   Bigbro
 
27 - 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
и вот это выкинь
Упорядочить По Объект.Наименование

оно и так будет упорядочено по наименованию всегда (если конечно, основное представление в виде наименования, а не кода)
 
 Рекламное место пустует
   Bigbro
 
31 - 18.06.20 - 11:08
там еще несколько упорядочиваний, запрос побольше, я вырезал все что не относится к ситуации.
по форме проверю, еще мысль возникла, проверю но попозже когда доделаю.
   Ёпрст
 
32 - 18.06.20 - 11:11
Или.. выгрузить запрос в индексированнуюТЗ и там уже группировки какие угодно и обход по нужным ключам
   Bigbro
 
33 - 18.06.20 - 11:12
(32) ну да, я пока так и сделал.
   vladko
 
34 - 18.06.20 - 14:29
Но конструкция, типа,

Спр = СоздатьОбъект("Справочники.ОбъектыСобытий");
Спр.НайтиПоКоду("1",0);
Объект = Спр.ТекущийЭлемент();

Запрос.ВНачалоВыборки();
Если Запрос.Получить(Объект,) > 0 Тогда
 Пока Запрос.Группировка("Событие") = 1 Цикл
    ..............
 КонецЦикла;
КонецЕсли;

Должна безупречно срабатывать.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.