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