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

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

Как заменить ссылку в 1С: инструкция по поиску и замене значений

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

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

Под «заменой ссылки» в 1С понимают именно замену ссылок на объект базы данных во всех местах использования, а не правку гиперссылки в тексте. Это штатная операция, для которой в типовых конфигурациях на управляемых формах есть встроенный инструмент, а для старых и самописных конфигураций — универсальные обработки и программные методы.

Что такое замена ссылок и когда она нужна

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

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

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

Замена ссылок изменяет данные во многих таблицах сразу, и откатить её штатными средствами нельзя. Поэтому первый шаг — резервная копия. В файловой базе достаточно скопировать файл 1Cv8.1CD при закрытых сеансах пользователей. В клиент-серверной базе используйте выгрузку в dt через конфигуратор или средства СУБД.

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

Замена ссылки через «Поиск и замену значений»

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

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

Порядок замены через типовую обработку
  1. 1
    Сделайте резервную копию базы и завершите сеансы пользователей
  2. 2
    Откройте Администрирование — Обслуживание — Корректировка данных — Поиск и замена значений
  3. 3
    В поле «Что заменяем» выберите элемент-дубль, в поле «На что заменяем» — правильный элемент
  4. 4
    Нажмите «Найти ссылки» и проверьте список мест использования
  5. 5
    Выполните замену и изучите отчёт об ошибках
  6. 6
    Пометьте дубль на удаление и запустите удаление помеченных объектов

Обратите внимание на настройки обработки. Опция замены в движениях документов увеличивает время работы, но необходима, если дубль участвовал в проведённых документах. Если заменять ссылку только в реквизитах, а движения оставить, отчёты по регистрам продолжат показывать старый элемент.

Поиск и удаление дублей: автоматический вариант

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

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

Сравнение инструментов замены

Поиск и замена значений

Точечная замена любых ссылок. Подходит для единичных замен, требует ручного выбора пар.

Поиск и удаление дублей

Автоматическое слияние дублей справочников. Не работает с документами и произвольными значениями.

Программная замена (НайтиПоСсылкам)

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

Программная замена ссылок через встроенный язык

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

bsl
МассивСсылок = Новый Массив;
МассивСсылок.Добавить(СтараяСсылка);
МестаИспользования = НайтиПоСсылкам(МассивСсылок);
Для Каждого Место Из МестаИспользования Цикл
    ОбъектДанных = Место.Данные.ПолучитьОбъект();
    // заменить реквизит на НоваяСсылка по имени метаданных Место.Метаданные
    ОбъектДанных.Записать();
КонецЦикла;

Универсальный код замены должен учитывать тип найденного объекта: для документов — реквизиты и табличные части, для наборов записей регистров — измерения и реквизиты. Готовые реализации такой логики есть в универсальных обработках с ИТС и в составе БСП. Самостоятельно написанный код обязательно проверяйте на копии базы: ошибка в логике замены испортит данные массово.

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

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

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

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

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

Места использования старого элемента
Норма

Список пуст, элемент можно удалить

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

Остались документы или регистры со старой ссылкой

Отчёты и обороты
Норма

Данные отражаются на правильном элементе, итоги сходятся

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

Часть оборотов «висит» на дубле или исчезла

Удаление помеченных объектов
Норма

Дубль удаляется без сообщений о ссылках

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

Система показывает препятствующие объекты

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

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

Напрямую — нет, замена выполняется в каждой базе отдельно. Если базы связаны обменом (РИБ, синхронизация), правильнее заменить ссылки в главном узле и дождаться выгрузки изменений в подчинённые. Одновременная независимая замена в обеих базах может вызвать конфликты при обмене.

Что делать, если обработка «Поиск и замена значений» не открывается?

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

Почему после замены в отчётах остался старый элемент?

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

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

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

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

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

Итог

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

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