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

Справочники и Данные · 9 мин

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

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

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

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

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

Определяем, какую ссылку нужно поменять

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

Уникальный идентификатор (GUID) — это внутренний ключ объекта, который платформа присваивает при создании и который используется в обменах, внешних ссылках вида e1cib/data/Справочник.Контрагенты?ref=... и интеграциях. Его смена фактически означает «пересоздание» объекта с новой идентичностью, и все существующие ссылки на старый GUID станут битыми, если их не переназначить.

Замена ссылки в реквизите через форму объекта

Самый простой случай — один объект, одно поле. Откройте документ или элемент справочника, установите курсор в нужное поле, нажмите кнопку выбора и укажите новый элемент. После этого запишите объект кнопкой «Записать» или «Провести», если это документ.

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

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

Массовая замена через групповое изменение реквизитов

Когда ссылку нужно поменять сразу в десятках или сотнях объектов, используйте типовую обработку «Групповое изменение реквизитов». В конфигурациях на БСП она находится в разделе «Администрирование» → «Обслуживание» → «Корректировка данных» (в некоторых версиях — «Поддержка и обслуживание»).

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

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

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

Устранение дублей через поиск и замену ссылок

Типовая задача — в справочнике завели две карточки одного контрагента, и ссылки разошлись по обоим. Правильный инструмент — «Поиск и удаление дублей» в разделе «Администрирование» → «Обслуживание». Обработка находит похожие элементы, а затем заменяет все ссылки на дубль ссылками на выбранный «основной» элемент во всей базе, включая документы, регистры и другие справочники.

После замены ссылок дубль помечается на удаление или удаляется (в зависимости от режима). Все места использования платформа перебирает автоматически, поэтому битых ссылок не остаётся — это ключевое преимущество перед ручной перебивкой документов.

Изменение GUID объекта программно

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

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

bsl
НовыйЭлемент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйЭлемент.УстановитьСсылкуНового(НужнаяСсылка);
НовыйЭлемент.Наименование = СтарыйЭлемент.Наименование;
НовыйЭлемент.Записать();

Для поиска всех мест использования старой ссылки применяйте метод НайтиПоСсылкам() — он возвращает таблицу объектов, где встречается ссылка. Замену выполняйте в транзакции, чтобы при ошибке откатить частичные изменения.

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

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

Признак проблемы — появление в отчётах и формах строк вида «<Объект не найден> (…)». Это означает битую ссылку: объект удалили, а ссылки на него остались. Исправляется восстановлением объекта с прежним GUID или повторной заменой ссылок на существующий элемент.

Типичные ошибки
01
Замена реквизита без отбора — изменились лишние объекты, данные пришлось восстанавливать из копии
02
Удаление дубля вручную без обработки замены — в документах остались битые ссылки «Объект не найден»
03
Смена GUID без анализа обменов — интеграция создала дубли объектов при следующей синхронизации
04
Замена ссылки в проведённых документах без перепроведения — движения по регистрам остались со старым значением
Контрольные точки

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

Значение реквизита в объекте
Норма

Стоит новый элемент, объект записывается без ошибок

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

Старое значение или сообщение о нарушении прав

Отчёты по связанным данным
Норма

Суммы и остатки соответствуют новому объекту

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

Данные раздвоены между старым и новым элементом

Поиск битых ссылок
Норма

Строк «Объект не найден» нет

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

В формах и отчётах видны битые ссылки

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

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

Технически — только если пользователю разрешено изменение данных до даты запрета. Практически это меняет движения прошлых периодов и может исказить сданную отчётность, поэтому корректнее вносить исправления документами текущего периода.

Чем замена дублей лучше ручного удаления лишнего элемента?

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

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

Программно — через Ссылка.УникальныйИдентификатор(). Также идентификатор виден в навигационной ссылке объекта после параметра ref= в закодированном виде, но удобнее получить его запросом или через консоль кода.

Почему после замены ссылки в документе отчёт не изменился?

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

Безопасно ли менять GUID объекта, участвующего в обмене с сайтом?

Нет, без подготовки — небезопасно. Сайт идентифицирует объект по GUID, и после смены идентификатора при следующем обмене появятся дубли. Если смена неизбежна, синхронно обновите идентификатор на стороне сайта или выполните полную первичную выгрузку заново.

Итог

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

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