1. held88 45 07.12.17 10:52 Сейчас в теме

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

Добрый день! Решил вынести часть процедур в отдельный модуль и что-то не могу сообразить как параметром передать туда таблицу объекта, который является реквизитом формы и все это на клиенте?

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

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

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

Как решить данную проблему?
Ответы
Избранное Подписка Сортировка: Древо
7. 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 45 07.12.17 12:47 Сейчас в теме
(3)
ДанныеФормыВЗначение


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

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

Вакансии

Программист 1С
Нижний Новгород
зарплата от 120 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 120 000 руб.
Полный день

Программист 1С
Новосибирск
зарплата от 80 000 руб. до 100 000 руб.
Полный день

Системный аналитик
Новосибирск
зарплата от 80 000 руб. до 100 000 руб.
Полный день

Программист 1С
Салехард
зарплата от 80 000 руб. до 200 000 руб.
Полный день