HelpF.pro

Переворот или ТРАНСПОНИРОВАНИЕ Таблицы Значений

Задача такова что необходимо поменять местами Колонки со Строками. Условие Первая колонка значений это название колонок будущей таблицы значений.
Исходная таблица:
Индекс Колонка1 Колонка2 Колонка3 Колонка4
0 "Тип11" "Тип21" "Тип31" "Тип41"
1 "Тип12" "Тип22" "Тип32" "Тип42"
2 "Тип13" "Тип23" "Тип33" "Тип43"
3 "Тип14" "Тип24" "Тип34" "Тип44"
4 "Тип15" "Тип25" "Тип35" "Тип45"


Полученная таблица:
Индекс Тип11 Тип12 Тип13 Тип14 Тип15
0 "Тип11" "Тип12" "Тип13" "Тип14" "Тип15"
1 "Тип21" "Тип22" "Тип23" "Тип24" "Тип25"
2 "Тип31" "Тип32" "Тип33" "Тип34" "Тип35"
3 "Тип41" "Тип42" "Тип43" "Тип44" "Тип45"

Минусы :
1.того что имя колонок первоначальных не видно.
2. Значение исходной таблицы первой колонки должны быть типизированны для название колонок.
Код 1C v 8.х
 // OldthiefXXX
// Функция возвращает перевернутую ТЗ
// Кидаем ТЗ
Функция ПеревернутьТЗ(ТЗ)
ТЗ2 = Новый ТаблицаЗначений;
Массив=Тз.ВыгрузитьКолонку(Тз.Колонки[0]);
Для Каждого Значения ИЗ Массив ЦИКЛ
ЗН=ВРег(СокрЛП(Значения));
ТЗ2.Колонки.Добавить(Значения);
Конеццикла;
Для каждого стр из Тз.Колонки Цикл
ТЗ2.Добавить();
КонецЦикла;
СчетчикСтрок=-1;
Для каждого стр из Тз Цикл
СчетчикСтрок=СчетчикСтрок+1;
Мас= Новый Массив;
счетчик=-1;
Для каждого КН из Тз.Колонки Цикл
счетчик=счетчик+1;
ЗначениеИндекса=стр[КН.Имя];
Мас.Вставить(счетчик,ЗначениеИндекса);
КонецЦикла;
ТЗ2.ЗагрузитьКолонку(Мас,ТЗ2.колонки[СчетчикСтрок]);
КонецЦикла;
Возврат ТЗ2;
КонецФункции

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq8/view/1093.html