Расширенное описание типов. Прочее
////////////////////////////////////////////////////////////////////////////////
// Прочее
Функция РасширенноеОписаниеТипов(ИсходноеОписаниеТипов, ПривестиКФорме, ПараметрыПодбора = Неопределено) Экспорт
Результат = Новый Структура;
Результат.Вставить("СодержитТипТип", Ложь);
Результат.Вставить("СодержитТипДата", Ложь);
Результат.Вставить("СодержитТипБулево", Ложь);
Результат.Вставить("СодержитТипСтрока", Ложь);
Результат.Вставить("СодержитТипЧисло", Ложь);
Результат.Вставить("СодержитТипПериод", Ложь);
Результат.Вставить("СодержитТипУИД", Ложь);
Результат.Вставить("СодержитТипХранилище", Ложь);
Результат.Вставить("СодержитОбъектныеТипы", Ложь);
Результат.Вставить("ОграниченнойДлины", Истина);
Результат.Вставить("КоличествоТипов", 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
///////////////////////////////////////////////////////////////////////////////////////////////////////
РасширенныеОписанияПричинБлокировки (БСП)
ОписаниеТипаСостоитИзТипа (БСП)
ПриЗаполненииВсехПараметровРаботыРасширений (БСП)
ОписаниеТиповСсылокДопустимыхОбъектов (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)