0
Металлист Балалайкин
04.08.20
✎
18:10
|
На форме есть обычный реквизит и дополнительный общий реквизит формы.
надо чтоб при изменении первого реквизита менялся второй.
Захожу в "ПриИзменении
&НаКлиенте
Процедура МаркаПриИзменении(Элемент)
Если Объект.Марка.Пустая() Тогда
НаименованиеМарки = "";
Иначе
НаименованиеМарки = Строка(Объект["Марка"]);
УстановитьЗначениеДополнительногоРеквизитаОбъекта(Объект, "Коллекция_16b08aba18d04901b360ee88d7eca768", НаименованиеМарки)
КонецЕсли;
ПриИзмененииПараметраИменования(Элемент.Имя,Истина);
КонецПроцедуры
и выдается ошибка "Нельзя изменять поле, содержащее объект данных формы"
При этом функция
УстановитьЗначениеДополнительногоРеквизитаОбъекта
работает внутри обработки. Если Например. в этом коде:
ТекТовар = Товар.ПолучитьОбъект();
УстановитьЗначениеДополнительногоРеквизитаОбъекта(ТекТовар, "Коллекция_16b08aba18d04901b360ee88d7eca768", Марка);
А сама функция
&НаСервере
Функция ПолучитьСвойство(Имя)
Возврат ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", Имя);
КонецФункции
&НаСервере
Процедура УстановитьЗначениеДополнительногоРеквизитаОбъекта(Объект, ИмяРеквизита, Значение) Экспорт
Свойство = ПолучитьСвойство(ИмяРеквизита);
Строки = Объект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура("Свойство",Свойство));
Если Строки.Количество()>0 Тогда
Строки[0].Значение = Значение;
Возврат;
КонецЕсли;
ДоступныеСвойства = УправлениеСвойствами.СвойстваОбъекта(Объект,Истина,Ложь);
Если ДоступныеСвойства.Найти(Свойство)=Неопределено Тогда
ВызватьИсключение "Нет реквизита "+ИмяРеквизита;
КонецЕсли;
Строка = Объект.ДополнительныеРеквизиты.Добавить();
Строка.Свойство = Свойство;
Строка.Значение = Значение;
КонецПроцедуры
|
|
2
Металлист Балалайкин
04.08.20
✎
19:36
|
(1)а не подскажете как обойти ошибку
Отсутствует отображение для типа 'ФормаКлиентскогоПриложения'
{Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(755)}: Поле = ПолучитьЗначениеДополнительногоРеквизитаНаФорме(ЭтаФорма, "brand");
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'param':
форма: Элемент
имя: {
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ФормаКлиентскогоПриложения'
&НаКлиенте
Процедура МаркаПриИзменении(Элемент)
Если Объект.Марка.Пустая() Тогда
НаименованиеМарки = "";
Иначе
НаименованиеМарки = Строка(Объект["Марка"]);
Поле = ПолучитьЗначениеДополнительногоРеквизитаНаФорме(ЭтаФорма, "brand");
КонецЕсли;
ПриИзмененииПараметраИменования(Элемент.Имя,Истина);
КонецПроцедуры
|
|