Имя: Пароль:
1C
1С v8
Обмен справочником ИдентификаторыОбъектовМетаданных в РИБ (БСП)
0 gusden
 
27.08.13
18:05
Всем добрый день. Кто сталкивайся отзовитесь.
На ИТС указано, что необходимо включить справочник "Идентификаторы объектов метаданных" в план обмена РИБ.
В подписке на события ПриОтправкеДанныхГлавному и ПриОтправкеДанныхПодчиненному есть такой код:

    // Отправка идентификаторов объектов метаданных выполняется в другой секции сообщения обмена.
    ИгнорироватьОтправкуИдентификаторовОбъектовМетаданных(ЭлементДанных, ОтправкаЭлемента);

В результате справочник не выгружается из головного офиса в удалённый.
Как правильно решить данную задачу?
1 gusden
 
27.08.13
18:38
Где это чудное место "в другой секции сообщения обмена"?

Если в головном офисе вносятся изменения в конфигурацию, то там же происходит обновления справочника.
А вот при обмене с удалённым офисам, если изменилась версия программы, происходит проверка соответствия метаданных справочнику. И вылетает ошибка.
2 banco
 
27.08.13
18:44
Какая версия БСП?
3 gusden
 
27.08.13
18:50
(2)БСП 2.1.3.51
4 gusden
 
27.08.13
19:03
Пока решал задачу следующем образом.
Если менялась структура метаданных, то вносил изменения в конфигурацию, но не менял версию платформы.
В модуле объекта ИдентификаторыОбъектовМетаданных  комментировал код запрещающий обновления справочника в удалённой базе
[CODE]    
Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда
        
        Если ЭтоНовый() Тогда
            ВызватьИсключениеПоОшибке(
                НСтр("ru = 'Добавление новых элементов может быть выполнено
                           |только в главном узле распределенной информационной базы.'"));
        КонецЕсли;
        
        Если НЕ ПометкаУдаления Тогда
            Если ВРег(ПолноеИмя) <> ВРег(ОбщегоНазначения.ПолучитьЗначениеРеквизита(Ссылка, "ПолноеИмя")) Тогда
                ВызватьИсключениеПоОшибке(
                    НСтр("ru = 'Изменение реквизита ""Полное имя"" может быть выполнено
                               |только в главном узле распределенной информационной базы.'"));
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
[/CODE]
И в головной и удалённой базе запускал метод
[CODE]    Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(Ложь, Ложь);
[/CODE]
И только потом подымал версию платформы.
Но если забывал проделать эту процедуру, то в удалённо базе после обновления вообще не получалось зайти в режим предприятия и приходилась шаманить через внешнее соединение.
Сейчас хочется сделать всё методологически правильна и закрыть этот вопрос раз и на всегда.
5 banco
 
27.08.13
19:18
(4) у меня сейчас 2.1.6, но и на 2.1.3 все работало без изменения кода бсп
6 banco
 
27.08.13
19:36
(4) может у тебя справочник не включен в состав плана обмена?
7 gusden
 
28.08.13
11:24
(6)Вклюбчён. А посмотри у тебя есть подписка на событие ПриОтправкеДанныхГлавному и там код из (0)?
8 banco
 
28.08.13
11:36
(7) да, потом при выгрузке добавляются изменения
9 gusden
 
28.08.13
11:38
(8) а можете написать где и кусок кода как они добавляются.
10 banco
 
28.08.13
11:43
(9) модуль обработки КонвертацияОбъектовРаспределенныхИнформационныхБаз в процедуре ЗаписатьИзмененияВФайлСообщенияОбмена
// Записываем идентификаторы объектов метаданных в конец сообщения обмена
ЗаписатьИдентификаторыОбъектовМетаданных(ЗаписьСообщения);
11 banco
 
28.08.13
11:47
(9) скорее всего у тебя не регистрируются изменения справочника. посмотри в таблицц регистрации плана обмена есть изменения для справочника идентификаторов
12 gusden
 
28.08.13
12:14
(10) у меня оказалась не внедрена подсистема "Обмен данными" спасибо за наводку куда надо капать.
(11) стоит авторегистарция разрешён.