Установка флажка дерева значений. Автоизменение родителей и потомков
У дерева значений есть поле флажка с тремя состояниями. Необходимо при изменении флажков нижнего уровня автоматически изменять родительские флажки и наоборот. На просторах инфостарта нашёл решение. Вопрос. Есть ли данное решение уже в БСП? (глобальным поиском найти его не смог). Вот рабочий код (также прикрепил обработку):
&НаКлиенте
Процедура ПометкаПриИзменении(Элемент)
ТекущиеДанные = Элементы.ДеревоСФлажками.ТекущиеДанные;
ТекущиеДанные.Пометка = ТекущиеДанные.Пометка % 2;
ПроставитьПометкиВниз(ТекущиеДанные);
ПроставитьПометкиВверх(ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ПроставитьПометкиВниз(ТекущиеДанные)
Потомки = ТекущиеДанные.ПолучитьЭлементы();
Значение = ТекущиеДанные.Пометка;
Для каждого Потомок из Потомки Цикл
Потомок.Пометка = Значение;
ПроставитьПометкиВниз(Потомок);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ПроставитьПометкиВверх(ТекущиеДанные)
Родитель = ТекущиеДанные.ПолучитьРодителя();
Если Родитель <> Неопределено Тогда
ВсеИстина = Истина;
НеВсеЛожь = Ложь;
Потомки = Родитель.ПолучитьЭлементы();
Для каждого Потомок из Потомки Цикл
ВсеИстина = ВсеИстина И (Потомок.Пометка = 1);
НеВсеЛожь = НеВсеЛожь ИЛИ Булево(Потомок.Пометка);
КонецЦикла;
Если ВсеИстина Тогда
Родитель.Пометка = 1;
ИначеЕсли НеВсеЛожь Тогда
Родитель.Пометка = 2;
Иначе
Родитель.Пометка = 0;
КонецЕсли;
ПроставитьПометкиВверх(Родитель);
КонецЕсли;
КонецПроцедуры
ПоказатьПрикрепленные файлы:
ДеревоСФлажками.epf
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот