При настройке обмена между магазинами и кассами в распределенной информационной базе (РИБ) многие пользователи сталкиваются с проблемой: при попытке выполнить синхронизацию появляется сообщение «Конфигурация узла распределенной ИБ не соответствует ожидаемой». Такая ситуация часто возникает в конфигурациях вроде 1С:Розница при добавлении новой кассы или после некорректного обновления. Разберем по шагам, почему возникает эта ошибка и как ее правильно устранить.
Прежде чем приступать к исправлению, выясним причину сбоя. Платформа 1С жестко контролирует идентичность структуры метаданных в главном и подчиненных узлах. Ошибка несоответствия может появиться из-за следующих факторов:
Если обмен сломался, стандартный способ решения — временно отвязать периферийную базу от центральной, вручную загрузить актуальную конфигурацию (файл .cf) и затем привязать базу обратно. Рассмотрим подробнее каждый этап.
Чтобы подчиненная база позволила загрузить конфигурацию из файла, ее нужно сделать «автономной». Сделать это можно двумя способами.
Способ 1: Программно через внешнюю обработку.
Вам потребуется создать в Конфигураторе новую внешнюю обработку, добавить в нее форму с кнопкой «Выполнить» и в обработчике команды написать следующий код:
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
Запустите эту обработку в режиме Предприятия в проблемной базе (на кассе) и нажмите кнопку. Связь с главным узлом будет разорвана.
Способ 2: Через командную строку (параметр запуска).
Вместо написания кода можно запустить 1С для кассовой базы с ключом /ResetMasterNode. Это штатный параметр Конфигуратора, который сбрасывает привязку к центральному узлу.
После успешной отвязки базы проанализируем ситуацию дальше. Теперь нам нужно передать структуру из центра.
.cf..cf файл. Согласитесь на обновление конфигурации базы данных.После загрузки актуальной структуры необходимо восстановить РИБ. Для этого снова воспользуемся внешней обработкой, написав код привязки. В коде нужно будет указать ваш план обмена и код главного узла. Пример кода:
// Вместо ИмяВашегоПланаОбмена укажите реальное имя плана (например, ПоМагазину)
// Вместо КодГлавногоУзла укажите строковый код центральной базы
ГлавныйУзел = ПланыОбмена.ИмяВашегоПланаОбмена.НайтиПоКоду("КодГлавногоУзла");
ПланыОбмена.УстановитьГлавныйУзел(ГлавныйУзел);
Выполните этот код в режиме Предприятия. После этого база снова станет подчиненной, и вы сможете возобновить штатный обмен данными.
Если проблема возникла при попытке подключить абсолютно новую (третью) кассу, на которой еще нет уникальных непереданных данных (чеков, продаж), самым надежным и быстрым вариантом будет просто удалить проблемную базу. Зайдите в центральную базу и заново сформируйте «Начальный образ» для этой кассы. Это полностью исключит конфликт версий конфигураций и позволит сразу начать работу без лишних манипуляций с отвязыванием узлов.