Имя: Пароль:
1C
1С v8
v8: Как по элементу спр найти группу, которой он принадлежит
, ,
0 mzelensky
 
30.10.12
13:39
Доброго всем!

К красивому решению прийти не получилось - прошу помощи.
Есть ТЧ1 со списком групп справочника. Есть Тч2 с группами/элементами справочника. Как определить Для каждого элемента из ТЧ2 в какой группе Тч1 он находится.
1 mzelensky
 
30.10.12
13:40
(0) естественно справочник иерархический.

Получить хочу ЗАПРОСОМ!
2 Stim
 
30.10.12
13:42
соединить Родитель-ссылка
3 alkorolev
 
30.10.12
13:42
почему именно запросом? задача какая?
4 AHAPXICT
 
30.10.12
13:42
родитель
5 Maxus43
 
30.10.12
13:42
ничо не понял. У тебя есть всё, незнаеш как собрать? у элемента есть Родитель - группа. что ещё надо?
6 samozvanec
 
30.10.12
13:43
телепатирую: родитель может быть парой уровней выше
7 Maxus43
 
30.10.12
13:44
(6) тогда в запросе никак
8 mzelensky
 
30.10.12
13:44
(3) задача там более сложная, чем я описал. Чтобы долго не рсписывать - сразу говорю что надо запросом
9 mzelensky
 
30.10.12
13:45
можно конечно через "Родитель.Родитель.Родитель" и т.д. .... но это по-моему извращение
10 alkorolev
 
30.10.12
13:45
(0) самого верхнего родителя элемента над заполучить? запросом?
11 samozvanec
 
30.10.12
13:46
Выбрать
тч1.элемент
тч2.ссылка
из
тч1 как тч1
  левое соединение тч2 как тч2
     по тч2.сылка В ИЕРАРХИИ тч1
12 mzelensky
 
30.10.12
13:46
(10) не факт что замого верхнего. ща попробую нарисовать...
13 samozvanec
 
30.10.12
13:47
родитель.родитель.родитель не можно, пока не узнаешь, сколько уровней надо пройти до искомого родителя
14 Defender aka LINN
 
30.10.12
13:47
(11) Красивые буквы. Только к чему это?
15 Maxus43
 
30.10.12
13:47
(11) по тч2.сылка В ИЕРАРХИИ тч1
сам то пробовал?
16 samozvanec
 
30.10.12
13:48
поправлюсь
В ИЕРАРХИИ тч1.элемент
17 mzelensky
 
30.10.12
13:48
(13) ну от самого элемента Тч2 до самого вернху...т.е. если у Тч2 уровень 3, то 3 раза "Родитель."
18 Maxus43
 
30.10.12
13:48
(16) ещё раз - попробуй. нельзя так
19 mzelensky
 
30.10.12
13:48
(16) так разве можно?
20 mzelensky
 
30.10.12
13:49
В идеале мне нужна конструкция:

&ЗначИзТЧ2 В Иерархии (Тч1.значение)


но так низя :(
Кто там хотелки на 8.3 записывал?????
21 Starhan
 
30.10.12
13:50
можно попробовать

сначала сформировать таблицу
где будут итоги по иерархии в 1 м поле, а во втором сама номенлкатура

потом запихнут параметром в вирт таблицу

и там соеденить по группе со творой таблицей.
22 samozvanec
 
30.10.12
13:52
я вам разрешаю, можете даже временными таблицами побаловаться
23 1Страх
 
30.10.12
13:53
(20) не взлетит по причине того, что "В Иерархии" выполняется не в SQL, а на сервере приложений формируется список, который уже передается SQL
24 mzelensky
 
30.10.12
13:53
(21) там все усложняется тем, что у значения множественный тип и справочников возможных целая куча.

А тут нужно знать из какова конкретно справочника выбираешь.
25 mzelensky
 
30.10.12
13:54
(23) это их проблемы - я ХОЧУ! :)
26 mzelensky
 
30.10.12
13:58
можно даже упростить задачу из (0)

Есть Тч1 с группами справочника и есть просто ЭлементСправочника (просто единичное значение). Нужно определить в какой из групп Тч1 находится данный элемент.
27 1Страх
 
30.10.12
13:59
(26) есть решение, но тебе не понравится ))
28 mzelensky
 
30.10.12
14:01
(27) ну давай
29 1Страх
 
30.10.12
14:03
сделай и поддерживай РС по принципу "Множественная модель деревьев" из этой статьи http://www.codenet.ru/db/other/trees/
30 mzelensky
 
30.10.12
14:04
(29) ты был прав - мне не понравилось. Еще идеи будут? Вроде ж простая хотелка, а решения нормального нет :(
31 1Страх
 
30.10.12
14:05
(30) это 1С, детка
32 mzelensky
 
30.10.12
14:13
(31) обломитесь, господа! некое решения я таки нашел. Правда только для (26)...для (0) не прокатит. В частном случае выглядит так:

ВЫБРАТЬ
   ВидыТранспорта.Ссылка
ИЗ
   Справочник.ВидыТранспорта КАК ВидыТранспорта
ГДЕ
   &Парам ПОДОБНО "%" + ВидыТранспорта.Код + "%"
   И ВидыТранспорта.Ссылка <> &ТекЭлемент

При этом
 Парам=ТД.Значение.ПолныйКод();
 ТекЭлемент=ТД.Значение
33 1Страх
 
30.10.12
14:15
(32) галимое решение, да и неправильное может оказаться
34 mzelensky
 
30.10.12
14:16
(33) более лучшего я не увидел. Ни в твоих предложениях, ни в других.

Есть другие варианты?
35 1Страх
 
30.10.12
14:17
(34) мое предложение лучше ))
36 mzelensky
 
30.10.12
14:20
(35) ты сам то пробовал это делать????

+ "да и неправильное может оказаться" - потестил - вроде работает нормально! Согласись, более простого (и одновременно работающего) врятли найти
37 mzelensky
 
30.10.12
14:26
Требую увековечивания себя в книги знаний с данным примером :)
и медальку :)
38 Reset
 
30.10.12
14:29
Будет неверным если коды разной длины, т.е.
%1% вполне подобно "511/612"
39 mzelensky
 
30.10.12
14:31
(38) в моей ситуации код не может быть разной длины. В пределах одного справочника код уникален и его маска одинакова (т.е. длина кода одинакова)
40 Reset
 
30.10.12
14:31
или если в содерижимом кодов может встречаться разделитель.
41 Reset
 
30.10.12
14:34
я к тому что для (37) слабовато :)
42 mzelensky
 
30.10.12
14:34
(40) ну хватит придеоаться. какие разделители??? ладно еще в номерах документом, но разделители в коде справочника...честно, ниразу не видел...

Хорошо уточню - код будет работать для СТАНДАРТНОГО справочника - у которого нет заморочек с формированием КОДА.
43 mzelensky
 
30.10.12
14:34
(41) что, медальку жалко? Тогда давай свой вариант решения проблемы!
44 hohol
 
30.10.12
15:16
Принадлежит - не подходит?
45 hohol
 
30.10.12
15:20
СправочникСсылка.<Имя справочника>.ПринадлежитЭлементу (CatalogRef.<Имя справочника>.BelongsToItem)
СправочникСсылка.<Имя справочника> (CatalogRef.<Имя справочника>)
ПринадлежитЭлементу (BelongsToItem)
Синтаксис:

ПринадлежитЭлементу(<Элемент>)
Параметры:

<Элемент> (обязательный)

Тип: СправочникСсылка.
Группа (или элемент для иерархического справочника с иерархией элементов), для которой определяется принадлежность элемента.
Возвращаемое значение:

Тип: Булево.
Истина - элемент подчинен группе; Ложь - в противном случае.
Если в качестве параметра указать сам элемент, то Ложь.
Описание:

Определяет подчиненность элемента справочника группе с учетом всех уровней иерархии.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Определяет подчиненность группе непосредственно на момент вызова метода путем последовательного считывания всех вышестоящих элементов.
Пример:

Если ОбъектСсылка.ПринадлежитЭлементу(ЭлементСсылка) Тогда
   Сообщить("Принадлежит");
КонецЕсли;
46 alex-pro
 
06.11.12
15:28
(9) В  свое время так и решал. Сделал 10 уровней вложенности.
47 viktor_vv
 
06.11.12
15:36
(32) Тек если ты снаружи передаешь полный код, почему бы тогда снаружи не передавать список ролителей верхнего уровня ?
Этот список получай простенькой функцией из типовой для назначений свойств.
И без этих извратов.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан