Имя: Пароль:
1C
 
обратиться к элементам верхнего уровня.
0 NoviceNovice
 
24.07.08
15:26
Подскажите плз: есть иерархический справочник с деревом предопределенных папок. Нужно прописать в процедуре при открытии формы, что если этот элемент лежит в папке верхнего уровня, то выдавать сообщение пользователю(имя папки).

Как мне проверить где лежит элемент(в папке верхнего уровня или нет)?

Спасиб заранее.
1 MSensey
 
24.07.08
15:27
СправочникСсылка.<Имя справочника>.Уровень (CatalogRef.<Имя справочника>.Level)
СправочникСсылка.<Имя справочника> (CatalogRef.<Имя справочника>)
Уровень (Level)
Синтаксис:
Уровень()
Возвращаемое значение:
Тип: Число. Уровень элемента справочника.
Описание:
Получает уровень элемента справочника.
Примечание:
Имеет смысл только для многоуровневых справочников. Следует учитывать, что уровень элемента может меняться, например, при переносе в другую группу (смене родителя). Для элемента, не имеющего родителя, уровень будет равняться 0.
Если ссылка пустая, вызов метода вызывает исключение.
Пример:
Сообщить("Данный элемент принадлежит уровню " +
         СсылкаНаЭлемент.Уровень());
2 asady
 
24.07.08
15:28
(0) Родитель ЕСТЬ NULL в запросе
3 NoviceNovice
 
24.07.08
15:41
Спасиб, но задача даже усложнилась. Мне надо написать примерно такое

Если Элемент.РодительВерхнегоУровня.значение = такоетозначение тогда

Сообщить("родитель верхнего уровня такой то");


У меня получилось добраться до группы верхнего уровня с помощью элемент.родитель.родитель, но проблема в том что количество уровней иерархии не известна, поэтому надо использовать какой то другой подход
4 GenV
 
24.07.08
15:46
Странно, а для кого В ИЕРАРХИИ сделали в запросе сделали?
5 Пуд
 
24.07.08
15:47
(3) Такая тема была - запросом получаешь посредством конструкции ВЫБОР Эл.Родитель ЕСТЬNull - делаешь 9-10 выборов и готово.
6 NoviceNovice
 
24.07.08
15:48
буду пробовать запросом.
7 Пуд
 
24.07.08
15:48
(5) Если конечно уровней не 50.Но в реальной жизни такое редко должно быть
8 NoviceNovice
 
24.07.08
15:59
(3) поясни плз как 10 выборов сделать.
9 NoviceNovice
 
24.07.08
15:59
Я пишу:

Запрос.УстановитьПараметр("РодительВерхнегоУровня"   , Справочники.Номенклатура.ГруппаВерхнегоУровня);
   
   Запрос.Текст = "ВЫБРАТЬ
                   |    Номенклатура.Родитель
                   |ИЗ
                   |    Справочник.Номенклатура КАК Номенклатура
                   |ГДЕ
                   |    Номенклатура.Родитель = &Null"
10 NoviceNovice
 
24.07.08
16:02
там максимум 5 уровней будет.
11 Serg_1960
 
24.07.08
16:08
Запрос возвращает список родителей номенклатуры Ссылка

ВЫБРАТЬ
   Номенклатура.Ссылка КАК Ссылка
ИЗ
   Справочник.Номенклатура КАК Номенклатура
ГДЕ
   Номенклатура.Ссылка = &Ссылка
ИТОГИ ПО
   Ссылка ТОЛЬКО ИЕРАРХИЯ
12 Garkin
 
24.07.08
16:12
(3)

Если Элемент.ПринадлежитЭлементу(такоетозначение) тогда

Сообщить("родитель верхнего уровня такой то");

Не покатит?
13 NoviceNovice
 
24.07.08
16:20
(12) Дык а как я доберусь таким способом до первого уровня. А если у меня элемент на пятом уровне стоит? Как же тогда мне проверить значение группы верхне уровня?
14 Garkin
 
24.07.08
16:27
(13) если у тебя "Элемент" стоит на 5 уровне, и родитель верхнего уровня этого элемента = "такоетозначение" то Элемент.ПринадлежитЭлементу(такоетозначение) - вернет "истина"
15 Serg_1960
 
24.07.08
16:32
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
   Номенклатура.Ссылка КАК Ссылка
ИЗ
   Справочник.Номенклатура КАК Номенклатура
ГДЕ
   Номенклатура.Ссылка = &Ссылка
ИТОГИ ПО
  Ссылка ТОЛЬКО ИЕРАРХИЯ";
Запрос.Параметры.Вставить("Ссылка", МойЭлемент);
Запрос.Выполнить().Выбрать().Следующий()
Сообщить("Для элемента "+МойЭлемент+" родитель верхнего уровня:"+ Запрос.Ссылка.Наименование);
16 NoviceNovice
 
24.07.08
17:58
(14) То что доктор прописал! Спасиб!
17 NoviceNovice
 
24.07.08
17:58
Всем остальным тож большой спасиб.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс