Вход | Регистрация


1С:Предприятие ::

Метки: 

Туплю с запросом.

Я
   Lama12
 
10.04.14 - 18:18
Может под вечер а может вообще туплю :)
Есть выборка папок справочника контрагенты (не все папки).
Нужно запросом определить к какой из папок это контрагент относится.

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

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

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

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

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



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