Допустим, мы делаем какую-то внешнюю обработку, в форме которой размещаем реквизит с типом "Таблица значений". Назовём этот реквизит СчетаФактуры.
Также на форме размещаем кнопку команды, например, с названием "Обработать счета-фактуры". Задаём действие для команды:
&НаКлиенте Процедура ОбработатьСчетаФактуры(Команда) ОбработатьСчетаФактурыНаСервере(СчетаФактуры); КонецПроцедуры &НаСервере Процедура ОбработатьСчетаФактурыНаСервере(СчетаФактуры) // Тело процедуры. КонецПроцедуры
Параметр СчетаФактуры – это наш реквизит формы.
При попытке запустить команду получаем ошибку:
"Нельзя изменять поле, содержащее объект данных формы".
Дело в том, что в параметре процедуры ОбработатьСчетаФактурыНаСервере(СчетаФактуры) мы передаём данные формы с типом ДанныеФормыКоллекция, и потом на сервере пытаемся их изменить.
Для исправления ошибки нужно всего навсего объявить переменную и присвоить ей значение реквизита.
&НаКлиенте Процедура ОбработатьСчетаФактуры(Команда) перем_СчетаФактуры = СчетаФактуры; ОбработатьСчетаФактурыНаСервере(перем_СчетаФактуры); КонецПроцедуры &НаСервере Процедура ОбработатьСчетаФактурыНаСервере(перем_СчетаФактуры) // Тело процедуры. КонецПроцедуры