Каталог решений - Настройка параметров выбора и связей параметров выбора для дополнительных реквизитов

Настройка параметров выбора и связей параметров выбора для дополнительных реквизитов

Настройка параметров выбора и связей параметров выбора для дополнительных реквизитов

В наличии

Встал вопрос о привязке выбора значения одного дополнительного реквизита к значению другого дополнительного реквизита и что из этого получилось

Категория:

Описание

Обратились ко мне коллеги с вопрос: "Сделай так, чтобы контактное лицо(допреквизит) выбиралось с учетом партнера (второй допреквизит) . А сам партнер был из определенной папки". При чем часть пользователей используют эти допреквизиты и соответственно выводят их себе на форму, а часть нет. Естественно прозвучало пожелание, чтоб по максимуму сохранить возможность обновления конфигурации.

Долго искал варианты и в итоге пришел к следующему варианту: необходимо настроить Параметр выбора и связь параметров выбора.

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

					НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Владелец", "ДополнительныйРеквизитЗначение_588521B2x57ECx11E7x8133x00155D001801_34175D5Cx581Fx11E7x8133x00155D001801");
					НовыйМассив = Новый Массив();      
					НовыйМассив.Добавить(НоваяСвязь);
					МассивНоваяСвязь = Новый ФиксированныйМассив(НовыйМассив);
					
					ТекРеквизит.СвязиПараметровВыбора = МассивНоваяСвязь;	

				ИначеЕсли ТекДопРеквизит.Свойство.Заголовок = "Партнер" тогда
					НовыйПараметр = Новый ПараметрВыбора("Отбор.Родитель", Какой - то родитель );
					НовыйМассив = Новый Массив;
					НовыйМассив.Добавить(НовыйПараметр);
					НовыеПараметры = Новый ФиксированныйМассив(НовыйМассив);
					ТекРеквизит.ПараметрыВыбора = НовыеПараметры;
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
		
	КонецЦикла;

 

Этот код можно просто вписать в обработчик "ПриСозданииНаСервере" модуля формы либо добавить в расширение.

Будет работать на любой стандартной конфигурации 8.3 с использование БСП.

Тестировалось и работает на УТ 11.3.4.21.

 

На оригинальность не претендую, просто решил проблему и делюсь. Может кому — то поможет.

 

has been added to your cart:
Оформление заказа