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

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

1С: как найти ссылки на объект

Как в 1С найти ссылки на объект: поиск ссылок через меню «Ещё», обработку поиска и удаления помеченных объектов, запросы и встроенный язык.

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

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

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

Когда нужно искать ссылки на объект

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

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

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

Способ 1. Команда «Найти ссылки» в форме объекта

В большинстве типовых конфигураций (Бухгалтерия предприятия, Управление торговлей, ERP, Зарплата и управление персоналом) в форме элемента справочника или документа есть команда «Ещё → Найти ссылки». Иногда она называется «Ссылки на объект» или находится в подменю «Сервис».

Порядок действий простой: откройте нужный элемент справочника или документ, нажмите кнопку «Ещё» в командной панели формы и выберите пункт поиска ссылок. Система покажет таблицу всех объектов, в которых встречается данный элемент: документы, другие справочники, регистры сведений.

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

Порядок действий
  1. 1
    Откройте элемент справочника или документ, ссылки на который нужно найти
  2. 2
    В командной панели формы нажмите «Ещё»
  3. 3
    Выберите пункт «Найти ссылки» (или «Ссылки на объект»)
  4. 4
    Дождитесь формирования списка объектов, использующих элемент
  5. 5
    Двойным щелчком откройте нужный объект и проверьте контекст использования

Ограничение способа: команда доступна не во всех формах и не во всех конфигурациях, особенно в старых или сильно доработанных. Если пункта нет в меню «Ещё», переходите к универсальным обработкам.

Способ 2. Обработка «Поиск и удаление дублей»

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

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

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

Способ 3. Удаление помеченных объектов

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

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

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

Способ 4. Программный поиск через НайтиПоСсылкам()

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

bsl
МассивСсылок = Новый Массив;
МассивСсылок.Добавить(ИскомаяСсылка);
ТаблицаНайденных = НайтиПоСсылкам(МассивСсылок);
Для Каждого Строка Из ТаблицаНайденных Цикл
    Сообщить(Строка(Строка.Данные) + " — " + Строка(Строка.Метаданные));
КонецЦикла;

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

Запускать код можно через консоль кода (внешняя обработка «Консоль кода» с диска ИТС или аналогичные инструменты) либо во временную внешнюю обработку. Для больших баз поиск может занять заметное время — выполняйте его в период минимальной нагрузки.

Поиск через запрос по конкретным таблицам

Если нужно найти ссылки только в определённых документах или реквизитах, эффективнее написать запрос с условием «ГДЕ Реквизит = &Ссылка». Такой запрос работает быстрее полного сканирования, особенно если по реквизиту есть индекс. Этот вариант подходит для точечных проверок в отчётах и обработках.

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

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

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

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

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

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

Полнота списка ссылок
Норма

В списке есть документы, справочники и регистры сведений, где объект реально использовался

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

Отображаются только документы — вероятно, не проверены регистры и подчинённые справочники

Удаление объекта после замены ссылок
Норма

Обработка удаления помеченных объектов удаляет элемент без сообщений о препятствиях

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

Появляется список мешающих объектов — ссылки заменены не везде

Отчёты после удаления
Норма

Отчёты формируются без записей «Объект не найден»

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

В отчётах видны битые ссылки — объект был удалён при существующих ссылках

Часто задаваемые вопросы

Что делать, если в меню «Ещё» нет пункта «Найти ссылки»?

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

Найдёт ли поиск ссылки в движениях документов по регистрам?

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

Можно ли найти ссылки сразу на несколько объектов?

Да. Функция НайтиПоСсылкам() принимает массив ссылок и возвращает по ним общую таблицу. Обработка «Поиск и удаление дублей» также работает сразу с группами элементов. Это удобно при массовой чистке справочника перед свёрткой или миграцией базы.

Почему объект не удаляется, хотя в документах его нет?

Скорее всего, ссылки остались в регистрах сведений (штрихкоды, ответственные лица, настройки), в подчинённых справочниках или в непроведённых документах. Запустите «Удаление помеченных объектов» в выборочном режиме — обработка покажет точный список объектов, блокирующих удаление.

Опасно ли удалять объекты с «битыми» ссылками?

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

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

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

Итог

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

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