Например, не получится переписать компоненту, если вы не её автор и исходников просто нет. Либо если для ее работы недостаточно поддерживаемых технологией Native API простейших типов (число, строка, булево, дата).
При работе с файловой базой особых проблем нет. Регламентное задание вызывается в фоновом процессе обычного пользователя. Поэтому ему доступны клиенские вызовы. В серверной базе при запуске регламентного задания клиентского контекста нет, соответственно вызов ПодключитьВнешнююКомпоненту() недоступен.
Подробнее о том, почему недоступен, можно почитать на ИТС.
В этом случае можно вызывать компоненту на клиенте. Для этого достаточно выполнить из регламентного задания на сервере запуск еще одного сеанса 1С в котором на клиенте выполнить нужные действия. Ну и не забыть потом завершить запущенный сеанс.
Допустим, у нас в регламентном задании выполняется формирование и сохранение отчета, использующего для склонения ФИО внешнюю COM-компоненту NameDeclension.dll. На файловой базе такое регламентное задание будет работать корректно, на серверной компоненту подключить не получится.
Для устранения проблемы добавим в модуль регламентных заданий процедуру, которая в серверном режиме запустит еще один сеанс и в нем выполнит из внешней обработки вызов формирования отчета на клиенте.
#Если Клиент Тогда
Процедура ВыполнитьФормированиеИСохранениеОтчета() Экспорт
Если ПодключитьВнешнююКомпоненту("ОбщийМакет.NAMEDECL","Скл",ТипВнешнейКомпоненты.COM) Тогда
Компонента = Новый ("AddIn.Скл.NameDeclension");
//Тут код формирования и сохранения отчета
Иначе
ЗаписьЖурналаРегистрации("РеглЗадания", УровеньЖурналаРегистрации.Ошибка,,,
"Не удалось подключить внешнюю компоненту на клиенте");
КонецЕсли;
КонецПроцедуры
#Иначе
Процедура ВыполнитьФормированиеИСохранениеОтчета() Экспорт
ВыполнитьОперациюНаКлиенте("РеглЗадания.ВыполнитьФормированиеИСохранениеОтчета()");
КонецПроцедуры
Процедура ВыполнитьОперациюНаКлиенте(ПараметрДляВыполнения) Экспорт
ИмяПользователя = "";
ПарольПользователя = "";
ПутьКВнешнейОбработке = "c:/temp/Автозапуск.epf";
Кавычка = """";
КаталогBIN = КаталогПрограммы();
ПутьККонфигурации = СтрокаСоединенияИнформационнойБазы();
ПутьККонфигурации = СтрЗаменить(ПутьККонфигурации, Кавычка, Кавычка + Кавычка);
СтрокаЗапуска = Кавычка + КаталогBIN + "1cv8.exe" + Кавычка + " ENTERPRISE"
+ " /IBConnectionString " + Кавычка + ПутьККонфигурации + Кавычка
+ " /N " + Кавычка + ИмяПользователя + Кавычка
+ " /P " + Кавычка + ПарольПользователя + Кавычка
+ " /Execute " + Кавычка + ПутьКВнешнейОбработке + Кавычка
+ " /C " + Кавычка + ПараметрДляВыполнения + Кавычка;
ЗапуститьПриложение(СтрокаЗапуска);
КонецПроцедуры
#КонецЕсли
Код внешней обработки, которая просто вызовет в контексте клиента печать нужного отчета из модуля регламентных заданий и завершит сеанс после формирования отчета.
Попытка
Выполнить(ПараметрЗапуска);
Исключение
КонецПопытки;
ЗавершитьРаботуСистемы(Ложь);
Удобство решения в том, что при настройке регламентных заданий не важно, в каком режиме будет выполняться запуск задания. Если база файловая, то сразу запустится нужная процедура. Если база серверная и при запуске клиентский контекст отсутствует, то выполнится инициализация нового сеанса и в нем процедура корректно отработает в контексте клиента.
Код для обычного приложения. Теоретически полностью аналогично будет работать и в управляемом.
p.s. Также этот подход можно использовать для выполнения любых клиентских процедур в регламентных заданиях.