Имя: Пароль:
1C
 
Флажок с тремя состояниями для дерева значений
0 Wefast
 
30.07.15
10:44
Есть дерево значений выведенное на форму.

Создал колонку с типом число. Поместил на форму - указал тип Флажок, указал что имеет три состояния.

Воспользовался найденным вариантом

Процедура ДеревоПриИзмененииФлажка(Элемент, Колонка)
  ТекущаяСтрока = Элемент.ТекущаяСтрока;    // Так не работает, получается только Элементы.Дерево.ТекущиеДанные

  Если ТекущаяСтрока.Пометка = 2 Тогда
     ТекущаяСтрока.Пометка = 0;
  КонецЕсли;

  УстановкаФлажков(ТекущаяСтрока, ТекущаяСтрока.Пометка);

  Пока ТекущаяСтрока.Родитель <> Неопределено Цикл
     ТекущаяСтрока.Родитель.Пометка =
                      ?(УстановленноДляВсех(ТекущаяСтрока), ТекущаяСтрока.Пометка, 2);
     ТекущаяСтрока = ТекущаяСтрока.Родитель;
  КонецЦикла;

КонецПроцедуры


Процедура УстановкаФлажков(ТекущаяСтрока,Значение)

    Для Каждого Стр Из ТекущаяСтрока.Строки Цикл   // НУ И ВСЕ, так не работает, никак не найду через отладчик как мне строки то перебрать в дереве.
       Стр.Пометка = Значение;
       УстановкаФлажков(Стр, Стр.Пометка);
    КонецЦикла;

КонецПроцедуры

Функция УстановленноДляВсех(Строка)
   Для Каждого Стр Из Строка.Родитель.Строки Цикл
      Если Стр.Пометка <> Строка.Пометка Тогда
         Возврат Ложь;
      КонецЕсли;
   КонецЦикла;
   Возврат Истина;

КонецФункции