Имя: Пароль:
1C
 
Программное добавление колонки дерева значений в расширении
0 dimm7310
 
26.01.24
14:33
На форме обработки есть дерево значений ЗаданияНаПеревозкуПланируемые (реквизит формы)

Нужно добавить колонку для ДЗ

    ДЗ = ДанныеФормыВЗначение(ЗаданияНаПеревозкуПланируемые, Тип("ДеревоЗначений"));
    ДЗ.Колонки.Добавить("НомерРаспоряжения", Новый ОписаниеТипов("Строка"));
    ЗначениеВДанныеФормы(ДЗ, ЗаданияНаПеревозкуПланируемые);

    МассивДобавляемыхРекизитов = Новый Массив;
    МассивДобавляемыхРекизитов.Добавить(Новый РеквизитФормы("НомерРаспоряжения",Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(11)),"ЗаданияНаПеревозкуПланируемые.НомерРаспоряжения","Номер Распоряжения"));    
    ЭтаФорма.ИзменитьРеквизиты(МассивДобавляемыхРекизитов);
    
    НовыйЭлемент = Этаформа.Элементы.Вставить("НомерРаспоряжения",Тип("ПолеФормы"),ЭтаФорма.Элементы.РаспоряженияНаДоставку);
    НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;      
    НовыйЭлемент.ПутьКДанным = "НомерРаспоряжения";

    НовыйЭлемент = Этаформа.Элементы.Вставить("НомерРаспоряжения",Тип("ПолеФормы"),ЭтаФорма.Элементы.РаспоряженияНаДоставку);
    НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;      
    НовыйЭлемент.ПутьКДанным = "НомерРаспоряжения";

Получаю ошибку : "Недопустимый путь к реквизиту. Путь: "ЗаданияНаПеревозкуПланируемые.НомерРаспоряжения""

Что не так ?
1 dimm7310
 
26.01.24
14:36
"  НовыйЭлемент = Этаформа.Элементы.Вставить("НомерРаспоряжения",Тип("ПолеФормы"),ЭтаФорма.Элементы.РаспоряженияНаДоставку);
    НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;      
    НовыйЭлемент.ПутьКДанным = "НомерРаспоряжения";"

- это в фрагмент в коде один, скопировалось в окно сообщения дважды
2 Волшебник
 
26.01.24
14:38
РеквизитФормы (FormAttribute)
конструктор по умолчанию
Путь к создаваемому реквизиту. Не включает имя реквизита.
3 dimm7310
 
26.01.24
14:47
(2) Спасибо, исправил, но получил другую ошибку

    ДЗ = ДанныеФормыВЗначение(ЗаданияНаПеревозкуПланируемые, Тип("ДеревоЗначений"));
    ДЗ.Колонки.Добавить("НомерРаспоряжения", Новый ОписаниеТипов("Строка"));
    ЗначениеВДанныеФормы(ДЗ, ЗаданияНаПеревозкуПланируемые);

    МассивДобавляемыхРекизитов = Новый Массив;
    МассивДобавляемыхРекизитов.Добавить(Новый РеквизитФормы("аНомерРаспоряжения",Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(11)),"ЗаданияНаПеревозкуПланируемые","Номер Распоряжения"));    
    ЭтаФорма.ИзменитьРеквизиты(МассивДобавляемыхРекизитов);
    
    НовыйЭлемент = Этаформа.Элементы.Вставить("аНомерРаспоряжения",Тип("ПолеФормы"),ЭтаФорма.Элементы.РаспоряженияНаДоставку);
    НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;      
    НовыйЭлемент.ПутьКДанным = "аНомерРаспоряжения";

Ошибка Недопустимое значение: НовыйЭлемент.ПутьКДанным = "аНомерРаспоряжения";
4 Волшебник
 
26.01.24
14:49
(3) Вы что там курите?
5 dimm7310
 
26.01.24
14:51
(4) видимо туплю под вечер пятницы.  Ткните пжл где не правильно
6 dimm7310
 
26.01.24
15:04
вернее: как правильно указать НовыйЭлемент.ПутьКДанным = "аНомерРаспоряжения";
7 dimm7310
 
26.01.24
15:15
ДЗ = ДанныеФормыВЗначение(ЗаданияНаПеревозкуПланируемые, Тип("ДеревоЗначений"));
    ДЗ.Колонки.Добавить("аНомерРаспоряжения", Новый ОписаниеТипов("Строка"));
    ЗначениеВДанныеФормы(ДЗ, ЗаданияНаПеревозкуПланируемые);

    МассивДобавляемыхРекизитов = Новый Массив;
    МассивДобавляемыхРекизитов.Добавить(Новый РеквизитФормы("аНомерРаспоряжения",Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(11)),"ЗаданияНаПеревозкуПланируемые","Номер Распоряжения"));    
    ЭтаФорма.ИзменитьРеквизиты(МассивДобавляемыхРекизитов);
    
    НовыйЭлемент = Этаформа.Элементы.Вставить("аНомерРаспоряжения",Тип("ПолеФормы"),ЭтаФорма.Элементы.РаспоряженияНаДоставку);
    НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;      
    НовыйЭлемент.ПутьКДанным = "аНомерРаспоряжения";

Ошибка Недопустимое значение: НовыйЭлемент.ПутьКДанным = "аНомерРаспоряжения";
8 vicof
 
26.01.24
15:22
НовыйЭлемент.ПутьКДанным = "ЗаданияНаПеревозкуПланируемые.аНомерРаспоряжения"
9 dimm7310
 
26.01.24
15:26
вопрос снят, Спасибо Волшебник
10 dimm7310
 
26.01.24
15:27
(8) Спасибо, да.  Хотя я так пробовал перед этим, только реквизит тогда назывался НомерРаспоряжения (без "а"), когда переименовал везде аНомерРаспоряжения и прописал ПутьКДанным = "ЗаданияНаПеревозкуПланируемые.аНомерРаспоряжения" - заработало
11 Волшебник
 
26.01.24
15:44
	// ДанныеФормы в ДеревоЗначений
	ДЗ = ДанныеФормыВЗначение(Контрагенты, Тип("ДеревоЗначений"));
	
	// колонка дерева значений
	Если ДЗ.Колонки.Найти("ИНН") = Неопределено Тогда
		ДЗ.Колонки.Добавить("ИНН", Новый ОписаниеТипов("Строка"));
	КонецЕсли;
		
	// реквизит формы, связанный с колонкой	
	НовыеРеквизиты = Новый Массив;
	ТипСтрока = Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(10));
	ОписаниеРеквизитаИНН = Новый РеквизитФормы("ИНН",ТипСтрока,"Контрагенты","ИНН");
	НовыеРеквизиты.Добавить(ОписаниеРеквизитаИНН);    
	ЭтаФорма.ИзменитьРеквизиты(НовыеРеквизиты);	
	
	// элемент формы типа "Поле", связанный с реквизитом формы
	ПолеИНН = Элементы.Вставить("ИНН", Тип("ПолеФормы"), ЭтаФорма.Элементы.Контрагенты);
	ПолеИНН.Вид = ВидПоляФормы.ПолеВвода;
	ПолеИНН.ПутьКДанным = "Контрагенты.ИНН";
	ПолеИНН.Заголовок = "ИНН";  
	
	// строка дерева значений
	НовСтрока = ДЗ.Строки.Добавить();
	НовСтрока.Код = "1"; 
	НовСтрока.Наименование = "Ромашка"; 
	НовСтрока.ИНН = "1234567890"; 
	
	// ДеревоЗначений в ДанныеФормы 
	ЗначениеВДанныеФормы(ДЗ, Контрагенты);