Имя: Пароль:
1C
1С v8
Туплю с запросом.
0 Lama12
 
10.04.14
18:18
Может под вечер а может вообще туплю :)
Есть выборка папок справочника контрагенты (не все папки).
Нужно запросом определить к какой из папок это контрагент относится.

Контрагент может быть на несколько уровней ниже чем уровень анализируемых папок. Т.е. папка "А" на втором уровне (это та пака которая в выборке), в ней есть еще папка "Б", в ней еще "В", а уже в ней анализируемый контрагент.
Как написать запрос который возвращал бы папку "А"?
Папки выборки не могут пересекаться. Т.е. они все на одном уровне.
1 Wobland
 
10.04.14
18:22
уровень иерархии ограничен?
2 Lama12
 
10.04.14
18:23
(1) нет
3 Maxus43
 
10.04.14
18:24
увы...
4 Lama12
 
10.04.14
18:24
Ладно, я домой. Если что ни будь к утру придумаю, завтра напишу.
5 Maxus43
 
10.04.14
18:25
(4) все 10 лет существования мисты люди думали, и ничего не придумали
6 User_Agronom
 
10.04.14
18:27
(0) Обязательно запросом?
7 fisher
 
10.04.14
18:28
(2) А придется :)

С иерархиями простых и красивых решений обычно нет. Обычные запросы как бы на плоские таблицы рассчитаны.
Проще всего заложиться на некий уровень вложенности (допустим, 5). Мол контрагент не может быть ниже 5 уровней от анализируемых папок. Тогда будет что-то типа

ГДЕ
   Папка = Контрагент.Родитель ИЛИ Папка = Контрагент.Родитель.Родитель ...

Более универсальные способы подразумевают несколько запросов.
8 _fvadim
 
10.04.14
18:29
(6) тру адинэсниг между запросом на 90 строк и циклом на 3 строки всегда выберет запрос.
9 fisher
 
10.04.14
18:32
(8) Потому что в отличие от не тру одинэснигов им известно, что обращение через точку - это тоже запрос.
10 User_Agronom
 
10.04.14
18:32
(8) По иерархии рекурсией классно лазить
11 fisher
 
10.04.14
18:32
И лучше один запрос, чем несколько запросов в цикле.
12 User_Agronom
 
10.04.14
18:33
(9) !? Это точно? Метод объекта получается запросом?
13 Maxus43
 
10.04.14
18:34
(12) обращение к реквизитам и т.д. - влечет за собой запрос
14 _fvadim
 
10.04.14
18:34
(12) он имеет ввиду ссылочные реквизиты типа Спр.Родитель.Родитель.Родитель
15 _fvadim
 
10.04.14
18:36
(13) если реквизит типа число, то тоже запрос?
16 fisher
 
10.04.14
18:37
(12) Смотря какой. Если ты про ПринадлежитЭлементу(), то ясен пень будет обращение к БД.
(15) Какая разница? Если точка от ссылки - то будет запрос. Но при первом запросе весь объект закэшируется.
17 Fragster
 
гуру
10.04.14
19:40
тут через СКД для верхнего уровня, переделывается под "список папок" элементарно
18 Fragster
 
гуру
10.04.14
19:40
19 Drac0
 
10.04.14
20:05
(0) Можно получить уровень элемента и динамически собрать запрос с условием ИЛИ. ИМХО, оптимальный вариант.
20 kumena
 
10.04.14
20:19
>> Можно получить уровень элемента и динамически собрать запрос с условием ИЛИ. ИМХО, оптимальный вариант

а движок по твоему уровень в ссылке хранит?
21 Drac0
 
11.04.14
07:01
(20) можно оттрейсить обращение. Но в худшем случае, это один лишний маленький запрос.
22 Lama12
 
11.04.14
09:05
Мда... за ночь ничего в голову не пришло :)
буду смотреть (18)
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан