После обновления центральной базы 1С:Бухгалтерия предприятия (типовая без расширений) с версии 3.0.128.10 до версии 3.0.134.23 версия платформы 8.3.22.175, типовым обменом была обновлена периферийная база РИБ (распределенная информационная база). Обновление базы РИБ прошло без ошибок, автоматически и все бы ничего, но при открытии некоторых документов (например "Поступление (акты, накладные, УПД)") возникает ошибка из-за чего документ не открывается. Ошибка следующая:
Сформированный отчет показывает следующее:
Скриншот стека вызовов:
Из всего выше написанного становится понятно, что отсутствует предопределенный элемент "ОднойДоступнойПодписью" справочника "МаршрутыПодписания", при том что конфигурация абсолютно типовая и без расширений, начал расследовать, выяснил, что при формировании образа на версии 3.0.128.10 элементы в справочнике отсутствуют, хотя в центральной базе элементы есть:
Но как предопределенные в конфигураторе базы РИБ есть:
Также проверил свойство справочника "Обновление предопределенных данных", стоит в значении "Авто", т.е. для периферийной базы элементы не будут обновлены:
На версии 3.0.128.10 документ поступление в базе РИБ открывается без ошибок. После обновления центральной базы, типовым обменом обновил периферийную базу, элементы справочника не появились, проверил, есть ли данный справочник в составе плана обмена "Полный", оказалось, что нет (хотел зарегистрировать данные к обмену):
После того как не удалось зарегистрировать и синхронизировать справочник типовым обменом, т.к. конфигурации идентичны, решил выгрузить справочник вручную обработкой "Выгрузка и загрузка данных XML", сделал такие настройки при выгрузке:
Загрузил файл выгрузки этой же обработкой в базе РИБ:
Проверил справочник "Маршруты подписания", элементы в базе появились:
Проверил открытие документа "Поступление", документ открылся без ошибок, таким образом очень быстро смог поправить ошибку. Возможно это частный случай, но тем не менее решил описать ситуацию, если у кого-то возникнет что-то подобное, почему разработчики решили не включать данный справочник в план обмена "Полный" остается вопросом, но проблема есть.
Также есть возможность написать обработку для создания новых элементов справочника и привязки к предопределенным элементам. В моем случае элементов всего два, и это было нетрудно сделать.
&НаСервере
Процедура СоздатьЭлементыНаСервере()
СоотвИмен = Новый Соответствие;
СоотвИмен.Вставить("ОднойДоступнойПодписью", "Одной доступной подписью");
СоотвИмен.Вставить("УказыватьПриСоздании", "Указывать при создании документа");
Для каждого ЭлементСоотв Из СоотвИмен Цикл
НовЭлемент = Справочники.МаршрутыПодписания.СоздатьЭлемент();
НовЭлемент.ИмяПредопределенныхДанных = ЭлементСоотв.Ключ;
НовЭлемент.Наименование = ЭлементСоотв.Значение;
НовЭлемент.ВидПодписи = Перечисления.ВидыЭлектронныхПодписей.УсиленнаяКвалифицированная;
НовЭлемент.Записать();
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьЭлементы(Команда)
СоздатьЭлементыНаСервере();
КонецПроцедуры
Минус данного подхода в том, что создается новый элемент справочника с новым уникальным идентификатором:
Данный момент нужно будет учитывать при дальнейшей синхронизации данных этого справочника, добавлять поиск по наименованию, например, если использовать типовую обработку "Выгрузка и загрузка данных XML", то дублей при загрузке не выявил.
Также предлагаю решения вашему вниманию:
Простой пример разработки регулярного обмена с использованием БСП на примере ERP 2.4 и УПП 1.3
Универсальный отчет для сравнения записей регистров накопления между базами.
Универсальная выгрузка и загрузка зарегистрированных справочников и документов по узлу.