| 
    
            
         
         | 
    
  | 
Помогите как изменить доп. реквизит на форме при изменении другого реквизита? | ☑ | ||
|---|---|---|---|---|
| 
    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)Спасибо. разобрался.  ПОменял немного те функции.     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |