Хочу передать в бесконтекстную процедуру на сервере массив индексов выделенных строк в таблице и саму таблицу. Пишу:

```1c
    &НаКлиенте
    Процедура ЗаменаВозвратов(Команда)
    Массив=Элементы.Реализации.ВыделенныеСтроки;
    ЗаменаВозвратовНаСервере(Массив,Объект.Реализации);
    КонецПроцедуры

    &НаСервереБезКонтекста
    Процедура ЗаменаВозвратовНаСервере(Массив,Таблица)
    //Таблица=Таблица.Выгрузить();
    КонецПроцедуры
```

Получаю в результате ошибку:
"Нельзя изменять поле, содержащее объект данных формы". Почему?
Если убрать комментарий возле "Таблица=Таблица.Выгрузить();" тогда получаю другую ошибку:
"Ошибка отображения типов 1с 8.3 отсутствует отображение для типа...". Почему?
---
&НаСервере
Процедура ЗаменаВозвратовНаСервере(Массив,Таблица)

КонецПроцедуры

&НаСервере
Процедура ЗаменаВозвратовНаСервере(Массив,знач Таблица)

КонецПроцедуры
---
знач

```1c
    &НаКлиенте
    Процедура ЗаменаВозвратов(Команда)
    Массив=Элементы.Реализации.ВыделенныеСтроки;
    ЗаменаВозвратовНаСервере(Массив,Объект.Реализации);
    КонецПроцедуры

    &НаСервереБезКонтекста
    Процедура ЗаменаВозвратовНаСервере(Массив,знач Таблица)
    Таблица=Таблица.Выгрузить();
    КонецПроцедуры
```

Спасибо, но вот так тоже работает :)
---
"Нельзя изменять поле, содержащее объект данных формы". Почему?

потому что передается Таблица, которая является данными формы Объект.Реализации

Процедура ЗаменаВозвратовНаСервере(Массив,Таблица)

и сразу же меняется Таблица=Таблица.Выгрузить();

Эквивалентно

Объект.Реализации = Объект.Реализации.Выгрузить()
---
у что передается Таблица, которая является данными форм
Как передать таблицу с клиента тогда, если метод выгрузить доступен только на сервере?
---
Без промежуточной &НаСервере никак
---
```1c
    &НаКлиенте
    Процедура ЗаменаВозвратов(Команда)
    Массив=Элементы.Реализации.ВыделенныеСтроки;
    ЗаменаВозвратовНаСервере(Массив,Объект.Реализации);
    КонецПроцедуры

    &НаСервере
    Процедура ЗаменаВозвратовНаСервере(Массив,Таблица)

    КонецПроцедуры
```

Ошибка: "Нельзя изменять поле, содержащее объект данных формы". Просто из за вызова серверной процедуры...
---
&НаСервере
Процедура ЗаменаВозвратовНаСервере(Массив,Таблица)

КонецПроцедуры

&НаСервере
Процедура ЗаменаВозвратовНаСервере(Массив,знач Таблица)

КонецПроцедуры
---
знач

```1c
    &НаКлиенте
    Процедура ЗаменаВозвратов(Команда)
    Массив=Элементы.Реализации.ВыделенныеСтроки;
    ЗаменаВозвратовНаСервере(Массив,Объект.Реализации);
    КонецПроцедуры

    &НаСервереБезКонтекста
    Процедура ЗаменаВозвратовНаСервере(Массив,знач Таблица)
    Таблица=Таблица.Выгрузить();
    КонецПроцедуры
```

Спасибо, но вот так тоже работает :)
---
скажем так, это не дает ошибки, но изменить данные в ТЧ не дает. Ведь не просто так нужна ТЧ и выделенные строки в серверной процедуре?
---
Мне не нужно изменить табличную часть на клиенте, а нужно просто получить ее содержимое и обработать ссылки на документы, содержащиеся в полученной таблице. В таком случае я прав?
---
если изменений в документе не предполагаются, тогда да. Так можно.
---
Спасибо за советы!
---
а тут вообще нет смысла передавать Объект.Реализации. Серверный контекст содержит эти данные с учетом своего контекста.

```1c
    &НаКлиенте
    Процедура ЗаменаВозвратов(Команда)
    Массив=Элементы.Реализации.ВыделенныеСтроки;
    ЗаменаВозвратовНаСервере(Массив);
    КонецПроцедуры

    &НаСервере
    Процедура ЗаменаВозвратовНаСервере(Массив)
    Таблица = Объект.Реализации;
    КонецПроцедуры
```
---
если нужно передать на сервер всю ТЧ, тогда &НаСервереБезКонтекста не подходит. Используйте &НаСервере. Контексты будут синхронизированы.
&НаСервереБезКонтекста выгодно использовать, когда нужно обработать конкретные значения, скажем данные строки ТЧ.
---
"Ошибка отображения типов 1с 8.3 отсутствует отображение для типа...". Почему?

Предполагаю, что потому что на клиенте не доступна таблица значений.
---
Откуда она там берется? Я ведь на сервере ее получаю без контекста.