Вывод иерархии в строку в СКД

1. Azzkijhacker 18.06.19 16:51 Сейчас в теме
Подскажите, как в СКД можна вывести иерархию поля в строку типа "Родитель1/Родитель2....../РодительН/Поле1", при условии, что количество уровней справочника неограничено. Вобщем суть вопроса - вывод полного пути элемента справочника в группировку в 1 ячейку.
По теме из базы знаний
Найденные решения
2. antz 18.06.19 16:59 Сейчас в теме
Навскидку - запилить в общем модуле функцию, возвращающую полное наименование элемента, в вычисляемом поле ее вызывать.
Anchoret; alex-l19041; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. antz 18.06.19 16:59 Сейчас в теме
Навскидку - запилить в общем модуле функцию, возвращающую полное наименование элемента, в вычисляемом поле ее вызывать.
Anchoret; alex-l19041; +2 Ответить
3. Azzkijhacker 18.06.19 17:18 Сейчас в теме
(2) Это уже крайний метод. Отчет внешний и лезть в общий модуль ведет за собой много лишней волокиты с релизом и тд. Может есть какая скрытая функция в скд, может через ВычислитьВыражение как-то выкрутить результат?
It-developer; +1 Ответить
4. alex-l19041 8 18.06.19 17:44 Сейчас в теме
5. tusv 212 19.06.19 09:53 Сейчас в теме
(3)В ПриКомпоновкеРезультата подготовить Таблицу значений. Загнать туда Полное наименование
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	Настройки = КомпоновщикНастроек.ПолучитьНастройки();
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки, ДанныеРасшифровки);

	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,Новый Структура("Родители",ПодготовитьТЗ()), ДанныеРасшифровки);
	
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
	ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
Функция ПодготовитьТЗ()
	Запрос = Новый Запрос("ВЫБРАТЬ
	|	Номенклатура.Ссылка КАК Ссылка
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура");
	Тз = Запрос.Выполнить().Выгрузить();
	Тз.Колонки.Добавить("ПолноеНаименование",Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(0)));
	Для Каждого стр из Тз Цикл
		Стр.ПолноеНаименование = Стр.Ссылка.ПолноеНаименование();
	КонецЦикла;
	Возврат Тз;
КонецФункции
Показать
Прикрепленные файлы:
ПолныеНаименования.erf
user1276976; +1 Ответить
6. Azzkijhacker 19.06.19 12:00 Сейчас в теме
(5) Тоже хороший вариант решения, дабы не лезть в цф. Но начальство дало добро прописать универсальную функцию для всех справочников в общем модуле и использовать ее в СКД, поскольку даный функционал понадобится в многих отчетах. Всем спасибо за помощь!
Anchoret; +1 Ответить
7. de0nis 454 15.06.23 13:16 Сейчас в теме
Как вариант, если есть ограничения по уровням иерархии справочника, то можно через вычисляемые поля вывести.
Выбор КОГДА ЗНАЧЕНИЕЗАПОЛНЕНО(Родитель.Родитель.Родитель.Родитель)
                               Тогда ""+Родитель.Родитель.Родитель.Родитель.Наименование+" \ "
                                        +Родитель.Родитель.Родитель.Наименование+" \ "
                                        +Родитель.Родитель.Наименование+" \ "
                                        +Родитель.Наименование
                ИНАЧЕ         
                               Выбор КОГДА ЗНАЧЕНИЕЗАПОЛНЕНО(Родитель.Родитель.Родитель.Родитель)
                                               Тогда ""+Родитель.Родитель.Родитель.Родитель.Наименование+" \ "
                                                        +Родитель.Родитель.Родитель.Наименование+" \ "
                                                        +Родитель.Родитель.Наименование+" \ "
                                                        +Родитель.Наименование
                               ИНАЧЕ
                                               Выбор КОГДА ЗНАЧЕНИЕЗАПОЛНЕНО(Родитель.Родитель.Родитель)
                                                               Тогда ""+Родитель.Родитель.Родитель.Наименование+" \ "
                                                                   +Родитель.Родитель.Наименование+" \ "
                                                                   +Родитель.Наименование
                                               ИНАЧЕ         
                                                               Выбор КОГДА ЗНАЧЕНИЕЗАПОЛНЕНО(Родитель.Родитель)
                                                                               Тогда ""+Родитель.Родитель.Наименование+" \ "
                                                                              +Родитель.Наименование
                                                               ИНАЧЕ
                                                                               РОДИТЕЛЬ
                                                               Конец   
                                               Конец
                               Конец
                Конец
Показать

Несколько топорно, но не надо менять конфигурацию и лезть в ПроцессорКомпоновки
Оставьте свое сообщение

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