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