Изменение флаг дерева значений на УФ. Значения родителей и потомков.

1. Aleksandr_prof 195 04.08.23 14:57 Сейчас в теме
Сразу вопрос. Есть ли аналог данного функционала БСП, а может быть и в самой платформе что-то встроено?
Функционал: проставлять отметки дерева значений на управляемой форме вниз и вверх. Сейчас реализовано нижеописанным образом, всё устраивает, кроме того, что этот код надо использовать часто, поэтому и интересует, может быть он уже где-то реализован.

На форме есть дерево, у него есть колонка Флаг, тип число, длина 1. Обработчик при изменении флага:

&НаКлиенте
Процедура МоеДеревоФлагПриИзменении(Элемент)
	
	ТекущиеДанные = Элементы.МоеДерево.ТекущиеДанные;
	ТекущиеДанные.Флаг = ТекущиеДанные.Флаг % 2;
	ПроставитьПометкиВниз(ТекущиеДанные);
	ПроставитьПометкиВверх(ТекущиеДанные);
	
КонецПроцедуры

&НаКлиенте
Процедура ПроставитьПометкиВниз(ТекущиеДанные)
	
	Потомки = ТекущиеДанные.ПолучитьЭлементы();
	Значение = ТекущиеДанные.Флаг;
	Для каждого Потомок Из Потомки Цикл
		Потомок.Флаг = Значение;
		Попытка
			Потомок.ФлагЭлементов = Значение;
		Исключение
		КонецПопытки;
		ПроставитьПометкиВниз(Потомок);
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура ПроставитьПометкиВверх(ТекущиеДанные)
	
	Родитель = ТекущиеДанные.ПолучитьРодителя();
	Если Родитель <> Неопределено Тогда
		ВсеИстина = Истина;
		НеВсеЛожь = Ложь;
		Потомки = Родитель.ПолучитьЭлементы();
		Для каждого Потомок из Потомки Цикл
			ВсеИстина = ВсеИстина И (Потомок.Флаг = 1);
			НеВсеЛожь = НеВсеЛожь Или Булево(Потомок.Флаг);
		КонецЦикла;
		Если ВсеИстина Тогда
			Родитель.Флаг = 1;
		ИначеЕсли НеВсеЛожь Тогда
			Родитель.Флаг = 2;
		Иначе
			Родитель.Флаг = 0;
		КонецЕсли;
		ПроставитьПометкиВверх(Родитель);
	КонецЕсли;
	
КонецПроцедуры
Показать
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 35 04.08.23 15:07 Сейчас в теме
3. Aleksandr_prof 195 04.08.23 15:13 Сейчас в теме
(2) Чтобы не хранить велосипеды в модулях👌
4. Sashares 35 04.08.23 15:45 Сейчас в теме
(3)В смысле в коде
Попытка
            Потомок.ФлагЭлементов = Значение;
        Исключение
        КонецПопытки;
7. Aleksandr_prof 195 04.08.23 16:59 Сейчас в теме
(4) ой, это лишнее, это прицепилось от другого, забыл удалить😬
5. newlogin1 04.08.23 16:37 Сейчас в теме
(1) Сомневаюсь, что есть что-то для дерева, самое близкое что находил - такое ОбщегоНазначенияУТКлиентСервер.ЗаполнитьЗначенияСвойствКоллекции но это не для дерева, а для строк
6. newlogin1 04.08.23 16:47 Сейчас в теме
(5)Быстрый поиск по ERP дал только вот такую функцию ФинансоваяОтчетностьКлиент.ПодчиненныеСтрокиЭлементаФормы(), но она вызывается только из одного места. Не думаю, что в ближайших релизах появится описываемая вами процедура.
Оставьте свое сообщение

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