Дано:
Конфигурация УНФ 1.6
Расширение с новым документом.
Существует внешняя обработка заполнения табличной части для других документов, которая полностью подходит для нового документа из расширения.

Вопрос:
Как подключить эту внешнюю обработку для документа не вскрывая конфигурацию? В списке назначений дополнительной обработки этого документа нет.
---
Все получилось)), всем спасибо!

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

    МассивОбъектов = Новый Массив;
    МассивОбъектов.Добавить(Объект);

    ИдентификаторКоманды = ";

    ПараметрыОбработки = Новый Структура;
    ПараметрыОбработки.Вставить("ИдентификаторКоманды", ИдентификаторКоманды);
    ПараметрыОбработки.Вставить("МассивОбъектов", МассивОбъектов);

    ОткрытьВнешнийОтчетОбработкуПоИмениСДопПараметрами ("Заполнение цены в табличной части заказа покупателя", ПараметрыОбработки, Ложь, ЭтаФорма);

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

    // процедура, открывающая отчет/обработку по имени, заданному в допобработках
    &НаКлиенте
    Процедура ОткрытьВнешнийОтчетОбработкуПоИмениСДопПараметрами(ИмяОтчетаОбработки, ПараметрыОткрытия, ЭтоОтчет, РодительскаяФорма)
    ВнешнийОтчетОбработкаДляОткрытияСсылка = ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере (ИмяОтчетаОбработки);
    // ВЫЗОВ ИЗ БСП ФУНКЦИИ ПОДКЛЮЧЕНИЯ ВНЕШНЕЙ ОБРАБОТКИ
    ИмяОбработкиСлужебное =ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ВнешнийОтчетОбработкаДляОткрытияСсылка);
    Если ЭтоОтчет Тогда
    ОткрытьФорму("ВнешнийОтчет." + ИмяОбработкиСлужебное + ".Форма", ПараметрыОткрытия, РодительскаяФорма);
    Иначе
    ОткрытьФорму("ВнешняяОбработка." + ИмяОбработкиСлужебное + ".Форма", ПараметрыОткрытия, РодительскаяФорма);
    КонецЕсли;
    КонецПроцедуры

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

Через расширение такое не провернуть, конечно же. Поэтому можете попробовать "дописать" функции работы с этим определяемым типом. Посмотрите в сторону процедуры функции "ПодключенныеОбъектыМетаданных" общего модуля "ДополнительныеОтчетыИОбработки". Пробегитесь по конфигурации поиском.
---
Обработка заполнения табличной части.
ОбъектСДополнительнымиКомандами в расширении нельзя поменять, сразу ошибка выходит.
---
К сожалению, мне не известен такой тип обработки. Возможно Вы меня не правильно поняли? Я интересовался видом подключаемой обработки, который Вы указываете в модуле объекта в сведениях о внешней обработке.

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

    МассивОбъектов = Новый Массив;
    МассивОбъектов.Добавить(Объект);

    ИдентификаторКоманды = ";

    СтрПараметры = Новый Структура;
    СтрПараметры.Вставить("ИдентификаторКоманды", ИдентификаторКоманды);
    СтрПараметры.Вставить("МассивОбъектов", МассивОбъектов);

    ОткрытьФорму("Обработка.ЗаполнениеЦеныВТабличнойЧастиЗаказаПокупателя.Форма.Форма", СтрПараметры, ЭтаФорма.Объект);

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

В модуле обработки (пока в расширении) ошибка в этом месте, т.к. ВладелецФормы - неопределено

```1c
    &НаКлиенте
    Процедура ПриОткрытии(Отказ)

    ДокументОбъект = ВладелецФормы.Объект;
```

Как правильно сделать, чтобы не трогать обработку?
---
ОткрытьФорму("Обработка.ЗаполнениеЦеныВТабличнойЧастиЗаказаПокупателя.Форма.Форма", СтрПараметры, ЭтаФорма.Объект);

ЭтаФорма..объект то там зачем, он так уже есть, а получается, что Вы его через точку ищете?

```1c
    Процедура ПриОткрытии(Отказ)
    ......
    //ОткрытьФорму("Обработка.ЗаполнениеЦеныВТабличнойЧастиЗаказаПокупателя.Форма.Форма", СтрПараметры, ЭтаФорма.Объект);
    //погуглите Программно открыть внешнюю обработку

    // ДокументОбъект = ВладелецФормы.Объект;

    ДокументОбъект = Параметры.МассивОбъектов[0];
```

Как то так, вообще всё это решается в отладчике - там сразу будет видно, что не так
---
Кстати, ещё способ - взять код ( запрос и его обработку ) из обработки и тупо вставить его в обработку заполнения по кнопке прям в форме документа или в его менеджере))))
---
Все получилось)), всем спасибо!

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

    МассивОбъектов = Новый Массив;
    МассивОбъектов.Добавить(Объект);

    ИдентификаторКоманды = ";

    ПараметрыОбработки = Новый Структура;
    ПараметрыОбработки.Вставить("ИдентификаторКоманды", ИдентификаторКоманды);
    ПараметрыОбработки.Вставить("МассивОбъектов", МассивОбъектов);

    ОткрытьВнешнийОтчетОбработкуПоИмениСДопПараметрами ("Заполнение цены в табличной части заказа покупателя", ПараметрыОбработки, Ложь, ЭтаФорма);

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

    // процедура, открывающая отчет/обработку по имени, заданному в допобработках
    &НаКлиенте
    Процедура ОткрытьВнешнийОтчетОбработкуПоИмениСДопПараметрами(ИмяОтчетаОбработки, ПараметрыОткрытия, ЭтоОтчет, РодительскаяФорма)
    ВнешнийОтчетОбработкаДляОткрытияСсылка = ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере (ИмяОтчетаОбработки);
    // ВЫЗОВ ИЗ БСП ФУНКЦИИ ПОДКЛЮЧЕНИЯ ВНЕШНЕЙ ОБРАБОТКИ
    ИмяОбработкиСлужебное =ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ВнешнийОтчетОбработкаДляОткрытияСсылка);
    Если ЭтоОтчет Тогда
    ОткрытьФорму("ВнешнийОтчет." + ИмяОбработкиСлужебное + ".Форма", ПараметрыОткрытия, РодительскаяФорма);
    Иначе
    ОткрытьФорму("ВнешняяОбработка." + ИмяОбработкиСлужебное + ".Форма", ПараметрыОткрытия, РодительскаяФорма);
    КонецЕсли;
    КонецПроцедуры

    &НаСервере
    Функция ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере(ИмяОтчетаОбработки)
    Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОтчетаОбработки).Ссылка;
    КонецФункции
```
---
Спасибо за поднятую тему - так бы и блуждал в потемках