Что это недопустимые типы? Речь идет про СКД частично. Год смотрю отладкой и интересна логика и почему?

1. whowouldwin 16.10.20 21:02 Сейчас в теме
Функция  ПолучитьНедопустимыеТипы()
			
	МассивНедопустимыхТипов = Новый Массив;
	МассивНедопустимыхТипов.Добавить(Тип("ХранилищеЗначения"));
		
	Возврат МассивНедопустимыхТипов;
		
КонецФункции
Показать


&НаСервере
Функция ИсключитьНедопустимыеТипы(ТипРеквизита) 
	
	    МассивНедопустимых = ПолучитьНедопустимыеТипы();
		
		МассивИсключаемыхТипов = Новый Массив;
		
		Для Каждого ЭлементНедопустимый Из МассивНедопустимых Цикл
			
			Если ТипРеквизита.СодержитТип(ЭлементНедопустимый) Тогда
				
				  МассивИсключаемыхТипов.Добавить(ЭлементНедопустимый);
				
			КонецЕсли;
			
		КонецЦикла;

		Если МассивИсключаемыхТипов.Количество() = 0 Тогда
			
			ОписаниеРеквизита = ТипРеквизита;
			
		Иначе
			
			ОписаниеРеквизита = Новый ОписаниеТипов(ТипРеквизита, , МассивИсключаемыхТипов);
			
		КонецЕсли;
		
		Возврат ОписаниеРеквизита;
		
КонецФункции

Показать

//Часть кода вызова

...
Для Каждого ОбъектМетаданных Из Метаданные[ТипОбъекта][ОбъектВыбора.Значение].Реквизиты Цикл
									
				НоваяСтрока = ТаблицаМетаданных.Добавить();
				
				НоваяСтрока.ИмяРеквизита = ОбъектМетаданных.Имя;
				НоваяСтрока.СинонимРеквизита = ОбъектМетаданных.Синоним;
				НоваяСтрока.ОписаниеТипов = ИсключитьНедопустимыеТипы(ОбъектМетаданных.Тип); 
				НоваяСтрока.ОбъектМетаданных = ОбъектВыбора.Значение;
						
				
			КонецЦикла;
...
Показать
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. BackinSoda 16.10.20 21:06 Сейчас в теме
(1) Пропускаются реквизиты с типом данных ХранилищеЗначений, т.к. у него есть свои ограничения, например - отображение на форме.
3. whowouldwin 16.10.20 21:11 Сейчас в теме
(2) И снова спасибо) Только вы мне и отвечаете)
BackinSoda; +1 Ответить
Оставьте свое сообщение
Вопросы с вознаграждением