|
УФ + Дерево + Флажки, программное изменение флажков в подчиненных строках
| ☑ |
0
bacila
26.09.14
✎
14:40
|
Добрый день , трабл следующий , делаю дерево значений заполняю, в нем есть колонка с булевом (флажок), при изменении флажка на верхнем уровне хотелось бы заполнить флажки нижнего уровня, если делаем значение в реквизит и потом обратно, то дерево отрисовывается заново , ну и получается свернуто, а хотелось бы чтоб оно оставалась таким какое было в момент изменения флажка. Есть ли у кого нибудь соображения по этому поводу?
|
|
1
Зойч
26.09.14
✎
14:44
|
Заполняй флажки в без проебразования
|
|
2
Зойч
26.09.14
✎
14:44
|
Для каждого Строка1 из Дерево.ПолучитьЭлементы() Цикл
КонецЦикла
|
|
3
Балоун
26.09.14
✎
14:44
|
интересно, а если я тут сейчас как начну делиться обработками ;)
Почему на мисте нельзя обмениваться обработками?
|
|
4
Балоун
26.09.14
✎
14:46
|
не знаю, насколько в тему
&НаКлиенте
Процедура ПродажиПометкаПриИзменении(Элемент)
СтрокиДерева=Элемент.Родитель.ТекущиеДанные.ПолучитьЭлементы();
Уровень=УровеньСтроки(Элемент.Родитель.ТекущиеДанные);
СтараяПометка=(Элемент.Родитель.ТекущиеДанные.Пометка+2)%3;
Если Уровень=4 Тогда
Элемент.Родитель.ТекущиеДанные.Пометка=СтараяПометка;
Возврат;
КонецЕсли;
Элемент.Родитель.ТекущиеДанные.Пометка=1-СтараяПометка;
Для Каждого ТекСтрока Из СтрокиДерева Цикл ;
ПроставитьГалкиПотомкам(ТекСтрока, Элемент.Родитель.ТекущиеДанные.Пометка);
КонецЦикла;
ПроставитьГалкиРодителям(Элемент.Родитель.ТекущиеДанные.ПолучитьРодителя());
КонецПроцедуры
&НаКлиенте
Процедура ПроставитьГалкиПотомкам(СтрокаДерева, Галка)
СтрокаДерева.Пометка=Галка;
Для Каждого ТекСтрока Из СтрокаДерева.ПолучитьЭлементы() Цикл
Если ТекСтрока.Пометка<>Галка Тогда
ПроставитьГалкиПотомкам(ТекСтрока, Галка);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ПроставитьГалкиРодителям(Родитель)
Если Родитель=Неопределено Тогда
Возврат;
КонецЕсли;
Соседи=Родитель.ПолучитьЭлементы();
с=0;
Для Каждого ТекСтрока Из Соседи Цикл
с=с+ТекСтрока.Пометка;
КонецЦикла;
НоваяПометка=?(с=Соседи.Количество(), 1, ?(с, 2, 0));
Если Родитель.Пометка<>НоваяПометка Тогда
Родитель.Пометка=НоваяПометка;
ПроставитьГалкиРодителям(Родитель.ПолучитьРодителя());
КонецЕсли;
КонецПроцедуры
|
|
5
bacila
26.09.14
✎
14:48
|
Спасибо кто откликнулся ))) щас опробую все варианты)
|
|
6
bacila
26.09.14
✎
15:14
|
(4) Прям то что надо, код правда не совсем понятен мне был ) твой но в нем было все что надо, спасибо
|
|
7
Ерепень
26.09.14
✎
15:16
|
(6) там флажки трёхцветные
|
|
8
bacila
26.09.14
✎
15:23
|
(7) вон оно че )
|
|
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой