Здравствуйте. Как в управляемом приложении 1с 8.3 реализовать следующее. Есть обработка заполнения табличной части документа, внешняя. При нажатии заполнить нужно открывать форму выбора и после выбора, получать ссыклу на данный документ. Прошу помочь знающих, спасибо!
---
Например вот так

```1c
    // код для процедуры "ВыполнитьКоманду"
    ОписаниеОповещения = Новый ОписаниеОповещения("ВыборДокументаПТиУ", ЭтотОбъект);
    ОткрытьФорму("Документ.ПоступлениеТоваровУслуг.ФормаВыбора",,,,,, ОписаниеОповещения);
```

```1c
    // новая процедура
    &НаКлиенте
    Процедура ВыборДокументаПТиУ(РезультатВыбора, ДополнительныеПараметры) Экспорт
    //РезультатВыбора - выбранный документ
    КонецПроцедуры
```
---
спасибо. именно так и сделала.

```1c
    &НаКлиенте
    Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт

    ОписаниеОповещения = Новый ОписаниеОповещения("ВыборПоступленияЗавершение", ЭтаФорма);

    ОткрытьФорму("Документ.ПриобретениеТоваровУслуг.ФормаВыбора",,,,,,ОписаниеОповещения);

    КонецПроцедуры

    &НаКлиенте
    Процедура ВыборПоступленияЗавершение(Результат, Параметры) Экспорт
    Если Не Результат = Неопределено Тогда
    СсылкаНаПТиУ = Результат;
    КонецЕсли;

    ОбъектДляЗаполнения = ВладелецФормы.Объект;
    ОбъектДляЗаполнения = ВыполнитьЗаполнениеНаСервере(ОбъектДляЗаполнения,СсылкаНаПТиУ);
    КопироватьДанныеФормы(ОбъектДляЗаполнения, ВладелецФормы.Объект);

    КонецПроцедуры
```
---
РезультатВыбора = ОткрытьФормуМодально("Документ.ПоступлениеТоваровУслуг.ФормаВыбора");
РезультатВыбора и будет ссылкой на выбранный документ
---
ОткрытьФормуМодально("Документ.ПоступлениеТоваровУслуг.ФормаВыбора")

Спасибо! Да, так работает, но возникает ошибка внизу на модальность. Как от нее избавиться?
---
Ну либо разрешить использовать модальные окна, либо другой вариант решения)
---
ну конфа типовая, открывать ее не хочется. как еще можно тогда получить ссылку?
---
Можно разделить процедуру на 2 куска, погуглите ошибку модальности, в самой конфе если полазить можно легко найти пример(название функции, названиефункциипродолжение)
---
Например вот так

```1c
    // код для процедуры "ВыполнитьКоманду"
    ОписаниеОповещения = Новый ОписаниеОповещения("ВыборДокументаПТиУ", ЭтотОбъект);
    ОткрытьФорму("Документ.ПоступлениеТоваровУслуг.ФормаВыбора",,,,,, ОписаниеОповещения);
```

```1c
    // новая процедура
    &НаКлиенте
    Процедура ВыборДокументаПТиУ(РезультатВыбора, ДополнительныеПараметры) Экспорт
    //РезультатВыбора - выбранный документ
    КонецПроцедуры
```
---
спасибо. именно так и сделала.

```1c
    &НаКлиенте
    Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт

    ОписаниеОповещения = Новый ОписаниеОповещения("ВыборПоступленияЗавершение", ЭтаФорма);

    ОткрытьФорму("Документ.ПриобретениеТоваровУслуг.ФормаВыбора",,,,,,ОписаниеОповещения);

    КонецПроцедуры

    &НаКлиенте
    Процедура ВыборПоступленияЗавершение(Результат, Параметры) Экспорт
    Если Не Результат = Неопределено Тогда
    СсылкаНаПТиУ = Результат;
    КонецЕсли;

    ОбъектДляЗаполнения = ВладелецФормы.Объект;
    ОбъектДляЗаполнения = ВыполнитьЗаполнениеНаСервере(ОбъектДляЗаполнения,СсылкаНаПТиУ);
    КопироватьДанныеФормы(ОбъектДляЗаполнения, ВладелецФормы.Объект);

    КонецПроцедуры
```
---
Вот код

```1c
    &НаКлиенте
    Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт

    ФормаПТиУ = ПолучитьФорму("Документ.ПриобретениеТоваровУслуг.ФормаВыбора");

    ФормаПТиУ.Открыть();
    //Тут получить сссылку на выбранный
    СсылкаНаПТиУ = ФормаПТиУ.ССылка
    ОбъектДляЗаполнения = ВладелецФормы.Объект;
    ОбъектДляЗаполнения = ВыполнитьЗаполнениеНаСервере(ОбъектДляЗаполнения);
    КопироватьДанныеФормы(ОбъектДляЗаполнения, ВладелецФормы.Объект);
    КонецПроцедуры

    Процедура ОбработкаВыбора(ВыбранноеЗначение)

    КонецПроцедуры;

    &НаСервере
    Функция ВыполнитьЗаполнениеНаСервере(ОбъектЗаполнения,Док)
    ЗапросДанных = Новый Запрос(
    "ВЫБРАТЬ
    | ПриобретениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
    | &СтатьяКалькуляции КАК СтатьяКалькуляции,
    | &ДатаРасхода КАК ДатаРасхода,
    | ПриобретениеТоваровУслугТовары.Количество КАК Количество,
    | ПриобретениеТоваровУслугТовары.Количество КАК КоличествоУпаковок
    |ИЗ
    | Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслугТовары
    |ГДЕ
    | ПриобретениеТоваровУслугТовары.Ссылка = &Ссылка");

    ЗапросДанных.УстановитьПараметр("Ссылка", Док);
    ЗапросДанных.УстановитьПараметр("СтатьяКалькуляции",Справочники.СтатьиКалькуляции.НайтиПоНаименованию("Материалы"));
    ЗапросДанных.УстановитьПараметр("ДатаРасхода", КонецМесяца(ОбъектЗаполнения.Ссылка.Дата));

    ОбъектЗаполнения.РасходМатериаловИРабот.Загрузить(ЗапросДанных.Выполнить().Выгрузить());

    Возврат ОбъектЗаполнения;
    КонецФункции
```
---
Насколько я поняла, надо действовать через ОбработкуВыбора. Но никак не пойму как применить.
---
Не совсем уверен, но разве не просто ссылка=ВладелецФормы.Объект.Ссылка
---
ВладелецФормы.Объект.Ссылка

Так?

```1c
    СсылкаНаПТиУ = ФормаПТиУ.ВладелецФормы.Объект.Ссылка;
```
---
На что именно нужна ссылка? на выбранный документ из формы подбора?
---
Да, на выбранный документ.
---
Попробуйте ссылка = ФормаПТиУ.Открыть();
---
так пишет, что попытка использовать процедуру как функцию.
---
Такой пример использовался при модальном открытии окна.

Ниже пример кода для выбора в УФ без модальности.

```1c
    &НаКлиенте
    Процедура Выбрать(Команда)

    ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("ФормаВыбораОкончание", ЭтаФорма);

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

    КонецПроцедуры

    &НаКлиенте
    Процедура ФормаВыбораОкончание(Результат, ДополнительныеПараметры) Экспорт

    Если Результат = Неопределено Тогда
    Возврат;
    КонецЕсли;

    // Получаем выбранное значение.
    Контрагент = Результат;

    КонецПроцедуры // ФормаВыбораОкончание()
```