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

1. eda76 02.04.24 01:40 Сейчас в теме
есть процедура которая заполняет форму, из формы вызывается ОбщийМодульКлиент.ПроцедураЗаполнения(ЭтаФорма) она выполняет какой то алгоритм (заполняет как реквизиты объекта так и реквизиты формы), а потом надо заполнить Табл.часть вызвав серверную процедуру
ОбщийМодульСервер.ПроцедураЗаполнения(ЭтаФорма)
в ней добавляю ТЧ
ЭтаФорма.Объект.ТЧ.Добавить() а при выходе из нее получаю ошибку "Нельзя изменять поле, содержащее объект данных формы", подскажите как выйти из ситуации
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Sashares 35 02.04.24 09:30 Сейчас в теме
(1)Форму с клиента на сервер передавать в параметре нельзя.
Серверную процедуру общего модуля вызывайте из серверного контекста.
6. eda76 02.04.24 09:57 Сейчас в теме
(4) форма и не передается
сори, передается, но пробовал по разному
5. spacecraft 02.04.24 09:45 Сейчас в теме
(1)
а потом надо заполнить Табл.часть вызвав серверную процедуру
ОбщийМодульСервер.ПроцедураЗаполнения(ЭтаФорма)

Можно передавать не саму форму а ее основной реквизит Объект. Его можно передавать с клиента на сервер.
SlavaKron; +1 Ответить
7. eda76 02.04.24 10:01 Сейчас в теме
(5) пробовал
ОбщийМодульСервер.ПроцедураЗаполнения(ЭтаФорма.Объект)
и так
Рек=ЭтаФорма.Объект;
ОбщийМодульСервер.ПроцедураЗаполнения(Рек)
,но выдает как раз ошибку "Нельзя изменять поле, содержащее объект данных формы" при выходе из нее
9. Sashares 35 02.04.24 10:09 Сейчас в теме
(5)
Его можно передавать с клиента на сервер.

Передавать можно, изменять нельзя.
spacecraft; +1 Ответить
10. eda76 02.04.24 10:36 Сейчас в теме
(9) попробовал
ОбщийМодульСервер.ПроцедураЗаполнения(ЭтаФорма.Объект)

процедура ПроцедураЗаполнения(ПриемникДанных) Экспорт

    ДокОбъект = ДанныеФормыВЗначение(ПриемникДанных, Тип("СправочникОбъект.Организации"));
....
    ЗначениеВДанныеФормы(ДокОбъект, ПриемникДанных);


тоже пишет что нельзя менять данные формы
11. Sashares 35 02.04.24 10:37 Сейчас в теме
(10)Это буквально то, что я и написал.
12. eda76 02.04.24 10:40 Сейчас в теме
(11) а что делать? пока на ум только приходит вернуть с сервера массив и уже на клиенте заполнить
13. spacecraft 02.04.24 10:57 Сейчас в теме
(12) а нельзя с клиентской процедуры вернуться на форму и там продолжить вызвав серверную процедуру самой формы из которой и вызывать серверную процедуру из общего модуля?
14. eda76 02.04.24 11:23 Сейчас в теме
(13)Хотелось бы сделать вызовом одной процедуры (что бы не городить), проще бы было передать в заполнение просто объект, но там заполняет и реквизиты формы
15. Sashares 35 02.04.24 11:27 Сейчас в теме
(12)А как вы оказываетесь в ОбщийМодульКлиент.ПроцедураЗаполнения?
Что мешает из серверного контекста формы перейти в ОбщийМодульСервер.ПроцедураЗаполнения?
16. eda76 02.04.24 11:39 Сейчас в теме
(15)на сервер нельзя передать форму
17. Sashares 35 02.04.24 11:44 Сейчас в теме
(16)На форме кнопка, при нажатии на кнопку вызывается клиентская процедура.
Из нее вызывается серверная процедура формы без параметров.
Из серверной процедуры формы вызывается ОбщийМодульСервер.ПроцедураЗаполнения - передается форма.
19. eda76 02.04.24 11:54 Сейчас в теме
(17)там сложнее, это заполнение данных организации из DaData, при нажатии кнопки идет получение данных, может вернуться несколько организаций, по этому открывается еще одна форма, при выборе в ней должна заполнится уже первая форма
вот и хотел сделать заполнение вызовом одной процедуры (для простоты внедрения) и все работало пока не перевел конфу на бсп, в ней адрес хранится в табличной части и для его заполнения (что бы использовать функционал БСП) надо на сервер переходить (((
20. Sashares 35 02.04.24 11:56 Сейчас в теме
(19)Можно получать данные на сервере, возвращать данные на клиент и заполнять объект на клиенте.
22. eda76 02.04.24 12:12 Сейчас в теме
(20)так пока и сделал (
чуток изврат, но
21. Vadim-SH 02.04.24 12:08 Сейчас в теме
(19) А что, если использовать ОбработкаОповещения.
Или передать первую форму в Параметры второй.
23. eda76 02.04.24 13:09 Сейчас в теме
(21)тут проблема в том что надо заполнить форму не в контексте формы (для упрощения внедрения), а в общем модуле
2. odinsmot 02.04.24 07:38 Сейчас в теме
Возможно КопироватьДанныеФормы поможет.
3. Vadim-SH 02.04.24 08:10 Сейчас в теме
Возможно метод РеквизитФормыВЗначение поможет.
ДокОбъект = ЭтаФорма.РеквизитФормыВЗначение("Объект");
СтрТЧ=ДокОбъект.ТЧ.Добавить();
ЭтаФорма.ЗначениеВРеквизитФормы(ДокОбъект, "Объект");
8. eda76 02.04.24 10:08 Сейчас в теме
(3)не работает, так как в ОбщийМодульСервер.ПроцедураЗаполнения(ЭтаФорма) не дает передать форму(Отсутствует отображение для типа 'ФормаКлиентскогоПриложения')
18. Vadim-SH 02.04.24 11:50 Сейчас в теме
(8) Свойство формы ЭтотОбъект доступно на сервере
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот