К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как поменять идентификатор в 1С

Как изменить идентификатор объекта в 1С: переименование в конфигураторе, замена кодов элементов, рефакторинг и проверка ссылок. Пошаговая инструкция с рисками.

Идентификатор в 1С — это имя, по которому система и программный код обращаются к объекту: справочнику, документу, реквизиту, процедуре или элементу данных. Задача «поменять идентификатор» возникает в двух разных ситуациях: когда нужно переименовать объект метаданных в конфигураторе и когда требуется изменить код или уникальный идентификатор конкретного элемента данных. Это принципиально разные операции с разными рисками.

Переименование метаданных затрагивает весь код конфигурации: любое обращение к старому имени после изменения перестанет работать. Изменение кодов элементов влияет на обмены данными, внешние отчёты и интеграции, где код используется как ключ сопоставления. Перед любой из этих операций обязательно сделайте резервную копию информационной базы — откатить неудачное переименование без копии бывает затруднительно.

Ниже разобраны оба сценария: безопасное переименование объектов конфигурации с автоматической заменой ссылок в коде, изменение кодов элементов справочников и документов, а также работа с внутренними уникальными идентификаторами (GUID), которые штатными средствами не редактируются.

Что именно вы собираетесь менять: три вида идентификаторов

Прежде чем приступать, определите, о каком идентификаторе идёт речь. В 1С их три, и путают их часто. Первый — имя объекта метаданных: имя справочника «Номенклатура», документа «РеализацияТоваровУслуг», реквизита, процедуры в модуле. Оно задаётся в конфигураторе и используется в коде.

Второй — код элемента данных: числовой или строковый код элемента справочника, номер документа. Он виден пользователям, участвует в обменах и печатных формах. Третий — внутренний уникальный идентификатор (GUID, «Ссылка»), который платформа присваивает каждому объекту автоматически. Он не отображается в интерфейсе, но именно по нему строятся все ссылочные связи между объектами базы.

Подготовка: резервная копия и анализ зависимостей

Любое изменение идентификаторов начинайте с выгрузки информационной базы через конфигуратор (Администрирование → Выгрузить информационную базу) или средствами СУБД, если база клиент-серверная. Проверьте, что файл выгрузки создался и имеет ненулевой размер — сам факт запуска выгрузки не гарантирует её успешного завершения.

Далее оцените масштаб изменений. Для объекта метаданных выполните поиск ссылок: в конфигураторе правой кнопкой по объекту → «Поиск ссылок на объект». Система покажет все места в конфигурации, где используется это имя. Если объект входит в план обмена, используется внешними отчётами, обработками или расширениями — учтите и их, потому что штатный поиск их не охватывает.

Как переименовать объект метаданных в конфигураторе

Откройте конфигуратор, разблокируйте конфигурацию от изменений, если она на поддержке (потребуется включить возможность изменений). Найдите нужный объект в дереве конфигурации, откройте его свойства (правой кнопкой → «Свойства» или Alt+Enter) и измените поле «Имя». Платформа автоматически предложит изменить и синоним, если он совпадал с именем.

Ключевой шаг — замена всех обращений к старому имени в коде. В меню «Правка» есть функция «Замена» с режимом поиска по всей конфигурации, но надёжнее использовать механизм рефакторинга: правой кнопкой по объекту → «Переименовать» (в EDT и в новых версиях конфигуратора этот пункт выполняет контекстное переименование с автоматической правкой модулей). Если такого пункта нет, выполните глобальный поиск старого имени как слова целиком и замените вхождения вручную, просматривая каждое.

Порядок переименования объекта
  1. 1
    Сделайте выгрузку информационной базы
  2. 2
    Найдите все ссылки на объект (поиск ссылок в конфигураторе)
  3. 3
    Переименуйте объект через свойства или команду рефакторинга
  4. 4
    Выполните глобальный поиск старого имени и исправьте оставшиеся вхождения
  5. 5
    Проверьте конфигурацию на синтаксические ошибки (Конфигурация → Проверка конфигурации)
  6. 6
    Обновите конфигурацию базы данных (F7)
  7. 7
    Протестируйте типовые операции с объектом в пользовательском режиме

Особые места, где замена не сработает автоматически

Автоматическая замена не трогает строковые литералы. Обращения вида Справочники["СтароеИмя"], НайтиПоКоду с именами в строках, имена в запросах динамических списков, настройки хранимые в виде строк (например, в регистрах сведений с настройками отчётов) — всё это придётся искать отдельным текстовым поиском по старому имени как подстроке.

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

Как изменить код элемента справочника или номер документа

Код элемента меняется прямо в пользовательском режиме: откройте форму элемента, исправьте поле «Код» и запишите. Если поле недоступно для редактирования, проверьте права пользователя и настройки объекта — в некоторых конфигурациях код заполняется автоматически и редактирование заблокировано осознанно.

Учтите формат кода. Если код числовой с фиксированной длиной, при попытке вписать значение, нарушающее последовательность нумерации, платформа может выдать предупреждение или предложить перенумерацию. Для документов изменение номера в прошлом периоде может нарушить хронологию и вызвать конфликты при повторной автонумерации.

