ТипЗначенияОграниченныйСвязьюПоТипу (БСП)

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

Тип значения ограниченный связью по типу. Методы работы с СКД из формы отчета.

////////////////////////////////////////////////////////////////////////////////
// Методы работы с СКД из формы отчета.

Функция ТипЗначенияОграниченныйСвязьюПоТипу(Настройки, ПользовательскиеНастройки, ЭлементНастройки, ОписаниеЭлементаНастройки, ТипЗначения = Неопределено) Экспорт 
	Если ОписаниеЭлементаНастройки = Неопределено Тогда 
		Возврат ?(ТипЗначения = Неопределено, Новый ОписаниеТипов("Неопределено"), ТипЗначения);
	КонецЕсли;
	
	Если ТипЗначения = Неопределено Тогда 
		ТипЗначения = ОписаниеЭлементаНастройки.ТипЗначения;
	КонецЕсли;
	
	СвязьПоТипу = ОписаниеЭлементаНастройки.СвязьПоТипу;
	
	СвязанныйЭлементНастройки = ЭлементНастройкиПоПолю(Настройки, ПользовательскиеНастройки, СвязьПоТипу.Поле);
	Если СвязанныйЭлементНастройки = Неопределено Тогда 
		Возврат ТипЗначения;
	КонецЕсли;
	
	ДопустимыеВидыСравнения = Новый Массив;
	ДопустимыеВидыСравнения.Добавить(ВидСравненияКомпоновкиДанных.Равно);
	ДопустимыеВидыСравнения.Добавить(ВидСравненияКомпоновкиДанных.ВИерархии);
	
	Если ТипЗнч(СвязанныйЭлементНастройки) = Тип("ЭлементОтбораКомпоновкиДанных")
		И (Не СвязанныйЭлементНастройки.Использование
		Или ДопустимыеВидыСравнения.Найти(СвязанныйЭлементНастройки.ВидСравнения) = Неопределено) Тогда 
		Возврат ТипЗначения;
	КонецЕсли;
	
	ОписаниеСвязанногоЭлементаНастройки = ОтчетыКлиентСервер.НайтиДоступнуюНастройку(Настройки, СвязанныйЭлементНастройки);
	Если ОписаниеСвязанногоЭлементаНастройки = Неопределено Тогда 
		Возврат ТипЗначения;
	КонецЕсли;
	
	Если ТипЗнч(СвязанныйЭлементНастройки) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных")
		И (ОписаниеСвязанногоЭлементаНастройки.Использование <> ИспользованиеПараметраКомпоновкиДанных.Всегда
		Или Не СвязанныйЭлементНастройки.Использование) Тогда 
		Возврат ТипЗначения;
	КонецЕсли;
	
	Если ТипЗнч(СвязанныйЭлементНастройки) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда 
		ЗначениеСвязанногоЭлементаНастройки = СвязанныйЭлементНастройки.Значение;
	ИначеЕсли ТипЗнч(СвязанныйЭлементНастройки) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда 
		ЗначениеСвязанногоЭлементаНастройки = СвязанныйЭлементНастройки.ПравоеЗначение;
	КонецЕсли;
	
	ТипСубконто = ВариантыОтчетовВызовСервера.ТипСубконто(ЗначениеСвязанногоЭлементаНастройки, СвязьПоТипу.ЭлементСвязи);
	Если ТипЗнч(ТипСубконто) = Тип("ОписаниеТипов") Тогда
		СвязанныеТипы = ТипСубконто.Типы();
	Иначе
		СвязанныеТипы = ОписаниеСвязанногоЭлементаНастройки.ТипЗначения.Типы();
	КонецЕсли;
	
	ВычитаемыеТипы = ТипЗначения.Типы();
	Индекс = ВычитаемыеТипы.ВГраница();
	Пока Индекс >= 0 Цикл 
		Если СвязанныеТипы.Найти(ВычитаемыеТипы[Индекс]) <> Неопределено Тогда 
			ВычитаемыеТипы.Удалить(Индекс);
		КонецЕсли;
		Индекс = Индекс - 1;
	КонецЦикла;
	
	Возврат Новый ОписаниеТипов(ТипЗначения,, ВычитаемыеТипы);
КонецФункции

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

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

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

ОграничениеТипа списка выбора

ПереопределитьТаблицуТиповПолучателей (БСП)

Интерактивный отбор дерева значений

ПостоянныеВидыОграниченийПравОбъектовМетаданных (БСП)

ПривестиЗначениеКТипу (БСП)

ПриЗаполненииНаборовЗначенийДоступа (БСП)

ЗначениеИзФиксированногоТипа (БСП)

ПустыеСсылкиТиповЗначенийДоступаПоТипамГруппИЗначений (БСП)

ТипЗначенияСодержитЗначенияСвойств (БСП)

TurboConf ИР адаптер 2.63