Ошибка “Нельзя изменять поле, содержащее объект данных формы” (1С)

При программном изменении формы может возникнуть ошибка:

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

Ошибка возникает при следующем коде:

В параметре процедуры ПробитьЧекНаСервере() мы передаем данные формы с типом ДанныеФормыКоллекция, и потом на сервере пытаемся их изменить.

Даже если эти данные мы не меняем внутри процедуры, 1С на всякий случай ругнется.

Параметр Док  процедуры ПробитьЧекНаСервере передается по ссылке, а значит при завершении процедуры этот параметр возвращается и пытается присвоиться реквизиту, что запрещено.

Если объект не планируется изменять в процедуре ПробитьЧекНаСервере(), то достаточно скопировать реквизит во временную переменную, которая не является реквизитом и поэтому без проблем “возвратится” обратно из процедуры.

Тот же самый эффект можно получить просто указав в объявлении процедуры ключевое слово Знач и передавать в качестве параметра изначальный реквизит Объект, без использования ДокКопия:
Однако, если объект в процедуре ПробитьЧекНаСервере() планируется изменять, то нужно использовать копирование реквизита во временную переменную и добавить вызов КопироватьДанныеФормы:

7 thoughts on “Ошибка “Нельзя изменять поле, содержащее объект данных формы” (1С)

Добавить комментарий

Ваш адрес email не будет опубликован.