При работе с распределенными информационными базами (РИБ) в конфигурации 1С:Розница специалисты часто сталкиваются с ситуацией, когда после обновления платформы до определенных релизов (в частности, ветки 8.3.13) обмен данными продолжает работать, но изменения самой конфигурации перестают передаваться в периферийные узлы. Это критическая проблема, так как она блокирует дальнейшее развитие системы и может привести к рассогласованию структур данных между главным и подчиненными узлами.
В данной статье мы подробно разберем причины возникновения этой ошибки, проанализируем технические нюансы работы платформы 8.3.13 и рассмотрим пошаговые алгоритмы решения проблемы.
Проанализируем ситуацию: в релизах платформы ветки 8.3.13 (особенно в сборке 8.3.13.1513) была допущена серьезная регрессионная ошибка в механизме регистрации изменений метаданных. Суть проблемы заключается в том, что при внесении изменений в основную конфигурацию платформа некорректно формирует таблицу регистрации изменений для узлов РИБ.
Система «считает», что изменений в структуре конфигурации нет, и поэтому при выгрузке сообщения обмена (.xml файла) узел-источник просто не включает в него блок обновления конфигурации. При этом программный код и данные могут передаваться исправно, что создает иллюзию работающего обмена, пока не потребуется изменение метаданных (добавление реквизитов, новых справочников или документов).
Рассмотрим подробнее дополнительные факторы, которые могут усугублять ситуацию:
Самый простой и надежный способ — это установка исправленного релиза. Практика показывает, что начиная с версии 8.3.13.1644, ошибка с передачей конфигурации была устранена разработчиками 1С.
Разберем алгоритм действий:
Конфигуратор, внесите любое незначительное изменение (например, добавьте пробел в комментарий любого общего модуля) и сохраните конфигурацию. Это принудительно инициирует механизм регистрации изменений.Если требования вашей конфигурации (например, 1С:Бухгалтерия или 1С:УНФ) позволяют использовать более ранние версии, мы рекомендуем рассмотреть переход на ветку 8.3.12. Сборка 8.3.12.1714 или 8.3.12.1790 зарекомендовала себя как наиболее стабильная для работы распределенных баз в тот период.
Обратите внимание: если вы уже успели изменить режим совместимости конфигурации на 8.3.13, простой даунгрейд платформы может не сработать. В этом случае придется сначала вернуть режим совместимости в конфигураторе под управлением 8.3.13, и только затем запускать базу на 8.3.12.
Если обновление платформы временно невозможно, проанализируем способ принудительной регистрации объекта конфигурации для узла. Для этого можно воспользоваться встроенной обработкой «Регистрация изменений для обмена данными».
Посмотрим на программный метод, который позволяет зарегистрировать изменения конфигурации для конкретного узла через код:
// Выберем узел, для которого нужно зарегистрировать изменения
УзелОбмена = ПланыОбмена.Розница.НайтиПоКоду("ПФ1");
Если Не УзелОбмена.Пустая() Тогда
// Регистрируем изменения всей конфигурации для узла
ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, Метаданные.Конфигурация);
Сообщить("Изменения конфигурации зарегистрированы принудительно.");
КонецЕсли;
После выполнения этого кода при следующей выгрузке платформа попытается включить образ конфигурации в сообщение обмена. Однако помните, что на проблемных релизах (8.3.13.1513) этот метод может не сработать из-за внутреннего бага платформы в момент формирования файла.
В ситуациях, когда РИБ окончательно «сломался» и не передает метаданные, используем проверенный административный метод:
Конфигуратор выполним команду Конфигурация -> Сохранить конфигурацию в файл... (получаем файл 1cv8.cf).Конфигуратор.ПланыОбмена.УстановитьГлавныйУзел(Неопределено); (выполняется в обработке).
ПланыОбмена.УстановитьГлавныйУзел(СсылкаНаГлавныйУзел);.
Проанализировав опыт эксплуатации систем на платформе 1С, мы выработали ряд рекомендаций, которые помогут избежать подобных проблем в будущем:
%AppData%\1C\1cv8 на проблемных машинах. Часто конфигурация не передается из-за того, что узел ошибочно хранит информацию о том, что он уже «знает» о последней версии метаданных.Подводя итог, можно сказать, что проблема несинхронизации конфигурации в РИБ на платформе 8.3.13 — это типичный случай программной ошибки платформы, которая решается либо целенаправленным обновлением на релиз 8.3.13.1644+, либо временным откатом на ветку 8.3.12.