Имя: Пароль:
1C
 
Программно развернуть дерево значений в табличном поле на обычных формах
,
0 Базис
 
naïve
04.02.22
13:39
Можно?
1 acht
 
04.02.22
13:40
Можно.
2 ДенисЧ
 
04.02.22
13:41
Я не против.
3 acht
 
04.02.22
13:43
А вот мнения самого дерева никогда никто не спрашивает =(
Согласно ли оно на это? Не находится ли оно под принуждением?
4 Йохохо
 
04.02.22
13:48
(3) так дерево, девочка и корабль "оно", "оно" вертят как хотят
5 Базис
 
naïve
04.02.22
14:43
ОФ, УПП, внешний отчёт, на форме есть табличное поле "КодыМаркировкиОстатков", тип значения "ДеревоЗначений".

ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.КодыМаркировкиОстатков;
Попытка
    ОбъектShell = Новый COMОбъект("Wscript.Shell");
    ОбъектShell.SendKeys("^+" + Символ(107)); // Символ(107) - "-" на нумпад
Исключение
    Сообщить(ОписаниеОшибки());
КонецПопытки;

Код отрабатывает, текущий элемент действительно становится ТабличноеПоле, но не разворачивается и не сворачивается. С клавиатуры это работает, причём именно тогда, когда курсор стоит на табличном поле.
6 ДенисЧ
 
04.02.22
14:51
А что
ТаблицаФормы (FormTable)
Развернуть (Expand)
Синтаксис:
Развернуть(<ИдентификаторСтроки>, <СПодчиненными>)
Параметры:
<ИдентификаторСтроки> (обязательный)
Тип: Произвольный.
Идентификатор строки таблицы.
<СПодчиненными> (необязательный)
Тип: Булево.
Определяет необходимость раскрытия подчиненных узлов. Истина - раскрывать подчиненные узлы, Ложь - не раскрывать подчиненные узлы.
Значение по умолчанию: Ложь.
Описание:
Разворачивает узел в указанной строке дерева.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).
Примечание:
Если таблица не отображается на форме, если в таблице нет строк или передана строка, отсутствующая в таблице, то будет сгенерировано исключение.
Использование в версии:
Доступен, начиная с версии 8.2.
Описание изменено в версии 8.3.18.
     Методическая информация

Не устраивает?
7 TormozIT
 
гуру
04.02.22
15:16
Нашел в ИР.ирОбщий

// Изменяет свернутость всех строк табличного поля дерева значений.
//
// Параметры:
//  Дерево   – ТабличноеПоле – связанное с деревом значений и включенным режимом "Дерево";
//  Свернуть – Булево, *Истина - новое значение свернутости.
//
Процедура ДеревоЗначенийСвернутьРазвернутьЛкс(Дерево, Свернуть = Ложь, Строки = Неопределено, СПодчиненными = Истина) Экспорт
    
    Если Строки = Неопределено Тогда
        Строки = Дерево.Значение.Строки;
    КонецЕсли;
    Для Каждого СтрокаДерева Из Строки Цикл
        Если Истина
            И Свернуть
            И Дерево.Развернут(СтрокаДерева)
        Тогда
            Дерево.Свернуть(СтрокаДерева);
        ИначеЕсли Истина
            И Не Свернуть
            И Не Дерево.Развернут(СтрокаДерева)
        Тогда
            Дерево.Развернуть(СтрокаДерева, СПодчиненными);
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры
8 TormozIT
 
гуру
04.02.22
15:19
(7) Там правда только верхний по умолчанию обрабатывается. Но быть может автор и сам дописать немного кода сможет.
9 TormozIT
 
гуру
04.02.22
15:20
(8) + верхний уровень при сворачивании имел ввиду. А автору похоже только разворачивания хватит.
10 Базис
 
naïve
04.02.22
15:48
(8) Спасибо за код, СПАСИБИЩЕ за ИР.
11 Веселый собака
 
04.02.22
16:10
(7) всегда был против кода.
в (6) достаточно для понимания.
12 Базис
 
naïve
04.02.22
16:18
(11) Он - автор ИР. А ты?
13 hhhh
 
04.02.22
17:37
(12) тоже программист, наверно.
14 acht
 
04.02.22
18:03
(12) Все верно, с маленькой буквы.
15 ДенисЧ
 
04.02.22
18:15
(14) И сколько у тебя ир? И почему ты всех дочерей одним именем называешь? )))
16 acht
 
04.02.22
18:17
(15) Из той же серии - "ты вообще все делешь для галочки" =)
17 ДенисЧ
 
04.02.22
18:40
(16) Ну, для одной галочки я одно время много чего делал ))