Администрирование · 10 мин
Как изменить ссылку объекта в 1С
Как изменить ссылку объекта в 1С: замена ссылок через обработку, изменение GUID, перенумерация и типовые средства. Риски, проверка результата и типичные ошибки.
Ссылка объекта в 1С — это уникальный внутренний идентификатор (GUID), по которому платформа связывает документы, элементы справочников и записи регистров между собой. Когда говорят «изменить ссылку объекта», обычно имеют в виду одну из трёх задач: заменить одну ссылку на другую во всех местах использования (например, склеить дубли контрагента), изменить сам GUID элемента или перенумеровать документы и коды справочников. Каждая задача решается своим инструментом, и путать их опасно для целостности данных.
Непосредственно «переписать» ссылку у существующего объекта штатными средствами нельзя: GUID формируется при создании объекта и остаётся неизменным весь его жизненный цикл. Зато можно заменить все упоминания одной ссылки на другую, создать новый объект с заданным GUID или воспользоваться типовыми обработками поиска и удаления дублей. Ниже разобраны все рабочие сценарии с условиями их применения и ограничениями.
Что такое ссылка объекта и почему её нельзя просто отредактировать
Ссылка — это не код, не номер и не наименование объекта, а внутренний 128-битный идентификатор, который платформа присваивает при первой записи элемента. Именно по GUID хранятся связи: реквизит документа, содержащий контрагента, физически хранит его GUID, а не название. Поэтому переименование элемента или изменение кода никак не влияет на ссылку и на связи между объектами.
Платформа не предоставляет штатного способа поменять GUID у уже записанного объекта, потому что это мгновенно разрушило бы ссылочную целостность: все документы и регистры, ссылающиеся на старый идентификатор, потеряли бы объект и показали бы «битую ссылку». Любые обходные приёмы (прямая правка таблиц SQL, сторонние утилиты) относятся к рискованным операциям и выполняются только на копии базы.
Как заменить одну ссылку на другую во всех местах использования
Самая частая практическая задача — в базе обнаружились два одинаковых контрагента или номенклатурные позиции-дубли, и нужно, чтобы все документы ссылались на один «правильный» элемент. Для этого в типовых конфигурациях на платформе 8.3 есть обработка «Поиск и удаление дублей» (раздел «Администрирование» → «Обслуживание», в некоторых конфигурациях — «Нормативно-справочная информация»).
Порядок работы: откройте обработку, выберите вид объекта (например, справочник «Контрагенты»), задайте правила поиска дублей (по наименованию, ИНН, КПП), дождитесь результатов и отметьте пары для объединения. Для каждой пары укажите «оригинал» — элемент, ссылка которого останется, и дубль, который будет заменён и помечен на удаление. После нажатия «Удалить дубли» платформа пройдёт по всем объектам базы и заменит ссылки дубля на ссылку оригинала.
- 1Сделайте резервную копию базы или выполните операцию сначала на копии
- 2Откройте «Администрирование» → «Обслуживание» → «Поиск и удаление дублей»
- 3Выберите вид объекта и задайте правила сравнения (наименование, ИНН)
- 4В найденных парах назначьте оригинал и дубль
- 5Запустите замену и дождитесь окончания обработки
- 6Проверьте несколько документов: ссылки должны указывать на оригинал
Если типовой обработки в конфигурации нет, используют универсальную обработку «Поиск и замена значений» с диска ИТС или аналогичные инструменты. Логика та же: указывается заменяемая ссылка, ссылка-заменитель и область поиска (все объекты или выборочно).
Как изменить ссылку программно: УстановитьСсылкуНового
Во встроенном языке 1С есть легальный механизм задать ссылку новому объекту до его записи — метод УстановитьСсылкуНового(). Это не изменение существующей ссылки, а создание нового объекта с заранее заданным GUID. Типичный сценарий — перенос данных между базами, когда нужно сохранить прежние идентификаторы, чтобы связи не разрушились.
Пример кода: создаётся новый элемент справочника, ему присваивается ссылка с нужным GUID, после чего объект заполняется и записывается. Если объект с таким GUID уже существует, при записи возникнет конфликт — поэтому перед установкой ссылки стоит проверить, свободен ли идентификатор.
НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
НоваяСсылка = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("a1b2c3d4-..."));
НовыйЭлемент.УстановитьСсылкуНового(НоваяСсылка);
НовыйЭлемент.Наименование = "Перенесённая позиция";
НовыйЭлемент.Записать();Обратный приём — получить GUID существующего объекта — выполняется через свойство ссылки УникальныйИдентификатор(). Это полезно при интеграциях, когда внешняя система идентифицирует объекты именно по GUID.
Перенумерация кодов и номеров — не то же самое, что смена ссылки
Часто под «изменением ссылки» пользователи подразумевают изменение номера документа или кода справочника. Это разные вещи: код и номер — видимые реквизиты, их можно править вручную в форме объекта (если это не запрещено правами и настройками нумерации) или массово — обработкой «Групповое изменение реквизитов» (в типовых: «Администрирование» → «Обслуживание» → «Корректировка данных»).
При ручной смене номера документа учитывайте, что платформа контролирует уникальность номеров в пределах периода (обычно года). Если присвоить уже занятый номер, при записи появится ошибка. После массовой перенумерации имеет смысл обновить нумерацию через сервис «Обновить нумерацию объектов», иначе новые документы могут получать неожиданные номера.
Риски и когда нужна резервная копия
Любая массовая замена ссылок — операция, изменяющая сотни и тысячи объектов одновременно. Ошибка в выборе «оригинала» при объединении дублей приведёт к тому, что документы начнут ссылаться не на того контрагента, и обнаружится это, возможно, только при сверке с партнёром. Откатить такую замену штатными средствами нельзя — только восстановлением из копии.
Поэтому перед заменой ссылок обязательно: выполните выгрузку информационной базы (файл .dt) или снимите копию средствами СУБД, проведите операцию сначала на тестовой копии и убедитесь, что никто из пользователей не работает с заменяемыми объектами. В клиент-серверном режиме массовую замену лучше выполнять в монопольном режиме — так исключаются блокировки и частичная запись.
Как проверить результат замены ссылок
После завершения обработки убедитесь, что замена прошла корректно. Откройте несколько документов, в которых раньше был указан дубль, — теперь там должен стоять элемент-оригинал. Вызовите для бывшего дубля команду «Поиск ссылок на объект» (в типовых конфигурациях доступна в меню «Ещё» формы элемента): список мест использования должен быть пустым или содержать только неактуальные объекты.
Дополнительно запустите «Тестирование и исправление» информационной базы в режиме проверки ссылочной целостности — это выявит битые ссылки, если они появились. Также проверьте обороты по регистрам взаиморасчётов или складским регистрам по затронутым объектам: итоги должны сойтись с данными до замены.
Как проверить результат
Список ссылок на дубль пуст
Документы по-прежнему ссылаются на помеченный элемент
В документах указан элемент-оригинал
В полях отображается «Объект не найден»
Обороты совпадают с данными до замены
Суммы и остатки изменились без причины
Типичные ошибки при изменении ссылок
Первая ошибка — путать «оригинал» и «дубль» в обработке объединения. Если перепутать, останется ссылка не того элемента, и часть реквизитов (договоры, банковские счета) окажется у неправильного объекта. Всегда сверяйте, какой из элементов заполнен полнее и используется в учёте.
Вторая ошибка — запуск массовой замены в рабочее время без монопольного режима: часть объектов может оказаться заблокированной пользователями, и замена пройдёт не полностью. Третья — попытка «изменить ссылку» удалением старого элемента и созданием нового с тем же наименованием: новый объект получит новый GUID, и все старые связи превратятся в битые ссылки.
FAQ: частые вопросы о ссылках объектов 1С
Можно ли поменять GUID у уже существующего элемента справочника?
Штатными средствами — нет, идентификатор неизменен. Практический обходной путь — создать новый объект с нужным GUID через УстановитьСсылкуНового() и заменить ссылки старого объекта на новый обработкой замены значений, после чего старый удалить.
Как узнать GUID объекта в 1С?
В режиме предприятия GUID не отображается напрямую. Его можно получить программно через Ссылка.УникальныйИдентификатор(), либо через универсальные обработки «Структура подчинённости» и инструменты разработчика, показывающие внутренние идентификаторы.
Что такое «битая ссылка» и как её исправить?
Это ссылка на объект, который был удалён физически (например, при обмене или прямом удалении). В полях она отображается как «Объект не найден». Исправляется либо восстановлением объекта, либо заменой битой ссылки на существующий элемент обработкой поиска и замены значений.
Изменится ли ссылка при переносе базы или обмене данными?
При выгрузке/загрузке базы целиком (файл .dt) GUID сохраняются. При обмене через правила конвертации — зависит от настройки: по умолчанию типовые обмены стремятся сохранить GUID, но при загрузке «по наименованию» объект может быть создан заново с новым идентификатором.
Нужны ли особые права для замены ссылок?
Да. Обработки «Поиск и удаление дублей» и «Групповое изменение реквизитов» доступны пользователям с правами администратора. Кроме того, нужны права на изменение всех объектов, где встречается заменяемая ссылка, иначе часть замен будет пропущена.
Можно ли заменить ссылку только в части документов?
Да. В обработках поиска и замены значений можно ограничить область поиска конкретными видами объектов или отобрать документы по условию (период, организация). Типовая «Поиск и удаление дублей» заменяет ссылки везде, поэтому для выборочной замены подходят универсальные обработки.
Что важно запомнить
Ссылку (GUID) существующего объекта изменить нельзя — она неизменна. Реальные задачи решаются заменой ссылок через «Поиск и удаление дублей», заданием GUID новому объекту методом УстановитьСсылкуНового() или правкой кодов и номеров, которые к ссылке отношения не имеют. Любую массовую замену выполняйте только после резервного копирования и проверяйте результат поиском оставшихся ссылок.