Вход | Регистрация
 

Дерево значений.

Дерево значений.
Я
   antihacker
 
24.12.18 - 12:47
Всем привет !
Вот код.


   тДерево = РеквизитФормыВЗначение("ДЗ_РезАнализа");

   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
   | Бюджеты.Ссылка КАК ДатаАнализа
   //| Бюджеты.Ссылка КАК Колонка2
   |ИЗ
   | Справочник.Бюджеты КАК Бюджеты
    |УПОРЯДОЧИТЬ ПО
    |    ДатаАнализа ИЕРАРХИЯ";
  
   Выгрузка = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);

   Выгрузка1 = Запрос.Выполнить().Выгрузить();
  
   тДерево = Выгрузка;

   ЗначениеВРеквизитФормы(тДерево, "ДЗ_РезАнализа");

Все работает без ошибок. Но почему то не вижу результаты. А если добавить колонкий в ручную, то вижу результаты. Но так не могу, так колонки в дерево значений добавляются динамический.
 
 
   antihacker
 
1 - 24.12.18 - 13:14
Или как удалить все колонки дерево значений ?
   antihacker
 
2 - 24.12.18 - 13:47
Аууу не уж то ни кто не знает ?
   Волшебник
 
3 - 24.12.18 - 13:49
(2) пишется "неужто" и "никто"
   SeriyP
 
4 - 24.12.18 - 13:53
(0) СоздатьКолонки?
   antihacker
 
5 - 24.12.18 - 13:59
Колонка создается без проблем.
// 1. получаем дерево как програмный объект

ДеревоОбъект = РеквизитФормыВЗначение("ДЗ_РезАнализа");

// 2. добавляем колонку

ДеревоОбъект.Колонки.Добавить("ДатаАнализа", Новый ОписаниеТипов("Строка"));

// 3. создаем РЕКВИЗИТ КОЛОНКИ (невидимая часть, справа в редакторе форм)

МассивДобавляемыхРеквизитов = Новый Массив;

// реквизит принадлежит дереву

МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("ДатаАнализа", Новый ОписаниеТипов("СправочникСсылка.Бюджеты"), "ДЗ_РезАнализа"));

// добавляем реквизит в форму (невидимая часть, справа в редакторе форм)

ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);

// 4. заполняем дерево (реквизит формы) занчением

ЗначениеВРеквизитФормы(ДеревоОбъект, "ДЗ_РезАнализа");

// 5. добавляем НА ФОРМУ (видимая часть, слева в редакторе форм)

// назовем ДеревоУзел, принадлежит элементу дерева, связан с добавленной колонкой «Узел»
НовыйЭлемент = Элементы.Добавить("ДеревоУзел", Тип("ПолеФормы"), Элементы.ДЗ_РезАнализа);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.ПутьКДанным = "ДЗ_РезАнализа.ДатаАнализа";

Но потом нужно будет удалить все колонки и добавить новые динамические колонки. По этому спрашивал. хотя бы как можно удалить все колонки ?
   antihacker
 
6 - 24.12.18 - 14:53
Мдааааа.
   antihacker
 
7 - 24.12.18 - 15:40
Пробовал вот так.
Ошибку не выдает, но и не удалеят

ДеревоОбъект1 = РеквизитФормыВЗначение("ДЗ_РезАнализа");

// 3. создаем РЕКВИЗИТ КОЛОНКИ (невидимая часть, справа в редакторе форм)

МассивУдаляемыхРеквизитов = Новый Массив;

// реквизит принадлежит дереву

Для каждого текколонка Из ДеревоОбъект1.Колонки Цикл
МассивУдаляемыхРеквизитов.Добавить("ДЗ_РезАнализа." +текколонка.имя);
КонецЦикла;

////ДеревоОбъект.Строки.Очистить();


попытка
ИзменитьРеквизиты(,МассивУдаляемыхРеквизитов);
исключение
сообщить(Описаниеошибки());
конецпопытки;

ЗначениеВРеквизитФормы(ДеревоОбъект1, "ДЗ_РезАнализа");
   antihacker
 
8 - 25.12.18 - 07:14
// 1. получаем дерево как програмный объект

 
ДеревоОбъект1 = РеквизитФормыВЗначение("ДЗ_РезАнализа");


// 3. создаем РЕКВИЗИТ КОЛОНКИ (невидимая часть, справа в редакторе форм)

МассивУдаляемыхРеквизитов = Новый Массив;

// реквизит принадлежит дереву

Для каждого текколонка Из ДеревоОбъект1.Колонки Цикл
МассивУдаляемыхРеквизитов.Добавить("ДЗ_РезАнализа." +текколонка.имя);
КонецЦикла;

