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