#std706

Ограничения на переименование объектов метаданных

1.

Не переименовывайте общий модуль с последующим созданием нового модуля с тем же именем.

Если модуль нужно переименовать, создайте новый общий модуль с новым именем и перенесите в него код исходного модуля.

Иначе при сравнении и объединении с новой конфигурацией поставщика ссылки по имени (например, в подписках на события) могут связаться с новым модулем, где нет нужных процедур.

2.

Если при изменении структуры метаданных нужно удалить объект и создать новый объект с тем же именем, сначала переименуйте устаревший объект, добавив префикс Удалить.

Пример

Такое переименование часто требуется при сужении состава измерений регистра.

Если удалить объект и сразу создать новый с тем же именем, обновление конфигурации на поддержке может завершиться ошибкой.

Причина: если в старом объекте были изменения с сохранением поддержки, старый объект может не удалиться при объединении, и в конфигурации окажутся два объекта с одинаковым именем.

См. также: #std534: Удаление устаревших объектов метаданных из конфигурации.

3.

Если в конфигурации нужно хранить ссылки на объекты метаданных, применяйте правила ниже.

3.1.

Если БСП не используется, храните полные имена объектов метаданных в строковых реквизитах (Строка, 255).

Примеры

В справочнике ШаблоныСообщений: реквизит ПолноеИмяТипаПараметраВводаНаОсновании.

В регистре сведений НастройкиПечатиОбъектов: измерение ТипОбъекта.

При переименовании или удалении объектов метаданных в обновлении ИБ обязательно заменяйте или удаляйте соответствующие имена в данных.

Иначе ссылки на имена объектов станут рассогласованными, и подсистемы, которые на них опираются, начнут работать с ошибками.

3.2.

Если используется БСП, храните ссылки на объекты метаданных через справочник ИдентификаторыОбъектовМетаданных.

Преимущества:

  • централизованное хранение ссылок на имена объектов с автоматическим учетом переименований, удалений и добавлений;
  • меньший объем данных (ссылка вместо строки длиной 255), что улучшает производительность.

Исключение: для ролей и подсистем автоматическое отслеживание переименований не выполняется. Для них переименования нужно описывать явно.

Подробнее: Документация к БСП.

Если не описать переименование ролей и подсистем, ссылки в ИдентификаторыОбъектовМетаданных рассогласуются (старый элемент будет помечен на удаление, вместо него появится новый), что приведет к ошибкам.

Примеры последствий

Варианты отчетов, связанные с переименованной подсистемой, исчезнут из панели отчетов.

Дополнительные отчеты и обработки, выведенные пользователями в раздел переименованной подсистемы, пропадут из списка.

Переименованные роли из профилей групп доступа не будут назначаться пользователям.

3.3.

Справочник ИдентификаторыОбъектовМетаданных не предназначен для ссылок на объекты метаданных других конфигураций (например, в интеграционных механизмах).

Для таких сценариев используйте строковые реквизиты и отдельные механизмы поддержания актуальности значений.

3.4.

Если ведется две и более параллельных ветки разработки (например, 2.0 и 3.0):

  • в текущей и младших версиях запрещены переименование с последующим созданием нового объекта с тем же полным именем;
  • в текущей и младших версиях запрещено двойное переименование;
  • такие переименования выполняйте только в самой старшей версии.

Иначе при переходе с младшей версии на старшую переименование может быть учтено дважды, что приведет к рассогласованию ссылок на объекты метаданных.

Если используются ссылки через ИдентификаторыОбъектовМетаданных БСП, этот запрет действует только для ролей и подсистем.

Подробнее: Документация к БСП.

См. также
Источник

https://its.1c.ru/db/v8std#content:706