В процессе оптимизации, очистки или обновления конфигураций платформы 1С:Предприятие разработчикам нередко приходится удалять неиспользуемые подсистемы — например, модули интеграции со сторонними сайтами, CRM или интернет-магазинами (такими как модуль обмена с 1С-Битрикс). Однако при попытке применить изменения и обновить конфигурацию базы данных (по нажатию клавиши F7) конфигуратор выводит предупреждающее окно реструктуризации. В этом списке нередко оказываются базовые объекты, которые, на первый взгляд, совершенно не связаны с удаляемым функционалом (например, Справочник.Валюты, Справочник.Номенклатура или Справочник.Контрагенты), с пометками «Изменен» или «Регистрация изменена».
Разберем детально внутренние механизмы платформы 1С, выясним технические причины такого поведения и рассмотрим по шагам, как проверить реальные изменения метаданных перед сохранением конфигурации базы данных.
Проанализируем, что именно происходит на уровне базы данных, когда мы удаляем ПланОбмена или исключаем из его состава определенные типы метаданных.
Для каждого объекта метаданных, включенного в состав любого плана обмена с признаком авторегистрации или возможностью ручной регистрации, платформа 1С создает на уровне СУБД отдельную служебную таблицу регистрации изменений. В реляционной базе данных SQL эти таблицы имеют суффикс _ChangeRec.
Когда мы удаляем из конфигурации сам объект ПланОбмена (например, ПланОбмена.БэкапБитрикс) или удаляем справочник из его состава, платформа выполняет следующие действия:
Справочник.Валюты больше не требуется хранить отдельную таблицу регистрации изменений по удаленному плану обмена._ChangeRec на уровне СУБД.Важно понимать: данное системное сообщение не означает, что данные в самом справочнике (наименования, курсы валют, коды) были повреждены или перезаписаны. Это лишь уведомление о том, что платформа изменила служебные таблицы регистрации изменений для данного объекта.
Рассмотрим вторую распространенную причину, по которой справочники могут отмечаться как модифицированные. Это связано с механизмом определения типов реквизитов и табличных частей.
Если в объекте (например, в справочнике Справочник.Валюты или в связанном с ним регистре сведений) присутствуют реквизиты со следующими типами данных:
При физическом удалении объектов из дерева метаданных конфигуратор автоматически пробегает по всем составным типам конфигурации и исключает идентификаторы удаленных типов. В результате в свойствах реквизита базового справочника меняется допустимый набор типов, что на уровне СУБД приводит к обновлению внутренних метаданных поля, а конфигуратор отмечает весь справочник как измененный.
Проанализируем неявные метаданные, влияющие на состояние объектов конфигурации:
Посмотрим на особенности хранения структуры метаданных в конфигураторе. Платформа 1С сохраняет строгий внутренний порядок объектов метаданных. При массовом удалении веток дерева конфигурации позиции оставшихся объектов могут смещаться. В некоторых версиях платформы такое смещение внутреннего индекса порядка фиксируется механизмом сравнения версий, из-за чего объект попадает в список измененных при обновлении конфигурации базы данных.
Чтобы не гадать о причинах появления справочника в списке реструктуризации и быть уверенным в безопасности обновления базы данных, выполним пошаговую проверку:
Справочник.Валюты).ПланОбмена или привязка к подсистеме.Разберем важные нюансы, которые необходимо учитывать при проведении реструктуризации базы данных:
.dt или делаем резервную копию средствами SQL-сервера.Справочник.Валюты параллельно участвует в других обменах (например, с конфигурацией «1С:Бухгалтерия предприятия»), убедимся, что удаляется только узел Битрикса, а рабочие планы обмена не затронуты._ChangeRec и реструктуризация больших таблиц требуют блокировки базы данных. Выполнять такие процедуры следует в период минимальной активности пользователей.