Состав объектов подсистем

Программирование - Инструментарий

1
Отчет по составу объектов, которые принадлежат соответствующей подсистеме.

Всем добра!

Возникла задача иметь под рукой отчёт по всем объектам, которые входят в существующие подсистемы конфигурации.

Погуглил и решения не нашёл.

Накидал свой вариант с использованием СКД.

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	СтандартнаяОбработка =  Ложь;
	// Создаем таблицу значений для дальнейшей передачи в механизм СКД.
	табВнешнийИсточник  = Новый ТаблицаЗначений;
	табВнешнийИсточник.Колонки.Добавить("Родитель", Новый ОписаниеТипов("Строка"));
	табВнешнийИсточник.Колонки.Добавить("Подсистема", Новый ОписаниеТипов("Строка"));
	табВнешнийИсточник.Колонки.Добавить("ИмяОбъектаМетаданных", Новый ОписаниеТипов("Строка"));
	табВнешнийИсточник.Колонки.Добавить("ИмяОбъекта", Новый ОписаниеТипов("Строка"));
	табВнешнийИсточник.Колонки.Добавить("ПризнакНаличия", Новый ОписаниеТипов("Булево"));

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

#Область МеханизмСКД
	СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
	ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
	ВнешнийНаборДанных = Новый Структура("ВнешнийИсточник", табВнешнийИсточник);
	ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки);
	ДокументРезультат.Очистить();
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
	ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
#КонецОбласти

КонецПроцедуры

Обходит один уровень вложенности подсистем, при необходимости допиливается до любого количества.

Можете добавить в коде условие на префиксацию своих подсистем, у меня добавлено и закомментировано - будет анализировать только "нетиповые". 

Пользуйтесь, вносите изменения, корректируйте под себя. Я создал вариант отчета, который интересен для меня, но можно делать кросс-таблицы, группировки по родителю.

Проверено на:

  1. Управление торговлей, редакция 11 (11.4.2.144) 
  2. Документооборот 8 КОРП, редакция 2.1 (2.1.11.5)
  3. Зарплата и управление персоналом, редакция 3.1 (3.1.5.212)
  4. Ломаться на других версиях нечему.

Возможно, сэкономит время!

1

Скачать файлы

Наименование Файл Версия Размер
Состав объектов подсистем:
.erf 7,61Kb
23.05.18
3
.erf 1.1 7,61Kb 3 Скачать

См. также

Комментарии
Сортировка: Древо
1. ZhokhovM 324 22.05.18 19:49 Сейчас в теме
Оставьте свое сообщение