РИБ и расширения

Публикация № 1006265

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

РИБ распределенка расширение

40
Как заставить работать РИБ с расширением.

С появлением режима совместимости 8.3.12, как вы знаете, появилась возможность распространять расширения из центрального узла в подчиненные вместе с обменом. Будем считать, что план обмена и конфигурация у вас поддерживает передачу расширений в узлы (подробнее по настройке вы можете посмотреть, например, тут).

Казалось бы, после этого достаточно просто добавить расширение в центральный узел, установить ему признак "Используется в РИБ", выполнить обмен и принять расширение в узле! Но реальность оказалась куда "интереснее".

Идентификаторы объектов расширений

Первая проблема, с которой вы можете столкнуться в центральном узле (при использовании типовой конфигурации) при выгрузке - это возможное отсутствие записей в справочнике "Идентификаторы объектов расширений", если в расширение вы добавили новые объекты (справочники, регистры сведений и т.д.). В этом случае можно выполнить обновление справочника процедурой:

ЕстьОбновления = Ложь;
ЕстьУдаленные  = Ложь;
Справочники.ИдентификаторыОбъектовРасширений.ОбновитьДанныеСправочника(ЕстьОбновления, ЕстьУдаленные, Ложь);

К статье прикрепил готовую обработку с одной кнопкой, которая запускает выполнение этой процедуры:

Нарушение прав доступа, файл не обнаружен Params\DBNames...

Еще одна проблема, которая может изрядно испугать рядового пользователя. Не всегда, но возникает после подключения расширения, в котором добавлены новые объекты. Пользователи даже с полным правами не могут войти в 1С, хотя вы уверены, что на свои объекты вы дали права, либо чтение/запись производится в привилегированном режиме. И вообще, почему он ругается на таблицу, явно связанную с новым добавленным объектом? При этом утилита chdbfl проблем не обнаружила, да и ТиИ результатов не дало. И вот тут стоит вспомнить шутку о том, что

В любой непонятной ситуации - чисти кэш!

Да, это именно тот случай: чистим кэш и прощаемся с проблемой!

Ошибка получения данных в узле (файловая база)

Итак, расширение в центре подключили, сделали выгрузку: осталось получить данные в узле! Да проще простого! Запускаем обмен и видим следующую картину:

Ага, думаем, расширение пришло и 1С просит перезапустить сеанс! Но после перезапуска расширение не работает, а обмен так и не идет. Ладно, смотрим ЖР:

Как так? Сеанс всего один и именно из него мы пытаемся выполнить обмен! Как еще можно это сделать? Ок, дождемся запуска обмена по расписанию. Ничего не поменялось?! Ну тогда чистим кэш, делаем тестирование... Ошибок при тестировании никаких, кэш почистили, но обмен так и не идет! После чтения ИТС, списка изменений в релизах платформ, экспериментов выяснилось, что все дело в платформе! После перебора версий выяснилось, что ошибка точно присутствует в версиях 8.3.13.1690 и 8.3.14.1565, а на версии 8.3.13.1513 обмен проходит без проблем. При этом, если на узле используется клиент-серверный вариант работы, то ошибка не воспроизводится. Опять-таки, в ходе экспериментов выяснилось: первый обмен следует запускать кнопкой "Выполнить сценарий" в форме настройки сценариев обмена; причем обмен удивительным образом проходит даже на проблемных версиях платформы! Почему таким образом удается провести обмен - пока непонятно. Стоит отметить, что в центре можно использовать любую платформу: ошибок с обменом в центральном узле не обнаружили.

Напоследок

Как выяснилось позже, если у расширения стоит признак "Используется в РИБ", то оно попадает в файл обмена при каждой выгрузке! Да, даже если вы не вносили изменений в расширение, оно все равно будет каждый раз выгружаться в узел! Так что если у вас проблемы с интернетом на точках, то самое время заняться оптимизацией состава расширения!

Следует помнить: если вы добавили новые объекты в расширении, у вас настроен РИБ через план обмена, который поддерживает передачу расширений в узлы, то обмен у вас не заработает до тех пор, пока вы у расширения не поставите признак "Используется в РИБ"!

А если вы еще не перешли на режим совместимости 8.3.12+?

В этом случае рекомендую ознакомиться со смежной статьей Расширения конфигурации и РИБ, друзья или враги? Или как мы передаем расширения подчиненным РИБ узлам

Надеюсь, данная статья поможет вам сэкономить массу времени нервов! Буду рад дополнить статью также вашими замечаниями, инструкциями и "находками" по данной теме!

Тестирование выполнялось на конфигурации 1С:Розница 2.2.11.29 и платформах 8.3.13.153, 8.3.13.1690 и 8.3.14.1565

40

Скачать файлы

