Не могу получить родителя верхнего уровня

1. PhoenixAOD 62 22.12.16 09:36 Сейчас в теме
Доброго времени суток всем читающим! Люди помогите разобраться с проблемкой, пишу внешнюю обработку по выгрузке из 1с 7.7 Рарус в SetRetail 10, выгружается номенклатура по остаткам на точку актуальности. Все заполняется кроме родителя верхнего уровня, делаю вот так:
	ВерхРодитель =ЗапросОст.Номенклатура;	
			Пока ПустоеЗначение(ВерхРодитель.Родитель) = 0 Цикл
				ВеткаРодитель = ВеткаГруппа.СоздатьПодчиненныйЭлемент("parent-group");
				ВеткаРодитель.УстановитьАтрибут("id", ВерхРодитель.Код);
				ВеткаРодительИмя = ВеткаРодитель.СоздатьПодчиненныйЭлемент("name");
				ВеткаРодительИмя.Значение = ВерхРодитель.Наименование;
			КонецЦикла;

в отладчике ЗапросОст.Номенклатура отображается корректно и всех родителей можно проследить, а вот ВерхРодитель.Код и ВерхРодитель.Наименование пустые. Что я делаю не так?
По теме из базы знаний
Найденные решения
6. Sokar 09.01.17 15:48 Сейчас в теме
можно использовать Справочник.Уровень

Спр=СздатьОъект("Справочник.Номенклатура");
Спр.НайтиЭлемент (СвТмп);
Уров=Спр.Уровень();
	Если Уров>1 Тогда
		Пока Уров<>1 Цикл
	   		Спр.НайтиЭлемент(Спр.Родитель);
			ЗначРодитель=Спр.Наименование;
			Если Спр.ЭтоГруппа()=1 Тогда
				Грп=ЗначРодитель;
			КонецЕсли;
			Сообщить("Родитель="+Грп); //Грп - это то, что вам нужно (наименование родителя)
			Уров=Уров-1;
		КонецЦикла;
	КонецЕсли;
Показать

Этот код использован мной неоднократно при написании различных отчетов в 1с 7.7.
kulkrise; +1 Ответить
Остальные ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
3. YNik 22.12.16 20:56 Сейчас в теме
(1)
            ВерхРодитель =ЗапросОст.Номенклатура;    
            Пока ВерхРодитель.Выбран() Цикл
                ВеткаРодитель = ВеткаГруппа.СоздатьПодчиненныйЭлемент("parent-group");
                ВеткаРодитель.УстановитьАтрибут("id", ВерхРодитель.Код);
                ВеткаРодительИмя = ВеткаРодитель.СоздатьПодчиненныйЭлемент("name");
                ВеткаРодительИмя.Значение = ВерхРодитель.Наименование;
                ВерхРодитель =ВерхРодитель.Родитель;    
            КонецЦикла;

Если саму номенклатуру из ЗапросОст.Номенклатура не надо включать, то первый оператор заменить на:
ВерхРодитель =ЗапросОст.Номенклатура.Родитель; 
2. minarenko 22.12.16 12:29 Сейчас в теме
Используй Выбран() вместо ПустоеЗначение(). ПустоеЗначение глючит в некоторых случаях.
4. PhoenixAOD 62 23.12.16 01:59 Сейчас в теме
Так же выдает пустые строки
5. PhoenixAOD 62 23.12.16 02:12 Сейчас в теме
Но в отладке показывает, что есть значения. сделал вот так
ВерхРодитель = ЗапросОст.Номенклатура;	
			Если ВерхРодитель.Выбран() = 0 Тогда
				ВерхРодитель =ВерхРодитель.Родитель;
				ВеткаРодитель = ВеткаГруппа.СоздатьПодчиненныйЭлемент("parent-group");
				ВеткаРодитель.УстановитьАтрибут("id", ВерхРодитель.Код);
				ВеткаРодительИмя = ВеткаРодитель.СоздатьПодчиненныйЭлемент("name");
				ВеткаРодительИмя.Значение = ВерхРодитель.Наименование; 
			КонецЕсли;
6. Sokar 09.01.17 15:48 Сейчас в теме
можно использовать Справочник.Уровень

Спр=СздатьОъект("Справочник.Номенклатура");
Спр.НайтиЭлемент (СвТмп);
Уров=Спр.Уровень();
	Если Уров>1 Тогда
		Пока Уров<>1 Цикл
	   		Спр.НайтиЭлемент(Спр.Родитель);
			ЗначРодитель=Спр.Наименование;
			Если Спр.ЭтоГруппа()=1 Тогда
				Грп=ЗначРодитель;
			КонецЕсли;
			Сообщить("Родитель="+Грп); //Грп - это то, что вам нужно (наименование родителя)
			Уров=Уров-1;
		КонецЦикла;
	КонецЕсли;
Показать

Этот код использован мной неоднократно при написании различных отчетов в 1с 7.7.
kulkrise; +1 Ответить
7. PhoenixAOD 62 11.01.17 01:46 Сейчас в теме
(6) Спасибо) очень удобно)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот