УНФ РИБ
В типовой УНФ нет РИБа. Исправляем этот недостаток, используя УТ 11 и ИТС. Статья подойдет для настойки распределенки в любой конфе на базе БСП.
- Описание
- Подробнее
Описание
Рецепт от 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с? Если в процессе реализации возникают вопросы то сначала смотрите как это сделано в УТ, потом задавайте вопросы в комментариях.
