Здравствуйте!
Подскажите пожалуйста почему при таком алгоритме открывается незаполненная форма документа, хотя сам документ создался и записался?

```1c
    &НаСервере
    Функция ЗаполнитьНаОснованииЗаявкиНаСервере()

    ФормаВыбора = Документы.рбсВнесениеДанныхКонтрагента.ПолучитьФормуВыбора();
    ФормаВыбора.РежимВыбора=Истина;
    ФормаВыбора.Отбор.Контрагент.Установить(Объект.Контрагент,Истина);
    ФормаВыбора.Отбор.Контрагент.Использование=Истина;
    ФормаВыбора.Заголовок = "Выберите документ";
    ВыбранныйДокумент= ФормаВыбора.ОткрытьМодально();
    НовДок=Документы.рбсДоговор.СоздатьДокумент();
    НовДок.Дата=ТекущаяДата();
    НовДок.Заполнить(ВыбранныйДокумент.Ссылка);
    НовДок.Записать(РежимЗаписиДокумента.Запись);

    Возврат НовДок;
    КонецФункции

    &НаКлиенте
    Процедура ЗаполнитьНаОснованииЗаявки(Команда)
    НовДок=ЗаполнитьНаОснованииЗаявкиНаСервере();

    ПараметрыФормы = Новый Структура("Ключ", НовДок.Ссылка);
    ОткрытьФорму("Документ.рбсДоговор.Форма.ФормаДокумента", ПараметрыФормы);
    КонецПроцедуры
```

Что нужно поправить или добавить. Документ создается, записывается, а в открывающейся форме не он.
---
```1c
    &НаСервере
    Функция ЗаполнитьНаОснованииЗаявкиНаСервере(СсылкаДляЗаполнения)
    НовДок=Документы.рбсДоговор.СоздатьДокумент();
    НовДок.Дата=ТекущаяДата();
    НовДок.Заполнить(СсылкаДляЗаполнения);
    НовДок.Записать(РежимЗаписиДокумента.Запись);
    Возврат НовДок.Ссылка;
    КонецФункции

    &НаКлиенте
    Процедура ЗаполнитьНаОснованииЗаявки(Команда)
    ФормаВыбора = Документы.рбсВнесениеДанныхКонтрагента.ПолучитьФормуВыбора();
    ФормаВыбора.РежимВыбора=Истина;
    ФормаВыбора.Отбор.Контрагент.Установить(Объект.Контрагент,Истина);
    ФормаВыбора.Отбор.Контрагент.Использование=Истина;
    ФормаВыбора.Заголовок = "Выберите документ";
    ВыбранныйДокумент= ФормаВыбора.ОткрытьМодально();

    НовДок=ЗаполнитьНаОснованииЗаявкиНаСервере(ВыбранныйДокумент);

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

    &НаКлиенте
    Процедура ЗаполнитьНаОснованииЗаявки(Команда)
    ФормаВыбора = Документы.рбсВнесениеДанныхКонтрагента.ПолучитьФормуВыбора();
    ФормаВыбора.РежимВыбора=Истина;
    ФормаВыбора.Отбор.Контрагент.Установить(Объект.Контрагент,Истина);
    ФормаВыбора.Отбор.Контрагент.Использование=Истина;
    ФормаВыбора.Заголовок = "Выберите документ";
    ВыбранныйДокумент= ФормаВыбора.ОткрытьМодально();

    НовДок=ЗаполнитьНаОснованииЗаявкиНаСервере(ВыбранныйДокумент);

    ПараметрыФормы = Новый Структура("Ключ", НовДок);
    ОткрытьФорму("Документ.рбсДоговор.ФормаДокумента", ПараметрыФормы);
    КонецПроцедуры
```
---
ОткрытьФорму("Документ.рбсДоговор.Форма.ФормаДокумента", ПараметрыФормы);

Надо так

```1c
    ОткрытьФорму("Документ.рбсДоговор.ФормаДокумента", ПараметрыФормы);
```
---
(2) (3) Я думаю надо признать наиболее правильным ответом и закрыть тему.
Вот тут еще тема как раз по вашему сценарию, тоже все подробно изложено
УФ: Открытие формы программно созданного документа
https://forum.mista.ru/topic.php?id=661280
---
А зачем у вас на сервере вообще выполняется вот этот код?

