gifts2017

УНФ РИБ

Опубликовал ptkrzy в раздел Администрирование - Распределенная БД (УРИБ, УРБД)

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

 

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Игорь Воронкин (Воронкин) 16.10.12 19:52
Думаю, скоро появится и штатно. В первых релизах УТ 11 - вообще ничего не было, потом функционал из 10.3 стали добавлять.
2. Владимир Клименко (KliMich) 16.10.12 22:12
Наверное скоро будет... Но пока это актуально!
3. ptkrzy 16.10.12 22:32
Это актуально для любой конфы на базе БСП, в том числе и для любой самописной.
4. Игорь Воронкин (Воронкин) 17.10.12 15:11
(3) ptkrzy, За это и респект автору.
5. Алексей Верещагин (alexware) 23.10.12 04:46
Автору плюс. Как раз имею самописную конфигурацию на базе БСП и хотел бы внедрить РИБ. Выглядит вроде не очень страшно.
7. Дмитрий (dimk@a) 24.10.12 00:23
Уж не знаю, как скоро появится в штатной, но у меня уже 3 месяца работает. Причем тупо создал план обмена, и галочки снимал чисто на глаз. Автору спасибо за публикацию - подправлю теперь свое творчество, и теперь я понял почему у меня всегда пишет выгружено 0 объектов. Ошибку с созданием образа подчиненной побеждал так - сохранял образ не в локальный каталог, а использовал сетевой путь, который начинается с \\
8. Максим Горбачев (Tangram) 30.01.13 23:40
Для 1.4.4.11 в модуль менеджера плана обмена Полный нужно еще добавить:

Функция ПланОбменаИспользуетсяВМоделиСервиса() Экспорт
	Возврат ложь;
КонецФункции // ПланОбменаИспользуетсяВМоделиСервиса()

Функция ПодробнаяИнформацияПоОбмену() Экспорт

	Возврат "Обмен УНФ <-> УНФ";

КонецФункции // ПодробнаяИнформацияПоОбмену()
 
Функция КраткаяИнформацияПоОбмену() Экспорт
	Возврат "Обмен УНФ <-> УНФ";	
КонецФункции // КраткаяИнформацияПоОбмену()
...Показать Скрыть


Иначе УНФ вообще не запускается.
9. Максим Горбачев (Tangram) 01.02.13 00:44
В продолжение темы:
Модуль менеджера плана обмена Полный:
Исправляем процедуру

    Функция НастройкаОтборовНаУзле() Экспорт
        Возврат Новый Структура; // мг
    КонецФункции


При запуске ПИБ вываливается на исключении в обработчике ПередЗаписью справочника ИдентификаторыОбъектовМетаданных:

	Если ПланыОбмена.ГлавныйУзел() <> Неопределено Тогда // Это не главный узел ИБ в РИБ-обмене.
		ВызватьИсключениеПоОшибке(
			НСтр("ru = 'Изменение идентификаторов объектов метаданных может быть выполнено
			           |только в главном узле распределенной информационной базы.'"));
	КонецЕсли;
...Показать Скрыть


Включение справочника в обмен пока не помогло.
Пока остановился на этом, разберусь, отпишу.
10. ptkrzy 01.02.13 11:56
Просто закоментируй вызов исключения. В 1.4.4.10 много чего поменялось - нужно добавить несколько заглушек в модуль менеджера.
	Функция ПояснениеДляНастройкиПараметровУчета() Экспорт
		Возврат "";
	КонецФункции
	Функция ЗначенияПоУмолчаниюНаУзле() Экспорт

        Возврат Неопределено;
    КонецФункции

    Функция ЗначенияПоУмолчаниюНаУзлеБазыКорреспондента() Экспорт
        Возврат Неопределено;
    КонецФункции

    Функция ИмяФайлаНастроекДляПриемника() Экспорт
        Возврат НСтр("ru = 'Настройки обмена УНФ-УНФ'");
    КонецФункции

    Функция ИспользуемыеТранспортыСообщенийОбмена() Экспорт
        Результат = Новый Массив;
        Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FILE);
		Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FTP);
        Возврат Результат;
    КонецФункции

    Функция ИмяФормыСозданияНачальногоОбраза() Экспорт
		Возврат "ОбщаяФорма.СозданиеНачальногоОбразаСФайлами";
                //Решает проблему с созданием начального образа

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

    Функция ЗаголовокКомандыДляСозданияНовогоОбменаДанными() Экспорт
         Возврат НСтр("ru = 'Создать обмен УНФ-УНФ'");
    КонецФункции

    Функция ИспользоватьПомощникСозданияОбменаДанными() Экспорт
        Возврат Истина;
    КонецФункции

    Функция НастройкаОтборовНаУзле() Экспорт
        Возврат Новый Структура;
    КонецФункции

    Функция НастройкаОтборовНаУзлеБазыКорреспондента() Экспорт
        Возврат Неопределено;
    КонецФункции

    Функция ОписаниеЗначенийПоУмолчанию(ЗначенияПоУмолчаниюНаУзле) Экспорт
        Возврат "";
    КонецФункции

    Функция ОписаниеЗначенийПоУмолчаниюБазыКорреспондента(ЗначенияПоУмолчаниюНаУзле) Экспорт
          Возврат "";
     КонецФункции

    Функция ОписаниеОграниченийПередачиДанных(НастройкаОтборовНаУзле) Экспорт
     Возврат "";    
    КонецФункции

    Функция ОписаниеОграниченийПередачиДанныхБазыКорреспондента(НастройкаОтборовНаУзле) Экспорт    
        Возврат "";    
	КонецФункции
	
	Функция КраткаяИнформацияПоОбмену() Экспорт
		Возврат "КраткаяИнформацияПоОбмену";    
	КонецФункции
	Функция ПодробнаяИнформацияПоОбмену() Экспорт
		Возврат "";    
	КонецФункции
	Функция ПланОбменаИспользуетсяВМоделиСервиса() Экспорт
		Возврат Ложь;
	КонецФункции
	


...Показать Скрыть
11. Сергей penzatrade (aser86) 13.03.13 13:26
Добрый день! Не могли бы Вы выслать на почту ksaz@bk.ru .cf файл УНФ с настроенным планом обмена? а то у меня какие то ошибки выходят и не хочет создаваться распределенная база, буду очень очень благодарен !!!
12. Сергей Маслов (LexSeIch) 15.06.13 19:23
Мир этому дому!
Автору плюс. Полезная информация по использованию БСП.
13. Максим Горбачев (Tangram) 17.06.13 10:03
При обновлении на 1.4.6.19 в модуль менеджера плана обмена надо добавить функцию:

//Возвращает режим запуска, в случае интерактивного инициирования синхронизации
//Возвращаемые значения АвтоматическаяСинхронизация Или ИнтерактивнаяСинхронизация
//На основании этих значений запускается либо помощник интерактивного обмена, либо автообмен
Функция РежимЗапускаСинхронизацииДанных(УзелИнформационнойБазы) Экспорт

Возврат "АвтоматическаяСинхронизация";

КонецФункции
14. Рустам Гарипов (13kawaii13) 16.08.13 15:06
При включении базы подчинённого узла выходит ошибка.



{Справочник.ИдентификаторыОбъектовМетаданных.МодульМенеджера(373)}: Ошибка при вызове метода контекста (Записать)
ТаблицаОбъект.Записать();
по причине:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
{Справочник.ИдентификаторыОбъектовМетаданных.МодульОбъекта(96)}: Ошибка при работе со справочником "Идентификаторы объектов метаданных".

Добавление новых элементов может быть выполнено
только в главном узле распределенной информационной базы.
ТаблицаОбъект.Записать();


Вышлите мне пожалуйста .cf файл УНФ с настроенным планом обмена.
kawaii@live.ru
Не могу обойти возникающие ошибки. Релиз (1.4.6.19)
15. Рустам Гарипов (13kawaii13) 20.08.13 10:51
Вышлите мне пожалуйста .cf файл УНФ с настроенным планом обмена. (На любом релизе)
16. ptkrzy 23.08.13 16:10
У меня есть сильно переписаная под нужды заказчика конфигурация. Это будет некорректно по отношению к заказчику и нарушать права самой 1с. Предложите метод, который позволит выгрузить лишь отличия между типовой кинфигурацией и УНФ+РИБ. Почитайте статью на ИТС http://its.1c.ru/db/bspdoc?db=bspdoc#content:34:1 .Либо обратитесь к франчайзи своего региона. Я думаю они смогут вам помочь.
17. Иван Сорокин (sudo90) 09.02.14 11:57
(14) 13kawaii13, Здравствуйте, тоже возникла ошибка такая же как у Вас, Вы справились с ней?
19. Рустам Гарипов (13kawaii13) 09.02.14 12:25
(17) sudo90, Просто не стали обновляться на последний релиз.
20. Иван Сорокин (sudo90) 09.02.14 15:08
Жаль, а у нас версия как раз 1.4.6.19((
21. ptkrzy 10.02.14 10:51
Для 1.4.7.37 подробно описано по ссылке http://infostart.ru/public/249881/
22. Two World (Prometeus2011) 22.07.16 09:47
Если в модуле "ОбменДаннымиПовтИсп", процедура "ИспользуемыеТранспортыСообщенийОбмена" закомментировать строки:
Если Не ЭтоУзелАвтономногоРабочегоМеста(УзелИнформационнойБазы) Тогда
          ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(Результат, Перечисления.ВидыТранспортаСообщенийОбмена.WS);
КонецЕсли;

, то это позволяет производить синхронизацию в режиме сервиса, по http протоколу.
(Версия УНФ 1.6.4.19)
23. Al (al_zzz) 23.10.16 15:36
Прошло 4 года с момента публикации. Видимо штатный РИБ в УНФ уже вряд ли появится...
24. Ёк Макарёк (Shaldryn) 08.11.16 15:19
кто настраивал в 1.6? вроде бы создает РИБ, но при запуске ее отображает не все разделы, только Работа, Зарплата, Производство. В чем может быть косяк?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа