[КД2] Рекурсивный вызов функции в правилах
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(6) Рекурсивный обход дерева. Код прикладываю ниже.
Процедура ВыгрузитьЭлементОтбора(ЭлементОтбора)
Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
//формируем строку
ИсходнаяСтрока= Строка(ЭлементОтбора.ЛевоеЗначение);
КонечнаяСтрока =Лев(ИсходнаяСтрока,1);
Для Индекс=2 По СтрДлина(ИсходнаяСтрока) Цикл
Символ=Сред(ИсходнаяСтрока,Индекс,1);
КонечнаяСтрока=КонечнаяСтрока+?(ВРег(Символ)=Символ," "+НРег(Символ),Символ);
КонецЦикла;
//находим элемент
СсылкаНаЭлемент = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(КонечнаяСтрока,Истина);
//выгружаем свойство
ВыгрузитьПоПравилу(СсылкаНаЭлемент);
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка.["+КонечнаяСтрока+"]");
//выгружаем значения
Если ТипЗнч(ЭлементОтбора.ПравоеЗначение) = Тип("СписокЗначений") Тогда
Для каждого Элемент из ЭлементОтбора.ПравоеЗначение Цикл
ВыгрузитьПоПравилу(Элемент.Значение);
КонецЦикла;
ИначеЕсли НЕ ЗначениеЗаполнено(ЭлементОтбора.ПравоеЗначение) Тогда
//Ничего не делаем
Иначе
ВыгрузитьПоПравилу(ЭлементОтбора.ПравоеЗначение);
КонецЕсли;
ИначеЕсли ТипЗнч(ЭлементОтбора) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
Для каждого Элемент из ЭлементОтбора.Элементы Цикл
ВыгрузитьЭлементОтбора(Элемент);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот