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


1С:Предприятие :: 1С:Предприятие 8 общая

Нужна помощь с деревом значений

Нужна помощь с деревом значений
Я
   Dev
 
29.10.18 - 20:43
Всем привет, помогите разобраться не могу понять, ругается на этом месте
ИзменитьРеквизиты(МассивДобавляемыхРеквизитов), это происходит после перезаполнения дерева значений, при программном его создании, я полностью удаляю дерево из формы методом Элементы.Удалить(Элементы.Найти("Дерево")) но мне все равно пишет что не уникальное имя реквизита "Дерево", не знаю что делать
 
 
   palsergeich
 
1 - 29.10.18 - 20:45
Элементы.Удалить(Элементы.Найти("Дерево") этим вы удаляете из коллекции Элементы
ИзменитьРеквизиты(МассивДобавляемыхРеквизитов) Этим в работаете с коллекцией РЕКВИЗИТЫ.
Удалите дерево из коллекции РЕКВИЗИТЫ
   palsergeich
 
2 - 29.10.18 - 20:46
ИзменитьРеквизиты(<ДобавляемыеРеквизиты>, <УдаляемыеРеквизиты>)
Изменяет структуру реквизитов формы.
Сначала выполняется удаление реквизитов. Таким образом массивы добавляемых и удаляемых реквизитов могут содержать реквизиты с одинаковым путём.
Вам нужно в процедуру ИзменитьРеквизиты передать 2ой параметр
   Dev
 
3 - 29.10.18 - 20:48
Я пробовал тоже туда массив передавать он ругается на него
   palsergeich
 
4 - 29.10.18 - 20:50
(3) А путь к реквизиту прописан верно?
   Dev
 
5 - 29.10.18 - 20:50
УдаляемыеРеквизиты = Новый Массив;
    Реквизиты Для Удаления = Получить Реквизиты(Элементы.Дерево.ПутьКДанным);
    Для Каждого Реквизит Удаления Из Реквизиты Для Удаления Цикл
        УдаляемыеРеквизиты.Добавить("Дерево"+"."+РеквизитУдаления.Имя);
        //// Удаляем элементы формы

        Элементы.Удалить(Элементы[Реквизит Удаления.Имя]);
    КонецЦикла;


И потом вставлял массив Удаляемые реквизиты во второй параметр
   palsergeich
 
6 - 29.10.18 - 20:52
(5) Вы удаляете колонки дерева, но не само дерево же
   Dev
 
7 - 29.10.18 - 20:53
Ну это я написал про реквизиты, а дерево я так удалял Элементы.Удалить(Элементы.Найти("Дерево"))
   palsergeich
 
8 - 29.10.18 - 20:55
(7) На форме есть 2 коллекции - Реквизиты и Элементы.
Они могут быть связаны, а могут нет.
ИзменитьРеквизиты - работает с коллекцией Реквизиты, ей совершенно все равно на коллекцию Элементы
   Dev
 
9 - 29.10.18 - 20:55
(4) Да конечно правильно, но только он ругается получается на Дерево, а это же не реквизит
   palsergeich
 
10 - 29.10.18 - 20:58
происходит после перезаполнения дерева значений, при программном его создании из шапки
То есть Вы каждый раз создаете реквизит дерево (что там творится в элементах нас не интересует) и в первый раз оно создается програмно без проблем, во второй он не может добавить реквизит с свуществующим именем. В чем проблема? я выше уже описал как
 
 Рекламное место пустует
   hhhh
 
11 - 29.10.18 - 20:58
(9) реквизит
   palsergeich
 
12 - 29.10.18 - 21:05
Странно, из темы сообщения пропали, хотя были по теме и без оффтопа(
   Dev
 
13 - 29.10.18 - 21:05
(8) Удалить реквизит я могу только с помощью этой функции чтоли ? ИзменитьРеквизиты(<ДобавляемыеРеквизиты>, <УдаляемыеРеквизиты>)
   palsergeich
 
14 - 29.10.18 - 21:06
(13) только этой
   palsergeich
 
15 - 29.10.18 - 21:06
(13) Причем только програмно добавленные реквизиты
   Dev
 
16 - 29.10.18 - 22:17
(15) А если я тот же массив реквизитов удаляю что и добавляю, это должно работать ?
   palsergeich
 
17 - 29.10.18 - 22:23
(16) да, сначала удаляется потом добавляется. См (2)
   Dev
 
18 - 29.10.18 - 22:29
Недопустимый путь пишет ПутьКреквизиту
   Dev
 
19 - 29.10.18 - 22:30
МассивДобавляемыхРеквизитов = Новый Массив;
    МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("Дерево", Новый ОписаниеТипов("ДеревоЗначений")));
    Для Каждого Колонка Из ДеревоОбъект.Колонки Цикл
        МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "Дерево"));
    КонецЦикла;
   Dev
 
20 - 29.10.18 - 22:30
И этот же массив ставлю вторым параметром
   palsergeich
 
21 - 29.10.18 - 22:33
Массивы должны быть разные по наполнению

<ДобавляемыеРеквизиты> (необязательный)

Тип: Массив. 
Массив, содержащий объекты типа РеквизитФормы.
Добавлять можно реквизиты верхнего уровня и вложенные реквизиты, являющиеся колонками.
К добавленным реквизитам верхнего уровня из модуля можно обращаться только с помощью конструкции ЭтотОбъект.<Имя реквизита>.
<УдаляемыеРеквизиты> (необязательный)

Тип: Массив.
Массив, содержащий строки, описывающие пути к удаляемым реквизитам.
Удалять можно только ранее программно добавленные реквизиты.
   Dev
 
22 - 30.10.18 - 07:36
Да Дерево находится у меня по этому пути ЭтотОбъект.Дерево, теперь как мне его в массив добавить, чтобы мне ошибка не вываливалась, что не найден путь или еще что то ? Там нужны же строки


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует