Передать таблицу объекта на сервер. Объект реквизит формы.

1. Иван Демидов (held88) 07.12.17 10:52 Сейчас в теме
Добрый день! Решил вынести часть процедур в отдельный модуль и что-то не могу сообразить как параметром передать туда таблицу объекта, который является реквизитом формы и все это на клиенте?

Попытался просто гсм_ОбщегоНазначенияСервер.Функция1(Объект.Товары)

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

Тоже не понятно. Я же ничего не изменяю, просто передаю.

Как решить данную проблему?
Ответы
7. Oleg Space (spacecraft) 07.12.17 14:02 Сейчас в теме
(1) как то так:
Модуль формы:
&НаКлиенте
Процедура КлиентскаяПроцедура()
  СервернаяПроцедура();
КонецПроцедуры

&НаСервере
Процедура СервернаяПроцедура()
  гсм_ОбщегоНазначенияСервер.Функция1(Объект.Товары) ;
КонецПроцедуры
Показать

Но нужно понимать, что будет передана не табличная часть, а ДанныеФормыКоллекция.
Если нужна именно табличная часть,тогда нужно использовать РеквизитФормыВЗначение. А после изменения обратное преобразование ЗначениеВРеквизитФормы.
12. Евгений Каширин (EVKash) 07.12.17 15:50 Сейчас в теме
(1) Ругается потому, что вы передаете объект а не его значение.
Попробуйте в общем модуле прописать функцию так
Функция Функция1(ЗНАЧ Параметр1) Экспорт
2. Герман Устюжанин (ger_kar) 07.12.17 11:02 Сейчас в теме
Использовать Функцию ДанныеФормыВЗначение(<Объект>, <Тип>) .
Если нужно передать данные отдельного реквизита формы, то для этого есть
РеквизитФормыВЗначение(<ИмяРеквизита>, <Тип>)
3. Герман Устюжанин (ger_kar) 07.12.17 11:06 Сейчас в теме
Вот публикация на эту тему. https://infostart.ru/public/153602/
Ознакомьтесь обязательно, чтобы иметь представление что к чему.
4. Иван Демидов (held88) 07.12.17 12:47 Сейчас в теме
(3)
ДанныеФормыВЗначение


Процедура или функция с указанным именем не определена (ДанныеФормыВЗначение)

Прочитал статью. Написано что она может выполняться на сервере без контекста. Хотя в синтаксис помощнике написано что данная процедура доступна на тонком клиенте. Не понятно. С Клиента можно как то сразу передать на сервер без дополнительного вызова серверных методов. А то так смысл теряется в вытаскивании процедур в отдельный модуль, а на их месте надо еще по процедуре создать которая вызовет эту процедуру.
6. Сан Саныч (herfis) 213 07.12.17 13:36 Сейчас в теме
(4) Насколько я понимаю, т.к. "Объект.Товары" - часть контекста формы, то и работать с ним напрямую можно только не выходя из контекста формы.
Если хочешь прямо с клиента его засунуть на сервер и загрузить потом результат обработки одной командой, то единственное что приходит в голову - попробовать извратиться через клиентский общий модуль (работа с которым, по идее, должна проходить без потери контекста формы). Дело осложняется тем, что ТЗ на клиенте нет. Т.е. вырисовывается такая хрень:
1) передавать Объект.Товары в клиентский общий модуль
2) в нем обходом перепаковывать данные оттуда в массив структур, структуру массивов или что тебе удобнее для эмуляции ТЗ
3) передавать эту хрень в общий модуль с вызовом сервера
4) там делать с ней чего надо (можно через временное преобразование в ТЗ)
5) результат возвращать в клиентский общий модуль опять же в эмулированной ТЗ
6) в клиентском общем модуле обходом перезаполнять "Объект.Товары" данными из эмулированной ТЗ
Обычно никто этим не парится и тратится на контекстный серверный вызов в форме, из которого уже делай что хочешь. Пусть это иногда выглядит лишним телодвижением, зато эффективнее и проще с точки зрения обмена данными между клиентом и сервером.
10. Герман Устюжанин (ger_kar) 07.12.17 14:22 Сейчас в теме
(4)
Процедура или функция с указанным именем не определена (ДанныеФормыВЗначение)
Значит вы вызываете ее не из того контекста.
5. Юрий Патласов (NoRazum) 18 07.12.17 12:59 Сейчас в теме
Это называется 1С.
куча лишних процедур
8. Иван Сидоров (succub1_5) 45 07.12.17 14:12 Сейчас в теме
(5)этот геммор только на УФ. раньше этого не было.
9. Иван Сидоров (succub1_5) 45 07.12.17 14:12 Сейчас в теме
можно проще - ТЗ сделать реквизиом Объекта.
13. Иван Демидов (held88) 07.12.17 16:30 Сейчас в теме
(9) И как обратится к реквизиту объекта в на сервере без контекста? Как передать туда обьект?
11. Вадим Мориков (vadim1011985) 45 07.12.17 15:08 Сейчас в теме
ПоместитьВоВременноеХранилище не предлагать ?
Оставьте свое сообщение