попытка
ИзменитьРеквизиты(,МассивУдаляемыхРеквизитов);
исключение
сообщить(Описаниеошибки());
конецпопытки;

ЗначениеВРеквизитФормы(ДеревоОбъект1, "ДЗ_РезАнализа");

Элементы.ДЗ_РезАнализа.Обновить();
 
// 1. получаем дерево как програмный объект

ДеревоОбъект = РеквизитФормыВЗначение("ДЗ_РезАнализа");

// 2. добавляем колонку

ДеревоОбъект.Колонки.Добавить("ДатаАнализа", Новый ОписаниеТипов("Строка"));

// 3. создаем РЕКВИЗИТ КОЛОНКИ (невидимая часть, справа в редакторе форм)

МассивДобавляемыхРеквизитов = Новый Массив;

// реквизит принадлежит дереву

МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("ДатаАнализа", Новый ОписаниеТипов("СправочникСсылка.Бюджеты"), "ДЗ_РезАнализа"));

// добавляем реквизит в форму (невидимая часть, справа в редакторе форм)

ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);

// 4. заполняем дерево (реквизит формы) занчением

ЗначениеВРеквизитФормы(ДеревоОбъект, "ДЗ_РезАнализа");

// 5. добавляем НА ФОРМУ (видимая часть, слева в редакторе форм)

// назовем ДеревоУзел, принадлежит элементу дерева, связан с добавленной колонкой «Узел»

НовыйЭлемент = Элементы.Добавить("ДеревоУзел", Тип("ПолеФормы"), Элементы.ДЗ_РезАнализа);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.ПутьКДанным = "ДЗ_РезАнализа.ДатаАнализа";
 
  
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
   | Бюджеты.Ссылка КАК ДатаАнализа
  //| Бюджеты.Ссылка КАК Колонка2

   |ИЗ
   | Справочник.Бюджеты КАК Бюджеты
   |УПОРЯДОЧИТЬ ПО
   |    ДатаАнализа ИЕРАРХИЯ";
   
   тДерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); 
 
    ЗначениеВРеквизитФормы(тДерево, "ДЗ_РезАнализа");
 
    
   
   для каждого текзнч из тДерево.Строки Цикл
    сообщить(текзнч.ДатаАнализа);   
   конеццикла;

Вот так работает.

Здесь
ДеревоОбъект1 = РеквизитФормыВЗначение("ДЗ_РезАнализа");


// 3. создаем РЕКВИЗИТ КОЛОНКИ (невидимая часть, справа в редакторе форм)

МассивУдаляемыхРеквизитов = Новый Массив;

// реквизит принадлежит дереву

Для каждого текколонка Из ДеревоОбъект1.Колонки Цикл
МассивУдаляемыхРеквизитов.Добавить("ДЗ_РезАнализа." +текколонка.имя);
КонецЦикла;

попытка
ИзменитьРеквизиты(,МассивУдаляемыхРеквизитов);
исключение
сообщить(Описаниеошибки());
конецпопытки;

Удаляю реквизиты колонок.
Но теперь при повторном нажатие ругаться на это 

НовыйЭлемент = Элементы.Добавить("ДеревоУзел", Тип("ПолеФормы"), Элементы.ДЗ_РезАнализа);


Оно и понятно. Реквизит удалить то  я удалил, но элемент на форме не удалил. Как удалить ? Не получается.
   antihacker
 
9 - 25.12.18 - 08:47
Тема закрыта.

Решил вот так.
КолЭлемент = Элементы.ФДЗ_РезАнализа.ПодчиненныеЭлементы.Количество();

    Если КолЭлемент > 0 Тогда
        МассивУдаления = Новый Массив;
        МассивПоля = Новый Массив;
        Для Каждого УдаляемыйЭлемент Из Элементы.ФДЗ_РезАнализа.ПодчиненныеЭлементы Цикл
            ЭлементУдаления = УдаляемыйЭлемент.ПутьКДанным;
            ПолеУдаляемогоЭлемента = Элементы.ФДЗ_РезАнализа.ПодчиненныеЭлементы.Найти(УдаляемыйЭлемент.ПутьКДанным);
            МассивПоля.Добавить(УдаляемыйЭлемент);
            МассивУдаления.Добавить(ЭлементУдаления);
        КонецЦикла;
        Для Каждого Стр Из Массивполя Цикл 
            Элементы.Удалить(Стр);
        КонецЦикла;
        ИзменитьРеквизиты(,МассивУдаления);
        МассивУдаления.Очистить();
        //СписокРеквизитов.Очистить();

    КонецЕсли;

Список тем форума
Рекламное место пустует  Рекламное место пустует
Прочитай, хотя бы, Митичкина "Разработка в системе 1С:Предприятие 8". Волшебник
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.