Управляемая форма 1С 8.2 – работа с деревом значений и таблицей значений. Часть III (Реализация трехпозиционного флажка)
&НаКлиенте Процедура ФлажокПриИзменении(Элемент) ИДТекущейСтроки = Элементы["Дерево"].ТекущаяСтрока; Если ИДТекущейСтроки <> Неопределено Тогда ЭлементКоллекции = ЭтаФорма["Дерево"].НайтиПоИдентификатору( ИДТекущейСтроки); Если ЭлементКоллекции.Пометка = 2 Тогда ЭлементКоллекции.Пометка = 0; КонецЕсли; УстановкаФлажков(ЭлементКоллекции, ЭлементКоллекции.Пометка); Родитель = ЭлементКоллекции.ПолучитьРодителя(); Пока Родитель <> Неопределено Цикл Родитель.Пометка = ?(УстановленноДляВсех(ЭлементКоллекции), ЭлементКоллекции.Пометка, 2); ЭлементКоллекции = Родитель; Родитель = ЭлементКоллекции.ПолучитьРодителя(); КонецЦикла; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура УстановкаФлажков(ЭлементКоллекции, ЗначениеПометки) ПодчинЭлементы = ЭлементКоллекции.ПолучитьЭлементы(); Для Каждого ТекЭлемент Из ПодчинЭлементы Цикл ТекЭлемент.Пометка = ЗначениеПометки; УстановкаФлажков(ТекЭлемент, ТекЭлемент.Пометка); КонецЦикла; КонецПроцедуры &НаКлиенте Функция УстановленноДляВсех(ЭлементКоллекции) СоседниеЭлементы = ЭлементКоллекции.ПолучитьРодителя().ПолучитьЭлементы(); Для Каждого ТекЭлемент Из СоседниеЭлементы Цикл Если ТекЭлемент.Пометка <> ЭлементКоллекции.Пометка Тогда Возврат Ложь; КонецЕсли; КонецЦикла; Возврат Истина; КонецФункции
Если публикация помогла Вам справится с проблемой, решить задачу или расширить свои знания - поддержите автора.
Комментарии:
Оставить комментарий
Блин, спасибо! помогло
только флажок в упр. форме все равно не принимает третьего состояния! Либо включен, либо выключен 🙁
Разобрался) спасибо
Те що ви робите заслуговує великої похвали.
Дуже знадобилось.
Дякую.
Молодці!
Автору, спасибо! Очень пригодилось! Так держать!
спасибо за статью.