|
Помогите как изменить доп. реквизит на форме при изменении другого реквизита? | ☑ | ||
---|---|---|---|---|
0
Металлист Балалайкин
04.08.20
✎
18:10
|
На форме есть обычный реквизит и дополнительный общий реквизит формы.
надо чтоб при изменении первого реквизита менялся второй. Захожу в "ПриИзменении &НаКлиенте Процедура МаркаПриИзменении(Элемент) Если Объект.Марка.Пустая() Тогда НаименованиеМарки = ""; Иначе НаименованиеМарки = Строка(Объект["Марка"]); УстановитьЗначениеДополнительногоРеквизитаОбъекта(Объект, "Коллекция_16b08aba18d04901b360ee88d7eca768", НаименованиеМарки) КонецЕсли; ПриИзмененииПараметраИменования(Элемент.Имя,Истина); КонецПроцедуры и выдается ошибка "Нельзя изменять поле, содержащее объект данных формы" При этом функция УстановитьЗначениеДополнительногоРеквизитаОбъекта работает внутри обработки. Если Например. в этом коде: ТекТовар = Товар.ПолучитьОбъект(); УстановитьЗначениеДополнительногоРеквизитаОбъекта(ТекТовар, "Коллекция_16b08aba18d04901b360ee88d7eca768", Марка); А сама функция &НаСервере Функция ПолучитьСвойство(Имя) Возврат ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", Имя); КонецФункции &НаСервере Процедура УстановитьЗначениеДополнительногоРеквизитаОбъекта(Объект, ИмяРеквизита, Значение) Экспорт Свойство = ПолучитьСвойство(ИмяРеквизита); Строки = Объект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура("Свойство",Свойство)); Если Строки.Количество()>0 Тогда Строки[0].Значение = Значение; Возврат; КонецЕсли; ДоступныеСвойства = УправлениеСвойствами.СвойстваОбъекта(Объект,Истина,Ложь); Если ДоступныеСвойства.Найти(Свойство)=Неопределено Тогда ВызватьИсключение "Нет реквизита "+ИмяРеквизита; КонецЕсли; Строка = Объект.ДополнительныеРеквизиты.Добавить(); Строка.Свойство = Свойство; Строка.Значение = Значение; КонецПроцедуры |
|||
1
asady
04.08.20
✎
18:35
|
(0) тебе надо не объект менять а значение на форме - остальное форма сделает сама
вот здесь почитай http://catalog.mista.ru/1c/articles/867282/ |
|||
2
Металлист Балалайкин
04.08.20
✎
19:36
|
(1)а не подскажете как обойти ошибку
Отсутствует отображение для типа 'ФормаКлиентскогоПриложения' {Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(755)}: Поле = ПолучитьЗначениеДополнительногоРеквизитаНаФорме(ЭтаФорма, "brand"); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'param': форма: Элемент имя: {http://v8.1c.ru/8.2/managed-application/modules}param по причине: Ошибка отображения типов: Отсутствует отображение для типа 'ФормаКлиентскогоПриложения' &НаКлиенте Процедура МаркаПриИзменении(Элемент) Если Объект.Марка.Пустая() Тогда НаименованиеМарки = ""; Иначе НаименованиеМарки = Строка(Объект["Марка"]); Поле = ПолучитьЗначениеДополнительногоРеквизитаНаФорме(ЭтаФорма, "brand"); КонецЕсли; ПриИзмененииПараметраИменования(Элемент.Имя,Истина); КонецПроцедуры |
|||
3
hhhh
04.08.20
✎
20:11
|
(2) форму нельзя передавать на сервер
|
|||
4
Металлист Балалайкин
04.08.20
✎
20:12
|
(3)Спасибо. разобрался. ПОменял немного те функции.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |