Вывести все доступные поля СКД

SeiOkami 495 5 11 13

Выводит в коллекцию выбранных полей СКД все доступные поля. Метод иерархический, для вызова достаточно передать коллекцию выбранных полей, которые нужно заполнить.

// Выводит в коллекцию выбранных полей СКД все доступные поля.
// Метод иерархический, для вызова достаточно передать коллекцию выбранных полей, которые нужно заполнить.
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/18
//
// Параметры:
//
//  ВыбранныеПоляКомпоновки  - ВыбранныеПоляКомпоновкиДанных, КоллекцияВыбранныхПолейКомпоновкиДанных  - 
//						Выбранные поля компоновки, которые необходимо заполнить
//
//  КоллекцияДоступныхПолей  - Неопределено, ДоступныеПоляКомпоновкиДанных - 
//						Параметр для иерархических вызовов процедуры из себя самой же. 
//						При использовании передавать не нужно.
//
// Пример:
//  ВывестиВсеДоступныеПоляВыбора(Настройки.Выбор); //Выводит все доступные поля
//
Процедура ВывестиВсеДоступныеПоляВыбора(Знач ВыбранныеПоляКомпоновки, Знач КоллекцияДоступныхПолей = Неопределено) Экспорт
	
	Если КоллекцияДоступныхПолей = Неопределено Тогда
		КоллекцияДоступныхПолей = ВыбранныеПоляКомпоновки.ДоступныеПоляВыбора;
	КонецЕсли;
	
	Если ТипЗнч(ВыбранныеПоляКомпоновки) = Тип("ВыбранныеПоляКомпоновкиДанных") Тогда
		КоллекцияВыбранныхПолей = ВыбранныеПоляКомпоновки.Элементы;
	Иначе
		КоллекцияВыбранныхПолей = ВыбранныеПоляКомпоновки;
	КонецЕсли;
	
	ТекущийРодитель = Новый Структура("Родитель", Неопределено);
	ЗаполнитьЗначенияСвойств(ТекущийРодитель, КоллекцияДоступныхПолей);
	ТекущийРодитель = ТекущийРодитель.Родитель;
	
	Для Каждого ДоступноеПолеВыбора Из КоллекцияДоступныхПолей.Элементы Цикл
		
		Если ДоступноеПолеВыбора.Папка Тогда
			ВыбранноеПоле = КоллекцияВыбранныхПолей.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных"));
			ВывестиВсеДоступныеПоляВыбора(ВыбранноеПоле.Элементы, ДоступноеПолеВыбора);
		Иначе
			ВыбранноеПоле = КоллекцияВыбранныхПолей.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
		КонецЕсли;
		
		ЗаполнитьЗначенияСвойств(ВыбранноеПоле, ДоступноеПолеВыбора, "Поле,Заголовок");
		
	КонецЦикла;
	
КонецПроцедуры
0
{31} Переменной ТекущийРодитель присвоено значение, но оно нигде не используется

См. также

ВывестиГиперссылку (БСП)

Вывести список пользователей с пустым паролем

ВывестиКонтекстныеСсылки (БСП)

РаспечататьТабличныеДокументы (БСП)

ДоступныеНастройки (БСП)

ДоступноСканирование (БСП)

ЕстьДоступныеШаблоны (БСП)

ПолеРезультат (БСП)

ПолеФайл (БСП)

Модератору