Во первых: Почему так сложно?
Причина в том, что в обычном приложении и объект и форма живут вместе на протяжении всей жизни формы.
На управляемых формах все несколько иначе. Объект и форма живут совместно совсем непродолжительное время. Например в обработчике "При чтении на сервере". Но данный обработчик вызывается только при открытии уже записанного объекта (далее - документа).
Более подробно «Разработка управляемого интерфейса» В.А.Ажеронок, А.В. Островерх, М.Г.Радченко, Е.Ю.Хрусталева, гл. 3.8 стр. 404
Может возникнуть желание воспользоваться методами Глобального контекста
ПолучитьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>)
ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>)
Но, все же, это не наш случай. Вторым параметром необходимо передавать ссылку, а ее то у нас и нет (объект еще не записан в базу данных).
Поэтому, было найдено следующее решение.
План наступления:
1. НА КЛИЕНТЕ:
1.1 Создаем форму нового документа (метод гл. контекста "ПолучитьФорму")
1. 2 Получаем объект новой формы - это пока лишь основной объект формы (представляет собой универсальную коллекцию).
2. НА СЕРВЕРЕ:
2.1 Вспомогательные действия (не обязательные). Получаем данные для заполнения нового документа.
2.2 Получим документ - объект. Это именно объект информационной базы (Тип - Документ объект)
2.3 Вызовем обработчик заполнения нового документа (ОбработкаЗаполнения)
2.4 Производим обратное преобразование: документ объект - в основной объект формы (универсальную коллекцию)
3. НА КЛИЕНТЕ:
3.1 Теперь в контексте клиента имеем две коллекции основного реквизита:
одна - созданная при создании формы (пока пустая)
вторая - та, которую заполняли на сервере (ее и требуется отобразить)
Поэтому, теперь необходимо подменить основной реквизит созданной на шаге 1.1 формы на заполненный нами (на шаге 2.3). Простое присвоение значения не пройдет. Необхоидимо перезаполнить коллекцию. Удобнее это выполнить с помощью специального метода глобального контекста КопироватьДанныеФормы(<Источник>, <Приемник>)
3.1 Открываем подготовленную форму.
Собственно решение
&НаКлиенте
Процедура ОткрытьФормуНовогоДокумента(Команда)
// 1.1
// Получаем форму нового подчиненного документа
ФормаПодчиненного = ПолучитьФорму("Документ.ПеревыставлениеТоваровУслуг.ФормаОбъекта");
// 1.2
// Получим объект формы - это Новый - создаваемый объект
ОбъектФормы = ФормаПодчиненного.Объект;
// 2. Передадим управление на сервер.
ЗаполнитьПодчиненныйДокументПеревыставленияНаСервере(ОбъектФормы, Объект.Ссылка);
// 3.1
// В ранее созданной форме нового документа переопределим объект - документ (подменим его на заполненный документ)
КопироватьДанныеФормы(ОбъектФормы, ФормаПодчиненного.Объект);
// 3.2
ФормаПодчиненного.Модифицированность = Истина; // Чтобы выдавалось сообщение при попытке закрыть документ без сохранения
ФормаПодчиненного.Открыть();
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЗаполнитьПодчиненныйДокументПеревыставленияНаСервере(ОбъектФормы, ДокументОснование)
// 2.1
// Подготовим данные для заполнения нового документа
ДанныеДляЗаполнения = Документы.ПоступлениеПеревыставляемыхТоваровУслуг.ПолучитьСтруктуруДанныхЗаполнения();
// 2.2
// Получим документ-объект (для дальнейшего заполнения)
ДокументОбъект = ДанныеФормыВЗначение(ОбъектФормы, Тип("ДокументОбъект.ПеревыставлениеТоваровУслуг"));
// 2.3
// Вызовем процедуру обработки заполнения
ДокументОбъект.Заполнить(ПараметрыОтбораПеревыставления);
// 2.4
// Преобразуем прикладной объект - в объект формы (коллекцию)
ЗначениеВДанныеФормы(ДокументОбъект, ОбъектФормы);
КонецПроцедуры
Резюме:
Вот собственно и все. Для любителей пофлудить - очередная тема поупрожняться в собственном величии. ))) Если кому помог советом - очень рад. У кого возникнут вопросы по существу - обращайтесь, обсудим.