Связи параметров выбора программно

1. konyashkingn 2 08.06.17 10:16 Сейчас в теме
Добрый день, коллеги!

Вопрос по установки связи параметров выбора не в свойствах реквизита, а в коде. Как я делаю, написал процедуру:
Процедура УстановитьСвязьПоТипу()
	НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Владелец", "Объект.НоменклатураЗаказаПереработчика");
	НоваяСвязь1 = Новый СвязьПараметраВыбора("Отбор.Владелец", "Объект.НоменклатураЗаказаПереработчика.ВидНоменклатуры");
	
	НовыйМассив = Новый Массив();
	НовыйМассив.Добавить(НоваяСвязь);
	НовыйМассив.Добавить(НоваяСвязь1);
	
	Элементы.НоменклатураЗаказаПереработчика.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыйМассив);
	
КонецПроцедуры
Показать

И вставляю при открытии формы. Но при открытии он пишет ошибку:
Ошибка при установке значения атрибута контекста (СвязиПараметровВыбора)
Элементы.НоменклатураЗаказаПереработчика.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыйМассив);
по причине:
Недопустимое значение


В чем может быть проблема?
Заранее спасибо
По теме из базы знаний
Найденные решения
6. BackinSoda 08.06.17 10:56 Сейчас в теме
(5) в серверный модуль. Взял из бп 3.0, увы вызова там нигде нет.
Вот попробовал сперва очистить параметры, а потом добавить как в Вашем примере, вроде установилось

    Элементы.ПодразделениеОрганизации.СвязиПараметровВыбора = Новый ФиксированныйМассив(Новый массив);
	
НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Владелец", "Объект.Организация");
	 НовыйМассив = Новый Массив();
	НовыйМассив.Добавить(НоваяСвязь);

    
    Элементы.ПодразделениеОрганизации.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыйМассив);

Вызывал в "ПриСозданииНаСервере"
jane_de_rio; Legin; Student1C; Yury1001; Ali_q; Jeka44; Power_0N; HIVvich; Divedition; sizeoff; belm64; mikl79; simgo83; gsvserg; Maito; user659168_xec8787; Zero_nv; Craig; nikolas; Dizel; IvanGorbunov; mrmun; Proxynick; +23 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. BackinSoda 08.06.17 10:21 Сейчас в теме
(1) Судя по описанию там "Фиксированный массив из элементов типа СвязьПараметраВыбора."

НовыйМассив = Новый ФиксированныйМассив();
    НовыйМассив.Добавить(НоваяСвязь);
    НовыйМассив.Добавить(НоваяСвязь1);
    
    Элементы.НоменклатураЗаказаПереработчика.СвязиПараметровВыбора = НовыйМассив;
3. konyashkingn 2 08.06.17 10:24 Сейчас в теме
(2) У фиксированного массива нет метода "Добавить".
4. BackinSoda 08.06.17 10:29 Сейчас в теме
(3) Неловко получилось )
Процедура ЗаменитьСвязьПараметровВыбора(Элемент, Имя, НоваяСвязьПараметровВыбора) Экспорт


	МассивСвязей = Новый Массив;
	Для Каждого СвязьПараметровВыбора Из Элемент.СвязиПараметровВыбора Цикл
		Если ВРег(СвязьПараметровВыбора.Имя) <> ВРег(Имя) Тогда
			МассивСвязей.Добавить(СвязьПараметровВыбора);
		КонецЕсли;
	КонецЦикла;

	Элемент.СвязиПараметровВыбора = Новый ФиксированныйМассив(Новый Массив);
	МассивСвязей.Добавить(НоваяСвязьПараметровВыбора);
	Элемент.СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивСвязей);

КонецПроцедуры
Показать
вот пример есть
5. konyashkingn 2 08.06.17 10:40 Сейчас в теме
(4) А куда лучше воткнуть эту процедуру? Параметр имя это что?
6. BackinSoda 08.06.17 10:56 Сейчас в теме
(5) в серверный модуль. Взял из бп 3.0, увы вызова там нигде нет.
Вот попробовал сперва очистить параметры, а потом добавить как в Вашем примере, вроде установилось

    Элементы.ПодразделениеОрганизации.СвязиПараметровВыбора = Новый ФиксированныйМассив(Новый массив);
	
НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Владелец", "Объект.Организация");
	 НовыйМассив = Новый Массив();
	НовыйМассив.Добавить(НоваяСвязь);

    
    Элементы.ПодразделениеОрганизации.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыйМассив);

Вызывал в "ПриСозданииНаСервере"
jane_de_rio; Legin; Student1C; Yury1001; Ali_q; Jeka44; Power_0N; HIVvich; Divedition; sizeoff; belm64; mikl79; simgo83; gsvserg; Maito; user659168_xec8787; Zero_nv; Craig; nikolas; Dizel; IvanGorbunov; mrmun; Proxynick; +23 Ответить
7. konyashkingn 2 08.06.17 11:21 Сейчас в теме
(6) Все верно, работает.
В принципе я понял в чем ошибка. В том что я пишу Объект.Номенклатура.ВидНоменклатуры. Видимо дальше Номенклатуры не пускает.
Но все равно огромное спасибо.
8. TanyTany 19.06.18 16:14 Сейчас в теме
Скажите, пожалуйста, вам удалось ВидНоменклатуры добавить в связи? мне тоже нужно)
10. rozer 307 16.01.19 14:22 Сейчас в теме
11. user721621 6 22.05.23 05:51 Сейчас в теме
(8)
НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Владелец", "Элементы.НоменклатураЗаказаПереработчика.ТекущиеДанные.ВидНоменклатуры")
jane_de_rio; plevakin; blandinko; Aleksey_1C; +4 Ответить
9. dva1960 24.08.18 08:43 Сейчас в теме
В ERP ХарактеристикаНоменклатуры может быть подчинена как самой Номенклатуре, так и быть общей для ВидаНоменклатуры, который является реквизитом Номенклатуры. В последнем случае связь с владельцем получается не прямая, и использовать "Отбор.Владелец" не имеет смысла. Попробуйте вместо "Отбор.Владелец" указать "Номенклатура". В этом случае в ФормеВыбора ХаракеристикиНоменклатуры в процедуре ПриСозданииНаСервере выполняется анализ, кто является настоящим владельцем Характеристики и устанавливается соответствующий отбор.

Если Параметры.Отбор.Свойство("Владелец") Тогда
// Перенесем "стандартный" отбор по владельцу в свойство ПараметрВладелец
Параметры.ПараметрВладелец = Параметры.Отбор.Владелец;
Параметры.Отбор.Удалить("Владелец");
КонецЕсли;

Если Параметры.Свойство("ПараметрВладелец", ВладелецХарактеристик) И ЗначениеЗаполнено(ВладелецХарактеристик) Тогда
ПодборТоваровСервер.УстановитьОтборПоВладельцуХарактеристик(ЭтаФорма);
ИначеЕсли Параметры.Свойство("Номенклатура", Номенклатура) И ЗначениеЗаполнено(Номенклатура) Тогда
Если Справочники.Номенклатура.ПроверитьИспользованиеХарактеристикИПолучитьВладельцаДляВыбо­ра(Номенклатура, ВладелецХарактеристик) Тогда
Если ВладелецХарактеристик = Неопределено Тогда
ТекстИсключения = НСтр("ru = 'Для данной номенклатуры характеристики не заданы.'");
ВызватьИсключение ТекстИсключения;
Иначе
ПодборТоваровСервер.УстановитьОтборПоВладельцуХарактеристик(ЭтаФорма);
КонецЕсли;
Иначе
ТекстИсключения = НСтр("ru = 'Для данной номенклатуры отключено использование характеристик.'");
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецЕсли;
a_l_e_xj; malikov_pro; +2 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот