РасширенноеОписаниеТипов (БСП)

Автор: 1С
ОбщийМодуль.ОтчетыСервер
1С БСП

Расширенное описание типов. Прочее

////////////////////////////////////////////////////////////////////////////////
// Прочее

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

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

Рекомендации

Похожие публикации

РасширенныеОписанияПричинБлокировки (БСП)

ОписаниеТипаВсеСсылки (БСП)

ОписаниеТипаСостоитИзТипа (БСП)

ПриЗаполненииВсехПараметровРаботыРасширений (БСП)

ОписаниеТиповСсылокДопустимыхОбъектов (БСП)

Создать объект ОписаниеТипов

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

ОжидаемыеТипыСвойствОписанияПроблемы (БСП)

ОписаниеПримитивныхТипов (БСП)

TurboConf 6 - расширение Конфигуратора 1С