Имеем базу с конфигурацией УТП 1.2 (Украина), с центральным узлом и дочерними.
Вышло очередное обновление типовой конфигурации 1.2.39.1 (номер к сути статьи не имеет прямого отношения).
В центральной базе обновили конфигурацию, при первом запуске базы отработала процедура обновления базы, все ОК.
Отправляем данные в дочерние базы. Естественно, требуется сперва обновить конфигурацию. После обновления конфигурации нам бы продолжить загрузку сообщения обмена, но не тут то было. Стартует обработка обновления базы (т.к. номер версии конфигурации изменился), выдает ту ошибку, что на экране, и выкидывает из базы.
В чем причина ? В конфигурации добавились предопределенные элементы справочников. В дочерней базе они не создаются при сохранении конфигурации, в отличие от центральной. Они должны придти в сообщении обмена уже готовыми из ЦБ. Но обработка обновления базы стартует раньше, чем мы догрузим сообщение с готовыми предопределенными элементами. И эта обработка пытается обратиться к тем самым элементам справочника, которых еще нет!. Это тупик, господа. Для того, чтобы обработка успешно завершилась, нужны элементы, а чтобы они появились, нужно сначала завершить обработку.
Что делать?
1) На будущее можно закомментировать в модуле обычного приложения в процедуре ПриНачалеРаботыСистемы вызов ОбновлениеИнформационнойБазы.ВыполнитьОбновлениеИнформационнойБазы() , и вызывать его вручную (внешней обработкой) отдельно в ЦБ и отдельно в каждом узле, или же в модуле ОбновлениеИнформационнойБазы задавать вопрос о том, нужно ли выполнять обновление прямо сейчас
2) Но что делать сейчас ? В базе работать нельзя! Можно поставить одному из пользователей временно режим запуска "Управляемое приложение", войти , закончить загрузку сообщения обмена, используя меню "Все функции". Или же изменить значение константы НомерВерсииКонфигурации на 1.2.39.1, чтобы обработка обновления базы не стартовала, и войти в обычное приложение. После загрузки сообщения обмена вернуть старое значение константы, и повторить вход в базу.
(0) какое сообщение?
(1) Я имею в виду сообщение обмена, т.е. файл типа Message_1_2.xml , который приходит от ЦБ в дочернюю базу и содержит обновления конфигурации и данных.
(2) А не проще откючить в дочернее базы главный узел, загрузить cf глайной базы и востановить главный узел?
(3)
1)В режиме обычного приложения не получится войти.
2)Если воспользоваться входом через управляемое приложение, то можно так сделать, но результат будет печальным. Создадутся свои предопределенные элементы, не те, которые в ЦБ (не с теми GUID). А потом из ЦБ придут те, и получится дублирование.