Коллеги, здравия!
нужна помощь!

В УТ 11.1 в списке контрагентов есть кнопка Создать.
Я её хочу подменить на открытие своей обработки, которая зарегистрирована в дополнительных обработках.

Не могу понять с кодом получения формы этой дополнительной обработки.

нужен реально работающий код.
Поиски по ИС и прочему инету не дал результатов.

вторые сутки пошли битвы за код.
---
Спасибо тебе, мил человек, вот просто в пояс кланяюс!

```1c
    &НаКлиенте
    Процедура ФокусПокус(Команда)
    Джонни = ФокусПокус_Сервер();
    ВыполняемаяКоманда = Новый Структура(
    "Ссылка, Представление,
    |Идентификатор, ВариантЗапуска, ПоказыватьОповещение,
    |Модификатор, ОбъектыНазначения, ЭтоОтчет, Вид");

    ЗаполнитьЗначенияСвойств(ВыполняемаяКоманда, Джонни);

    ВыполняемаяКоманда.Идентификатор = Новый УникальныйИдентификатор;
    ВыполняемаяКоманда.ЭтоОтчет = Ложь;
    ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьОткрытиеФормыОбработки(ВыполняемаяКоманда, Неопределено, Неопределено);
    КонецПроцедуры

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

и всё, слов не хватает.
Всё уже давно написано за нас.

Спасибо ещё раз, удачи и профессиональных успехов!
---
понять с кодом получения формы этой дополнительной
код вызова дополнительной обработки, посмотрите в самом справочнике формы доп обработок.
Там же есть кнопка выполнить доп обработку, там и найдете код, получения, вызова, с учетом всех подсистем.

П.С.
У меня нет под рукой УТ-шки.
Но вот посмотрел в бухне, в последнем релизе.
там вот такой код

```1c
    &НаКлиенте
    Процедура ВыполнитьКомандуПослеПодтвержденияЗаписи(Ответ, Контекст) Экспорт
    Если Ответ = "ЗаписатьИПродолжить" Тогда
    ОчиститьСообщения();
    Если Не Записать() Тогда
    Возврат; // Запись не удалась, сообщения о причинах выводит платформа.
    КонецЕсли;
    ИначеЕсли Ответ <> "ПродолжитьБезЗаписи" Тогда
    Возврат;
    КонецЕсли;

    Если Объект.Ссылка.Пустая() Или Модифицированность Тогда
    Возврат; // Финальная проверка.
    КонецЕсли;

    СтрокаТаблицыКоманд = Элементы.ОбъектКоманды.ТекущиеДанные;
    Если СтрокаТаблицыКоманд = Неопределено
    Или СтрокаТаблицыКоманд.Идентификатор <> Контекст.ИдентификаторВыполняемойКоманды Тогда
    Найденные = Объект.Команды.НайтиСтроки(Новый Структура("Идентификатор", Контекст.ИдентификаторВыполняемойКоманды));
    Если Найденные.Количество() = 0 Тогда
    Возврат;
    КонецЕсли;
    СтрокаТаблицыКоманд = Найденные[0];
    КонецЕсли;

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

    Если СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ОткрытиеФормы") Тогда

    ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьОткрытиеФормыОбработки(ВыполняемаяКоманда, ЭтотОбъект, ВыполняемаяКоманда.ОбъектыНазначения);

    ИначеЕсли СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовКлиентскогоМетода") Тогда

    ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьКлиентскийМетодОбработки(ВыполняемаяКоманда, ЭтотОбъект, ВыполняемаяКоманда.ОбъектыНазначения);

    ИначеЕсли СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовСерверногоМетода")
    Или СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.СценарийВБезопасномРежиме") Тогда

    ЗаголовокСостояния = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
    НСтр("ru = 'Выполняется команда "%1"'"),
    СтрокаТаблицыКоманд.Представление);
    Состояние(ЗаголовокСостояния + "...", , , БиблиотекаКартинок.ДлительнаяОперация48);

    ДлительнаяОперация = НачатьВыполнениеСервернойКомандыВФоне(ВыполняемаяКоманда, УникальныйИдентификатор);

    ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
    ПараметрыОжидания.ТекстСообщения = ЗаголовокСостояния;
    ПараметрыОжидания.ОповещениеПользователя.Показать = Истина;
    ПараметрыОжидания.ВыводитьОкноОжидания = Истина;

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

    КонецЕсли;

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

