За основу взята статья: //infostart.ru/public/156559/
Для включения данного обмена необходимо будет добавить и изменить следующие метаданные:
Подсистемы
-СервисныеУслуги (изменить состав)
Общие модули
-ОбменДаннымиПереопределяемый (изменить типовую процедуру)
-ОбменДаннымиПолный
Планы обмена
-Полный
Подписки на события
-ОбменДаннымиПолныйЗарегистрироватьИзменение
-ОбменДаннымиПолныйЗарегистрироватьИзменениеДокумента
-ОбменДаннымиПолныйЗарегистрироватьИзменениеКонстанты
-ОбменДаннымиПолныйЗарегистрироватьИзменениеНабораЗаписей
-ОбменДаннымиПолныйЗарегистрироватьУдаление
Общие команды
-ВыполнитьОбменДанными (изменить тип параметра команды)
-НастроитьПараметрыТранспортаСообщенийОбмена (изменить тип параметра команды)
-ОткрытьПравилаРегистрацииОбъектов (изменить тип параметра команды)
-ОткрытьСценарииОбменовДанными (изменить тип параметра команды)
-ПерейтиВЖурналРегистрацииСобытийВыгрузкиДанных (изменить тип параметра команды)
-ПерейтиВЖурналРегистрацииСобытийЗагрузкиДанных (изменить тип параметра команды)
-ПолучитьНастройкиОбменаДаннымиДляВторойИнформационнойБазы (изменить тип параметра команды)
Справочники
-ИдентификаторыОбъектовМетаданных (закоментировать часть процедуру).
Общее дерево изменяемых метаданных:
За основу для дальнейшего упрощения можно использовать УТ 11 или модули с диска ИТС и БСП. В качестве упрощения также можно взять штатные обмены с БП и оттуда взять часть процедур,заменив в них обработчики на "заглушки".
Необходимые этапы доработки конфигурации:
1. Добавляем новый ПланОбмена:Полный или копируем из УТ 11.
Обязательно ставим галку РИБ.
2. Редактируем состав плана обмена Полный.
Включаем в состав все объекты,исключив объекты,аналоличные в УТ.(Перечислять здесь долго,в основном Константы,Справочники,остальные все объекты).
Добавляем дополнительно:
Производственные календари и все объекты,связанные с расчетными задачами.
Общие виды объектов состава:
3. Отменяем авторегистрацию у всех объектов.
4. Включаем ПланОбмена Полный в подсистему: СервисныеФункции.
5. В модуль объекта ПланОбмена Полный вставляем код:
Перем КоличествоОбъектовЗагружено;
Перем КоличествоОбъектовВыгружено;
Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента, СозданиеНачальногоОбраза)
КоличествоОбъектовВыгружено = КоличествоОбъектовВыгружено + 1;
КонецПроцедуры
Процедура ПриОтправкеДанныхГлавному(ЭлементДанных, ОтправкаЭлемента)
КоличествоОбъектовВыгружено = КоличествоОбъектовВыгружено + 1;
КонецПроцедуры
Процедура ПриПолученииДанныхОтПодчиненного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад)
КоличествоОбъектовЗагружено = КоличествоОбъектовЗагружено + 1;
КонецПроцедуры
Процедура ПриПолученииДанныхОтГлавного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад)
КоличествоОбъектовЗагружено = КоличествоОбъектовЗагружено + 1;
КонецПроцедуры
Процедура ПередЗаписью(Отказ)
Если ОбменДаннымиСервер.НадоВыполнитьОбработчикПослеВыгрузкиДанных(ЭтотОбъект, Ссылка) Тогда
ПослеВыгрузкиДанных(Отказ);
ИначеЕсли ОбменДаннымиСервер.НадоВыполнитьОбработчикПослеЗагрузкиДанных(ЭтотОбъект, Ссылка) Тогда
ПослеЗагрузкиДанных(Отказ);
КонецЕсли;
КонецПроцедуры
Процедура ПослеВыгрузкиДанных(Отказ)
Сообщить("КоличествоОбъектовВыгружено: " + Строка(КоличествоОбъектовВыгружено));
КонецПроцедуры
Процедура ПослеЗагрузкиДанных(Отказ)
Сообщить("КоличествоОбъектовЗагружено: " + Строка(КоличествоОбъектовЗагружено));
КонецПроцедуры
КоличествоОбъектовЗагружено = 0;
КоличествоОбъектовВыгружено = 0;
6. В модуль менеджера ПланОбмена Полный вставляем код:
Функция ПояснениеДляНастройкиПараметровУчета() Экспорт
Возврат "";
КонецФункции
Функция ЗначенияПоУмолчаниюНаУзле(ВерсияКорреспондента, ИмяФормы) Экспорт
Возврат Неопределено;
КонецФункции
Функция ЗначенияПоУмолчаниюНаУзлеБазыКорреспондента(ВерсияКорреспондента, ИмяФормы) Экспорт
Возврат Неопределено;
КонецФункции
Функция ИмяФайлаНастроекДляПриемника() Экспорт
Возврат НСтр("ru = 'Настройки обмена УНФ-УНФ Полный обмен РИБ'");
КонецФункции
Функция ИспользуемыеТранспортыСообщенийОбмена() Экспорт
Результат = Новый Массив;
Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FILE);
Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FTP);
Возврат Результат;
КонецФункции
Функция ИмяФормыСозданияНачальногоОбраза() Экспорт
Возврат "ОбщаяФорма.СозданиеНачальногоОбразаСФайлами";
КонецФункции
Функция ЗаголовокКомандыДляСозданияНовогоОбменаДанными() Экспорт
Возврат НСтр("ru = 'Создать обмен УНФ-УНФ(Полный) обмен РИБ'");
КонецФункции
Функция ИспользоватьПомощникСозданияОбменаДанными() Экспорт
Возврат Истина;
КонецФункции
Функция НастройкаОтборовНаУзле(ВерсияКорреспондента, ИмяФормы) Экспорт
Возврат Новый Структура;
КонецФункции
Функция НастройкаОтборовНаУзлеБазыКорреспондента(ВерсияКорреспондента, ИмяФормы) Экспорт
Возврат Неопределено;
КонецФункции
Функция ОписаниеЗначенийПоУмолчанию(ЗначенияПоУмолчаниюНаУзле, ВерсияКорреспондента) Экспорт
Возврат "";
КонецФункции
Функция ОписаниеЗначенийПоУмолчаниюБазыКорреспондента(ЗначенияПоУмолчаниюНаУзле, ВерсияКорреспондента) Экспорт
Возврат "";
КонецФункции
Функция ОписаниеОграниченийПередачиДанных(НастройкаОтборовНаУзле, ВерсияКорреспондента) Экспорт
Возврат "";
КонецФункции
Функция ОписаниеОграниченийПередачиДанныхБазыКорреспондента(НастройкаОтборовНаУзле, ВерсияКорреспондента) Экспорт
Возврат "";
КонецФункции
Функция КраткаяИнформацияПоОбмену() Экспорт
Возврат "Полный обмен РИБ УНФ-УНФ";
КонецФункции
Функция ПодробнаяИнформацияПоОбмену() Экспорт
Возврат "Полный обмен РИБ между конфигурациями УНФ-УНФ"
КонецФункции
Функция ПланОбменаИспользуетсяВМоделиСервиса() Экспорт
Возврат Ложь;
КонецФункции
Функция ОбщиеДанныеУзлов(ВерсияКорреспондента, ИмяФормы) Экспорт
Возврат "ДатаНачалаВыгрузкиДокументов, Организации, РежимВыгрузкиПриНеобходимости, ЗагружатьДокументыИзБухгалтерииПредприятия, РучнойОбмен";
КонецФункции
Функция РежимЗапускаСинхронизацииДанных(УзелИнформационнойБазы) Экспорт
Возврат "АвтоматическаяСинхронизация";
КонецФункции
7. Создаем новый общий модуль ОбменДаннымиПолный (сервер,внешнее соединение) и вставляем в него код:
////////////////////////////////////////////////////////////////////////////////
// Обмен Полный
// Процедура-обработчик события "ПередЗаписью" ссылочных типов данных (кроме документов) для механизма регистрации объектов на узлах
//
// Параметры:
// ИмяПланаОбмена – Строка – имя плана обмена, для которого выполняется механизм регистрации
// Источник - источник события, кроме типа ДокументОбъект
// Отказ - Булево - флаг отказа от выполнения обработчика
//
Процедура ОбменДаннымиПолныйПередЗаписью(Источник, Отказ) Экспорт
ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписью("Полный", Источник, Отказ);
КонецПроцедуры
// Процедура-обработчик события "ПередЗаписью" документов для механизма регистрации объектов на узлах
//
// Параметры:
// ИмяПланаОбмена – Строка – имя плана обмена, для которого выполняется механизм регистрации
// Источник - ДокументОбъект - источник события
// Отказ - Булево - флаг отказа от выполнения обработчика
//
Процедура ОбменДаннымиПолныйПередЗаписьюДокумента(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписьюДокумента("Полный", Источник, Отказ, РежимЗаписи, РежимПроведения);
КонецПроцедуры
// Процедура-обработчик события "ПередЗаписью" константы для механизма регистрации объектов на узлах
//
// Параметры:
// ИмяПланаОбмена – Строка – имя плана обмена, для которого выполняется механизм регистрации
// Источник - КонстантаМенеджерЗначения - источник события
// Отказ - Булево - флаг отказа от выполнения обработчика
//
Процедура ОбменДаннымиПолныйПередЗаписьюКонстанты(Источник, Отказ) Экспорт
ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписьюКонстанты("Полный", Источник, Отказ);
КонецПроцедуры
// Процедура-обработчик события "ПередЗаписью" регистров для механизма регистрации объектов на узлах
//
// Параметры:
// ИмяПланаОбмена – Строка – имя плана обмена, для которого выполняется механизм регистрации
// Источник - НаборЗаписейРегистра - источник события
// Отказ - Булево - флаг отказа от выполнения обработчика
// Замещение - Булево - признак замещения существующего набора записей
//
Процедура ОбменДаннымиПолныйПередЗаписьюРегистра(Источник, Отказ, Замещение) Экспорт
ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписьюРегистра("Полный", Источник, Отказ, Замещение);
КонецПроцедуры
// Процедура-обработчик события "ПередУдалением" ссылочных типов данных для механизма регистрации объектов на узлах
//
// Параметры:
// ИмяПланаОбмена – Строка – имя плана обмена, для которого выполняется механизм регистрации
// Источник - источник события
// Отказ - Булево - флаг отказа от выполнения обработчика
//
Процедура ОбменДаннымиПолныйПередУдалением(Источник, Отказ) Экспорт
ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередУдалением("Полный", Источник, Отказ);
КонецПроцедуры
8. Создаем ПодпискиНаСобытие и назначем для каждой одноименный обработчик из указанного выше модуля:
8.1.ОбменДаннымиПолныйЗарегистрироватьИзменение
Источник:
Все справочники,за исключением:
АвансовыйОтчетПрисоединенныеФайлы
ДоговорыКонтрагентовПрисоединенныеФайлы
ЗаданиеНаРаботуПрисоединенныеФайлы
ЗаказПокупателяПрисоединенныеФайлы
ЗаказПоставщикуПрисоединенныеФайлы
ИдентификаторыОбъектовМетаданных
ИнвентаризацияЗапасовПрисоединенныеФайлы
КлючевыеОперации
НоменклатураПрисоединенныеФайлы
ОрганизацииПрисоединенныеФайлы
ОчередьЗаданий
ОчередьЗаданийОбластейДанных
ПапкиФайловПрисоединенныеФайлы
ПоставляемыеДанные
ПоставляемыеДополнительныеОтчетыИОбработки
ПоступлениеНаСчетПрисоединенныеФайлы
ПриходнаяНакладнаяПрисоединенныеФайлы
ПроизводственныеКалендари
РасходСоСчетаПрисоединенныеФайлы
СообщенияОбластейДанных
СообщенияСистемы
СпецификацииПрисоединенныеФайлы
СценарииОбменовДанными
СчетНаОплатуПоставщикаПрисоединенныеФайлы
СчетФактураПолученныйПрисоединенныеФайлы
СчетФактураПрисоединенныеФайлы
ТомаХраненияФайлов
ЭДПрисоединенныеФайлы
Отметить все ПланВидовХарактеристикОбъект.
Событие: ПередЗаписью.
8.2.ОбменДаннымиПолныйЗарегистрироватьИзменениеДокумента
Источник: Все документы.
Событие: ПередЗаписью.
8.3.ОбменДаннымиПолныйЗарегистрироватьИзменениеКонстанты
Источник: КонстантаМенеджерЗначения,за исключением:
АдресАгентаСервиса
БлокировкаОтправкиБыстрыхСообщений
ВыполнитьРезервноеКопированиеОбластиДанных
ВыполнятьЗамерыПроизводительности
ВыполнятьПроверкуЭЦПНаСервере
ДатаОбновленияПовторноИспользуемыхЗначенийМРО
ДатаПоследнейВыгрузкиЗамеровПроизводительностиUTC
ДетализироватьОбновлениеИБВЖурналеРегистрации
ЗаголовокСистемы
ЗапрещатьЗагрузкуФайловПоРасширению
ЗарегистрированыИзмененияДанных
ИзвлекатьТекстыФайловНаСервере
ИмяСлужебногоПользователяМенеджераСервиса
ИспользоватьАвтономнуюРаботуВМоделиСервиса
ИспользоватьНапоминанияПользователя
ИспользоватьНесколькоПроизводственныхКалендарей
ИспользоватьОбменСПодключаемымОборудованиемOffline
ИспользоватьОтложеннуюОтправкуЭлектронныхДокументов
ИспользоватьПолнотекстовыйПоиск
ИспользоватьРазделениеПоОбластямДанных
ИспользоватьСинхронизациюДанных
ИспользоватьСинхронизациюДанныхВЛокальномРежиме
ИспользоватьСинхронизациюДанныхВМоделиСервиса
ИспользоватьСинхронизациюДанныхВМоделиСервисаСЛокальнойПрограммой
ИспользоватьСинхронизациюДанныхВМоделиСервисаСПриложениемВИнтернете
КаталогВременныхФайловДляLinux
КаталогВременныхФайловДляWindows
КлючОбластиДанных
КонечнаяТочкаМенеджераСервиса
КонтекстАвторизации
КонтекстКриптографии
КопироватьОбластиДанныхИзЭталонной
МаксимальнаяДлительностьВыполненияИсполняющегоФоновогоЗадания
МаксимальноеКоличествоИсполняющихФоновыхЗаданий
МаксимальныйРазмерФайла
МаксимальныйРазмерФайлаОбластиДанных
МинимальныйИнтервалРегламентныхЗаданийДополнительныхОтчетовИОбработокВМоделиСервиса
НастройкаАвтономногоРабочегоМестаЗавершена
НастройкаПодчиненногоУзлаРИБЗавершена
НастройкаПроксиСервера
НастройкиВыполненияРегламентныхЗаданий
НастройкиПодчиненногоУзлаРИБ
НезависимоеИспользованиеДополнительныхОтчетовИОбработокВМоделиСервиса
НеИспользоватьРазделениеПоОбластямДанных
ОбщийКаталогВременныхФайлов
ОбщийКаталогВременныхФайловLinux
ПараметрыАдминистрированияИБ
ПараметрыИтоговИАгрегатов
ПараметрыОграниченияДоступа
ПараметрыРаботыПользователей
ПараметрыСлужебныхСобытий
ПарольДляОтправкиSMS
ПарольПользователяАгентаСервиса
ПарольСлужебногоПользователяМенеджераСервиса
ПоддержкаРезервногоКопирования
ПредставлениеОбластиДанных
ПрефиксДляОбменаССайтом
ПрефиксОбластиДанных
ПрефиксПоследнегоАвтономногоРабочегоМеста
ПрефиксУзлаРаспределеннойИнформационнойБазы
ПровайдерSMS
РазделыОписанияИзмененийСистемы
РазмерБлокаПередачиФайла
РазрешитьВыполнениеДополнительныхОтчетовИОбработокРегламентнымиЗаданиямиВМоделиСервиса
РежимИспользованияИнформационнойБазы
СинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииРаботыПрограммы
СинхронизироватьДанныеСПриложениемВИнтернетеПриНачалеРаботыПрограммы
СообщениеБлокировкиПриОбновленииКонфигурации
СообщениеОбменаДаннымиИзГлавногоУзла
СписокЗапрещенныхРасширений
СписокЗапрещенныхРасширенийОбластиДанных
СписокРасширенийФайловOpenDocument
СписокРасширенийФайловOpenDocumentОбластиДанных
СтатусОбновленияКонфигурации
ХранитьФайлыВТомахНаДиске
ЧасовойПоясОбластиДанных
ЭтоАвтономноеРабочееМесто
Событие: ПередЗаписью.
8.4.ОбменДаннымиПолныйЗарегистрироватьИзменениеНабораЗаписей
Источник: Все РегистрыНакопленияНаборЗаписей.
РегистрСведенийНаборЗаписей, за исключением:
БлокировкиСеансовОбластейДанных
ВерсииПодсистем
ВерсииПодсистемОбластейДанных
ДанныеПроизводственногоКалендаря
ЗависимостиПравДоступа
ЗамерыВремени
ИзмененияОбщихДанныхУзлов
ИспользованиеПоставляемыхДополнительныхОтчетовИОбработокВОбластяхДанных
КэшПрограммныхИнтерфейсов
НапоминанияПользователя
НастройкиОтправителя
НастройкиТранспортаОбмена
НастройкиТранспортаОбменаОбластейДанных
НастройкиТранспортаОбменаОбластиДанных
НеразделенныеПользователи
ОбластиДанных
ОбластиПерсональныхДанных
ОбластиТребующиеОбработкиПоставляемыхДанных
ОбщиеНастройкиУзловИнформационныхБаз
ОчередьИзвлеченияТекста
ОчередьИнсталляцииПоставляемыхДополнительныхОтчетовИОбработокВОбластиДанных
ПодпискиПолучателей
ПоставляемыеДанныеТребующиеОбработки
ПраваПоЗначениямДоступа
ПраваРолей
ПравилаДляОбменаДанными
ПутиМодулейКриптографииСерверовLinux
РабочиеКаталогиФайлов
РезультатыОбменаДанными
РейтингАктивностиОбластейДанных
РучныеИзмененияГрафиковРаботы
СессииОбменаСообщениямиСистемы
СообщенияОбменаДанными
СообщенияОбменаДаннымиОбластейДанных
СоответствияОбъектовИнформационныхБаз
СостоянияОбменовДанными
СостоянияОбменовДаннымиОбластейДанных
СостоянияУспешныхОбменовДанными
СостоянияУспешныхОбменовДаннымиОбластейДанных
УдалитьОбластиДанных
УдалитьОбластиКРезервномуКопированию
УдалитьОчередьЗаданий
ФайлыВРабочемКаталоге
Событие: ПередЗаписью.
8.5.ОбменДаннымиПолныйЗарегистрироватьУдаление
Источник: Все ПланВидовХарактеристикОбъект,ДокументОбъект.
СправочникОбъект,за исключением:
ДоговорыКонтрагентовПрисоединенныеФайлы
ЗаданиеНаРаботуПрисоединенныеФайлы
ЗаказПокупателяПрисоединенныеФайлы
ЗаказПоставщикуПрисоединенныеФайлы
ИнвентаризацияЗапасовПрисоединенныеФайлы
КлючевыеОперации
КонтрагентыПрисоединенныеФайлы
НоменклатураПрисоединенныеФайлы
ОрганизацииПрисоединенныеФайлы
ОчередьЗаданий
ОчередьЗаданийОбластейДанных
ПапкиФайловПрисоединенныеФайлы
ПолныеПутиКФормам
ПоставляемыеДанные
ПоставляемыеДополнительныеОтчетыИОбработки
ПоступлениеНаСчетПрисоединенныеФайлы
ПредопределенныеВариантыОтчетов
ПриходнаяНакладнаяПрисоединенныеФайлы
ПроизводственныеКалендари
РасходСоСчетаПрисоединенныеФайлы
СценарииОбменовДанными
СчетНаОплатуПоставщикаПрисоединенныеФайлы
СчетФактураПолученныйПрисоединенныеФайлы
СчетФактураПрисоединенныеФайлы
Ячейки
Событие: ПередУдалением.
9. В общем модуле ОбменДаннымиПереопределяемый в процедуру ПолучитьПланыОбмена в конце процедуры добавить:
ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.Полный);
10. В Общие команды добавить новый тип параметра команды:ПланОбменасСсылка.Полный.
для команд:
ВыполнитьОбменДанными
НастроитьПараметрыТранспортаСообщенийОбмена
ОткрытьПравилаРегистрацииОбъектов
ПерейтиВЖурналРегистрацииСобытийВыгрузкиДанных
ПерейтиВЖурналРегистрацииСобытийЗагрузкиДанных
ПолучитьНастройкиОбменаДаннымиДляВторойИнформационнойБазы
На этом этапе все необходимые доработки внедрены,осталось только установить префикс у ИБ и создать новую настройку сихронизацию через Мастер.
Также можно вручную создать начальный образ ИБ через ПланыОбмена.
На этом все,можно пользоваться обменом. Тестировалось на релизе УНФ 1.4.7.37.