Имя: Пароль:
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) стоит авторегистарция разрешён.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn