|
Как получить родителя верхней группы спр.подразделенияорганизаций зуп 2.5 | ☑ | ||
---|---|---|---|---|
0
romantic1984s
10.06.15
✎
05:17
|
Всем привет.Есть документ приказ о приеме на работу.В нем нужно отражать и подразделение и родителя группы.
пробовал запрос ВЫБРАТЬ ПодразделенияОрганизаций.Ссылка ИЗ Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций ГДЕ ПодразделенияОрганизаций.Ссылка = &Ссылка И ПодразделенияОрганизаций.Ссылка В ИЕРАРХИИ (ВЫБРАТЬ ПодразделенияОрганизаций.Ссылка КАК СсылкаНаВерхнего ИЗ Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций ГДЕ ПодразделенияОрганизаций.Ссылка В (ВЫБРАТЬ ПодразделенияОрганизаций.Ссылка КАК Ссылка ИЗ Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций ГДЕ ПодразделенияОрганизаций.Родитель = ЗНАЧЕНИЕ(справочник.ПодразделенияОрганизаций.пустаяссылка))) Но почему то не идет. |
|||
1
Лодырь
10.06.15
✎
05:23
|
Выбери в цикле ) не парь себе голову запросом.
|
|||
2
romantic1984s
10.06.15
✎
05:24
|
Вопрос снимаю.Зашел с другой стороны.
ВЫБРАТЬ ПодразделенияОрганизаций.Ссылка, ВЫБОР КОГДА ПодразделенияОрганизаций.Родитель = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) ТОГДА ПодразделенияОрганизаций.Ссылка КОГДА ПодразделенияОрганизаций.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) ТОГДА ПодразделенияОрганизаций.Родитель КОГДА ПодразделенияОрганизаций.Родитель.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) ТОГДА ПодразделенияОрганизаций.Родитель.Родитель ИНАЧЕ ПодразделенияОрганизаций.Родитель.Родитель.Родитель КОНЕЦ КАК РодительВерхнегоУровня ИЗ Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций ГДЕ ПодразделенияОрганизаций.Ссылка В(&ПодразделенияОрганизаций) |
|||
3
romantic1984s
10.06.15
✎
05:25
|
Пробовал функцию задать типа :
Функция РодительВерхнегоУровня(Ссылка) Экспорт ВыбПодразделение = Ссылка.ТекущееПодразделениеОрганизации; Если ВыбПодразделение.Уровень() = 0 Тогда Департамент = ВыбПодразделение; Иначе Департамент = Справочники.ПодразделенияОрганизаций.НайтиПоКоду(Лев(ВыбПодразделение.ПолныйКод(), Найти(ВыбПодразделение.ПолныйКод(),"/")-1)).Ссылка; КонецЕсли; Возврат Департамент; КонецФункции Но что то он спотыкается на уровнях. |
|||
4
Лодырь
10.06.15
✎
05:27
|
(3) Тяжело вам там живется..
|
|||
5
romantic1984s
10.06.15
✎
05:29
|
(4) а как бы ты предложил?Напиши свой вариант.
|
|||
6
romantic1984s
10.06.15
✎
05:30
|
(4) в зупе там запрос типовой идет только на подразделение.Как ни крути для родителя все равно запрос делать,так почему бы не получить сразу верхнего в нем?
|
|||
7
Seeker
10.06.15
✎
05:33
|
(0) можно сделать рекурсию
Функция ПолучитьРодителяВерхнегоУровня(Ссылка) ВыбПодразделение = Ссылка.ТекущееПодразделениеОрганизации; Если ВыбПодразделение.Уровень() <> 0 Тогда ПолучитьРодителяВерхнегоУровня(ВыбПодразделение); Иначе Возврат ВыбПодразделение; КонецЕсли; КонецФункции что то типа того... не ручаюсь за работу, просто идея. |
|||
8
romantic1984s
10.06.15
✎
05:34
|
(7) Логично! в том то и дело,что он уровни вообще не видел.
|
|||
9
Лодырь
10.06.15
✎
05:39
|
(5) Ну я предложил. В самом первом посте.
|
|||
10
SeraFim
10.06.15
✎
06:00
|
Присоединяюсь к варианту с циклом)
Но можно так: Выгребаем всех родителей верхнего уровня. Соединяем подразделения с родителями - чтобы подразделение входило в иерархию родителя. Ну или в коде Есть такая штука как "Полное наименование" - выдает полный путь со всеми родителями) Остается только это строчку переделать, вырезать из неё то что нужно) |
|||
11
echo77
10.06.15
✎
07:27
|
В запросе итоги по пдразделению , только иерархия - получишь всех родителей - первый верхнего уровня
|
|||
12
Popkorm
10.06.15
✎
08:04
|
Можно поигратся с ПренадлежитЭлементу(),либо рекурсия...
|
|||
13
patria0muerte
10.06.15
✎
08:08
|
Как то так можно:
Функция ПолучитьРодителяВерхнегоУровня(Знач Подразделение) Пока НЕ Подразделение = Справочники.Подразделения.ПустаяСсылка() Цикл Подразделение = Подразделение.Родитель; КонецЦикла Возврат Подразделение; КонецФункции |
|||
14
echo77
10.06.15
✎
08:10
|
ВЫБРАТЬ
ПодразделенияОрганизаций.Ссылка КАК Ссылка ИЗ Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций ГДЕ ПодразделенияОрганизаций.Ссылка = &ПодразделениеОрганизации ИТОГИ ПО Ссылка ТОЛЬКО ИЕРАРХИЯ |
|||
15
Ildarovich
10.06.15
✎
11:07
|
(7) Не рекомендую проверять ВыбПодразделение.Уровень() > 0.
Уровень - очень затратная по времени функция. Нужно родителя на пустую ссылку в этой функции проверять. |
|||
16
Ildarovich
10.06.15
✎
11:20
|
Можете посмотреть статью http://catalog.mista.ru/public/160707/ . В разделе 3 там решается именно эту задача и именно в чисто запросной технике.
Вот запрос, который там используется: ВЫБРАТЬ ПодразделенияОрганизаций.Родитель КАК НачалоДуги, ПодразделенияОрганизаций.Ссылка КАК КонецДуги ПОМЕСТИТЬ ЗамыканияДлины1 ИЗ Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций ГДЕ ПодразделенияОрганизаций.Родитель <> ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) ОБЪЕДИНИТЬ ВЫБРАТЬ ПодразделенияОрганизаций.Ссылка, ПодразделенияОрганизаций.Ссылка ИЗ Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ ПерваяДуга.НачалоДуги, ВтораяДуга.КонецДуги ПОМЕСТИТЬ ЗамыканияДлины2 ИЗ ЗамыканияДлины1 КАК ПерваяДуга ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗамыканияДлины1 КАК ВтораяДуга ПО ПерваяДуга.КонецДуги = ВтораяДуга.НачалоДуги ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ ПерваяДуга.НачалоДуги, ВтораяДуга.КонецДуги ПОМЕСТИТЬ ЗамыканияДлины4 ИЗ ЗамыканияДлины2 КАК ПерваяДуга ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗамыканияДлины2 КАК ВтораяДуга ПО ПерваяДуга.КонецДуги = ВтораяДуга.НачалоДуги ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ ПерваяДуга.НачалоДуги, ВтораяДуга.КонецДуги ПОМЕСТИТЬ ЗамыканияДлины8 ИЗ ЗамыканияДлины4 КАК ПерваяДуга ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗамыканияДлины4 КАК ВтораяДуга ПО ПерваяДуга.КонецДуги = ВтораяДуга.НачалоДуги ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЗамыканияДлины8.КонецДуги КАК Подразделение, ЗамыканияДлины8.НачалоДуги КАК РодительВерхнегоУровня ИЗ ЗамыканияДлины8 КАК ЗамыканияДлины8 ГДЕ ЗамыканияДлины8.НачалоДуги <> ЗамыканияДлины8.КонецДуги И ЗамыканияДлины8.НачалоДуги.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |