Пустая таблица по тексту запроса

SeiOkami 622 5 16 20

Возвращает пустую таблицу значений результата запроса на основе его текста

// Возвращает пустую таблицу значений результата запроса на основе его текста
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/85
// 
// Параметры:
//  ТекстЗапроса - Строка
// 
// Возвращаемое значение:
//  ТаблицаЗначений
//  
// Пример:
// 	ТекстЗапроса = "ВЫБРАТЬ Код,Наименование,Ссылка ИЗ Справочник.Валюты";
//	Результат = ПустаяТаблицаПоТекстуЗапроса(ТекстЗапроса);
//	//Результат - ТЗ с колонками Код,Наименование,Ссылка соответствующих типов
//  
Функция ПустаяТаблицаПоТекстуЗапроса(Знач ТекстЗапроса) Экспорт
	
	ТаблицаЗначений = Новый ТаблицаЗначений;
	
	СхемаЗапроса = Новый СхемаЗапроса;
	СхемаЗапроса.УстановитьТекстЗапроса(ТекстЗапроса);
	ПакетыЗапросов = СхемаЗапроса.ПакетЗапросов;
	
	КоличествоПакетов = ПакетыЗапросов.Количество();
	Если КоличествоПакетов > 0 Тогда
		
		//Определяем последний пакет с типом выборки
		ПакетВыборки = Неопределено;
		ТекущийИндекс = КоличествоПакетов - 1;
		Пока ПакетВыборки = Неопределено И ТекущийИндекс >= 0 Цикл
			ТекущийПакет = ПакетыЗапросов.Получить(ТекущийИндекс);
			Если ТипЗнч(ТекущийПакет) = Тип("ЗапросВыбораСхемыЗапроса") Тогда
				ПакетВыборки = ТекущийПакет;
			Иначе
				ТекущийИндекс = ТекущийИндекс - 1;
			КонецЕсли;
		КонецЦикла;
		
		//Перебираем колонки найденного пакета
		Если ПакетВыборки <> Неопределено Тогда
			Для Каждого КолонкаЗапроса Из ПакетВыборки.Колонки Цикл
				Если ТипЗнч(КолонкаЗапроса) = Тип("КолонкаСхемыЗапроса") Тогда
					ТаблицаЗначений.Колонки.Добавить(КолонкаЗапроса.Псевдоним, КолонкаЗапроса.ТипЗначения);
				ИначеЕсли ТипЗнч(КолонкаЗапроса) = Тип("КолонкаВложеннаяТаблицаСхемыЗапроса") Тогда
					// TODO: Нужно доработать. Такая ситуация возникает, когда в запросе указана выборка по типу ИмяТаблицы.ИмяТЧ.(Колонка1, Колонка2) КАК ТЧ
					//	ТаблицаЗначений.Колонки.Добавить(КолонкаЗапроса.Псевдоним, Тип("ТаблицаЗначений"));
				КонецЕсли;
			КонецЦикла;
		КонецЕсли;
		
	КонецЕсли;
	
	Возврат ТаблицаЗначений;

КонецФункции
0

См. также

Создание схемы компоновки данных программно

УстановитьСвойстваДинамическогоСписка (БСП)

МассивУзловПоЗначениямСвойств (БСП)

Транслитерация в запросе

Определние ПустаяСсылка в Запросе

Отформатированный текст запроса

ТекстЗапросаДляИзвлеченияТекста (БСП)

ТекстЗапросаПолногоОбъемаФайлов (БСП)

Отмена подсказки в редактировании текста запроса СКД

Просмотр временной таблицы

Модератору