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


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

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

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

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