Здравствуйте, уважаемые!
Есть один вопрос, очень актуальный для меня.
Как создать объект и открыть его форму без записи?
Действую по методике:

```1c
    Форма = ПолучитьФорму("Справочник.ВидыНоменклатуры.ФормаОбъекта");
    ДанныеФормы = Форма.Объект;

    СоздатьВидНоменклатурыНаСервере(ДанныеФормы);

    КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
    Форма.Модифицированность = Истина;
    Форма.Открыть();
```

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

   ЗаполнитьДанныеЗаказаПоРазбраковке (ДанныеФормы, ДанныеРазбраковки);

   КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);

   Форма.ВыполнитьНастройкуФормыПослеЗаполненияОбъекта ();
   Форма.Открыть();
Показать полностью

Форма заимствована. Метод ВыполнитьНастройкуФормыПослеЗаполненияОбъекта () экспортный в расширении.
---
Верно ли я понимаю, что перед Вами стоит задача реализовать внешнюю обработку создания элемента справочника без какой-либо модификации исходной конфигурации?

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

   ЗаполнитьДанныеЗаказаПоРазбраковке (ДанныеФормы, ДанныеРазбраковки);

   КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);

   Форма.ВыполнитьНастройкуФормыПослеЗаполненияОбъекта ();
   Форма.Открыть();
Показать полностью

Форма заимствована. Метод ВыполнитьНастройкуФормыПослеЗаполненияОбъекта () экспортный в расширении.
---
Подскажите, пожалуйста, а почему не хотите реализовать свой алгоритм обработчика заполнения объекта?
---
Я вам ответил выше. В данный момент эта проблема решена.
Через заполнение........ Давайте рассмотрим, как это может выглядеть
---
Я не настаиваю. Банальное любопытство: вдруг узнаю для себя что-то новое.

Я представлял себе решение так:
1. Собираете структуру параметров заполнения, включающую в себя все необходимые параметры для создания объекта. Вставляете также некий уникальный ключ в структуру.
2. Открываете/получаете форму с параметрами, где есть ключ "Основание" со значением структуры, собранной в п.1.
2. Создаете свой обработчик события "ОбработкаЗаполнения" для создаваемого объекта с диррективой "&Перед". Проверяете тип данных заполнения (должна быть структура) и наличие уникального ключа в данных заполнения. Если есть, выполняете алгоритм заполнения нового объекта, как это делала Ваша обработка, и очищаете данные заполнения (необязательно).

Т.о. к моменту, когда будет создана форма объекта, сам объект уже будет заполнен. И настройка формы осуществиться корректно.
---
Да. хороший вариант. Думаю, что даже перекрывать "ОбработкаЗаполнения" не нужно. Обязательно опробую.
---
Просто создаешь обработку с формой и нужными реквизитами. А в ней команду "Записать".
Пользователь открывает эту обработку , заполняет нужные реквизиты , а после нажатия кнопки "записать" уже на сервере создаешь новый элемент нужного тебе справочника и заполняешь его реквизитами из формы своей обработки. Всего делов.
---
В заголовке написано _без записи_
---
Ну не нажимай кнопку "Записать"
---
Бред какой-то. Объект программно заполняю..........
---
Вам надо открыть форму некоего справочника, но при этом не создавать объект в базе. В таком случае чем открытие формы элемента справочника отличается от открытия формы своей внешней обработки, на которую добавлены нужные реквизиты и они уже заполнены программно ?
---
. У формы документа есть предопределенный параметр ЗначенияЗаполнения, Заполните и все. И Пользоваться лучше ОткрытьФорму

```1c
    Парам = Новый Структура("ЗначенияЗаполнения",Новый Структура);
    Парам.ЗначенияЗаполнения.Вставить("ТипНоменклатуры",ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар");
    Парам.ЗначенияЗаполнения.Вставить("СтавкаНДС",ПредопределенноеЗначение("Перечисление.СтавкиНДС.НДС18");

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

```1c
    Парам = Новый Структура("ЗначенияЗаполнения",Новый Структура);
    Парам.ЗначенияЗаполнения.Вставить("ТипНоменклатуры",ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Услуга"));

    Форма = ОткрытьФорму("Справочник.ВидыНоменклатуры.ФормаОбъекта",Парам);
    Форма.Объект.ВариантОформленияПродажи = ПредопределенноеЗначение("Перечисление.ВариантыОформленияПродажи.АктВыполненныхРабот");
    Форма.Объект.ВариантОказанияУслуг = ПредопределенноеЗначение("Перечисление.ВариантыОказанияУслуг.Партнером");
```
---
Спасибо.
А как во втором варианте форма обновиться после заполнения реквизитов объекта?
---
Значение Параметра формы "ЗначенияЗаполнения" передается в процедуру ОбработкаЗаполнения в качестве параметра ДанныеЗаполнения, то есть до процедур ПриСозданииНаСервере и ПриЧтенииНаСервере в форме. Раз
Два. Не все реквизиты влияют на настройки формы. Повторю 1С для этого в свойствах реквизита ставит галку на "Заполнять из данных заполнения"
Если не стоит галки, то решение в (18), но опять таки через параметр "ЗначенияЗаполнения" с дополнительным ключом для проверки
В данном случае заполняем тип номенклатуры и все катит остальное потом. Если это не Алкоголь.
А как во втором варианте форма обновиться после заполнения реквизитов объекта?

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

При открытии формы записанного объекта его перезапись не осуществляется.

Путаетесь в показаниях.
Пора почитать мануал?
---
Вы троль?
---
а вы не понимаете что делаете?