#std706¶
Ограничения на переименование объектов метаданных¶
1.¶
Не переименовывайте общий модуль с последующим созданием нового модуля с тем же именем.
Если модуль нужно переименовать, создайте новый общий модуль с новым именем и перенесите в него код исходного модуля.
Иначе при сравнении и объединении с новой конфигурацией поставщика ссылки по имени (например, в подписках на события) могут связаться с новым модулем, где нет нужных процедур.
2.¶
Если при изменении структуры метаданных нужно удалить объект и создать новый объект с тем же именем, сначала переименуйте устаревший объект, добавив префикс Удалить.
Пример
Такое переименование часто требуется при сужении состава измерений регистра.
Если удалить объект и сразу создать новый с тем же именем, обновление конфигурации на поддержке может завершиться ошибкой.
Причина: если в старом объекте были изменения с сохранением поддержки, старый объект может не удалиться при объединении, и в конфигурации окажутся два объекта с одинаковым именем.
См. также: #std534: Удаление устаревших объектов метаданных из конфигурации.
3.¶
Если в конфигурации нужно хранить ссылки на объекты метаданных, применяйте правила ниже.
3.1.¶
Если БСП не используется, храните полные имена объектов метаданных в строковых реквизитах (Строка, 255).
Примеры
В справочнике ШаблоныСообщений: реквизит ПолноеИмяТипаПараметраВводаНаОсновании.
В регистре сведений НастройкиПечатиОбъектов: измерение ТипОбъекта.
При переименовании или удалении объектов метаданных в обновлении ИБ обязательно заменяйте или удаляйте соответствующие имена в данных.
Иначе ссылки на имена объектов станут рассогласованными, и подсистемы, которые на них опираются, начнут работать с ошибками.
3.2.¶
Если используется БСП, храните ссылки на объекты метаданных через справочник ИдентификаторыОбъектовМетаданных.
Преимущества:
- централизованное хранение ссылок на имена объектов с автоматическим учетом переименований, удалений и добавлений;
- меньший объем данных (ссылка вместо строки длиной
255), что улучшает производительность.
Исключение: для ролей и подсистем автоматическое отслеживание переименований не выполняется. Для них переименования нужно описывать явно.
Подробнее: Документация к БСП.
Если не описать переименование ролей и подсистем, ссылки в ИдентификаторыОбъектовМетаданных рассогласуются
(старый элемент будет помечен на удаление, вместо него появится новый), что приведет к ошибкам.
Примеры последствий
Варианты отчетов, связанные с переименованной подсистемой, исчезнут из панели отчетов.
Дополнительные отчеты и обработки, выведенные пользователями в раздел переименованной подсистемы, пропадут из списка.
Переименованные роли из профилей групп доступа не будут назначаться пользователям.
3.3.¶
Справочник ИдентификаторыОбъектовМетаданных не предназначен для ссылок на объекты метаданных других конфигураций
(например, в интеграционных механизмах).
Для таких сценариев используйте строковые реквизиты и отдельные механизмы поддержания актуальности значений.
3.4.¶
Если ведется две и более параллельных ветки разработки (например, 2.0 и 3.0):
- в текущей и младших версиях запрещены переименование с последующим созданием нового объекта с тем же полным именем;
- в текущей и младших версиях запрещено двойное переименование;
- такие переименования выполняйте только в самой старшей версии.
Иначе при переходе с младшей версии на старшую переименование может быть учтено дважды, что приведет к рассогласованию ссылок на объекты метаданных.
Если используются ссылки через ИдентификаторыОбъектовМетаданных БСП,
этот запрет действует только для ролей и подсистем.
Подробнее: Документация к БСП.
См. также¶
- #std550: Имена объектов метаданных в конфигурациях
- #std534: Удаление устаревших объектов метаданных из конфигурации