Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 фев 2025, 18:57

Ошибка "Нельзя изменять поле, содержащее объект данных формы"

Автор VGreen, 03 фев 2025, 10:35

0 Пользователей и 1 гость просматривают эту тему.

VGreen

Это напасть преследовала многих, не могу понять, почему она вылетела у меня, да еще и в момент завершения выполнения серверной функции, ведь у меня в этот момент никаких попыток что-либо изменить не происходит. Более того, я уже Объект оставил в покое. Как справиться с этой бедой решение нашлось, просто не понятно как и почему оно возникло

&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)      
   Объект.Адрес = ПолучитьЮридическийАдрес (Объект);      
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьЮридическийАдрес (Объект)                                   
   ЮридическийАдрес = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Объект.Организация.Ссылка, Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации, ТекущаяДата(), Истина);
   Возврат ЮридическийАдрес;   
КонецФункции // ()

LexaK

если помогло нажмите: Спасибо!

antoneus

Не Объект.Организация.Ссылка, а Объект.Организация. Объект.Организация - это и есть ссылка.

Afinogen

потом что вы  с клиента передаете "Объект"  в процедуру н сервере без контекста, тогда уже проще делайте

&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)     
   Объект.Адрес = ПолучитьЮридическийАдрес (Объект.Организация);     
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьЮридическийАдрес (Организация)                                   
   ЮридическийАдрес = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Организация, Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации, ТекущаяДата(), Истина);
   Возврат ЮридическийАдрес;   
КонецФункции // ()

VGreen

Afinogen, Да, я так и сделал. Меня удивило то, что ошибка вылетела в конце процедуры, а не в тот момент, когда я передал объект или обратился к нему в процедуре.

VGreen

LexaK, у меня не сохранилось полного текста, а спецом воспроизводить лень. Но мне кажется, что то, что было в заголовке и есть почти полный текст, если не считать номера строк модуля

Afinogen

VGreen, вы на сервер передавали объект формы, при  чем у вас стояла дирректива &НаСервереБезКонтекста,  можно было проще все сделать,  вместо &НаСервереБезКонтекста
указать &НаСервере и тогда вообще бы можно было не парится, если конечно  у вас на форме нет чертовой тучи динамических  списков и разных  окошек да таб частей с закладками.

Если форма относительно ненагруженная всякими элементами интерфейса то ваша процедура упрощается до 1 строчки

&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент) 
   ЗаполнитьЮридическийАдрес();         
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьЮридическийАдрес ()                                   
   Объект.Адрес = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Объект.Организация, Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации, ТекущаяДата());   
КонецПроцедуры //

Afinogen

почитайте в чем разница между просто на сервере и на сервере без  контекста, как и аналогично для клиента

VGreen

Afinogen, Я в общих чертах в курсе в чем разница. Просто мы (начинающие пЕсатели) такие, нам на лекции сказали, что без контекста лучше чем с контекстом и мы пошли делать лучше! Словом как младенцы со спичками. 

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск