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

Автор: | 12.01.2020

Если на форме есть реквизит и мы его передаем как параметр в процедуру или функцию может возникнуть ошибка «Нельзя изменять поле, содержащее объект данных формы».

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

Варианта решения проблемы два:

  1. Присвоить сначала значение в новую переменную, а потом передать как параметр (при возврате система не будет пытаться присвоить значение реквизиту);
  2. В самой процедуре в параметрах указать тип переменной «Знач»;

Пример:

код который выдает ошибку

&НаКлиенте
Процедура ПроцедураСОшибкой()
ПрибавитьЕдиницу(РеквизитФормы);
КонецПроцедуры

&НаСервере
Процедура ПрибавитьЕдиницу( ЗначениеРеквизитаФормы )
а = ЗначениеРеквизитаФормы + 1;
КонецПроцедуры;

Код исправленный первым способом:

Процедура ПроцедураСОшибкой()
б = РеквизитФормы;
ПрибавитьЕдиницу(б);
КонецПроцедуры

&НаСервере
Процедура ПрибавитьЕдиницу( ЗначениеРеквизитаФормы )
а = ЗначениеРеквизитаФормы + 1;
КонецПроцедуры;

Код исправленный вторым способом:

Процедура ПроцедураСОшибкой()
ПрибавитьЕдиницу(РеквизитФормы);
КонецПроцедуры

&НаСервере
Процедура ПрибавитьЕдиницу(Знач ЗначениеРеквизитаФормы)
а = ЗначениеРеквизитаФормы + 1;
КонецПроцедуры;



Поделиться:
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

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