Доброе время суток, многоуважаемые.

Озаботился следующей проблемой.

Есть типовая конфигурация. (ЗиК бюджет). Само собой, управляемые формы.
Задача состоит в том, что, к каждому документу надо подключить еще одну форму, обеспечивающую обмен с таблицами внешнего источника данных. К каждому документу - свою дополнительную форму. Предварительно решено, что эти формы будут созданы в расширении, куда будут экспортированы сами эти документы.
А теперь вопрос.
Как подключать эти дополнительные формы без экспорта форм документов, из которых они вызываются?
Не хочется экспортировать формы документов в расширение для добавления простого органа управления (поля, кнопки и т.д).

Что посоветуете?
---
Не имеет значения, в случае ошибок можно заменить куски кода руками. Пример:

```1c
    #Область СВЕДЕНИЯ_О_ВНЕШНЕЙ_ОБРАБОТКЕ

    Функция СведенияОВнешнейОбработке() Экспорт

    РегистрационныеДанные = РегистрационныеДанные();
    РегистрационныеДанные.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиЗаполнениеОбъекта();
    РегистрационныеДанные.Наименование = "Обработка такая та";
    РегистрационныеДанные.Версия = "2.0.4";
    //РегистрационныеДанные.БезопасныйРежим = Истина;
    РегистрационныеДанные.Информация = "Описание внешней обработки такая та";

    МассивНазначений = Новый Массив;
    МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг"); //Указываем документ к которому делаем внешнюю печ. форму

    // Добавим команду
    Команда = РегистрационныеДанные.Команды.Добавить();
    Команда.Идентификатор = "ЗагрузитьФайлXML";
    Команда.Представление = "Загрузка данных файла XML";
    Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
    Команда.ПоказыватьОповещение = Истина;

    // Добавим Разрешения
    МассивРазрешений = РегистрационныеДанные.Разрешения;
    МассивРазрешений.Добавить(РаботаВБезопасномРежиме.РазрешениеНаСозданиеCOMКласса("Excel.Application", "{00024500-0000-0000-C000-000000000046}"));
    МассивРазрешений.Добавить(РаботаВБезопасномРежиме.РазрешениеНаИспользованиеПривилегированногоРежима());
    //МассивРазрешений.Добавить(РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина,Истина,"Для сохранения файлов"));

    Возврат РегистрационныеДанные;

    КонецФункции

    Функция РегистрационныеДанные()
    ПараметрыРегистрации = Новый Структура;

    ПараметрыРегистрации.Вставить("Вид", ");
    ПараметрыРегистрации.Вставить("Версия", "0.0");
    ПараметрыРегистрации.Вставить("Назначение", Новый Массив);
    ПараметрыРегистрации.Вставить("Наименование", Неопределено);
    ПараметрыРегистрации.Вставить("БезопасныйРежим",Истина);
    ПараметрыРегистрации.Вставить("Информация", Неопределено);
    ПараметрыРегистрации.Вставить("ВерсияБСП", СтандартныеПодсистемыСервер.ВерсияБиблиотеки());
    ПараметрыРегистрации.Вставить("ОпределитьНастройкиФормы", Ложь);

    РеквизитыТабличнойЧасти = Метаданные.Справочники.ДополнительныеОтчетыИОбработки.ТабличныеЧасти.Команды.Реквизиты;

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

    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    ПараметрыРегистрации.Вставить("Разрешения", Новый Массив);

    Возврат ПараметрыРегистрации;
    КонецФункции

    #КонецОбласти
```
---
А внешняя обработка не подойдет ?
Подключаете ее как дополнительную, к нужным документам.
а в самих документах она появится группе команд "Перейти" либо "Ввод на основании"
---
(2)

 1. При отметке в группе команд Перейти надо снимать конфигурацию с замка и делать редактируемой, чего хочется еще меньше. Если это не так по части внешней обработки, то прошу просветить, ибо раньше не встречался с такой фишкой. 2. Ввод на основании не очень хочется из-за потери наглядности интерфейса.
---
можно попробовать через Параметризуемые команды

