
&Вместо("ПодключитьВнешнююОбработку")
Функция ирПодключитьВнешнююОбработку(Ссылка)
	
	// ИР. Начало оригинального кода
	
	СтандартнаяОбработка = Истина;
	Результат = Неопределено;
	Если Метаданные.ОбщиеМодули.Найти("ИнтеграцияСТехнологиейСервиса") <> Неопределено Тогда
		МодульИнтеграцияПодсистемБСП = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияСТехнологиейСервиса"); // БСП 2.4
	ИначеЕсли Метаданные.ОбщиеМодули.Найти("ИнтеграцияПодсистемБСП") <> Неопределено Тогда
		МодульИнтеграцияПодсистемБСП = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБСП"); // БСП 3.1
	Иначе
		МодульИнтеграцияПодсистемБСП = Неопределено;
	КонецЕсли; 
	Если МодульИнтеграцияПодсистемБСП <> Неопределено Тогда
		МодульИнтеграцияПодсистемБСП.ПриПодключенииВнешнейОбработки(Ссылка, СтандартнаяОбработка, Результат);
	КонецЕсли; 
	Если Не СтандартнаяОбработка Тогда
		Возврат Результат;
	КонецЕсли;
	// Проверка корректности переданных параметров.
	Если ТипЗнч(Ссылка) <> Тип("СправочникСсылка.ДополнительныеОтчетыИОбработки") 
		Или Ссылка = Справочники.ДополнительныеОтчетыИОбработки.ПустаяСсылка() Тогда
		Возврат Неопределено;
	КонецЕсли;
	
	// ИР. Перенесено ниже
	//// Подключение
	//#Если ТолстыйКлиентОбычноеПриложение Тогда
	//	ИмяОбработки = ПолучитьИмяВременногоФайла();
	//	ХранилищеОбработки = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "ХранилищеОбработки");
	//	ДвоичныеДанные = ХранилищеОбработки.Получить();
	//	ДвоичныеДанные.Записать(ИмяОбработки);
	//	Возврат ИмяОбработки;
	//#КонецЕсли
	
	Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда
		МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме");
		ИспользуютсяПрофилиБезопасности = МодульРаботаВБезопасномРежиме.ИспользуютсяПрофилиБезопасности();
	Иначе
		ИспользуютсяПрофилиБезопасности = Ложь;
	КонецЕсли;
	Вид = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Вид");
	Если Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.Отчет
		Или Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет Тогда
		Менеджер = ВнешниеОтчеты;
	Иначе
		Менеджер = ВнешниеОбработки;
	КонецЕсли;
	ПараметрыЗапуска = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "БезопасныйРежим, ХранилищеОбработки");
	
	// ИР. Перенесено ниже
	//АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ПараметрыЗапуска.ХранилищеОбработки.Получить());
	
	Если ИспользуютсяПрофилиБезопасности Тогда
		МодульРаботаВБезопасномРежимеСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежимеСлужебный");
		БезопасныйРежим = МодульРаботаВБезопасномРежимеСлужебный.РежимПодключенияВнешнегоМодуля(Ссылка);
		Если БезопасныйРежим = Неопределено Тогда
			БезопасныйРежим = Истина;
		КонецЕсли;
	Иначе
		БезопасныйРежим = ПолучитьФункциональнуюОпцию("СтандартныеПодсистемыВМоделиСервиса") Или ПараметрыЗапуска.БезопасныйРежим;
		Если БезопасныйРежим Тогда
			ЗапросРазрешений = Новый Запрос(
				"ВЫБРАТЬ ПЕРВЫЕ 1
				|	ДополнительныеОтчетыИОбработкиРазрешения.НомерСтроки,
				|	ДополнительныеОтчетыИОбработкиРазрешения.ВидРазрешения
				|ИЗ
				|	Справочник.ДополнительныеОтчетыИОбработки.Разрешения КАК ДополнительныеОтчетыИОбработкиРазрешения
				|ГДЕ
				|	ДополнительныеОтчетыИОбработкиРазрешения.Ссылка = &Ссылка");
			ЗапросРазрешений.УстановитьПараметр("Ссылка", Ссылка);
			ЕстьРазрешений = Не ЗапросРазрешений.Выполнить().Пустой();
			РежимСовместимости = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "РежимСовместимостиРазрешений");
			Если РежимСовместимости = Перечисления.РежимыСовместимостиРазрешенийДополнительныхОтчетовИОбработок.Версия_2_2_2
				И ЕстьРазрешений Тогда
				БезопасныйРежим = Ложь;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	ЗаписатьПримечание(Ссылка, НСтр("ru = 'Подключение, БезопасныйРежим = """ + БезопасныйРежим + """.'"));
	
	// ИР.Конец оригинального кода
	
	ИмяОбработки = "";
	ирСервер.ПриПодключенииВнешнейОбработки(Ссылка, Истина, ИмяОбработки);
	Если ЗначениеЗаполнено(ИмяОбработки) Тогда
		Возврат ИмяОбработки;
	КонецЕсли; 
	
	// ИР. Перенесенный оригинальный код
	#Если ТолстыйКлиентОбычноеПриложение Тогда
		ИмяОбработки = ПолучитьИмяВременногоФайла();
		ХранилищеОбработки = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "ХранилищеОбработки");
		ДвоичныеДанные = ХранилищеОбработки.Получить();
		ДвоичныеДанные.Записать(ИмяОбработки);
		Возврат ИмяОбработки;
	#КонецЕсли
	
	// ИР. Перенесенный оригинальный код
	АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ПараметрыЗапуска.ХранилищеОбработки.Получить());
	
	// ИР. Начало оригинального кода
	Если ОбщегоНазначения.ЕстьЗащитаОтОпасныхДействий() Тогда
		ИмяОбработки = Менеджер.Подключить(АдресВоВременномХранилище, , БезопасныйРежим,
			ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений());
	Иначе
		ИмяОбработки = Менеджер.Подключить(АдресВоВременномХранилище, , БезопасныйРежим);
	КонецЕсли;
	Возврат ИмяОбработки;
	// ИР.Конец оригинального кода

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

Функция ирПроверкаПодключенияРасширенияМодуля() Экспорт 
КонецФункции