1. Задача сделать обмен между двумя конфигурациями на БСП.
Получил задачу и сразу вопрос "Как это сделать?", спросил у Гугла, спросил у ИТС ... ответа толкового нет. Ведь все же просто, но где нужно поставить волшебную галочку, а где поставить немного кода? Чтобы вы не "Разбили" свою голову, я хочу с вами поделиться небольшим кодом и пошаговым описанием, что нужно сделать.
2. Добавить обмен с одинаковым именем в обе базы.
Условное наименование ОбменСДругойБазой
Добавляем план обмена, чтобы он был виден среди всех планов обменов. (Через расширение)
ОбменДаннымиПовтИсп.СписокПлановОбменаБСП
&ИзменениеИКонтроль("СписокПлановОбменаБСП") 
Функция Расш_СписокПлановОбменаБСП() Экспорт    
    // Возвращаемое значение функции.
    СписокПлановОбмена = Новый СписокЗначений;
    ПланыОбменаПодсистемы = Новый Массив;
    ОбменДаннымиПереопределяемый.ПолучитьПланыОбмена(ПланыОбменаПодсистемы);
    Для Каждого ПланОбмена Из ПланыОбменаПодсистемы Цикл
        СписокПлановОбмена.Добавить(ПланОбмена.Имя, ПланОбмена.Синоним);
    КонецЦикла;
    #Вставка
        //Добавим свой план обмена    
        ПОБП = Метаданные.ПланыОбмена.ОбменСДругойБазой;
        СписокПлановОбмена.Добавить(ПОБП.Имя, ПОБП.Синоним);
    #КонецВставки
    Возврат СписокПлановОбмена;
КонецФункции
К Плану обмена надо добавить следующие макеты (зеркально надо добавлять в базу приемник).
- ПравилаОбмена (Текстовый документ)
- ПравилаОбменаКорреспондента (Текстовый документ)
- ПравилаРегистрации (Текстовый документ)
- ПодробнаяИнформация (HTML документ)

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

В форме добавить запись
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	// запишем в регистр "Общие настройки узлов информационных баз" информацию о данной базе
	Если текущийОбъект.ЭтотУзел = Ложь тогда
	ЗаписьИнф = РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.СоздатьМенеджерЗаписи();
	ЗаписьИнф.УзелИнформационнойБазы = текущийОбъект.ссылка;
	ЗаписьИнф.НастройкаЗавершена = истина;
	ЗаписьИнф.Префикс = "БП"; //// ОБЯЗАТЕЛЬНО ЗАПОЛНИТЬ
	ЗаписьИнф.ПрефиксКорреспондента = "УТ";   // ОБЯЗАТЕЛЬНО ЗАПОЛНИТЬ
	ЗаписьИнф.Записать(Истина);
	КонецЕсли;
КонецПроцедуры
В ней надо разместить следующие команды
- ЗагрузитьПравила (Что бы загрузить подготовленные правила, без обновления конфигурации)
&НаКлиенте
Процедура ЗагрузитьПравила(Команда)
	ОбменДаннымиКлиент.ЗагрузитьПравилаСинхронизацииДанных("ОбменСДругойБазой");
КонецПроцедуры
- НастройкиПодключения (Открыть настройки подключения связанные с этим планом обмена)
&НаКлиенте
Процедура НастройкиПодключения(Команда)	
	Корреспондент = объект.Ссылка;
	ИдентификаторНастройки = "";
	Отбор              = Новый Структура("Корреспондент", Корреспондент);
	ЗначенияЗаполнения = Новый Структура("Корреспондент", Корреспондент);
		
	ОбменДаннымиКлиент.ОткрытьФормуЗаписиРегистраСведенийПоОтбору(Отбор,
	ЗначенияЗаполнения, "НастройкиТранспортаОбменаДанными", Этаформа);
КонецПроцедуры
- ОбновитьСведенияОПравилах (Обновляет сведения и правила зашитые в конфигурации в макетах)
&НаСервере
Процедура ОбновитьСведенияОПравилахНаСервере()
	// запишем правила
	ЗаписьПравилаОбмена = регистрыСведений.ПравилаДляОбменаДанными.СоздатьМенеджерЗаписи();
	ЗаписьПравилаОбмена.ИмяПланаОбмена = "ОбменСДругойБазой";
	ЗаписьПравилаОбмена.ВидПравил = Перечисления.ВидыПравилДляОбменаДанными.ПравилаКонвертацииОбъектов;
	
	ЗаписьПравилаОбмена.ИмяМакетаПравил	= "ПравилаОбмена";
	ЗаписьПравилаОбмена.ИмяМакетаПравилКорреспондента = "ПравилаОбменаКорреспондента";
	ЗаписьПравилаОбмена.ИмяПланаОбменаИзПравил = "";  
	ЗаписьПравилаОбмена.ИмяФайлаОбработкиДляОтладкиВыгрузки = "";
	ЗаписьПравилаОбмена.ИмяФайлаОбработкиДляОтладкиЗагрузки = ""; 
	ЗаписьПравилаОбмена.ИмяФайлаПравил = "";
	ЗаписьПравилаОбмена.ИмяФайлаПротоколаОбмена = "";
	ЗаписьПравилаОбмена.ИнформацияОПравилах = "";
	ЗаписьПравилаОбмена.ИсточникПравил = перечисления.ИсточникиПравилДляОбменаДанными.МакетКонфигурации;
	ЗаписьПравилаОбмена.НеОстанавливатьПоОшибке = "";
	ЗаписьПравилаОбмена.ПравилаXML = "";
	ЗаписьПравилаОбмена.ПравилаXMLКорреспондента = "";
	ЗаписьПравилаОбмена.ПравилаЗачитанные = "";
	ЗаписьПравилаОбмена.ПравилаЗачитанныеКорреспондента = "";
	ЗаписьПравилаОбмена.РежимОтладки	 = Ложь;
	ЗаписьПравилаОбмена.РежимОтладкиВыгрузки = Ложь;
	ЗаписьПравилаОбмена.РежимОтладкиЗагрузки = Ложь;
	ЗаписьПравилаОбмена.РежимПротоколированияОбменаДанными = "";
	ЗаписьПравилаОбмена.ИмяМенеджераРегистрации	 = "";
	
	//ЗаписьПравилаОбмена.ПравилаЗагружены
	ЗаписьПравилаОбмена.Записать(Истина);
	ЗаписьПравилаОбмена = регистрыСведений.ПравилаДляОбменаДанными.СоздатьМенеджерЗаписи();
	ЗаписьПравилаОбмена.ИмяПланаОбмена = "ОбменСДругойБазой";
	ЗаписьПравилаОбмена.ВидПравил = Перечисления.ВидыПравилДляОбменаДанными.ПравилаРегистрацииОбъектов;
	
	ЗаписьПравилаОбмена.ИмяМакетаПравил	= "ПравилаРегистрации";
	ЗаписьПравилаОбмена.ИмяМакетаПравилКорреспондента = "";
	ЗаписьПравилаОбмена.ИмяПланаОбменаИзПравил = "";  
	ЗаписьПравилаОбмена.ИмяФайлаОбработкиДляОтладкиВыгрузки = "";
	ЗаписьПравилаОбмена.ИмяФайлаОбработкиДляОтладкиЗагрузки = ""; 
	ЗаписьПравилаОбмена.ИмяФайлаПравил = "";
	ЗаписьПравилаОбмена.ИмяФайлаПротоколаОбмена = "";
	ЗаписьПравилаОбмена.ИнформацияОПравилах = "";
	ЗаписьПравилаОбмена.ИсточникПравил = перечисления.ИсточникиПравилДляОбменаДанными.МакетКонфигурации;
	ЗаписьПравилаОбмена.НеОстанавливатьПоОшибке = "";
	ЗаписьПравилаОбмена.ПравилаXML = "";
	ЗаписьПравилаОбмена.ПравилаXMLКорреспондента = "";
	ЗаписьПравилаОбмена.ПравилаЗачитанные = "";
	ЗаписьПравилаОбмена.ПравилаЗачитанныеКорреспондента = "";
	ЗаписьПравилаОбмена.РежимОтладки	 = Ложь;
	ЗаписьПравилаОбмена.РежимОтладкиВыгрузки = Ложь;
	ЗаписьПравилаОбмена.РежимОтладкиЗагрузки = Ложь;
	ЗаписьПравилаОбмена.РежимПротоколированияОбменаДанными = "";
	ЗаписьПравилаОбмена.ИмяМенеджераРегистрации	 = "";
	
	//ЗаписьПравилаОбмена.ПравилаЗагружены
	ЗаписьПравилаОбмена.Записать(Истина);
	
	////// теперь обработаем правила.
	ИсточникПравилКомплекта = Перечисления.ИсточникиПравилДляОбменаДанными.МакетКонфигурации;
	
	ЗаписьПравилКонвертации                               = РегистрыСведений.ПравилаДляОбменаДанными.СоздатьМенеджерЗаписи();
	ЗаписьПравилКонвертации.ВидПравил                     = Перечисления.ВидыПравилДляОбменаДанными.ПравилаКонвертацииОбъектов;
	ЗаписьПравилКонвертации.ИмяМакетаПравил               = "ПравилаОбмена";
	ЗаписьПравилКонвертации.ИмяМакетаПравилКорреспондента = "ПравилаОбменаКорреспондента";
	ЗаписьПравилКонвертации.ИнформацияОПравилах           = "";
	
	//ЗаполнитьЗначенияСвойств(ЗаписьПравилКонвертации, ЭтотОбъект);
	ЗаписьПравилКонвертации.ИмяПланаОбмена = "ОбменБухгалтерияПредприятияУИ";
	ЗаписьПравилКонвертации.ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МакетКонфигурации;
	
	ЗаписьПравилРегистрации                     = РегистрыСведений.ПравилаДляОбменаДанными.СоздатьМенеджерЗаписи();
	ЗаписьПравилРегистрации.ВидПравил           = Перечисления.ВидыПравилДляОбменаДанными.ПравилаРегистрацииОбъектов;
	ЗаписьПравилРегистрации.ИмяМакетаПравил     = "ПравилаРегистрации";
	ЗаписьПравилРегистрации.ИнформацияОПравилах = "ПравилаРегистрации";
	ЗаписьПравилРегистрации.ИмяФайлаПравил      = "";
	ЗаписьПравилРегистрации.ИмяПланаОбмена      = "ОбменСДругойБазой";
	ЗаписьПравилРегистрации.ИсточникПравил      =  Перечисления.ИсточникиПравилДляОбменаДанными.МакетКонфигурации;
	ЗаписьПравилРегистрации.ИмяПланаОбмена = "ОбменСДругойБазой";
	СтруктураЗаписейРегистра = Новый Структура();
	СтруктураЗаписейРегистра.Вставить("ЗаписьПравилКонвертации", ЗаписьПравилКонвертации);
	СтруктураЗаписейРегистра.Вставить("ЗаписьПравилРегистрации", ЗаписьПравилРегистрации);
	
	Отказ = ложь;     
	ОписаниеОшибки = "";                        
	АдресВременногоХранилища = "";                    
	ИмяФайлаПравил = "";
	РегистрыСведений.ПравилаДляОбменаДанными.ЗагрузитьКомплектПравил(Отказ, СтруктураЗаписейРегистра,
		ОписаниеОшибки, АдресВременногоХранилища, ИмяФайлаПравил);
	
	Если Не Отказ Тогда
		ЗаписьПравилКонвертации.Записать();
		ЗаписьПравилРегистрации.Записать();
	КонецЕсли;
			
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСведенияОПравилах(Команда)
	ОбновитьСведенияОПравилахНаСервере();
КонецПроцедуры
3. Доработать расширение
В расширении захватить план обмена, и документы которые надо регистрировать к обмену.
В плане обмена указать состав объектов к обмену.
Обязательно добавить в обмен регистрСведений.СоответствияОбъектовИнформационныхБаз и в расширение.

4. Убрать процедуру удаления файлов при каждом обмене (так как 1сцы считают что больше никто не пользуется правилами обмена 2.0, то при каждом обновлении правила обмена удаляются) (взял у https://forum.infostart.ru/forum29/topic221697/)
В основной конфигурации в модуле "ОбменДаннымиСервер" в процедуре "УдалитьНеактуальныеЗаписиВРегистреПравилДляОбменаДанными"
закомментировал код
//  НаборЗаписей.Записать();
Все, можно настраивать папку и делать первый обмен. Все стандартные инструменты уже будут доступны в этом обмене.
UPD:
Далее нам понадобилось настроить работу правил регистрации. Как это сделать описано тут //infostart.ru/1c/articles/1922737/
Вступайте в нашу телеграмм-группу Инфостарт
 
                                 
                                 
                                     
                                     
                                     
                                     
                                    