Или программно добавлять команды/поля
---
1. Программно добавлять - из какого места? А как при этом не модифицировать код с перспективой перехода к редактируемой конфигурации?
(4)2. Тот же самый вопрос про параметризуемые команды/поля.
---
1. Поля, реквизиты я обычно через подключаемые команды БСП с аннотацией После, не знаю как у вас в конфигурации
    В ЕРП есть обращение к общему модулю МодификацияКонфигурации
    Всё это через расширение
    А вот с командами и обработчиками немного сложнее

2. А параметризуемые команды (если не ошибаюсь, то полей не бывает) через расширение вроде можно, если честно в расширении не пробовал. И ещё конечно зависит от версии платформы
---
Можно вывести в группы" Печать", "Заполнить" или "Создать на основании"...
Оптимальнее чем расширения
---
Те же самые вопросы. Печать - не поймут заказчики. Создать на основании и Заполнить = редактированная конфигурация.
---
Создать на основании и Заполнить = редактированная конфигурация

нет https://infostart.ru/1c/articles/558559/
---
Похоже, то, что надо. Не имел раньше дел с БСП. Знаю только, что на них реализованы последние типовые конфигурации. Как посмотреть, на какой версии изготовлена моя? (ЗиК Госуч.)?
---
Не имеет значения, в случае ошибок можно заменить куски кода руками. Пример:

```1c
    #Область СВЕДЕНИЯ_О_ВНЕШНЕЙ_ОБРАБОТКЕ

    Функция СведенияОВнешнейОбработке() Экспорт

    РегистрационныеДанные = РегистрационныеДанные();
    РегистрационныеДанные.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиЗаполнениеОбъекта();
    РегистрационныеДанные.Наименование = "Обработка такая та";
    РегистрационныеДанные.Версия = "2.0.4";
    //РегистрационныеДанные.БезопасныйРежим = Истина;
    РегистрационныеДанные.Информация = "Описание внешней обработки такая та";

    МассивНазначений = Новый Массив;
    МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг"); //Указываем документ к которому делаем внешнюю печ. форму

    // Добавим команду
    Команда = РегистрационныеДанные.Команды.Добавить();
    Команда.Идентификатор = "ЗагрузитьФайлXML";
    Команда.Представление = "Загрузка данных файла XML";
    Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
    Команда.ПоказыватьОповещение = Истина;

    // Добавим Разрешения
    МассивРазрешений = РегистрационныеДанные.Разрешения;
    МассивРазрешений.Добавить(РаботаВБезопасномРежиме.РазрешениеНаСозданиеCOMКласса("Excel.Application", "{00024500-0000-0000-C000-000000000046}"));
    МассивРазрешений.Добавить(РаботаВБезопасномРежиме.РазрешениеНаИспользованиеПривилегированногоРежима());
    //МассивРазрешений.Добавить(РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина,Истина,"Для сохранения файлов"));

    Возврат РегистрационныеДанные;

    КонецФункции

    Функция РегистрационныеДанные()
    ПараметрыРегистрации = Новый Структура;

    ПараметрыРегистрации.Вставить("Вид", ");
    ПараметрыРегистрации.Вставить("Версия", "0.0");
    ПараметрыРегистрации.Вставить("Назначение", Новый Массив);
    ПараметрыРегистрации.Вставить("Наименование", Неопределено);
    ПараметрыРегистрации.Вставить("БезопасныйРежим",Истина);
    ПараметрыРегистрации.Вставить("Информация", Неопределено);
    ПараметрыРегистрации.Вставить("ВерсияБСП", СтандартныеПодсистемыСервер.ВерсияБиблиотеки());
    ПараметрыРегистрации.Вставить("ОпределитьНастройкиФормы", Ложь);

    РеквизитыТабличнойЧасти = Метаданные.Справочники.ДополнительныеОтчетыИОбработки.ТабличныеЧасти.Команды.Реквизиты;

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

    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    ПараметрыРегистрации.Вставить("Разрешения", Новый Массив);

    Возврат ПараметрыРегистрации;
    КонецФункции

    #КонецОбласти
```