ДеревоЗначений в реквизит формы

1. burni4 87 25.04.18 11:48 Сейчас в теме
Есть реквизит на форме "ДеревоЗначений" с типом "ДеревоЗначений" и колонками "имя" и "значение", получаю в переменную ДеревоЗнч разные значения с типом "ДеревоЗначений", как правильно реализовать копирование из переменной в реквизит формы?
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Boneman 298 25.04.18 11:59 Сейчас в теме
(1)
на форме "ДеревоЗначений" с типом "ДеревоЗначений" и колонками "имя" и "значение", получаю в переменную ДеревоЗнч разные зн

на сервере выполняешь
ЗначениеВРеквизитФормы(ДеревоЗапросов, "Отчет.ДеревоЗапросов");	


естественно, колонки исходного дерева и реквизита формы должны совпадать.
3. burni4 87 25.04.18 12:02 Сейчас в теме
(2)
колонки исходного дерева и реквизита формы должны совпадать

в том то и дело что они всегда разные
4. herfis 498 25.04.18 12:07 Сейчас в теме
(3) Тогда придется деревянный реквизит формы создавать программно и элемент формы для его отображения тоже (колонки тоже генерить программно).
Тогда сможете опять же программно перед каждой заливкой нового дерева сначала перестроить структуру реквизита и элемента формы под структуру нового дерева.
5. burni4 87 25.04.18 12:10 Сейчас в теме
(4) просто встречал чтение XML файла

Процедура ПрочитатьXMLПоТегам(XMLФайл, ТекущийНаборСтрок)
    
    Пока XMLФайл.Прочитать() Цикл
		Если XMLФайл.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
            
            НоваяСтрока = ТекущийНаборСтрок.Добавить();
            НоваяСтрока.Имя = XMLФайл.Имя;
            НоваяСтрока.Значение = "";
            
			Пока XMLФайл.ПрочитатьАтрибут() Цикл
				
				НоваяСтрокаАтрибут = НоваяСтрока.Строки.Добавить();
	            НоваяСтрокаАтрибут.Имя = XMLФайл.Имя;
	            НоваяСтрокаАтрибут.Значение = СокрЛП(XMLФайл.Значение);
					
			КонецЦикла;
			
			ПрочитатьXMLПоТегам(XMLФайл, НоваяСтрока.Строки);
			
        ИначеЕсли XMLФайл.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
            Возврат;
		ИначеЕсли XMLФайл.ТипУзла = ТипУзлаXML.Текст Тогда
			
            ТекущийНаборСтрок.Родитель.Значение = СокрЛП(XMLФайл.Значение);
            
        Иначе
            Сообщить("Тип узла: " + XMLФайл.ТипУзла + " НЕ ОБРАБОТАН", СтатусСообщения.Важное);
        Конецесли;
    КонецЦикла;
     
КонецПроцедуры
Показать


может можно по аналогии
6. Boneman 298 25.04.18 12:22 Сейчас в теме
(3) тогда как сказал herfis
анализируем колонки исходного дерева, и программно создаем реквизиты дерева на форме.
примерно так.
	МассивРеквизитов = Новый Массив;
	
	Если ТаблицаПараметры.Колонки.Найти(ИмяКолонки) = Неопределено Тогда
		
		ТаблицаПараметры.Колонки.Добавить(ИмяКолонки, Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки()));
		МассивРеквизитов.Добавить(Новый РеквизитФормы(ИмяКолонки, Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки()), "ПараметрыСвязи", ИмяКолонки)); 
	КонецЕсли;
	ИзменитьРеквизиты(МассивРеквизитов);
Показать

после этого, создаем элементы формы и связываем их с реквизитам
типа такого
		ИмяТаблицы = "ПараметрыСвязи"+ИмяКолонки;
		Если Элементы.Найти(ИмяТаблицы) = Неопределено тогда     
			Если ИмяГруппы<>неопределено тогда
				// Передали имя группы, то пендюрим в нее
				ИмяГруппировки = "ПараметрыСвязи"+ИмяГруппы;
				Если Элементы.Найти(ИмяГруппировки) = неопределено тогда
					НовыйЭлементГруппа = Элементы.Добавить(ИмяГруппировки, Тип("ГруппаФормы"), Элементы.ПараметрыСвязи);
					НовыйЭлементГруппа = ВидГруппыФормы.ГруппаКолонок;
				КонецЕсли;
				НовыйЭлемент = Элементы.Добавить(ИмяТаблицы, Тип("ПолеФормы"), Элементы[ИмяГруппировки]);//Элементы.ПараметрыСвязи); 
    			НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; 
    			НовыйЭлемент.ПутьКДанным = "ПараметрыСвязи." + ИмяКолонки;
			Иначе
				НовыйЭлемент = Элементы.Добавить(ИмяТаблицы, Тип("ПолеФормы"), Элементы.ПараметрыСвязи); 
    			НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; 
    			НовыйЭлемент.ПутьКДанным = "ПараметрыСвязи." + ИмяКолонки;
			КонецЕсли;	
				
		КонецЕсли;
Показать

естественно, процедуры и имена у тебя свои все будут.
7. burni4 87 25.04.18 12:31 Сейчас в теме
(6) навернео не уточнил, что важно, элементы дерева всегда являются структурами, все отличается только количеством вложенности
8. Boneman 298 25.04.18 13:11 Сейчас в теме
(7)
сегда являются структурами, все от

и как это должно на форме отображаться ?
Все зависит от того что внутри структуры. В принципе на форме есть вариант выбора "произвольный", но мутабельные объекты ты все равно на форму не затащишь. Возможно что-то возможно сериализовать.
Тут уже думай сам, как ты все это обыгрывать будешь, или может пойти каким то другим путем.
9. burni4 87 25.04.18 15:39 Сейчас в теме
попробую ещё сконкретизировать задачу, есть данные с типом структура, и количество вложенностей структур в структуру я не знаю, эти данные мне нужно перенести в дерево значений, пока бьюсь над задачей, как сделать универсальный механизм по преоьразованию структуры в дерево значений,
10. МихаилМ 25.04.18 15:47 Сейчас в теме
(9) пребразуйте набор структур в тз с видом владелец-поля структуры. затем с помощью построителя запроса
получите из такой тз дз .
11. burni4 87 25.04.18 16:01 Сейчас в теме
(10) идея отличная, но можно пример кода по преобразованию структуры в тз?
12. burni4 87 25.04.18 16:05 Сейчас в теме
(10) не могу сообразить как это сделать рекурсивно
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)