Здравствуйте. Есть документ1, на основании него создается документ2. Но хочу перед созданием документа2 открыть форму, где только поле выбора(для заполнения полей ТЧ документа2) и после того, как пользователь выберет значение на этой форме, то продолжить заполнение докуменат2 и открыть уже его форму. Не могу разобраться, открываю так:

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

ПродолжитьЗаполнениеНаОснованииТребования - Экспортная процедура, которая находится в модуле объекта документа1
не понимаю как сделать, чтобы форма документа2 не открывалась и не продолжалось дальнейшее действие процедуры обработки проведения, пока не выполнится выбор на форме
---
```1c
    Процедура ПриОткрытии()
    Если ПараметрОснование<>Неопределено Тогда
    ПодключитьОбработчикОжидания("ОткрытьФормаВыбораТипаСтоимости",0.1,Истина);
    КонецЕсли;
    КонецПроцедуры

    Процедура ОткрытьФормаВыбораТипаСтоимости() Экспорт
    ОткрытьФорму("Документ.ОприходованиеМатериаловИзПроизводства.Форма.МС_ФормаВыбораТипаСтоимости", , ЭтаФорма, , , ,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
    КонецПроцедуры
```

Только еще нужно обработать результат выбора из формы.
---
стандартный механизм обработки заполнения не совсем подходит.
Понимаете, что создание на основании не требует открытия документ1. Ведь можно и из формы списка ввести на основании.
Как вариант:
1. добавляем на форму Документ1 команду.
2. по команде открывает форму Документ1 для выбора полей.
3. вызывать принудительно ввод на основании с передачей параметров
4. в обработке заполнения Документ2 проверять источник и параметры. И только по нужным производить заполнения. Остальное запретить (вызывать исключение, к примеру)
---
я понимаю, поэтому и хочу вызвать открытие формы выбора(она не является основной формой документа1) из ОбработкиЗаполнения
---
забудьте. Так не получится.
---
а после открытия формы созданного документа2 как сделатЬ?
---
а он уже открыт. Значит обработка заполнения уже отработала. Тогда только делать свою функцию по заполнению.
---
ну пусть будет так: форма документа2 открылась, он заполнился уже и потом выводится эта новая форма с полем выбора и одно поле перезаполняется. Как это правильно реализовать?
---
я уже и не помню обычные формы. ПриОткрытии вызываете нужную форму.
---
ПродолжитьЗаполнениеНаОснованииТребования – должна быть клиентская процедура.
---
для начала формы какие? Управляемые ? Обычные?
---
Сори, забыл указать. Обычные формы, УПП
---
А что мешает, после открытия формы, сделать эти действия выбора, как в обычные реквизиты?
---
может и так лучше, я просто не знаю
а как это сделать после открытия? чтобы открылась эта форма, выбрали значение и перезаполнилась ТЧ?
---
Я контекст просто не понимаю. Но если отвечать на ваш вопрос - то в процедуре ПослеОткрытия вызвать нужную форму и получить значение
---
контекст таков: при создании документа2 на основании документа1, нужно вывести форму, в которой есть только поле выбора(для заполнения реквизита ТЧ документа2). На этой форме выберут значение, нажмут "ОК", она должна закрыться и выбранным значением должен заполниться реквизит строк ТЧ.

нету процедуры ПослеОткрытия. Обычные формы, УПП
---
Если там выбрать один реквизит, тогда зачем открывать форму? Добавьте реквизит на форму, при его изменении заполняйте нужною колонку с этого реквизита.
---
Думал, так сделать, в конфе процедуры формы ПриОткрытии

```1c
    Если ПараметрОснование<>Неопределено Тогда
    ОткрытьФорму("Документ.ОприходованиеМатериаловИзПроизводства.Форма.МС_ФормаВыбораТипаСтоимости", , ЭтотОбъект, , , ,, РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
    КонецЕсли;
```

Но форма докуменат поверх этой формы открывается, а надо бы наоборот
---
РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс
поменяйте на БлокироватьОкноВладельца. И ЭтотОбъект на ЭтаФорма
---
сделал так, но всё равно форма докуменат перекрывает эту форму. Видимо, что открытие формы документа в конец процедуры ПриОткрытии происходит. Не понимаю как сделать..
---
через ПодключитьОбработчикОжидания
---
```1c
    Процедура ПриОткрытии()
    Если ПараметрОснование<>Неопределено Тогда
    ПодключитьОбработчикОжидания("ОткрытьФормаВыбораТипаСтоимости",0.1,Истина);
    КонецЕсли;
    КонецПроцедуры

    Процедура ОткрытьФормаВыбораТипаСтоимости() Экспорт
    ОткрытьФорму("Документ.ОприходованиеМатериаловИзПроизводства.Форма.МС_ФормаВыбораТипаСтоимости", , ЭтаФорма, , , ,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
    КонецПроцедуры
```

Только еще нужно обработать результат выбора из формы.
---
спасибо вам огромное, это то, что нужно!