Принцип прост. Если не хочешь перезапускать конфигуратор помести все свои модули во внешней обработке. Добавь в конфигурацию сразу подписки на все события и пропиши ссылки на процедуры во внешней обработке. Лучше всего создать глобальную переменную, к которой потом будешь обращаться для вызова разных процедур и функций. Плюсы такого подхода очевидны. Минусы: это не работает на стороне сервера.
Выкладываю все как есть на рабочей базе.
Также выкладываю обработки печати внешних форм и заполнения табличных частей. В типовых конфигурациях их необходимо просто зарегистрировать для нужных документов.
Еще выкладываю собственно внешний модуль. В типовой конфигурации работать он не будет, но если повезет - найдете там что-нибудь для себя полезное. Размер модуля более 35000 строк. В нем есть около 40 различных печатных форм (типовых и не очень), куча обработок заполнения ТЧ и модулей проведения. Типовая конфигурация для которой он написан - УТ 10.3 объединенная с Инталев Корпоративные финансы.
Процедура ОбновитьВнешнююОбработку() экспорт
#Если Клиент тогда
Попытка
ИмяФайла=СокрЛП(Константы.КаталогДополнительнойИнформации.Получить())+"МБИПКлиентБП16.epf";
Исключение
ИмяФайла = "\\server1\ВнешниеМодули1С\МБИПКлиентБП16.epf";
КонецПопытки;
Файл=новый файл(ИмяФайла);
Если Файл.Существует() тогда
ДатаФайла=Файл.ПолучитьВремяИзменения();
Если ДатаОбновленияМБКлиент = неопределено или ДатаОбновленияМБКлиент<ДатаФайла тогда
Попытка
МБКлиент = ВнешниеОбработки.Создать("d:\ВнешниеМодули1С\МБИПКлиентБП16.epf");
Исключение
МБКлиент = ВнешниеОбработки.Создать(ИмяФайла);
Конецпопытки;
ДатаОбновленияМБКлиент=ДатаФайла;
КонецЕсли;
Иначе
Сообщить("Файл "+Файл.Имя+" не существует");
КонецЕсли;
#КонецЕсли
Конецпроцедуры
Процедура ПередЗаписьюДокументов(Док, Отказ,РежимЗаписи, РежимПроведения) Экспорт
#Если Клиент тогда
ОбновитьВнешнююОбработку();
МБКлиент.ПередЗаписьюДокументов(Док, Отказ,РежимЗаписи, РежимПроведения);
#ИначеЕсли Сервер тогда
МБСервер.ПередЗаписьюДокументов(Док, Отказ,РежимЗаписи, РежимПроведения);
#КонецЕсли
КонецПроцедуры
Процедура ПриЗаписиДокументов(Док,отказ) Экспорт
#Если Клиент тогда
ОбновитьВнешнююОбработку();
МБКлиент.ПриЗаписиДокументов(Док,Отказ);
#ИначеЕсли Сервер тогда
МБСервер.ПриЗаписиДокументов(Док,Отказ);
#КонецЕсли
КонецПроцедуры
Процедура ОбработкаПроведения(Док, Отказ, РежимПроведения) Экспорт
#Если Клиент тогда
ОбновитьВнешнююОбработку();
МБКлиент.ОбработкаПроведения(Док, Отказ);
#ИначеЕсли Сервер тогда
МБСервер.ОбработкаПроведения(Док, Отказ);
#КонецЕсли
КонецПроцедуры
Процедура ОбработкаУдаленияПроведения(Док, Отказ) Экспорт
#Если Клиент тогда
ОбновитьВнешнююОбработку();
МБКлиент.ОбработкаУдаленияПроведения(Док, Отказ);
#ИначеЕсли Сервер тогда
МБСервер.ОбработкаУдаленияПроведения(Док, Отказ);
#КонецЕсли
КонецПроцедуры
Процедура ПередЗаписьюСправочников(Док, Отказ) Экспорт
#Если Клиент тогда
ОбновитьВнешнююОбработку();
МБКлиент.ПередЗаписьюСправочников(Док, Отказ);
#ИначеЕсли Сервер тогда
МБСервер.ПередЗаписьюСправочников(Док, Отказ);
#КонецЕсли
КонецПроцедуры
Процедура ПриЗаписиСправочников(Док, Отказ) Экспорт
#Если Клиент тогда
ОбновитьВнешнююОбработку();
МБКлиент.ПриЗаписиСправочников(Док, Отказ);
#ИначеЕсли Сервер тогда
МБСервер.ПриЗаписиСправочников(Док, Отказ);
#КонецЕсли
КонецПроцедуры
Процедура ПередЗаписьюРегистров(рег, Отказ, Замещение) Экспорт
#Если Клиент тогда
ОбновитьВнешнююОбработку();
МБКлиент.ПередЗаписьюРегистров(рег, Отказ, Замещение);
#ИначеЕсли Сервер тогда
МБСервер.ПередЗаписьюРегистров(рег, Отказ, Замещение);
#КонецЕсли
КонецПроцедуры
Процедура ОбработкаЗаполнения(Источник, Основание) Экспорт
#Если Клиент тогда
ОбновитьВнешнююОбработку();
МБКлиент.ОбработкаЗаполнения(Источник, Основание);
#ИначеЕсли Сервер тогда
МБСервер.ОбработкаЗаполнения(Источник, Основание);
#КонецЕсли
КонецПроцедуры
Процедура ПриУстановкеНовогоНомера(Док, СтандартнаяОбработка, Префикс) Экспорт
#Если Клиент тогда
ОбновитьВнешнююОбработку();
МБКлиент.ПриУстановкеНовогоНомера(Док, СтандартнаяОбработка, Префикс);
#ИначеЕсли Сервер тогда
МБСервер.ПриУстановкеНовогоНомера(Док, СтандартнаяОбработка, Префикс);
#КонецЕсли
КонецПроцедуры
Процедура ПередЗаписьюПВХ(Источник, Отказ) Экспорт
#Если Клиент тогда
ОбновитьВнешнююОбработку();
МБКлиент.ПередЗаписьюПВХ(Источник, Отказ);
#ИначеЕсли Сервер тогда
МБСервер.ПередЗаписьюПВХ(Источник, Отказ);
#КонецЕсли
КонецПроцедуры
Процедура ПриКопированииСправочника(Источник, ОбъектКопирования) Экспорт
#Если Клиент тогда
ОбновитьВнешнююОбработку();
МБКлиент.ПриКопированииСправочника(Источник, ОбъектКопирования);
#ИначеЕсли Сервер тогда
МБСервер.ПриКопированииСправочника(Источник, ОбъектКопирования);
#КонецЕсли
КонецПроцедуры
Процедура ПриОткрытииФормОбъектовОтИнталев(Форма) экспорт
#Если Клиент тогда
МБ.ОбновитьВнешнююОбработку();
МБКлиент.ПриОткрытииФормОбъектовОтИнталев(Форма);
#ИначеЕсли Сервер тогда
МБСервер.ПриОткрытииФормОбъектовОтИнталев(Форма);
#КонецЕсли
Конецпроцедуры
Процедура ПриЗаписиРегистров(Рег, Отказ, Замещение) Экспорт
#Если Клиент тогда
МБ.ОбновитьВнешнююОбработку();
МБКлиент.ПриЗаписиРегистров(Рег, Отказ, Замещение);
#ИначеЕсли Сервер тогда
МБСервер.ПриЗаписиРегистров(Рег, Отказ, Замещение);
#КонецЕсли
КонецПроцедуры
Процедура ПередУдалениемДокументов(Источник, Отказ) Экспорт
#Если Клиент тогда
МБ.ОбновитьВнешнююОбработку();
МБКлиент.ПередУдалениемСправочников(Источник,Отказ);
#ИначеЕсли Сервер тогда
МБСервер.ПередУдалениемСправочников(Источник,Отказ);
#КонецЕсли
КонецПроцедуры
Процедура ПередУдалениемСправочников(Источник, Отказ) Экспорт
#Если Клиент тогда
МБ.ОбновитьВнешнююОбработку();
МБКлиент.ПередУдалениемСправочников(Источник,Отказ);
#ИначеЕсли Сервер тогда
МБСервер.ПередУдалениемСправочников(Источник,Отказ);
#КонецЕсли
КонецПроцедуры