Наименование Файл Версия Размер
РИБ и расширения: обновление идентификаторов метаданных
.epf 5,78Kb
18.02.19
6
.epf 5,78Kb 6 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. coolseo 53 20.02.19 14:38 Сейчас в теме
Спасибо, планировал поставить расширение в РИБ, теперь буду тестить.
2. TMV 14 21.02.19 06:46 Сейчас в теме
Как выяснилось позже, если у расширения стоит признак "Используется в РИБ", то оно попадает в файл обмена при каждой выгрузке!
Может в таком случае, отключать этот признак в общем случае РИБа, а когда будут внесены изменения в расширение, тогда и включать?
3. RocKeR_13 626 21.02.19 08:14 Сейчас в теме
(2) надо пробовать. Не уверен, что после снятия галки обмен не удалит расширение в узлах. Но если в расширении добавлены свои объекты, то без галки обмен вообще не пойдет.
10. bearman 3 22.02.19 08:53 Сейчас в теме
(3)
Но если в расширении добавлены свои объекты, то без галки обмен вообще не пойдет.


Имеется в виду ссылочные объекты?
У меня в расширении есть добавленные объекты (формы), признак использования РИБ отключен, синхронизация выполняется. Расширения в узлах обновляю вручную.
11. RocKeR_13 626 22.02.19 09:22 Сейчас в теме
(10) грубо говоря, которые изменяют состав таблиц ИБ (справочники, регистры сведений, реквизиты справочников и т.д.). В этом случае, если расширение добавлено в центре, то структура ИБ центрального узла будет отличаться от структуры узлов, что приведет к рассогласованности данных. Добавленная форма - это всего лишь способ вывода информации для пользователя, поэтому такое расширение может применяться как с галкой "Используется в РИБ", так и без нее
4. markers 237 21.02.19 09:40 Сейчас в теме
Если кому будет интересно решение проблемы "Расширение и РИБ" до 8.3.12, милости прошу. Что касается полной передачи расширения в РИБ, это и ожидалось, там просто иного не предусмотрено, ровно как и в моём решении. И да, исправьте битую ссылку
(подробнее по настройке вы можете посмотреть, например, тут)
5. RocKeR_13 626 21.02.19 09:51 Сейчас в теме
(4) Спасибо! Ссылку поправил: кириллицу в адресе обрубил редактор.
Что касается полной передачи расширения в РИБ, это и ожидалось, там просто иного не предусмотрено, ровно как и в моём решении

Ну можно же было сделать проверку по контрольной сумме: поменялась - выгружаем. Думаю, это дело времени
6. markers 237 21.02.19 13:15 Сейчас в теме
(5)А от куда главная база узнает контрольную сумму? Хотя конечно можно было сделать, как я предлагал в своей статье, это при выгрузке в центральную базу, добавлять хеш-сумму расширение, а от неё бы уже центральная база проверяла и узнавала, надо менять расширение или нет. Но 1Сники видимо решили по проще сделать.
7. RocKeR_13 626 21.02.19 13:20 Сейчас в теме
(6)
при выгрузке в центральную базу, добавлять хеш-сумму расширение

1С вроде сейчас так и делает. К сожалению, сейчас нет РИБ под рукой, но в XML был узел с именем "DigestExtension" или как-то так
8. markers 237 21.02.19 13:22 Сейчас в теме
(7) Тогда странно что каждый раз выгружает. В моём кстати решении, там на сервер передается хеш сумма расширения и сервер тем самым узнает что надо передавать расширение клиенту или нет. Но вот разностная выгрузка средствами языка к сожалению не возможна.
9. RocKeR_13 626 21.02.19 13:25 Сейчас в теме
(8) да с разностной выгрузкой ладно, в большинстве случаев расширение не так много весит. Надо будет повнимательней последить за хэшем расширения в файле обмена.
12. dima_gsv 9 27.02.19 08:57 Сейчас в теме
(9) Я как то анализировал эти хеши. Была ситуация, когда хеш расширения в центральной базе не совпадал с хешем расширения в периферийной базе. Это получилось из-за того, что некий узел конфигурации-расширения из центральной базы не передавался в периферийную. Возможно этот узел использовался в предыдущих версиях платформы, а в новой версии про него забыли и он просто лежит там как мусор. Если взять расширение из периферийной базы и загрузить в центральную, то хеши расширений начинают совпадать. Я надеялся, что после совпадения хешей расширение конфигурации перестанет каждый раз передаваться в периферийную базу, но оно всё равно передаётся. Ну хоть работает, уже хорошо.
13. user598350_grimax 14.03.19 11:44 Сейчас в теме
Большое вам человеческое СПАСИБО! Предлагаю сделать свой bugboard платформы 1С на инфостарте. Каждое обновление платформы как игра в рулетку или взлетит или нет(
14. AntonSm 25 14.03.19 11:54 Сейчас в теме
(13) зачем плодить сущности?
От этого будут быстрее ошибки исправлять?
15. user598350_grimax 14.03.19 12:31 Сейчас в теме
(14)Следуя вашей логике получается и инфостарт всего лишь дубль сущности stackoverflow? Или вы никогда не сталкивались с ошибками платформы при обновлении, которых нет на bugboard.v8.1c.ru? Ждать когда вендор исправит ошибку можно очень долго), и только сообщество разработчиков 1С на просторах рунета зачастую может помочь одинокому 1С-нику в дальних уголках нашей необъятной Родины)
16. kazzuss 6 08.04.19 11:21 Сейчас в теме
8.3.13.1644

