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

1. 61 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 61 23.12.16 01:59 Сейчас в теме
Так же выдает пустые строки
5. PhoenixAOD 61 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 61 11.01.17 01:46 Сейчас в теме
(6) Спасибо) очень удобно)
Оставьте свое сообщение
Вакансии
Автор новостей об 1С, налогах и бухучете на INFOSTART.RU
Санкт-Петербург
По совместительству

Программист 1С
Екатеринбург
зарплата от 50 000 руб.
По совместительству

Ведущий разработчик 1С (техлид внутреннего учета)
Новосибирск
зарплата от 230 000 руб.
Полный день

Программист 1С
Рязань
зарплата от 150 000 руб. до 250 000 руб.
Полный день

Архитектор 1С
Обнинск
зарплата от 150 000 руб. до 350 000 руб.
Полный день