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

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

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

В наличии

Таблица значений в массив структур без перебора коллекции колонок для каждой строки таблицы.

Категория:

Описание

Всем привет. Может быть для большинства это покажется банально, но я для себя недавно открыл новую функцию преобразования таблицы значений в массив структур без перебора коллекции колонок для каждой строки строки таблицы. Вот как выглядит стандартное решение, которое в большинстве случаев есть в интернете и на самом Инфостарте:

&НаСервере
Функция ПреобразоватьТаблицуЗначенийВМассивСтруктур(п_ТЗ) Экспорт
	
	МассивСтруктур = Новый Массив;

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

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

 

А вот более аккуратное и красивое решение этой задачи:

 

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

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

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

Всем удачи. Может, кому пригодится.

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