В УТ-шке, может отличатся, да и версии подсистем могут быть разные. Но я бы начинал смотреть оттуда.
Естественно обьект, нужно только получить по ссылке, а дальше открывать.
---
понять с кодом получения формы этой дополнительной
код вызова дополнительной обработки, посмотрите в самом справочнике формы доп обработок.
Там же есть кнопка выполнить доп обработку, там и найдете код, получения, вызова, с учетом всех подсистем.

П.С.
У меня нет под рукой УТ-шки.
Но вот посмотрел в бухне, в последнем релизе.
там вот такой код

```1c
    &НаКлиенте
    Процедура ВыполнитьКомандуПослеПодтвержденияЗаписи(Ответ, Контекст) Экспорт
    Если Ответ = "ЗаписатьИПродолжить" Тогда
    ОчиститьСообщения();
    Если Не Записать() Тогда
    Возврат; // Запись не удалась, сообщения о причинах выводит платформа.
    КонецЕсли;
    ИначеЕсли Ответ <> "ПродолжитьБезЗаписи" Тогда
    Возврат;
    КонецЕсли;

    Если Объект.Ссылка.Пустая() Или Модифицированность Тогда
    Возврат; // Финальная проверка.
    КонецЕсли;

    СтрокаТаблицыКоманд = Элементы.ОбъектКоманды.ТекущиеДанные;
    Если СтрокаТаблицыКоманд = Неопределено
    Или СтрокаТаблицыКоманд.Идентификатор <> Контекст.ИдентификаторВыполняемойКоманды Тогда
    Найденные = Объект.Команды.НайтиСтроки(Новый Структура("Идентификатор", Контекст.ИдентификаторВыполняемойКоманды));
    Если Найденные.Количество() = 0 Тогда
    Возврат;
    КонецЕсли;
    СтрокаТаблицыКоманд = Найденные[0];
    КонецЕсли;

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

    Если СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ОткрытиеФормы") Тогда

    ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьОткрытиеФормыОбработки(ВыполняемаяКоманда, ЭтотОбъект, ВыполняемаяКоманда.ОбъектыНазначения);

    ИначеЕсли СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовКлиентскогоМетода") Тогда

    ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьКлиентскийМетодОбработки(ВыполняемаяКоманда, ЭтотОбъект, ВыполняемаяКоманда.ОбъектыНазначения);

    ИначеЕсли СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовСерверногоМетода")
    Или СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.СценарийВБезопасномРежиме") Тогда

    ЗаголовокСостояния = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
    НСтр("ru = 'Выполняется команда "%1"'"),
    СтрокаТаблицыКоманд.Представление);
    Состояние(ЗаголовокСостояния + "...", , , БиблиотекаКартинок.ДлительнаяОперация48);

    ДлительнаяОперация = НачатьВыполнениеСервернойКомандыВФоне(ВыполняемаяКоманда, УникальныйИдентификатор);

    ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
    ПараметрыОжидания.ТекстСообщения = ЗаголовокСостояния;
    ПараметрыОжидания.ОповещениеПользователя.Показать = Истина;
    ПараметрыОжидания.ВыводитьОкноОжидания = Истина;

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

    КонецЕсли;

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

В УТ-шке, может отличатся, да и версии подсистем могут быть разные. Но я бы начинал смотреть оттуда.
Естественно обьект, нужно только получить по ссылке, а дальше открывать.
---
Спасибо тебе, мил человек, вот просто в пояс кланяюс!

```1c
    &НаКлиенте
    Процедура ФокусПокус(Команда)
    Джонни = ФокусПокус_Сервер();
    ВыполняемаяКоманда = Новый Структура(
    "Ссылка, Представление,
    |Идентификатор, ВариантЗапуска, ПоказыватьОповещение,
    |Модификатор, ОбъектыНазначения, ЭтоОтчет, Вид");

    ЗаполнитьЗначенияСвойств(ВыполняемаяКоманда, Джонни);

    ВыполняемаяКоманда.Идентификатор = Новый УникальныйИдентификатор;
    ВыполняемаяКоманда.ЭтоОтчет = Ложь;
    ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьОткрытиеФормыОбработки(ВыполняемаяКоманда, Неопределено, Неопределено);
    КонецПроцедуры

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

и всё, слов не хватает.
Всё уже давно написано за нас.

Спасибо ещё раз, удачи и профессиональных успехов!