Ошибки в работе распределенных информационных баз (РИБ) — одна из самых стрессовых ситуаций для администратора или разработчика 1С. Особенно остро проблема проявляется при обновлении платформы, например, при переходе на ветку 8.3.12 и выше. Типичная ситуация: вы обновили платформу, запустили обмен, и система выдает фатальное сообщение: «Конфигурация узла распределенной ИБ не соответствует ожидаемой!». Это происходит из-за расхождения внутренних идентификаторов (хэш-сумм или Digest) конфигурации в центральной и периферийной базах.
В данной статье мы подробно разберем, почему возникает эта ошибка и какими способами ее можно устранить, опираясь на успешный опыт решения подобных инцидентов.
Основная причина кроется в механизме проверки идентичности конфигураций. При каждом обмене система сравнивает Digest (контрольную сумму) метаданных. Если вы обновили платформу, она может изменить алгоритм сериализации объектов или структуру служебных таблиц. В итоге, даже если визуально состав объектов в конфигураторе одинаков, внутренний Digest будет разным. Также часто виной становится «протухший» кэш конфигурации или некорректное завершение динамического обновления.
.cfЭтот метод считается базовым и помогает в большинстве случаев, когда конфигурации узлов действительно идентичны, но платформа «потеряла» связь. Разберем его по шагам:
Конфигуратор.
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
1cv8.cf.Конфигурация -> Загрузить конфигурацию из файла.
УзелГлавный = ПланыОбмена.ГлавныйУзел(); // Если узел уже был определен
// Или найдите ссылку на узел вручную через ПланыОбмена.[ИмяПланаОбмена].НайтиПоКоду("КодЦентра")
ПланыОбмена.УстановитьГлавныйУзел(СсылкаНаЦентральныйУзел);
Часто проблема кроется не в самих данных, а в локальных файлах пользователя. Кэш конфигурации может содержать старые следы метаданных, которые не обновились вместе с платформой. Рассмотрим, как правильно выполнить очистку:
Просто удалить базу из списка и добавить ее заново — это хороший первый шаг, так как при этом создается новая папка кэша. Однако для серверных баз важно также учитывать серверный кэш. Выясним, где именно искать эти файлы:
%AppData%\1C\1cv8\ и %LocalAppData%\1C\1cv8\. Удалите все папки с именами-идентификаторами (например, eb34a...).1C:Enterprise Server.Помните: кэш может «перекочевать» вместе с файлом .dt, если вы создаете новую базу через выгрузку/загрузку данных. Поэтому для чистоты эксперимента всегда пробуйте загрузку через .cf в пустую базу.
Если стандартные методы не помогают, рассмотрим более сложный, но эффективный алгоритм, который помог автору при переходе с платформы 8.3.10 на 8.3.12. Суть метода заключается в принудительной инициализации сообщений обмена на новой платформе.
.cf файл из вашей рабочей базы, используя старую версию платформы (на которой обмен работал)..cf в обе эти базы. Одну назначьте центральной, другую — периферийным узлом..cf из этой «новой» центральной базы.Этот процесс заставляет платформу пересчитать и прописать в файл конфигурации корректные идентификаторы (Digest), специфичные для нового движка 1С.
В некоторых случаях мы можем проанализировать само сообщение обмена (файл .xml). В заголовке сообщения присутствуют теги Digest1 и Digest2. Если вы точно уверены, что конфигурации идентичны, можно попробовать вручную заменить значения этих тегов в файле сообщения, приходящем из центра, на те значения, которые «ожидает» периферия. Однако это временная мера, которая может привести к непредсказуемым последствиям, если метаданные действительно различаются.
Проанализируем еще несколько моментов, которые могут влиять на результат:
ConfigSave. Для очистки можно попробовать внести любое мелкое изменение в конфигураторе (например, пробел в комментарии модуля), сохранить и обновить базу данных (F7).Таким образом, мы рассмотрели комплекс мер по восстановлению работоспособности РИБ. Начните с очистки кэша и простой перепривязки узла, а если это не поможет — воспользуйтесь методом создания эталонных баз для обновления Digest конфигурации.