Каталог решений - Преобразование структуры в таблицу значений

Преобразование структуры в таблицу значений

Преобразование структуры в таблицу значений

В наличии

Преобразование структуры в таблицу значений для последующего использования в запросе.

Категория:

Описание

Статья больше предназначена для себя, чтобы опять безрезультатно не искать в просторах инета, но может сэкономит кому-то время. Всё началось с того, что надо было мне использовать данные структуры во временной таблице в запросе. Поиск по интернету и Инфостарту не дал результатов. Пришлось самому выкручиваться. Кто-то скажет, что слишком маленькая статья или функция, но дело тут не в размере, а в полезности;). Прошу не судить строго и буду признателен, если дадите более оптимальное решение задачи.

Итак. Имеем структуру и данные из неё хотим использовать в запросе. Простая функция обхода элементов структуры в цикле, формирование Таблицы значений и заполнение её данными вроде дало результат, но … в запросе такую Таблицу значений не используешь, так как требуется обязательное указание Описания типов, иначе запрос вылетает с ошибкой.

 

 

Пришлось немного повозиться с Описаниями типов, и, в итоге, получилась маленькая функция, которая возвращает то, что нам надо, т.е. заполненную Таблицу значений из Структуры с Описанием типов.

  

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

	Для Каждого ТекЭлем из Структра Цикл
		
		ТЗ.Колонки.Добавить(ТекЭлем.Ключ, 
			?(ОписаниеТиповСсылок.СодержитТип(ТипЗнч(ТекЭлем.Значение)),
			Новый ОписаниеТипов(СтрЗаменить(ТекЭлем.Значение.Метаданные().ПолноеИмя(),".","Ссылка.")),
			Новый ОписаниеТипов(Строка(ТипЗнч(ТекЭлем.Значение)))));
			
		НовСтр[ТекЭлем.Ключ] = ТекЭлем.Значение;                          
		
	КонецЦикла;
 	
	Возврат ТЗ;
	
КонецФункции

 

has been added to your cart:
Оформление заказа