```1c
    ФормаВыбора = Документы.рбсВнесениеДанныхКонтрагента.ПолучитьФормуВыбора();
    ФормаВыбора.РежимВыбора=Истина;
    ФормаВыбора.Отбор.Контрагент.Установить(Объект.Контрагент,Истина);
    ФормаВыбора.Отбор.Контрагент.Использование=Истина;
    ФормаВыбора.Заголовок = "Выберите документ";
    ВыбранныйДокумент= ФормаВыбора.ОткрытьМодально();
```

Вы должныв выбирать на клиенте документ и потом передав на сервер ссылку на него , создать и заполнить на сервере новый документ, сохранить его.
После этого на клиенте можно будет открыть форму нового документа
---
Ну как бы мы же ищем в БД, а работа с БД ведется на сервере
---
Вы не ищете этим кодом а открываете форму - формы открываются на клиенте...
---
Я делаю следующим образом: создаю форму, заполняю ее, и открываю пользователю - документ создан, заполнен, НО НЕ ЗАПИСАН. Пользователь проверяет/дозаполняет документ и проводит/записывает его. Вот пример кода:

```1c
    &НаКлиенте
    Процедура СформироватьСчетнаОплату(МассивСтруктур)

    Для каждого стр из МассивСтруктур цикл
    Форма = ПолучитьФорму("Документ.СчетНаОплатуПокупателю.Форма.ФормаДокумента");
    ДанныеФормы = Форма.Объект;
    ЗаполнитьДокументСчетНаОплатуПокупателюНаСервере(ДанныеФормы, стр);
    КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
    Форма.Открыть();

    КонецЦикла;

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

    &НаСервере
    Функция ЗаполнитьДокументСчетНаОплатуПокупателюНаСервере(ДанныеФормы, ДанныеДокумента);

    Организация = Справочники.Организации.ОрганизацияПоУмолчанию();

    Док = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.СчетНаОплатуПокупателю"));
    ЗаполнитьЗначенияСвойств(Док, ДанныеДокумента);
    Док.ПодразделениеОрганизации = ДанныеДокумента.Подразделение;
    Док.Дата = ДанныеДокумента.ДатаКонца;
    Док.Организация = Организация;
    Док.ОрганизацияПолучатель = Организация;
    ЗначениеВДанныеФормы(Док,ДанныеФормы);

    Для каждого стр из ДанныеДокумента.Товары цикл

    СтрДок = Док.Товары.Добавить();

    СтрДок.Номенклатура = стр.Номенклатура1с;
    СтрДок.Содержание = стр.Номенклатура1с.НаименованиеПолное;
    СтрДок.СтавкаНДС = стр.СтавкаНДС;
    СтрДок.Количество = стр.счетов;
    ЗначениеВДанныеФормы(Док,ДанныеФормы);

    КонецЦикла;

    КонецФункции
```
---
Да, но тут такой момент, что нужно автоматически заполнять На основании другого документа, а не самому, и этот документ ещё нужно выбрать из перечня, что я делаю на сервере
---
Вы путаете немного...
Вы выбрать документ не можете на сервере - Пользователь сидит на клиенте и видит только клиент.
Вот вы выбирать должны в форме на клиенте свой документ , и выбранную ссылку отправить на сервер для поиска данных по этой ссылке и заполнения вашего другого документа
---
Наверное Вы правы, на сервере это делать неверно, но выбор на сервере работает )
Можете привести пример кода, как это верно сделать на клиенте? Нам же нужны данные БД, что бы подгрузить список документов
---
Ну так код же приведен в (3)
На клиенте вы просто открываете форму и в нее передаете просто ссылку вашего документа созданного ранее.
Вы все же путаете саму форму, которая открывается на клиенте и процедуру в модуле с указанием &НаСервере, которая будет выполняться на сервере...
Открывать форму на сервере не нужно...
---
Да, точно. Не внимательно посмотрел. Спасибо!
---
```1c
    &НаКлиенте
    Процедура ПриходнаяНакладная(Команда)

    СсылкаНаДокумент = СоздатьНовыйДокумент();
    ОткрытьЗначение(СсылкаНаДокумент);

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

    &НаСервере
    Функция СоздатьНовыйДокумент()

    НовыйДокумент = Документы.ПриходнаяНакладная.СоздатьДокумент();
    НовыйДокумент.Номер = "111";
    НовыйДокумент.Дата = ТекущаяДата();
    НовыйДокумент.Записать();

    Возврат НовыйДокумент.Ссылка;

    КонецФункции
```