Ставлю признак "Используется в РИБ", при попытке обмена ошибка в ЦУ:

Ошибка записи данных в файл сообщения обмена: {Обработка.КонвертацияОбъектовРаспределенныхИнформационныхБаз.МодульОбъекта(270)}: Ошибка при вызове метода контекста (ЗаписатьИзменения)
ПланыОбмена.ЗаписатьИзменения(ЗаписьСообщения, КоличествоЭлементовВТранзакции);
по причине:
В текущем сеансе существуют неактуальные расширения конфигурации, используемые в распределенной информационной базе.

Что с это значит?
17. RocKeR_13 626 08.04.19 11:41 Сейчас в теме
(16) Похоже, что загрузили расширение в пользовательском режиме, но сеанс не перезапустили.
18. kazzuss 6 08.04.19 13:45 Сейчас в теме
(17) Загружал в конфигураторе.

для чистоты: завершил все сеансы - удалил расширение в конфигураторе - перезапустил 1С - добавил расширение в конфигураторе с признаком "Используется в РИБ" - запускаю обмен в режиме предприятия - та же ошибка.
19. yaguarrr 70 09.04.19 10:27 Сейчас в теме
(18) та же история 8.3.13.1690, 8.3.14.1630
Работает через кнопку сценарий
20. kazzuss 6 09.04.19 14:16 Сейчас в теме
(19) Через сценарий обмен так же не взлетает
По крайней мере в 8.3.13.1644 ...
21. kazzuss 6 12.04.19 12:04 Сейчас в теме
(20) Решилось удалением всех расширений в конфигураторе (установленных до обновления платформы) и добавлением их по новой. Обмен пошел сразу по кнопке Синхронизировать.
Решение подойдет в случае, если в расширениях нет собственных документов и справочников.
22. A4ymet 3 17.04.19 09:28 Сейчас в теме
Всё это ерунда. Пока не исправят баг с платформой счастья в РИБ не ищи. Пляски с бубном помогают каждому по своему. У нас 2 сервера для 1) 8.3.14.1565 пока танцевали с бубном каким то чудесным образом из файлов обмена пропали данные по расширениям. Если раньше есть расширение в ЦБ, то в файле выгрузки идут строки
<v8de:ConfigurationExtension>
<v8de:Id>645b2314-4ade-11e9-8d9e-708bcda98ec4</v8de:Id>
<v8de:Name>ОстаткиИЦеныВПодборе</v8de:Name>
то сейчас их нет. И обмен идёт отлично. Как так получилось но я рад до следующего обновления платформы)

2) 8.3.14.1630 Здесь не помогло не чего. Так и делаем обмен через сценарий.

P.S. пока танцевал с бубоном заметил такую вещь.
Если ЦБ 8.3.14 а ПБ 8.3.13 обмен не идёт не при каких условиях, так как в файле обмена меняются строки
<v8de:Version>216.0</v8de:Version>
<v8de:Digest1>00000000000000000000000000000000</v8de:Digest1>
<v8de:Digest2 v2="57881d97074ef04efe7be54c9c51d7d2" Extensions="0000000000000000000000000000000000000000">9d1874­89ecad40d6c652763c4f4f5ac8</v8de:Digest2>
Где то на форуме многие страдали от этой проблемы. Может кому поможет.
23. A4ymet 3 20.04.19 15:32 Сейчас в теме
8.3.14.1694 ошибка исправлена.
25. user1038092 13.07.19 11:00 Сейчас в теме
(23)Это проверенная опытным путем информация?)
На сайте багборда не нашел соответствующей инфы
26. A4ymet 3 14.07.19 21:53 Сейчас в теме
(25) Да. У меня РИБ на 2х серверах на 8.3.14.1694 взлетел. На данный момент полёт нормальный. Уже даже обновил розницу до 2.2.12.хх
24. user1038092 11.07.19 15:27 Сейчас в теме
Это интересно, когда расширение передается из Центральной базы в распределенные(с признаком "Используется в РИБ").
В моей ситуации расширение для каждой распределенной базе отдельно добавляется.
Ошибка аналогичная: "Ошибка чтения файла сообщения обмена: {Обработка.КонвертацияОбъектовРаспределенныхИнформационныхБаз.МодульОбъекта(200)}: Ошибка при вызове метода контекста (ПрочитатьИзменения): База данных заблокирована:"

Ошибка на платформе: "8.3.13.1865"
Розница: "2.2.11.24"
Оставьте свое сообщение