Уникальный идентификатор (GUID): почему его нельзя просто поменять

Внутренний GUID объекта платформа не позволяет редактировать ни в конфигураторе, ни в пользовательском режиме — на этом построена целостность ссылок. Если задача стоит «чтобы объект имел конкретный GUID» (типично при миграциях и сопоставлении с внешней системой), применяется программный приём: создаётся новый объект, ему через УстановитьСсылкуНового присваивается нужная ссылка, данные переносятся, старый объект удаляется.

bsl
НовыйОбъект = Справочники.Номенклатура.СоздатьЭлемент();
НоваяСсылка = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("a1b2c3d4-e5f6-..."));
НовыйОбъект.УстановитьСсылкуНового(НоваяСсылка);
НовыйОбъект.Наименование = СтарыйОбъект.Наименование;
НовыйОбъект.Записать();

После такого переноса все ссылки на старый объект нужно перекинуть на новый. Для этого используют типовую обработку «Поиск и замена значений» (в типовых конфигурациях — «Поиск и удаление дублей» в разделе администрирования), которая заменяет все вхождения старой ссылки на новую во всех таблицах базы.

Проверка результата и типовые ошибки

После переименования метаданных обязательна проверка конфигурации: меню «Конфигурация → Проверка конфигурации» с включённой проверкой логической целостности и поиска некорректных ссылок. Затем — ручной прогон ключевых операций: создание документа, проведение, формирование отчёта, где задействован переименованный объект.

Контрольные точки

Как проверить результат

Проверка конфигурации
Норма

Нет ошибок о неопределённых именах

Тревожный признак

Сообщения вида «Переменная не определена» или «Объект не обнаружен»

Работа типовых операций
Норма

Документы проводятся, отчёты строятся

Тревожный признак

Ошибки при открытии форм или проведении

Обмен данными
Норма

Объекты сопоставляются по-прежнему

Тревожный признак

Появились дубли элементов в обеих базах

Типичные ошибки
01
Переименование без резервной копии — при ошибке в массовой замене восстановить имена придётся вручную
02
Замена по подстроке вместо слова целиком — задевает похожие имена и ломает непричастный код
03
Игнорирование строковых обращений Справочники["Имя"] — код падает уже в пользовательском режиме
04
Смена кодов без остановки обменов — на другой стороне интеграции появляются дубли
05
Забытые расширения и внешние отчёты — они перестают работать после обновления

Когда лучше не менять идентификатор, а обойтись иначе

Не всегда переименование — оптимальное решение. Если цель — изменить отображаемое название для пользователей, достаточно поменять синоним объекта: код при этом не затрагивается вообще. Если нужно «другое имя» для внешней системы, правильнее настроить таблицу соответствия в правилах обмена, а не приводить внутренние идентификаторы к чужому формату.

Маршрут решения

Как выбрать действие

Нужно другое название только для пользователейИзмените синоним объекта, имя не трогайте
Имя мешает разработке и сопровождениюПереименование через рефакторинг с полной проверкой
Нужен конкретный GUID для интеграцииСоздание нового объекта с заданной ссылкой и замена ссылок
Код элемента не нравится внешней системеНастройте соответствие в правилах обмена вместо перекодировки
Итог

Что важно запомнить

Сначала определите тип идентификатора: имя метаданных, код элемента или GUID. Перед любыми изменениями — резервная копия. После переименования — полная проверка конфигурации и тест обменов. GUID штатно не меняется, только через создание нового объекта.

Частые вопросы

Можно ли переименовать объект без монопольного доступа?

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

Что будет с данными при переименовании справочника или реквизита?

Данные сохранятся: платформа при обновлении выполняет реструктуризацию таблиц, перенося содержимое в структуру с новым именем. Риск потери появляется только при сбоях в момент реструктуризации, поэтому резервная копия обязательна.

Как узнать GUID существующего объекта?

Программно — методом Объект.Ссылка.УникальныйИдентификатор(). В пользовательском режиме GUID виден в адресной строке браузера при работе через веб-клиент или в параметрах ссылки, полученной командой «Получить ссылку».

Почему после смены кодов в справочнике появились дубли?

Почти всегда причина в обмене данными: сопоставление объектов между базами шло по кодам. После смены кода при следующей синхронизации элемент с новым кодом приехал как новый. Лечится повторным сопоставлением в регистрации обмена и объединением дублей типовой обработкой.

Можно ли отменить переименование, если что-то пошло не так?

Да, если есть выгрузка базы до изменений — восстановите её. Если копии нет, придётся переименовывать объект обратно и вручную исправлять все изменённые места кода, что при массовой замене может занять значительное время.

Меняется ли идентификатор при обновлении типовой конфигурации?

Нет, обновление само по себе идентификаторы не меняет. Но если вы переименовывали объекты в доработанной конфигурации, при обновлении могут возникнуть конфликты сопоставления — их придётся разрешать вручную в окне сравнения и объединения конфигураций.