Не могу получить родителя верхнего уровня
Доброго времени суток всем читающим! Люди помогите разобраться с проблемкой, пишу внешнюю обработку по выгрузке из 1с 7.7 Рарус в SetRetail 10, выгружается номенклатура по остаткам на точку актуальности. Все заполняется кроме родителя верхнего уровня, делаю вот так:
в отладчике ЗапросОст.Номенклатура отображается корректно и всех родителей можно проследить, а вот ВерхРодитель.Код и ВерхРодитель.Наименование пустые. Что я делаю не так?
ВерхРодитель =ЗапросОст.Номенклатура;
Пока ПустоеЗначение(ВерхРодитель.Родитель) = 0 Цикл
ВеткаРодитель = ВеткаГруппа.СоздатьПодчиненныйЭлемент("parent-group");
ВеткаРодитель.УстановитьАтрибут("id", ВерхРодитель.Код);
ВеткаРодительИмя = ВеткаРодитель.СоздатьПодчиненныйЭлемент("name");
ВеткаРодительИмя.Значение = ВерхРодитель.Наименование;
КонецЦикла;
в отладчике ЗапросОст.Номенклатура отображается корректно и всех родителей можно проследить, а вот ВерхРодитель.Код и ВерхРодитель.Наименование пустые. Что я делаю не так?
По теме из базы знаний
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2/3.0
- Особенности реального внедрения 1С:ТОИР
- Как найти «кнопку ВКЛ» у инженера, и всегда ли надо ее искать
- Что не так с таблицами формы?
- История разработки и внедрения параметрической гибридной проектной технологии
Найденные решения
можно использовать Справочник.Уровень
Этот код использован мной неоднократно при написании различных отчетов в 1с 7.7.
Спр=СздатьОъект("Справочник.Номенклатура");
Спр.НайтиЭлемент (СвТмп);
Уров=Спр.Уровень();
Если Уров>1 Тогда
Пока Уров<>1 Цикл
Спр.НайтиЭлемент(Спр.Родитель);
ЗначРодитель=Спр.Наименование;
Если Спр.ЭтоГруппа()=1 Тогда
Грп=ЗначРодитель;
КонецЕсли;
Сообщить("Родитель="+Грп); //Грп - это то, что вам нужно (наименование родителя)
Уров=Уров-1;
КонецЦикла;
КонецЕсли;
ПоказатьЭтот код использован мной неоднократно при написании различных отчетов в 1с 7.7.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Если саму номенклатуру из ЗапросОст.Номенклатура не надо включать, то первый оператор заменить на:
ВерхРодитель =ЗапросОст.Номенклатура;
Пока ВерхРодитель.Выбран() Цикл
ВеткаРодитель = ВеткаГруппа.СоздатьПодчиненныйЭлемент("parent-group");
ВеткаРодитель.УстановитьАтрибут("id", ВерхРодитель.Код);
ВеткаРодительИмя = ВеткаРодитель.СоздатьПодчиненныйЭлемент("name");
ВеткаРодительИмя.Значение = ВерхРодитель.Наименование;
ВерхРодитель =ВерхРодитель.Родитель;
КонецЦикла;
Если саму номенклатуру из ЗапросОст.Номенклатура не надо включать, то первый оператор заменить на:
ВерхРодитель =ЗапросОст.Номенклатура.Родитель;
Но в отладке показывает, что есть значения. сделал вот так
ВерхРодитель = ЗапросОст.Номенклатура;
Если ВерхРодитель.Выбран() = 0 Тогда
ВерхРодитель =ВерхРодитель.Родитель;
ВеткаРодитель = ВеткаГруппа.СоздатьПодчиненныйЭлемент("parent-group");
ВеткаРодитель.УстановитьАтрибут("id", ВерхРодитель.Код);
ВеткаРодительИмя = ВеткаРодитель.СоздатьПодчиненныйЭлемент("name");
ВеткаРодительИмя.Значение = ВерхРодитель.Наименование;
КонецЕсли;
можно использовать Справочник.Уровень
Этот код использован мной неоднократно при написании различных отчетов в 1с 7.7.
Спр=СздатьОъект("Справочник.Номенклатура");
Спр.НайтиЭлемент (СвТмп);
Уров=Спр.Уровень();
Если Уров>1 Тогда
Пока Уров<>1 Цикл
Спр.НайтиЭлемент(Спр.Родитель);
ЗначРодитель=Спр.Наименование;
Если Спр.ЭтоГруппа()=1 Тогда
Грп=ЗначРодитель;
КонецЕсли;
Сообщить("Родитель="+Грп); //Грп - это то, что вам нужно (наименование родителя)
Уров=Уров-1;
КонецЦикла;
КонецЕсли;
ПоказатьЭтот код использован мной неоднократно при написании различных отчетов в 1с 7.7.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот