|
Оптимизация запроса | ☑ | ||||||
---|---|---|---|---|---|---|---|---|
0
Dermidont2006
03.10.14
✎
09:32
|
Доброе утро, парни и девушки! Имеется в наличии запрос
ВЫБРАТЬ Контрагенты.Ссылка ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ (Контрагенты.Родитель = &ВыбГруппа ИЛИ Контрагенты.Родитель.Родитель = &ВыбГруппа ИЛИ Контрагенты.Родитель.Родитель.Родитель = &ВыбГруппа ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель = &ВыбГруппа ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = &ВыбГруппа) Однако, если в справочнике контрагенты присутствуют несколько тысяч элементов, этот запрос работает очень медленно. Никто не подскажет, как можно оптимизировать данный запрос? |
|||||||
1
Fragster
гуру
03.10.14
✎
09:33
|
получение самого верхнего родителя в справочнике последние 6 сообщений
Можно оптимизировать |
|||||||
2
Fragster
гуру
03.10.14
✎
09:34
|
чтобы было быстрее обновление данных - доп регистр только для групп можно строить
|
|||||||
3
Dermidont2006
03.10.14
✎
09:38
|
Самый верхний родитель не нужен. Тут подразумевается, что в справочнике может быть большое количество уровней иерархии, и пользователь может выбрать группу контрагентов, находящуюся на любом уровне иерархии.
|
|||||||
4
Maxus43
03.10.14
✎
09:41
|
(3) не суть, никак в запросе не сделать, кроме как в (0), надо дополнительные сущности добавлять чтобы было красивей, типа (1), тем более если количество уровней не фиксировано.
Хотя как вариант - наложить условие (0) только для выбора Групп, помещаем получившиеся группы в ВТ, а по элементам уже ГДЕ КОНТРАГЕНТ.Родитель В (втГРУППЫ) |
|||||||
5
Maxus43
03.10.14
✎
09:47
|
не то?
ВЫБРАТЬ Контрагенты.Ссылка ПОМЕСТИТЬ втГруппы ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.ЭтоГруппа И (Контрагенты.Ссылка = &Родитель ИЛИ Контрагенты.Родитель = &Родитель ИЛИ Контрагенты.Родитель.Родитель = &Родитель) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Контрагенты.Ссылка, втГруппы.Ссылка КАК Ссылка1 ИЗ втГруппы КАК втГруппы ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты ПО втГруппы.Ссылка = Контрагенты.Родитель |
|||||||
6
Maxus43
03.10.14
✎
09:47
|
ну проиндексировать, понять надо ли соединение, или тупо условие и прочие мелочи
|
|||||||
7
Maxus43
03.10.14
✎
09:48
|
Суть в том что не будет проверятся условие на мильёнах записей. Сиречь оптимизация
|
|||||||
8
Maxus43
03.10.14
✎
09:49
|
тыдыЩ!
Можно оптимизировать |
|||||||
9
Defender aka LINN
03.10.14
✎
09:49
|
(0) Про "В Иерархии" когда-нибудь слышали?
|
|||||||
10
Maxus43
03.10.14
✎
09:51
|
(9) я тоже так хотел написать, пок ане понял задачу. Утром пятницы видимо туго идёт
|
|||||||
11
cons74
03.10.14
✎
09:52
|
(0) а почему бы не зайти с другого входа?
СправочникМенеджер.<Имя справочника> (CatalogManager.<Имя справочника>) Выбрать (Select) Синтаксис: Выбрать(<Родитель>, <Владелец>, <Отбор>, <Порядок>) Параметры: <Родитель> (необязательный) Тип: СправочникСсылка. Отбор по родителю. Имеет смысл только для многоуровневых справочников. Если параметр не задан, то отбор по родителю не производится. Чтобы отобрать элементы верхнего уровня, нужно в качестве данного параметра указать пустую ссылку на элемент справочника. |
|||||||
12
cons74
03.10.14
✎
09:53
|
и никакого высчитывания кол-ва уровней групп
|
|||||||
13
MrStomak
03.10.14
✎
09:54
|
Запрос выбирает всех контрагентов, находящихся в пределах 6 уровни вложенности к указанной группе.
Скорее всего, обычное В ИЕРАРХИИ вполне удовлетворит. |
|||||||
14
1dvd
03.10.14
✎
09:55
|
(10) поясни, почему В ИЕРАРХИИ не подходит?
|
|||||||
15
Maxus43
03.10.14
✎
09:56
|
(13)(14) уровни вложенности "ВВЕРХ" проверяются. Т.е. выбрав вложенную группу, мы получим и элементы в вышестоящих группах.
В ИЕРАРХИИ в другую сторону смотрит, вложенность "ВНИЗ". Автор, сам объясняй, тебя не понимают |
|||||||
16
Heckfy
03.10.14
✎
09:56
|
(0) На 9 уровне сдохнет.
|
|||||||
17
Dermidont2006
03.10.14
✎
09:56
|
cons74, данные нужно отобрать запросом.
В иерархии наверное подходит, только я про него не слышал, если честно. А как запрос написать с использованием в иерархии? |
|||||||
18
Maxus43
03.10.14
✎
09:57
|
пля. я чо зря воображение включал?
Задачу обрисуй, тебе вложенные надо элементы, или вплоть до родителя верхнего уровня? |
|||||||
19
Dermidont2006
03.10.14
✎
09:58
|
Как раз вниз и надо. Выбрал пользователь группу контрагентов, надо обработать все элементы, которые в эту группу входят, неважно на каком уровне иерархии выбранная группа находится.
|
|||||||
20
Dermidont2006
03.10.14
✎
09:58
|
Вверх не надо
|
|||||||
21
1dvd
03.10.14
✎
09:59
|
(15) судя по (0) ему нужны кокрастыке © вниз проверять
|
|||||||
22
Maxus43
03.10.14
✎
09:59
|
(20) у тебя в запросе - вверх, а не вниз, ты неправильные результаты получаешь
|
|||||||
23
Dermidont2006
03.10.14
✎
10:00
|
Результаты правильные, только медленно работает.
|
|||||||
24
1dvd
03.10.14
✎
10:01
|
(23) зайди в кнофигураторе Помощь - Содержание и найди там всё по запросу
|
|||||||
25
Maxus43
03.10.14
✎
10:01
|
тьфу.
В ИЕРАРХИИ. Посыпал голову пеплом, ушёл пить кофе. |
|||||||
26
Dermidont2006
03.10.14
✎
10:02
|
Heckfy, кто сдохнет на 9 уровне?
|
|||||||
27
Dermidont2006
03.10.14
✎
10:02
|
Maxus43, спасибо за помощь, приятного кофепития
|
|||||||
28
Defender aka LINN
03.10.14
✎
10:13
|
(26) Марио
|
|||||||
29
Fragster
гуру
03.10.14
✎
10:14
|
(3) а там решение не только для верхнего уровня, а в принципе для ускорения и упрощения соединений и "Выбор когда тогда" по иерархии
|
|||||||
30
Fragster
гуру
03.10.14
✎
10:17
|
(29)+ можно получить цепочку родителей, нужный уровень родителя, всех потомков и прочее
|
|||||||
31
lapinio
03.10.14
✎
10:25
|
Но как минимум
ИЛИ Контрагенты.Родитель.Родитель = &ВыбГруппа ИЛИ Контрагенты.Родитель.Родитель.Родитель = &ВыбГруппа ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель = &ВыбГруппа ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = &ВыбГруппа) Надо заменить на объединение!! |
|||||||
32
VladZ
03.10.14
✎
10:40
|
(0) ИЛИ Контрагенты.Родитель.Родитель = &ВыбГруппа
ИЛИ Контрагенты.Родитель.Родитель.Родитель = &ВыбГруппа ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель = &ВыбГруппа ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = &ВыбГруппа) гы-гы-гы... Что за деревенщина писала ЭТО??? |
|||||||
33
Кир Пластелинин
03.10.14
✎
10:45
|
просто адский писец...
|
|||||||
34
cons74
03.10.14
✎
10:45
|
(17) мы можем получить выборку этим методом, потом выгрузить её в ТЗ, и обращаться к этой ТЗ через запрос, метод менеджер временных таблиц
|
|||||||
35
Кир Пластелинин
03.10.14
✎
10:50
|
у меня разрыв шаблонов... у тс в профиле написано "Опыт работы 10 лет" и "Программист 1С" и вместе с тем он пишет, что "В иерархии наверное подходит, только я про него не слышал, если честно. А как запрос написать с использованием в иерархии?"
|
|||||||
36
Крошка Ру
03.10.14
✎
10:52
|
(35) Там же не написано, что именно 1Сником 10 лет.
|
|||||||
37
Крошка Ру
03.10.14
✎
10:58
|
(35) К тому же В ИЕРАРХИИ - темная сторона Силы это, её истинный джедай избегает использовать.
|
|||||||
38
Кир Пластелинин
03.10.14
✎
10:59
|
(36) не исключено. но за такой запрос - расстреливать на месте
|
|||||||
39
Лохматые Уши
03.10.14
✎
11:00
|
(32) Почему деревенщина? Если ограничить количество групп. то вполне рабочий код.
В ИЕРАРХИИ действительно работает не оптимально. И что быстрее - тут еще вопрос. |
|||||||
40
Кир Пластелинин
03.10.14
✎
11:08
|
(39) о даа) представляю диалог: - Вась, у нас там новый уровень справочника добавлся. Отчет не работает. - ок. сейчас конфу обновим (* если встроенный). а уж про "ИЛИ" в условиях промолчу.
(37) угу. темная. как афродыра. не все это знают. вернее знать могут не только лишь все, но мало кто знает это) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |