Добрый день, коллеги!
Вопрос по установки связи параметров выбора не в свойствах реквизита, а в коде. Как я делаю, написал процедуру:
И вставляю при открытии формы. Но при открытии он пишет ошибку:
Ошибка при установке значения атрибута контекста (СвязиПараметровВыбора)
Элементы.НоменклатураЗаказаПереработчика.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыйМассив);
по причине:
Недопустимое значение
В чем может быть проблема?
Заранее спасибо
Вопрос по установки связи параметров выбора не в свойствах реквизита, а в коде. Как я делаю, написал процедуру:
Процедура УстановитьСвязьПоТипу()
НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Владелец", "Объект.НоменклатураЗаказаПереработчика");
НоваяСвязь1 = Новый СвязьПараметраВыбора("Отбор.Владелец", "Объект.НоменклатураЗаказаПереработчика.ВидНоменклатуры");
НовыйМассив = Новый Массив();
НовыйМассив.Добавить(НоваяСвязь);
НовыйМассив.Добавить(НоваяСвязь1);
Элементы.НоменклатураЗаказаПереработчика.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыйМассив);
КонецПроцедуры
ПоказатьИ вставляю при открытии формы. Но при открытии он пишет ошибку:
Ошибка при установке значения атрибута контекста (СвязиПараметровВыбора)
Элементы.НоменклатураЗаказаПереработчика.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыйМассив);
по причине:
Недопустимое значение
В чем может быть проблема?
Заранее спасибо
По теме из базы знаний
- Работа с данными выбора
- Создание отчетов с помощью СКД - основные понятия и элементы
- Управление состоянием для шаблона MVC и работы с данными объекта
- Параметры открытия формы выбора отборов и параметров СКД ("связи параметров выбора" списочных значений СКД)
- Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия
Найденные решения
(5) в серверный модуль. Взял из бп 3.0, увы вызова там нигде нет.
Вот попробовал сперва очистить параметры, а потом добавить как в Вашем примере, вроде установилось
Вызывал в "ПриСозданииНаСервере"
Вот попробовал сперва очистить параметры, а потом добавить как в Вашем примере, вроде установилось
Элементы.ПодразделениеОрганизации.СвязиПараметровВыбора = Новый ФиксированныйМассив(Новый массив);
НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Владелец", "Объект.Организация");
НовыйМассив = Новый Массив();
НовыйМассив.Добавить(НоваяСвязь);
Элементы.ПодразделениеОрганизации.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыйМассив);
Вызывал в "ПриСозданииНаСервере"
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Судя по описанию там "Фиксированный массив из элементов типа СвязьПараметраВыбора."
НовыйМассив = Новый ФиксированныйМассив();
НовыйМассив.Добавить(НоваяСвязь);
НовыйМассив.Добавить(НоваяСвязь1);
Элементы.НоменклатураЗаказаПереработчика.СвязиПараметровВыбора = НовыйМассив;
(3) Неловко получилось )
вот пример есть
Процедура ЗаменитьСвязьПараметровВыбора(Элемент, Имя, НоваяСвязьПараметровВыбора) Экспорт
МассивСвязей = Новый Массив;
Для Каждого СвязьПараметровВыбора Из Элемент.СвязиПараметровВыбора Цикл
Если ВРег(СвязьПараметровВыбора.Имя) <> ВРег(Имя) Тогда
МассивСвязей.Добавить(СвязьПараметровВыбора);
КонецЕсли;
КонецЦикла;
Элемент.СвязиПараметровВыбора = Новый ФиксированныйМассив(Новый Массив);
МассивСвязей.Добавить(НоваяСвязьПараметровВыбора);
Элемент.СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивСвязей);
КонецПроцедуры
Показать
(5) в серверный модуль. Взял из бп 3.0, увы вызова там нигде нет.
Вот попробовал сперва очистить параметры, а потом добавить как в Вашем примере, вроде установилось
Вызывал в "ПриСозданииНаСервере"
Вот попробовал сперва очистить параметры, а потом добавить как в Вашем примере, вроде установилось
Элементы.ПодразделениеОрганизации.СвязиПараметровВыбора = Новый ФиксированныйМассив(Новый массив);
НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Владелец", "Объект.Организация");
НовыйМассив = Новый Массив();
НовыйМассив.Добавить(НоваяСвязь);
Элементы.ПодразделениеОрганизации.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыйМассив);
Вызывал в "ПриСозданииНаСервере"
В ERP ХарактеристикаНоменклатуры может быть подчинена как самой Номенклатуре, так и быть общей для ВидаНоменклатуры, который является реквизитом Номенклатуры. В последнем случае связь с владельцем получается не прямая, и использовать "Отбор.Владелец" не имеет смысла. Попробуйте вместо "Отбор.Владелец" указать "Номенклатура". В этом случае в ФормеВыбора ХаракеристикиНоменклатуры в процедуре ПриСозданииНаСервере выполняется анализ, кто является настоящим владельцем Характеристики и устанавливается соответствующий отбор.
Если Параметры.Отбор.Свойство("Владелец") Тогда
// Перенесем "стандартный" отбор по владельцу в свойство ПараметрВладелец
Параметры.ПараметрВладелец = Параметры.Отбор.Владелец;
Параметры.Отбор.Удалить("Владелец");
КонецЕсли;
Если Параметры.Свойство("ПараметрВладелец", ВладелецХарактеристик) И ЗначениеЗаполнено(ВладелецХарактеристик) Тогда
ПодборТоваровСервер.УстановитьОтборПоВладельцуХарактеристик(ЭтаФорма);
ИначеЕсли Параметры.Свойство("Номенклатура", Номенклатура) И ЗначениеЗаполнено(Номенклатура) Тогда
Если Справочники.Номенклатура.ПроверитьИспользованиеХарактеристикИПолучитьВладельцаДляВыбо ра(Номенклатура, ВладелецХарактеристик) Тогда
Если ВладелецХарактеристик = Неопределено Тогда
ТекстИсключения = НСтр("ru = 'Для данной номенклатуры характеристики не заданы.'");
ВызватьИсключение ТекстИсключения;
Иначе
ПодборТоваровСервер.УстановитьОтборПоВладельцуХарактеристик(ЭтаФорма);
КонецЕсли;
Иначе
ТекстИсключения = НСтр("ru = 'Для данной номенклатуры отключено использование характеристик.'");
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецЕсли;
Если Параметры.Отбор.Свойство("Владелец") Тогда
// Перенесем "стандартный" отбор по владельцу в свойство ПараметрВладелец
Параметры.ПараметрВладелец = Параметры.Отбор.Владелец;
Параметры.Отбор.Удалить("Владелец");
КонецЕсли;
Если Параметры.Свойство("ПараметрВладелец", ВладелецХарактеристик) И ЗначениеЗаполнено(ВладелецХарактеристик) Тогда
ПодборТоваровСервер.УстановитьОтборПоВладельцуХарактеристик(ЭтаФорма);
ИначеЕсли Параметры.Свойство("Номенклатура", Номенклатура) И ЗначениеЗаполнено(Номенклатура) Тогда
Если Справочники.Номенклатура.ПроверитьИспользованиеХарактеристикИПолучитьВладельцаДляВыбо
Если ВладелецХарактеристик = Неопределено Тогда
ТекстИсключения = НСтр("ru = 'Для данной номенклатуры характеристики не заданы.'");
ВызватьИсключение ТекстИсключения;
Иначе
ПодборТоваровСервер.УстановитьОтборПоВладельцуХарактеристик(ЭтаФорма);
КонецЕсли;
Иначе
ТекстИсключения = НСтр("ru = 'Для данной номенклатуры отключено использование характеристик.'");
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецЕсли;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот