Недавно я обновлял Бухгалтерию на управляемых формах с 3.0.25.9 на 3.0.30.12 версию. И все мои внешние обработки перестали работать. Ругались они все одинаково:
{Форма.Форма.Форма(14)}: Поле объекта недоступно для записи (ЭтотОбъект)
ЭтотОбъект = РеквизитФормыВЗначение("Объект");
Открываю модуль формы. Ошибка происходит в следующей процедуре:
&НаСервере
Процедура СформироватьНаСервере() ЭтотОбъект = РеквизитФормыВЗначение("Объект"); ЭтотОбъект.Сформировать(); ЗначениеВРеквизитФормы(ЭтотОбъект, "Объект"); КонецПроцедуры
Это стандартный способ вызвать процедуру модуля объекта из модуля формы. Работал везде и всегда. При более подробном рассмотрении в отладчике оказывается, что в переменной "ЭтотОбъект" хранится объект типа УправляемаяФорма. Та же самая управляемая форма, что и в реквизите формы "ЭтаФорма". При выполнении обработок в старой конфигурации все работает корректно. Платформа 8.3.4.389.
В ходе расследования выяснилось, что в новой версии конфигурации убрана совместимость с 8.2. А реквизит управляемой формы "ЭтотОбъект" появился как раз в 8.3. Так что советую все переменные "ЭтотОбъект" в модулях форм своих обработок переименовать, например, в "ДанныйОбъект". И надеяться, что разработчики платформы 1С хотя бы еще несколько лет не будут заводить реквизит формы с таким названием)