Есть журнал чеков, в котором находятся чеки двух видов:
- реализации товара (подразумеваются что они с плюсом);
- возврата товара (подразумевается что они с минусом).
Необходимо добавить кнопочку создания возвратного чека на основании чека реализации. Документ возвратного чека при этом должен просто открыться пользователю и заполнится данными из чека реализации, то есть не сохраниться.
Для этого написал:

```1c
    &НаКлиенте
    Процедура СоздатьВозвратныйЧек(Команда)
    ТекущиеДанные=ЭтаФорма.Элементы.ЧекиРеализация.ТекущиеДанные;
    ПолучитьДанныеОбъектаЧекРеализация(ТекущиеДанные.Ссылка);
    КонецПроцедуры

    &НаСервере
    Функция ПолучитьДанныеОбъектаЧекРеализация(Ссылка)
    ЧекРеализация=Ссылка.ПолучитьОбъект();
    ЧекВозврат = Документы.ЧекВозврат.СоздатьДокумент();
    ЧекВозврат.Заполнить(Ссылка);
    //ЗАПОЛНИЛ возвратный чек на основании реализации
    ЧекВозвратФорма = ЧекВозврат.ПолучитьФорму(); //Ошибка
    ЧекВозвратФорма.Открыть(); //Ошибка
    Возврат Неопределено;
    КонецФункции
```

У меня получилось заполнить созданный документ, но как мне его показать пользователю без сохранения. Я почитал что ПолучитьФорму() на клиенте нужно выполнить и она автоматически сделает серверный вызов, но проблема в том что я ведь не могу передать объект с сервера на клиент. Подскажите пожалуйста что делать.
---
```1c
    ЧекВозврат.Заполнить(Ссылка);
```

Вызывает процедуру ОбработкаЗаполнения в модуле ЧекВозврат.

```1c
    ОткрытьФорму("Документ.ЧекВозврат.ФормаОбъекта",Новый Структура("ЗначенияЗаполнения",Новый Структура));
```

Вызовет ее же.
Можно скорректировать Процедуру ОбработкаЗаполнения

```1c
    Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
    Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
    И ДанныеЗаполнения.Свойство("ДокументОснование") Тогда
    //Заполняем по ДанныеЗаполнения.ДокументОснование.Например
    ДанныеЗаполнения = ДанныеЗаполнения.ДокументОснование;
    КонецЕсли;
    КонецПроцедуры
```

и Открыть форму не записанного документа дело техники

```1c
    ОткрытьФорму("Документ.ЧекВозврат.ФормаОбъекта",Новый Структура("ЗначенияЗаполнения",Новый Структура("ДокументОснование",Ссылка));
```
---
Еще полезные темы по данному вопросу (сам нашел):
1. https://infostart.ru/public/521481/
2. https://infostart.ru/public/118784/
---
как вариант можно на клиенте создавать форму ЧекВозврат и передавать параметром Основание
---
А потом при открытии формы по данному параметру (ссылке) получать объект и заполнять из него данные формы?
---
да
---
Для этого есть параметр ЗначенияЗаполнения тип Структура., Который передается в параметр ДанныеЗаполнения Процедуры ОбработкаЗаполнения. Просто смотрим Обработку заполнения и проверку на Тип Структура и заполняем параметр ЗначенияЗаполнения, как нарисовано в Обработке заполнения
---
```1c
    ЧекВозврат.Заполнить(Ссылка);
```

Вызывает процедуру ОбработкаЗаполнения в модуле ЧекВозврат.

```1c
    ОткрытьФорму("Документ.ЧекВозврат.ФормаОбъекта",Новый Структура("ЗначенияЗаполнения",Новый Структура));
```

Вызовет ее же.
Можно скорректировать Процедуру ОбработкаЗаполнения

```1c
    Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
    Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура")
    И ДанныеЗаполнения.Свойство("ДокументОснование") Тогда
    //Заполняем по ДанныеЗаполнения.ДокументОснование.Например
    ДанныеЗаполнения = ДанныеЗаполнения.ДокументОснование;
    КонецЕсли;
    КонецПроцедуры
```

и Открыть форму не записанного документа дело техники

```1c
    ОткрытьФорму("Документ.ЧекВозврат.ФормаОбъекта",Новый Структура("ЗначенияЗаполнения",Новый Структура("ДокументОснование",Ссылка));
```
---
Спасибо за совет с подробным кодом.
---
Еще полезные темы по данному вопросу (сам нашел):
1. https://infostart.ru/public/521481/
2. https://infostart.ru/public/118784/