Здравствуйте коллеги!

Помоги пожалуйста советом!
Есть внешняя обработка. На этой обработке есть реквизит "Документ", тип данных у этого реквизита составной (Реализация, Отчет о розничных продажах и Возврат поставщику). До этого был не составной тип данных и поэтому при подборе я спокойно ставил СтандартнаяОбратотка=Ложь и накладывал отборы на Период и еще пару реквизитов. Но как быть, когда реквизит составной ведь при подборе сначала всплывает окно с выбором типа и только потом сама форма подбора? Мне необходимо открыть нужную форму и установить отборы на динамический список в форме выбора. Необходимо создать свою форму выбора типа и ее открывать при подборе, а после выбора открывать нужную форму?
---
Можно обойтись стандартным выбором типа, тогда и при добавлении строки не будет выскакивать список выбора. Только в обработке выбора нужно будет прерывать стандартное поведение после выбора типа.

```1c
    &НаКлиенте
    Процедура ТаблицаДокументНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

    ТекущиеДанные = Элементы.Таблица.ТекущиеДанные;

    Если ТекущиеДанные.Документ = Неопределено Тогда
    Возврат
    КонецЕсли;

    СтандартнаяОбработка = Ложь;

    ОткрытьФормуВыбораДокумента(ТекущиеДанные.Документ, Элемент)
    КонецПроцедуры

    &НаКлиенте
    Процедура ОткрытьФормуВыбораДокумента(Ссылка, Элемент)
    ПараметрыФормы = Новый Структура;
    Отбор = Новый Структура;

    // здесь формируем отборы

    ПараметрыФормы.Вставить("Отбор", Отбор);

    ИмяФормыВыбора = ПолучитьИмяФормыВыбораПоСсылке(Ссылка);
    ФормаВыбора = ПолучитьФорму(ИмяФормыВыбора, ПараметрыФормы, Элемент);
    ФормаВыбора.Заголовок = "Форма выбора с моим отбором";
    ФормаВыбора.Открыть();
    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция ПолучитьИмяФормыВыбораПоСсылке(Ссылка)
    Возврат Ссылка.Метаданные().ПолноеИмя() + ".ФормаВыбора";
    КонецФункции

    &НаКлиенте
    Процедура ТаблицаДокументОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)

    Если ТипЗнч(ВыбранноеЗначение) = Тип("Тип") Тогда
    МассивТипов = Новый Массив;
    МассивТипов.Добавить(ВыбранноеЗначение);
    ОписаниеТипов = Новый ОписаниеТипов(МассивТипов);
    ТекущиеДанные = Элементы.Таблица.ТекущиеДанные;
    ТекущиеДанные.Документ = ОписаниеТипов.ПривестиЗначение();
    СтандартнаяОбработка = Ложь;

    // после выбора типа можно сразу вызвать выбор документа, но это не обязательно
    ОткрытьФормуВыбораДокумента(ТекущиеДанные.Документ, Элемент)
    КонецЕсли;

    КонецПроцедуры
```
---
Вариантов мне кажется масса, создать журнал(если его нет) и открывать его. Или сначала выбирать тип документа а потом открывать форму списка документа и т.д.
---
а как выбрать тип если я прописываю СтандартнаяОбработка=Ложь? Форма с выбором типа не открывается. Надо свою форму создавать для выбора типа документа?
---
Можно использовать список значений и его метод ВыбратьЭлемент():

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

    ТипДокумента = ВыбранныйЭлемент.Значение;
```
---
Спасибо большое!
---
ведь при подборе сначала всплывает окно с выбором типа и только потом сама форма подбора?
 Т.е. вам нужно в момент выбора пользователем типа документа программно определять выбор типа, чтобы наложить соответствующие отборы при подборе?

Пока писала, тут уже решение озвучили)
---
из за того что я отключаю стандартную обработку список с выбором типа не всплывает. Я так понял мне нужно либо свою форму выбора типа создать либо поймать событие после выбора типа документа. Вообщем необходимо открыть форму выбора выбранного типа документа и накинуть на не отборы.
(4)Ваш метод приближает меня к истине. Но всплыла друга проблема. Форма с выбором типа открывается и при добавлении строки в тч, т.е. нажать кнопку Добавить сработал обработчик НачалоВыбора и открывается форма выбора типа документа. Как устранить эту проблему?
---
Можно обойтись стандартным выбором типа, тогда и при добавлении строки не будет выскакивать список выбора. Только в обработке выбора нужно будет прерывать стандартное поведение после выбора типа.

```1c
    &НаКлиенте
    Процедура ТаблицаДокументНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

    ТекущиеДанные = Элементы.Таблица.ТекущиеДанные;

    Если ТекущиеДанные.Документ = Неопределено Тогда
    Возврат
    КонецЕсли;

    СтандартнаяОбработка = Ложь;

    ОткрытьФормуВыбораДокумента(ТекущиеДанные.Документ, Элемент)
    КонецПроцедуры

    &НаКлиенте
    Процедура ОткрытьФормуВыбораДокумента(Ссылка, Элемент)
    ПараметрыФормы = Новый Структура;
    Отбор = Новый Структура;

    // здесь формируем отборы

    ПараметрыФормы.Вставить("Отбор", Отбор);

    ИмяФормыВыбора = ПолучитьИмяФормыВыбораПоСсылке(Ссылка);
    ФормаВыбора = ПолучитьФорму(ИмяФормыВыбора, ПараметрыФормы, Элемент);
    ФормаВыбора.Заголовок = "Форма выбора с моим отбором";
    ФормаВыбора.Открыть();
    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция ПолучитьИмяФормыВыбораПоСсылке(Ссылка)
    Возврат Ссылка.Метаданные().ПолноеИмя() + ".ФормаВыбора";
    КонецФункции

    &НаКлиенте
    Процедура ТаблицаДокументОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)

    Если ТипЗнч(ВыбранноеЗначение) = Тип("Тип") Тогда
    МассивТипов = Новый Массив;
    МассивТипов.Добавить(ВыбранноеЗначение);
    ОписаниеТипов = Новый ОписаниеТипов(МассивТипов);
    ТекущиеДанные = Элементы.Таблица.ТекущиеДанные;
    ТекущиеДанные.Документ = ОписаниеТипов.ПривестиЗначение();
    СтандартнаяОбработка = Ложь;

    // после выбора типа можно сразу вызвать выбор документа, но это не обязательно
    ОткрытьФормуВыбораДокумента(ТекущиеДанные.Документ, Элемент)
    КонецЕсли;

    КонецПроцедуры
```
---
спасибо огромное, получилось:)
---
Работает, спасибо.
---
У поля с составным типом данных после выбора типа выполняется процедура "ПриИзменении", вот туда можно подключится и настроить список выбора