В процессе развития конфигурации 1С нередко возникает ситуация, когда первоначальное имя объекта метаданных (справочника, документа, регистра) перестает отражать его реальное назначение. Однако просто изменить имя объекта в дереве метаданных недостаточно: в коде конфигурации, запросах, формах и внешних связях могут оставаться сотни или тысячи ссылок на старое имя. Разберем основные способы решения этой задачи, оценим риски и выясним, как провести переименование максимально безопасно.
Прежде чем приступать к масштабным правкам, важно понять, как платформа 1С:Предприятие взаимодействует с базой данных. Связь объектов конфигурации с физическими таблицами СУБД осуществляется не по строковому имени, а по внутренним уникальным идентификаторам (UUID). Физические таблицы в базе имеют системные имена вида _ReferenceX или _DocumentX. Поэтому само по себе переименование существующего объекта в дереве метаданных не приводит к удалению или пересозданию физической таблицы и не стирает существующие данные в СУБД.
Важно: потеря данных возможна в том случае, если разработчик удалит старый объект и создаст новый с тем же типом, либо некорректно выполнит объединение конфигураций (когда переименованный объект распознается как абсолютно новый). При реструктуризации старая таблица с данными будет удалена.
Классический подход в стандартном конфигураторе заключается в последовательной замене имени во всей конфигурации. Разберем этот алгоритм по шагам:
СтароеИмя в НовоеИмя).Ctrl + Shift + F2).При использовании глобальной замены нужно учитывать контекст. Например, замена коротких или общеупотребительных слов может затронуть переменные и комментарии, не имеющие отношения к переименовываемому объекту.
Среда разработки 1C:Enterprise Development Tools (1C:EDT) на базе Eclipse содержит развитый механизм контекстного рефакторинга. В отличие от обычной текстовой замены в конфигураторе, EDT понимает структуру и семантику метаданных.
При переименовании объекта через EDT среда автоматически обновляет:
Этот способ является наиболее быстрым и минимизирует вероятность человеческой ошибки при переименовании крупных объектов.
Для опытных разработчиков доступен вариант с пакетной обработкой исходников конфигурации:
Даже после полной текстовой или контекстной замены имени объекта в конфигурации могут остаться неочевидные места, требующие ручной проверки. Проанализируем основные риски:
Справочники[Имя]), функции работы с типами вида Тип("СправочникСсылка.СтароеИмя"), а также обращения через Метаданные.НайтиПоПолномуИмени() не определяются стандартной проверкой синтаксиса.Если цель переименования — сделать название понятным для конечных пользователей, в большинстве случаев правильнее изменить только Синоним объекта в палитре свойств.
Посмотрим на преимущества изменения синонима:
Если же старое имя объекта грубо нарушает стандарты разработки и принято решение о полном переименовании, необходимо последовательно выполнить рефакторинг (через 1C:EDT или глобальную замену), проверить все динамические вызовы, обновить внешние компоненты и провести полное функциональное тестирование конфигурации.