Доброе утро.
Цитата с ИТС:

Скрытый текстОбычно, в большинстве случаев когда объект вводится на основании, нужно открыть пользователю форму нового объекта, который введен на основании какого-то объекта. В этом случае достаточно просто открыть форму и передать туда параметр Основание:

ПараметрыФормы = Новый Структура("Основание", Объект.Ссылка);
ОткрытьФорму("Документ.ПриходТовара.ФормаОбъекта", ПараметрыФормы);

Но что если мне нужно сначала получить форму, потом заполнить некий реквизит, а уже затем заполнить эту форму на основании? (разумеется, в расширении типовой обработки заполнения я внесу правки вида "если ЗначениеЗаполнено(МойРеквизит) тогда..."

Как быть? При этом, конечно, мне нужно обойтись без записи объекта, а просто открыть форму для пользователя, где уже пользователь примет решение, записывать объект или нет.

```1c
    ФормаДокумента = ПолучитьФорму("Документ.ЗаказКлиента.ФормаОбъекта", , ЭтотОбъект, Истина);

    ФормаДокумента.Объект.МойРеквизит = ЗначениеМоегоРеквизита;

    ???
```

Или в данном случае решения это обработку заполнения свою писать/редактировать уже заполненную форму как нужно?
---
Попробуйте передавать значение реквизита вместе с основанием. Например, в виде структуры.
---
Попробуйте передавать значение реквизита вместе с основанием. Например, в виде структуры.
---
Но насколько я понимаю, типовой код не предназначен для этого.
Выходит, мне нужно будет в расширении перед данной процедурой обработать мою структуру из данных заполнения и записать значение реквизита в реквизит формы, а сами данные заполнения заполнить уже моим документом?

```1c
    Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

    ТипДанныхЗаполнения = ТипЗнч(ДанныеЗаполнения);

    Если ТипДанныхЗаполнения = Тип("Структура") Тогда
    ЗаполнитьДокументПоОтбору(ДанныеЗаполнения);
    ИначеЕсли ТипДанныхЗаполнения = Тип("СправочникСсылка.Партнеры") Тогда
    ЗаполнитьДокументНаОснованииПартнера(ДанныеЗаполнения);
    ИначеЕсли ТипДанныхЗаполнения = Тип("СправочникСсылка.СделкиСКлиентами") Тогда
    ЗаполнитьДокументНаОснованииСделкиПоПродаже(ДанныеЗаполнения);
    ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.КоммерческоеПредложениеКлиенту") Тогда
    ЗаполнитьДокументНаОснованииКоммерческогоПредложенияКлиенту(ДанныеЗаполнения);
    ИначеЕсли ТипДанныхЗаполнения = Тип("СправочникСсылка.СоглашенияСКлиентами") Тогда
    ЗаполнитьДокументНаОснованииИндивидуальногоСоглашенияСКлиент­ом(ДанныеЗаполнения);
    ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ЗаданиеТорговомуПредставителю") Тогда
    ЗаполнитьДокументНаОснованииЗаданияТорговомуПредставителю(ДанныеЗаполнения);
    КонецЕсли;
```
---
Да, именно так.
---
Большое спасибо, так и сделаю. Вы мне очень помогли!
---
если это реквизит формы, то да - выкручиваться программно.
---
Нет, это реквизит объекта. Галку эту поставил.

Написал вот такой код:

```1c
    ЭлементыОтбора = Новый Структура("МойРеквизит", ЗначениеМоегоРеквизита);

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

Но после исполнения кода значение "ФормаДокумента.Объект.МойРеквизит" не заполнено. Да и в начало процедуры "ОбработкаЗаполнения" у ЭтотОбъект значение моего реквизита пустое. Хотя значение передаю.
---
да. поторопился. в типовых тоже программно обрабатывается. без кода - никак.
причем "Основание" в параметрах процедуры ОбработкаЗаполнения замещает "ЗначенияЗаполнения",
т.е. если передали только "ЗначенияЗаполнения", то в ДанныеЗаполнения будет наша структура, а если и то и другое, то будет "Основание".
И наши "ЗначенияЗаполнения" останутся только в параметрах в ПриСозданииНаСервере.
Был не прав.
---
(4) (5) зачем?
---
Если у реквизита стоит свойство "Заполнять из данных заполнения", то можно через параметры открытия.
с итс

```1c
    ЭлементыОтбора = Новый Структура("Поставщик, Склад", СсылкаНаПоставщика, СсылкаНаСклад);
    ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЭлементыОтбора);
    ОткрытьФорму("Документ.Накладная.ФормаОбъекта", ПараметрыФормы);
```
ЭлементыОтбора тут условно названо, смысла не меняет.
---
Написал такой код, но значение моего реквизита не передается:

```1c
    ЭлементыОтбора = Новый Структура("МойРеквизит", ЗначениеМоегоРеквизита);

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

Впрочем, в (2) был подсказан хороший метод, сделаю так.
Спасибо большое за помощь)