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

Администрирование · 10 мин

Как изменить ссылку объекта в 1С

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

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

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

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

Ссылка — это не код, не номер и не наименование объекта, а внутренний 128-битный идентификатор, который платформа присваивает при первой записи элемента. Именно по GUID хранятся связи: реквизит документа, содержащий контрагента, физически хранит его GUID, а не название. Поэтому переименование элемента или изменение кода никак не влияет на ссылку и на связи между объектами.

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

Как заменить одну ссылку на другую во всех местах использования

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

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

Замена ссылок через «Поиск и удаление дублей»
  1. 1
    Сделайте резервную копию базы или выполните операцию сначала на копии
  2. 2
    Откройте «Администрирование» → «Обслуживание» → «Поиск и удаление дублей»
  3. 3
    Выберите вид объекта и задайте правила сравнения (наименование, ИНН)
  4. 4
    В найденных парах назначьте оригинал и дубль
  5. 5
    Запустите замену и дождитесь окончания обработки
  6. 6
    Проверьте несколько документов: ссылки должны указывать на оригинал

Если типовой обработки в конфигурации нет, используют универсальную обработку «Поиск и замена значений» с диска ИТС или аналогичные инструменты. Логика та же: указывается заменяемая ссылка, ссылка-заменитель и область поиска (все объекты или выборочно).

Как изменить ссылку программно: УстановитьСсылкуНового

Во встроенном языке 1С есть легальный механизм задать ссылку новому объекту до его записи — метод УстановитьСсылкуНового(). Это не изменение существующей ссылки, а создание нового объекта с заранее заданным GUID. Типичный сценарий — перенос данных между базами, когда нужно сохранить прежние идентификаторы, чтобы связи не разрушились.

Пример кода: создаётся новый элемент справочника, ему присваивается ссылка с нужным GUID, после чего объект заполняется и записывается. Если объект с таким GUID уже существует, при записи возникнет конфликт — поэтому перед установкой ссылки стоит проверить, свободен ли идентификатор.

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

Обратный приём — получить GUID существующего объекта — выполняется через свойство ссылки УникальныйИдентификатор(). Это полезно при интеграциях, когда внешняя система идентифицирует объекты именно по GUID.

Перенумерация кодов и номеров — не то же самое, что смена ссылки

Часто под «изменением ссылки» пользователи подразумевают изменение номера документа или кода справочника. Это разные вещи: код и номер — видимые реквизиты, их можно править вручную в форме объекта (если это не запрещено правами и настройками нумерации) или массово — обработкой «Групповое изменение реквизитов» (в типовых: «Администрирование» → «Обслуживание» → «Корректировка данных»).

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

Риски и когда нужна резервная копия

Любая массовая замена ссылок — операция, изменяющая сотни и тысячи объектов одновременно. Ошибка в выборе «оригинала» при объединении дублей приведёт к тому, что документы начнут ссылаться не на того контрагента, и обнаружится это, возможно, только при сверке с партнёром. Откатить такую замену штатными средствами нельзя — только восстановлением из копии.

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

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

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

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

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

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

Места использования удалённого дубля
Норма

Список ссылок на дубль пуст

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

Документы по-прежнему ссылаются на помеченный элемент

Реквизиты документов после замены
Норма

В документах указан элемент-оригинал

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

В полях отображается «Объект не найден»

Итоги регистров по объекту
Норма

Обороты совпадают с данными до замены

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

Суммы и остатки изменились без причины

Типичные ошибки при изменении ссылок

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

Вторая ошибка — запуск массовой замены в рабочее время без монопольного режима: часть объектов может оказаться заблокированной пользователями, и замена пройдёт не полностью. Третья — попытка «изменить ссылку» удалением старого элемента и созданием нового с тем же наименованием: новый объект получит новый GUID, и все старые связи превратятся в битые ссылки.

Типичные ошибки
01
Перепутан оригинал и дубль — документы начали ссылаться на неправильный элемент, откат возможен только из копии
02
Замена без монопольного режима — часть объектов заблокирована, ссылки заменены не везде
03
Удаление элемента и создание нового с тем же названием — GUID новый, все старые связи стали битыми ссылками
04
Замена без резервной копии — ошибка необратима, данные приходится восстанавливать вручную

FAQ: частые вопросы о ссылках объектов 1С

Можно ли поменять GUID у уже существующего элемента справочника?

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

Как узнать GUID объекта в 1С?

В режиме предприятия GUID не отображается напрямую. Его можно получить программно через Ссылка.УникальныйИдентификатор(), либо через универсальные обработки «Структура подчинённости» и инструменты разработчика, показывающие внутренние идентификаторы.

Что такое «битая ссылка» и как её исправить?

Это ссылка на объект, который был удалён физически (например, при обмене или прямом удалении). В полях она отображается как «Объект не найден». Исправляется либо восстановлением объекта, либо заменой битой ссылки на существующий элемент обработкой поиска и замены значений.

Изменится ли ссылка при переносе базы или обмене данными?

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

Нужны ли особые права для замены ссылок?

Да. Обработки «Поиск и удаление дублей» и «Групповое изменение реквизитов» доступны пользователям с правами администратора. Кроме того, нужны права на изменение всех объектов, где встречается заменяемая ссылка, иначе часть замен будет пропущена.

Можно ли заменить ссылку только в части документов?

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

Итог

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

Ссылку (GUID) существующего объекта изменить нельзя — она неизменна. Реальные задачи решаются заменой ссылок через «Поиск и удаление дублей», заданием GUID новому объекту методом УстановитьСсылкуНового() или правкой кодов и номеров, которые к ссылке отношения не имеют. Любую массовую замену выполняйте только после резервного копирования и проверяйте результат поиском оставшихся ссылок.