Создает таблицу значений со структурой колонок по данным источника. Есть возможность исключить ссылочные типы из обработки. Может обрабатывать типы РезультатЗапроса, ТаблицаЗначений, ВременнаяТаблицаЗапроса
Функция ПустаяТаблицаЗначенийПоКолонкамИсточника(Данные, ДобавлятьСсылочныеТипы = Истина) Экспорт
Перем ВсеТипыСсылок; //для кэширования
Если ТипЗнч(Данные) = Тип("РезультатЗапроса") Или ТипЗнч(Данные) = Тип("ТаблицаЗначений") Или ТипЗнч(Данные) = Тип("ВременнаяТаблицаЗапроса") Тогда
КолонкиЗапроса = Данные.Колонки;
Иначе
Возврат Неопределено;
КонецЕсли;
Результат = Новый ТаблицаЗначений;
КолонкиТЗ = Результат.Колонки;
Для Каждого ТекущаяКолонкаЗапроса Из КолонкиЗапроса Цикл
Если ДобавлятьСсылочныеТипы = Ложь Тогда
Если ЭтоТипСсылка(ТекущаяКолонкаЗапроса.ТипЗначения, ВсеТипыСсылок) Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
НоваяКолонкаТЗ = КолонкиТЗ.Добавить(ТекущаяКолонкаЗапроса.Имя, ТекущаяКолонкаЗапроса.ТипЗначения);
ЗаполнитьЗначенияСвойств(НоваяКолонкаТЗ, ТекущаяКолонкаЗапроса);
КонецЦикла;
Возврат Результат;
КонецФункции
Функция ЭтоТипСсылка(ТипДанных, ВсеТипыСсылок = Неопределено) Экспорт
Результат = Ложь;
Если ВсеТипыСсылок = Неопределено Тогда
ВсеТипыСсылок = ОписаниеТипаВсеСсылки();
КонецЕсли;
Если ТипЗнч(ТипДанных) = Тип("ОписаниеТипов") Тогда
ТипыВнутри = ТипДанных.Типы();
Для каждого Тип Из ТипыВнутри Цикл
Если ВсеТипыСсылок.СодержитТип(Тип) Тогда
Результат = Истина;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат Результат;
КонецФункции
Дополнить таблицу значений - приемника данными из таблицы значений - источника
Вернуть СКД (источник данных таблица значений)
Работа с универсальными коллекциями данных