Рецепт от http://1c39.ru. Для приготовления этого блюда потребуется УТ 11 одна штука. Открываем план обмена полный. Нажимаем состав. Создаем такой же в УНФ и снимаем галки у тех же объектов, что и в УТ. Авторегистрация - запретить. Ставим галку РИБ. Запихиваем в подсистему обмен данными. Макеты не используем. В модуль объекта пишем (из ИТС):
Перем КоличествоОбъектовЗагружено;
Перем КоличествоОбъектовВыгружено;
Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента, СозданиеНачальногоОбраза)
КоличествоОбъектовВыгружено = КоличествоОбъектовВыгружено + 1;
КонецПроцедуры
Процедура ПриОтправкеДанныхГлавному(ЭлементДанных, ОтправкаЭлемента)
КоличествоОбъектовВыгружено = КоличествоОбъектовВыгружено + 1;
КонецПроцедуры
Процедура ПриПолученииДанныхОтПодчиненного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад)
КоличествоОбъектовЗагружено = КоличествоОбъектовЗагружено + 1;
КонецПроцедуры
Процедура ПриПолученииДанныхОтГлавного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад)
КоличествоОбъектовЗагружено = КоличествоОбъектовЗагружено + 1;
КонецПроцедуры
Процедура ПередЗаписью(Отказ)
Если ОбменДаннымиСервер.НадоВыполнитьОбработчикПослеВыгрузкиДанных(ЭтотОбъект, Ссылка) Тогда
ПослеВыгрузкиДанных(Отказ);
ИначеЕсли ОбменДаннымиСервер.НадоВыполнитьОбработчикПослеЗагрузкиДанных(ЭтотОбъект, Ссылка) Тогда
ПослеЗагрузкиДанных(Отказ);
КонецЕсли;
КонецПроцедуры
Процедура ПослеВыгрузкиДанных(Отказ)
Сообщить("КоличествоОбъектовВыгружено: " + Строка(КоличествоОбъектовВыгружено));
КонецПроцедуры
Процедура ПослеЗагрузкиДанных(Отказ)
Сообщить("КоличествоОбъектовЗагружено: " + Строка(КоличествоОбъектовЗагружено));
КонецПроцедуры
КоличествоОбъектовЗагружено = 0;
КоличествоОбъектовВыгружено = 0;
В модуль менеджера добавляем заглушки (http://www.conf1c.ru/2012/05/blog-post_02.html):
Функция ПояснениеДляНастройкиПараметровУчета() Экспорт
Возврат "";
КонецФункции
Функция ЗначенияПоУмолчаниюНаУзле() Экспорт
Возврат Неопределено;
КонецФункции
Функция ЗначенияПоУмолчаниюНаУзлеБазыКорреспондента() Экспорт
Возврат Неопределено;
КонецФункции
Функция ИмяФайлаНастроекДляПриемника() Экспорт
Возврат НСтр("ru = 'Настройки обмена УНФ-УНФ'");
КонецФункции
Функция ИспользуемыеТранспортыСообщенийОбмена() Экспорт
Результат = Новый Массив;
Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FILE);
Возврат Результат;
КонецФункции
Функция ИмяФормыСозданияНачальногоОбраза() Экспорт
Возврат "";
КонецФункции
Функция ЗаголовокКомандыДляСозданияНовогоОбменаДанными() Экспорт
Возврат НСтр("ru = 'Создать обмен УНФ-УНФ'");
КонецФункции
Функция ИспользоватьПомощникСозданияОбменаДанными() Экспорт
Возврат Истина;
КонецФункции
Функция НастройкаОтборовНаУзле() Экспорт
Возврат Неопределено;
КонецФункции
Функция НастройкаОтборовНаУзлеБазыКорреспондента() Экспорт
Возврат Неопределено;
КонецФункции
Функция ОписаниеЗначенийПоУмолчанию(ЗначенияПоУмолчаниюНаУзле) Экспорт
Возврат "";
КонецФункции
Функция ОписаниеЗначенийПоУмолчаниюБазыКорреспондента(ЗначенияПоУмолчаниюНаУзле) Экспорт
Возврат "";
КонецФункции
Функция ОписаниеОграниченийПередачиДанных(НастройкаОтборовНаУзле) Экспорт
Возврат "";
КонецФункции
Функция ОписаниеОграниченийПередачиДанныхБазыКорреспондента(НастройкаОтборовНаУзле) Экспорт
Возврат "";
КонецФункции
Создаем общий модуль (код взят из УТ 11):
////////////////////////////////////////////////////////////////////////////////
// Обмен Полный
// Процедура-обработчик события "ПередЗаписью" ссылочных типов данных (кроме документов) для механизма регистрации объектов на узлах
//
// Параметры:
// ИмяПланаОбмена – Строка – имя плана обмена, для которого выполняется механизм регистрации
// Источник - источник события, кроме типа ДокументОбъект
// Отказ - Булево - флаг отказа от выполнения обработчика
//
Процедура ОбменДаннымиПолныйПередЗаписью(Источник, Отказ) Экспорт
ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписью("Полный", Источник, Отказ);
КонецПроцедуры
// Процедура-обработчик события "ПередЗаписью" документов для механизма регистрации объектов на узлах
//
// Параметры:
// ИмяПланаОбмена – Строка – имя плана обмена, для которого выполняется механизм регистрации
// Источник - ДокументОбъект - источник события
// Отказ - Булево - флаг отказа от выполнения обработчика
//
Процедура ОбменДаннымиПолныйПередЗаписьюДокумента(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписьюДокумента("Полный", Источник, Отказ, РежимЗаписи, РежимПроведения);
КонецПроцедуры
// Процедура-обработчик события "ПередЗаписью" константы для механизма регистрации объектов на узлах
//
// Параметры:
// ИмяПланаОбмена – Строка – имя плана обмена, для которого выполняется механизм регистрации
// Источник - КонстантаМенеджерЗначения - источник события
// Отказ - Булево - флаг отказа от выполнения обработчика
//
Процедура ОбменДаннымиПолныйПередЗаписьюКонстанты(Источник, Отказ) Экспорт
ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписьюКонстанты("Полный", Источник, Отказ);
КонецПроцедуры
// Процедура-обработчик события "ПередЗаписью" регистров для механизма регистрации объектов на узлах
//
// Параметры:
// ИмяПланаОбмена – Строка – имя плана обмена, для которого выполняется механизм регистрации
// Источник - НаборЗаписейРегистра - источник события
// Отказ - Булево - флаг отказа от выполнения обработчика
// Замещение - Булево - признак замещения существующего набора записей
//
Процедура ОбменДаннымиПолныйПередЗаписьюРегистра(Источник, Отказ, Замещение) Экспорт
ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписьюРегистра("Полный", Источник, Отказ, Замещение);
КонецПроцедуры
// Процедура-обработчик события "ПередУдалением" ссылочных типов данных для механизма регистрации объектов на узлах
//
// Параметры:
// ИмяПланаОбмена – Строка – имя плана обмена, для которого выполняется механизм регистрации
// Источник - источник события
// Отказ - Булево - флаг отказа от выполнения обработчика
//
Процедура ОбменДаннымиПолныйПередУдалением(Источник, Отказ) Экспорт
ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередУдалением("Полный", Источник, Отказ);
КонецПроцедуры
Создаем подписки на события (снимаем галки у типов объектов как в УТ) и привязываем к процедурам из модуля.
В ОбменДаннымиПредопределяемый Процедура ПолучитьПланыОбмена(ПланыОбменаПодсистемы) Экспорт добавляем строчку:
ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.Полный);
Для следующих общих команд добавляем параметр план обмена полный:
ВыполнитьОбменДанными
НастроитьПараметрыТранспортаСообщенийОбмена
ОткрытьПравилаРегистрацииОбъектов
ОткрытьСценарииОбменовДанными
ПерейтиВЖурналРегистрацииСобытийВыгрузкиДанных
ПерейтиВЖурналРегистрацииСобытийЗагрузкиДанных
ПолучитьНастройкиОбменаДаннымиДляВторойИнформационнойБазы
Создаем общую команду ОткрытьПомощникНастройкиОбмена
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ОбменДаннымиКлиент.ВыполнитьОбменДаннымиОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды.Источник);
КонецПроцедуры
Извесные косяки которые пока не планирую исправлять:
Помощник обмена в самом конце вываливается с ошибкой. Закрываем, кликаем на строку с настройкой обмена, в меню настройка-изменить, все действия - создать начальный образ.
После обновления конфы в переферийной базе пишет ошибку обмена - хотя на самом деле конфа обновилась. Решение - перезапускаем предприятие и повторяем обмен.
Подскажите как опубликовать только ту часть конфигурации, которую написал я, чтобы не нарушать права 1с? Если в процессе реализации возникают вопросы то сначала смотрите как это сделано в УТ, потом задавайте вопросы в комментариях.