С Клиента запускаем серверную процедуру, которая получает ДокументОбъект и модифицирует его(добавляет записи в движения) НЕ ЗАПИСЫВАЯ, как открыть форму модифицированного объекта?
---
```1c
    &НаКлиенте
    Процедура Команда1(Команда)

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

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

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

Это для ERP. В других не знаю. Но как пример сойдет.
---
вопрос, в какой момент открыть форму?
Если с сервера, то никак.
Если по возвращению на клиент, то просто открываете форму по документу. Ведь уже изменения в документ записаны.
---
Прошу прощения, забыл указать один момент, модифицированный объект не записывается)
---
без изменения самой формы объекта никак.
Что бы подменить основной реквизит формы нужна серверная форма. Ее можно получить только из серверного вызова самой формы документы. Напрямую извне она не доступна.
---
Т.е. аналога такому коду в УФ нет?

```1c
    ДокОбъект = Документы.РасходнаяНакладная.СоздатьДокумент();
    ДокОбъект .реквизит1 = "выпмыпыим";
    ДокОбъект.ПолучитьФорму().Открыть();
```
---
"Что бы подменить основной реквизит формы"
Просто реквизит формы подменить можно, если он доступен на клиенте.
---
Форма = ПолучитьФорму(ИмяФормы, Новый Структура("Ключ", ссылка));
Форма.Объект.Реквизит1 = "...";
Форма.Открыть();
---
Так-то да, пример неудачный привел) Мне надо добавить записи в движения, но не записывать..
---
Да никак.
Невозможно в тонком клиенте иметь форму документа, записи которого модифицированы но не записаны. Любые извращения с формой не помогут, так как движения документа не входят в контекст формы. При завершении клиент-серверного вызова и возврата на клиент, объект разрушается вместе со всеми сделанными модификациями, которые не относятся к контексту формы.
---
в тонком клиенте я так понимаю, стоит рассматривать это как "в управляемых формах"?
---
я так понимаю, стоит рассматривать это как "в управляемых формах"?
В "обывательском" понимании - да :)
На самом деле могут быть тонкости типа толстого клиента в режиме управляемого приложения.
Поэтому точнее все-таки "тонкий клиент".
ЗЫ. Можно еще так сказать - тонкий клиент это всегда УФ, но УФ это не всегда тонкий клиент.
---
На самом деле могут быть тонкости типа толстого клиента в режиме управляемого приложения.
Меня бы это устроило, только вот все методы я перепробовал под толстым клиентом, и результат нулевой.. Отсюда и вопрос, в в режиме управляемого приложения это физически возможно или забыть как ясный сон?)
---
Отсюда и вопрос, в в режиме управляемого приложения это физически возможно или забыть как ясный сон?
Возможно или нет - не поручусь. Это очень специфический режим со своими странностями. Никогда не встречал, чтобы в продакшене его сознательно использовали. Это извращением попахивает :) И наоборот - натыкался на неочевидные проблемы, когда в этом режиме работали по ошибке.
Поэтому рекомендую забыть как ясный сон. Ваша хотелка фактически звучит ересью даже для толстого клиента.
Может, озвучите изначальную бизнес-проблему, которую вы пытаетесь решить таким оригинальным способом?
---
Документ корректировка регистров не заполняется на основании документов, приходится заполнять вручную. Не хочу записывать все движения, потом удалять часть и так далее... Хотелось бы по приницпу обычных форм, добавить записи в движения и открыть форму объекта, что нужно удалить/исправить и потом только записать
---
```1c
    &НаКлиенте
    Процедура Команда1(Команда)

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

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

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

Это для ERP. В других не знаю. Но как пример сойдет.
---
Спасибо!! С этой стороны я не подумал зайти!
---
ОткрытьФорму(<ИмяФормы>, Новый Структура("Ключ", СсылкаНаОбъект))
---
Открывает форму ссылки без модификаций, мимо.
---
ЗначениеВреквитФормы()
---
(3) поясню:
на форме добавил реквизит "ОбъектКорректировкаРегистров" - тип документобъект.
в серверной процедуре модифицирую объект и помещаю его в реквизитформы:

```1c
    ЗначениеВРеквизитФормы(МодифицированныйОбъект, "ОбъектКорректировкаРегистров");
```

Затем на клиенте пытаюсь открыть:

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

форма открывается без модификаций
---
Примерно так

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

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