Публикации

БСП
Разработки

Найдено результатов: 430


Типизация таблицы значений

Автор: acces969

FastCode 63 8
РезультатТЗ = новый ТаблицаЗначений;
Для Каждого Колонка из ТЗ.Колонки Цикл
	Имя = Колонка.Имя;
	МассивТипов = новый Массив(1);
	МассивТипов[0] = ТипЗнч(ТЗ[0][Имя]);
	Описатель = новый ОписаниеТипов(МассивТипов);
	РезультатТЗ.Колонки.Добавить(Имя, Описатель);
КонецЦикла;

Для каждого Строка из ТЗ Цикл
	СтрокаРез = РезультатТЗ.Добавить();
	ЗаполнитьЗначенияСвойств(СтрокаРез, Строка);
КонецЦикла;

ТЗ = РезультатТЗ.Скопировать();

Преобразовать массив структур в ТаблицуЗначений

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

Чтение XML в таблицу значений

ArturR 31 2
Режим = РежимДиалогаВыбораФайла.Открытие;
	ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);        
	ДиалогОткрытияФайла.ПолноеИмяФайла = "";
	Фильтр = "Текст(*.XML)|*.XML";
	ДиалогОткрытияФайла.Фильтр = Фильтр;
	ДиалогОткрытияФайла.МножественныйВыбор = Ложь;             
	ДиалогОткрытияФайла.Заголовок = "Выберите файл для загрузки";
	
	Если ДиалогОткрытияФайла.Выбрать() Тогда 
		ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла;
		ЧтениеXML = Новый ЧтениеXML;
		ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
		Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
		ТЗ = Сериализатор.ПрочитатьXML(ЧтениеXML,Тип("ТаблицаЗначений"));
		ЧтениеXML.Закрыть();
	КонецЕсли;
	
		ЭтотОбъект.Контрагент 		  	= Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ТЗ[0].КонтрагентИНН);
		ЭтотОбъект.КРВ_IDМенеджер	  	= ТЗ[0].IDМенеджер;
		ЭтотОбъект.КРВ_НомерЗаказаУНФ 	= ТЗ[0].Номер;
		ЭтотОбъект.Склад 				= Справочники.Склады.НайтиПоНаименованию(ТЗ[0].Склад);
	
Для каждого СтрокаТЗ Из ТЗ Цикл
КонецЦикла; 

Загрузить колонку (создавать строки Таблицы при необходимости)

Альтернатива странному методу ЗагрузитьКолонку объектов типа ТаблицаЗначений, ТабличнаяЧасть
SDV 34 7
// Процедура - Загрузить колонку
//
// Параметры:
//  Таблица             - ТаблицаЗначений, ТабличнаяЧасть
//  МассивЗначений     - Массив
//  Колонка             - Строка
//  Очищать             - Булево - Необязательно. По-умолчанию Истина.
//                                Если Истина, то таблица предварительно очищается.
//                                
Процедура ЗагрузитьКолонку(Таблица, МассивЗначений, Колонка, Очищать = Истина) Экспорт
    Если Очищать Тогда
        Таблица.Очистить();
    КонецЕсли;


    МаксимальныйИндексТаблицы = Таблица.Количество() - 1;
    МаксимальныйИндексМассива = МассивЗначений.Количество() - 1;
    
    Для ИндексМассива = 0 по МаксимальныйИндексМассива Цикл
        Если ИндексМассива > МаксимальныйИндексТаблицы Тогда
            Строка = Таблица.Добавить();
        Иначе
            Строка = Таблица[ИндексМассива];
        КонецЕсли;
        Строка[Колонка] = МассивЗначений[ИндексМассива];
    КонецЦикла;
    
КонецПроцедуры

Вывести на печать произвольную таблицу значений (ТЗ)

Выводит на печать произвольную ТЗ
Дамир 3
//вариант 1
&НаКлиенте
Процедура ВывестиНаПечать(Команда)
    ТабДок = ВывестиНаПечатьНаСервере();
    ТабДок.Показать();
КонецПроцедуры

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

//вариант 2
&НаКлиенте
Процедура ВывестиНаПечать2(Команда)
    ТабДок = ВывестиНаПечатьНаСервере2();
    ТабДок.Показать();    
КонецПроцедуры

&НаСервере
Функция ВывестиНаПечатьНаСервере2()
    ТЗ = РеквизитФормыВЗначение("Реквизит1");
    
    ТабДок = Новый ТабличныйДокумент;
    Сч = 1;
    Для Каждого Колонка Из ТЗ.Колонки Цикл
        ТабДок.Область(1, Сч).Текст = Колонка.Имя;
        Сч = Сч + 1
    КонецЦикла;
    
    КоличествоКолонок = ТЗ.Колонки.Количество();
    
    ТекущаяСтрока = 2;
    Для Каждого Стр Из ТЗ Цикл
        Для Сч = 1 По КоличествоКолонок Цикл
            ТабДок.Область(ТекущаяСтрока, Сч).Текст = Стр[Сч - 1];            
        КонецЦикла;
        ТекущаяСтрока = ТекущаяСтрока + 1;
    КонецЦикла;
    
    Возврат ТабДок
КонецФункции


Колонки в строку

Возвращает строку с названиями колонок коллекции (ТаблицаЗначений, РезультатЗапроса)
prog1c 44 1 5
Функция КолонкиВСтроку(Коллекция, Разделитель=",")

	СтрКоллекция = "";
	
	Для каждого Колонка Из Коллекция.Колонки Цикл
		Если Не ПустаяСтрока(СтрКоллекция) Тогда
			СтрКоллекция = СтрКоллекция + Разделитель;
		КонецЕсли;
		СтрКоллекция = СтрКоллекция + Колонка.Имя;
	КонецЦикла;
	
	Возврат СтрКоллекция;

КонецФункции // КолонкиВСтроку()

Таблица значений на УФ с динамическим набором колонок

buketoff 28 5
    ТЗ_рез = РеквизитФормыВЗначение("ТЗДокументы");
    
    МассивРеквизитов = Новый Массив;
    
    //Удалим ранее созданные колонки в ТЗДокументы    
    Для Каждого Колонка Из ТЗ_рез.Колонки Цикл
        МассивРеквизитов.Добавить("ТЗДокументы." + Колонка.Имя);        
	КонецЦикла;
	
	ИзменитьРеквизиты(,МассивРеквизитов);
	
	//Удалим отображение таблицы на форме и создадим новую
	ЭлементТаблица = Элементы.Найти("ТЗДокументы");
	Если ЭлементТаблица <> Неопределено Тогда
		Элементы.Удалить(ЭлементТаблица);        
	КонецЕсли;     
	
	ЭлементТаблица=Элементы.Добавить("ТЗДокументы",Тип("ТаблицаФормы"));
	ЭлементТаблица.ПутьКДанным = "ТЗДокументы";
	ЭлементТаблица.Отображение = ОтображениеТаблицы.Список;
	
	ТЗ_рез = Данные;

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

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

Автор: HostHost

FastCode 63 8
ПараметрыСтроки = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(ТаблицаПоказателей[0]);

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

Автор: HostHost

FastCode 63 8
мсДанных = Новый Массив;

Для Каждого СтрокаТЗ Из тзДанных Цикл   

    стСтрокаТаблицы = Новый Структура;

    Для Каждого ИмяКолонки Из тзДанных.Колонки Цикл

        стСтрокаТаблицы.Вставить(ИмяКолонки.Имя, СтрокаТЗ[ИмяКолонки.Имя]);

    КонецЦикла;   

    мсДанных.Добавить(стСтрокаТаблицы);   

КонецЦикла;

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

Автор: ildarovich

FastCode 63 8
Дано.Сортировать("Поле1, Поле2");
ё = Дано.Количество();
Пока ё > 1 Цикл
   ё = ё - 1;
    Если Дано[ё - 1].Поле1 = Дано[ё].Поле1 И Дано[ё - 1].Поле2 = Дано[ё].Поле2 Тогда
        Дано[ё - 1].Поле3 = Дано[ё - 1].Поле3 + Дано[ё].Поле3;
        Дано.Удалить(ё)
    КонецЕсли 
КонецЦикла;

Создать Таблицу значений со структурой по данным источника

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

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

КоллекцииИдентичны

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

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Таблица значений из списка колонок

Создает объект ТаблицаЗначений из списка колонок (строка с разделителями или массив)
prog1c 44 1 5
Функция ТаблицаЗначений(Колонки)

	Если ТипЗнч(Колонки) = Тип("Строка") Тогда
		Колонки = СтрРазделить(Колонки, ",");
	КонецЕсли;
	
	ТабЗнач = Новый ТаблицаЗначений;
	Для каждого Колонка Из Колонки Цикл
		ИмяКолонки = СтрЗаменить(СокрЛП(Колонка), " ", "_");
		ТабЗнач.Колонки.Добавить(ИмяКолонки);
	КонецЦикла;
	
	Возврат ТабЗнач;

КонецФункции // ТаблицаЗначений()

Отбор по таблице значений

Отбор строк по таблице значений
gorenski 1
СтруктураОтбора = Новый Структура("Номенклатура,ХарактеристикаНоменклатуры", ЗначениеОтбора.Номенклатура, ЗначениеОтбора.ХарактеристикаНоменклатуры);
РезультатОтбора = ТаблицаЗначений.НайтиСтроки(СтруктураОтбора);
//Если РезультатОтбора.Количество() > 0 Тогда
//	СтрокаОтбора = РезультатОтбора[0];
//КонецЕсли;
Для каждого СтрокаОтбора Из РезультатОтбора Цикл
	
КонецЦикла;

Создать временную таблицу из таблицы значений

Автор: HostHost

FastCode 63 8
ЗарплатаКадры.СоздатьВТПоТаблицеЗначений(Запрос.МенеджерВременныхТаблиц, ТаблицаМВО, "ВТМВО", Истина);

Дополнить таблицу значений - приемника данными из таблицы значений - источника

Автор: HostHost

FastCode 63 8
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ТаблицаИсточник, ТаблицаПриемник);

Как свернуть таблицу значений в коде, но получить не сумму, а максимум

С помощью небольшой предварительной обработки таблицы значений можно добиться реализации агрегатных функций минимум, максимум, первые, последние при выполнении свертки. Для этого достаточно обнулить все другие значения в группировках, кроме нужных. Это мож...
FastCode 63 8

СортироватьМассивСтруктур

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

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Проверка заполненности сложных объектов

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

Типизированная таблица значений

Создаёт и возвращает копию ТаблицыЗначений с заполненным Типом Колонок
SDV 34 7
// Типизированная таблица значений
//     Создаёт и возвращает копию ТаблицыЗначений с заполненным Типом Колонок
// Зависит от ЗагрузитьКолонку() https://fastcode.im/Templates/6670
// Параметры:
//  Таблица      - ТаблицаЗначений
//
// Возвращаемое значение:
//  ТаблицаЗначений
//
Функция ТипизированнаяТаблицаЗначений(Таблица) Экспорт
    Результат = Новый ТаблицаЗначений;
    Для Каждого Колонка Из Таблица.Колонки Цикл
        ИмяКолонки = Колонка.Имя;
        СвернутаяТаблица = Таблица.Скопировать(, ИмяКолонки);
        СвернутаяТаблица.Свернуть(ИмяКолонки);
        МассивТипов = Новый Массив;
        Для Каждого СтрокаСвернутойТаблицы из СвернутаяТаблица Цикл
            ТипЗначения = ТипЗнч(СтрокаСвернутойТаблицы[ИмяКолонки]);
            Если МассивТипов.Найти(ТипЗначения) = Неопределено Тогда
                МассивТипов.Добавить(ТипЗначения);
            КонецЕсли;
        КонецЦикла;
        Если МассивТипов.Количество() = 1 Тогда
            //Меры по предотвращению ошибки "Тип не может быть выбран в запросе"
            //для колонок заполненных исключительно значениями типа Тип("Неопределено")
            Если МассивТипов[0] = Тип("Неопределено") Тогда
                МассивТипов[0] = Тип("Строка");//Не уверен
            КонецЕсли;
        КонецЕсли;
        Результат.Колонки.Добавить(ИмяКолонки, Новый ОписаниеТипов(МассивТипов), Колонка.Заголовок, Колонка.Ширина);
        ЗагрузитьКолонку(Результат, Таблица.ВыгрузитьКолонку(ИмяКолонки), ИмяКолонки, Ложь);
    КонецЦикла;
    Возврат Результат;
КонецФункции