Администрирование · 11 мин
Как проверить ссылки на объект в 1С
Как проверить ссылки на объект в 1С: обработка «Поиск ссылок на объекты», пометка на удаление, функция НайтиСсылки и проверка перед удалением данных.
Проверка ссылок на объект — стандартная задача при чистке базы 1С: перед удалением контрагента, номенклатуры или документа нужно убедиться, что на него нигде не ссылаются другие объекты. Если удалить элемент, на который есть ссылки, в базе появятся «битые ссылки» — записи вида «Объект не найден», которые ломают отчёты, проведение документов и обмены данными.
В типовых конфигурациях на платформе 1С:Предприятие 8.3 есть штатные инструменты для такой проверки: обработка «Поиск ссылок на объекты», механизм пометки на удаление с контролем ссылочной целостности и встроенная функция НайтиСсылки() для разработчиков. Ниже разобраны все три способа с конкретными шагами и ограничениями.
Проверка занимает от нескольких секунд на небольшой базе до десятков минут на крупной: время зависит от объёма данных и количества проверяемых объектов. Перед массовыми операциями с удалением обязательно сделайте резервную копию базы.
Когда нужна проверка ссылок на объект
Типичная ситуация — задвоение справочников. После обменов с другими системами в базе появляются дубли контрагентов, номенклатуры, договоров. Прежде чем удалить лишний элемент, нужно узнать, используется ли он в документах, регистрах и других справочниках. Если ссылок нет — объект можно удалять безопасно.
Вторая ситуация — регламентная чистка базы. Устаревшие элементы (закрытые договоры, снятая с производства номенклатура) накапливаются и мешают работе. Проверка ссылок показывает, какие объекты действительно «мертвые», а какие всё ещё задействованы в учёте.
Третья ситуация — диагностика ошибок «Объект не найден». Если в отчёте или документе вы видите надпись вида «<Объект не найден> (77:8b9a...)», значит в базе есть ссылка на уже удалённый объект. Поиск таких ссылок помогает найти и исправить все места, где остались битые данные.
Проверка через обработку «Поиск ссылок на объекты»
Обработка «Поиск ссылок на объекты» встроена в подсистему БСП (Библиотека стандартных подсистем) и доступна в большинстве типовых конфигураций: «Управление торговлей», «Бухгалтерия предприятия», «ERP», «Зарплата и управление персоналом». В пользовательском интерфейсе она часто находится в разделе «Администрирование» → «Обслуживание» или «НСИ и администрирование» → «Поддержка и обслуживание».
Если в меню обработки нет, откройте её через «Все функции»: нажмите кнопку главного меню (или Shift+Ctrl+F в тонком клиенте), выберите «Все функции», в дереве раскройте «Обработки» и найдите «Поиск ссылок на объекты». Для доступа к «Все функциям» у пользователя должны быть права администратора или включён режим технического специалиста.
- 1Откройте обработку «Поиск ссылок на объекты» через меню или «Все функции»
- 2Нажмите «Добавить» и выберите объект, ссылки на который нужно найти — можно добавить сразу список объектов
- 3Нажмите кнопку «Найти ссылки» и дождитесь завершения поиска
- 4Изучите таблицу результатов: в ней перечислены все объекты, содержащие ссылки на проверяемый элемент
- 5Двойным щелчком откройте найденный объект и при необходимости замените или очистите ссылку
Результат поиска выводится в виде дерева: проверяемый объект → объекты, которые на него ссылаются. Для каждого найденного объекта видно, в каком именно реквизите или табличной части хранится ссылка. Это позволяет точечно перейти к месту использования и исправить данные.
Обработка ищет ссылки в справочниках, документах, планах счетов, регистрах сведений, регистрах накопления и бухгалтерии, последовательностях и задачах. Учтите: поиск по большой базе выполняется в фоне и может занять заметное время — не закрывайте сеанс до завершения.
Проверка через пометку на удаление с контролем ссылок
Второй штатный способ — использовать механизм удаления помеченных объектов. Он не только показывает ссылки, но и сразу блокирует удаление объектов, которые используются. Это самый безопасный путь: платформа сама не даст удалить объект, на который есть ссылки.
Сначала пометьте объект на удаление: в форме элемента или списка нажмите «Ещё» → «Пометить на удаление / Снять пометку». Затем откройте обработку «Удаление помеченных объектов» (раздел «Администрирование» → «Обслуживание» → «Удаление помеченных объектов») и запустите удаление в режиме «Выборочное удаление» или «Автоматическое удаление».
После проверки программа покажет два списка: объекты, которые можно удалить, и объекты, удалить которые мешают ссылки. Для каждого «заблокированного» объекта будет указано, какие именно документы и элементы на него ссылаются. Отсюда же можно перейти к найденным объектам и исправить их.
Проверка ссылок программно: функция НайтиСсылки
Для разработчиков и администраторов, работающих с конфигуратором, платформа предоставляет встроенную функцию НайтиСсылки(). Она принимает массив ссылок и возвращает таблицу значений с найденными объектами. Это удобно для пакетной проверки и автоматизации чистки данных.
МассивСсылок = Новый Массив;
МассивСсылок.Добавить(ПроверяемыйКонтрагент);
ТаблицаСсылок = НайтиСсылки(МассивСсылок);
Для Каждого Строка Из ТаблицаСсылок Цикл
Сообщить("Ссылка найдена в: " + Строка.Данные
+ " (метаданные: " + Строка.Метаданные + ")");
КонецЦикла;Таблица результата содержит три колонки: «Ссылка» (исходная проверяемая ссылка), «Данные» (объект, в котором она найдена) и «Метаданные» (объект метаданных, где расположена ссылка). По этим данным можно построить отчёт, заполнить табличную часть или выполнить автоматическую замену ссылок на корректные.
Учтите ограничение: НайтиСсылки() работает только в пределах текущей информационной базы и не ищет ссылки в присоединённых файлах и во внешних источниках. На больших объёмах вызов функции по длинному массиву ссылок может нагружать сервер — выполняйте такие проверки в фоновом задании и в нерабочее время.
Как искать битые ссылки после удаления объектов
Если объекты уже удалены некорректно и в базе появились записи «Объект не найден», проверка работает в обратную сторону: нужно найти все места, где хранятся ссылки на несуществующие объекты. Штатной кнопки «найти все битые ссылки» в типовых конфигурациях обычно нет, поэтому используют несколько подходов.
Первый подход — тестирование и исправление информационной базы (конфигуратор → «Администрирование» → «Тестирование и исправление») с включённой проверкой ссылочной целостности. В режиме «Проверка ссылочной целостности» платформа находит ссылки на несуществующие объекты; в зависимости от выбранной настройки она может очищать такие ссылки или создавать объекты-заглушки.
Второй подход — программный перебор: запросом выбираются записи регистров и реквизиты документов, где ссылка не NULL, но соединение с таблицей объекта не даёт результата. Третий подход — специализированные внешние обработки поиска битых ссылок, которые перебирают метаданные автоматически. Любой из способов на файловой базе выполняйте монопольно и после резервного копирования.
Что делать с найденными ссылками
Если ссылки найдены, есть три варианта действий. Первый — оставить объект в базе: если он используется в актуальных документах, удалять его нельзя, максимум — пометить как неиспользуемый (например, добавить в наименование пометку «не использовать» или задействовать типовой механизм недействующих элементов, если он есть в конфигурации).
Второй вариант — заменить ссылки. Когда объект является дублём, правильное решение — подменить все ссылки на дубль ссылкой на основной элемент, после чего дубль станет «чистым» и его можно удалить. В типовых конфигурациях с БСП для этого есть обработка «Поиск и удаление дублей», которая объединяет дубли автоматически с заменой ссылок.
Третий вариант — исправить данные вручную. Если ссылок немного, откройте каждый найденный объект из таблицы результатов и замените или очистите реквизит. После исправления повторите поиск: он должен вернуть пустой результат — это признак того, что объект готов к удалению.
Как выбрать действие
Проверка результата и ограничения способов
Критерий успешной проверки — пустой список найденных ссылок при повторном запуске поиска. Перед финальным удалением объекта запустите проверку ещё раз после всех замен: между первой проверкой и удалением пользователи могли создать новые документы с этим объектом.
Учитывайте ограничения инструментов. Поиск ссылок не находит упоминания объекта в присоединённых файлах, внешних отчётах, сохранённых настройках и текстовых полях произвольного формата. Также стандартный поиск не проверяет другие базы, участвующие в обмене: объект может быть «чистым» в текущей базе, но использоваться в связанной.
Для баз с обменами (РИБ, обмен с сайтом, синхронизация между конфигурациями) перед удалением проверьте регистрацию изменений: удалённый в одной базе объект при обмене может вернуться обратно или создать битую ссылку в узле-корреспонденте. В таких случаях объекты обычно не удаляют, а помечают как неиспользуемые.
Что важно запомнить
Ссылки на объект проверяются обработкой «Поиск ссылок на объекты», механизмом удаления помеченных объектов или функцией НайтиСсылки(). Удалять объект можно только при пустом результате поиска, дубли объединяйте с заменой ссылок, а перед любыми массовыми операциями делайте резервную копию базы.
Частые вопросы
Почему обработка «Поиск ссылок на объекты» не отображается в меню?
Обработка доступна пользователям с правами администратора или при включённом режиме технического специалиста. Откройте её через «Все функции» → «Обработки». Если пункта нет и там, проверьте права пользователя или обратитесь к администратору базы.
Можно ли проверить ссылки сразу для списка объектов?
Да. В обработке «Поиск ссылок на объекты» добавьте несколько объектов в список — поиск выполнится по всем сразу. Функция НайтиСсылки() также принимает массив ссылок, что удобно для пакетной проверки программным способом.
Что означает надпись «Объект не найден» в документе?
Это битая ссылка: документ ссылается на объект, который был физически удалён из базы. Нужно либо восстановить объект, либо заменить ссылку на корректную, либо очистить реквизит. Найти все такие места помогает тестирование и исправление с проверкой ссылочной целостности.
Находит ли поиск ссылок упоминания в регистрах?
Да, штатный поиск охватывает регистры сведений, накопления, бухгалтерии и расчёта: если ссылка хранится в измерении, ресурсе или реквизите регистра, она будет найдена. Не проверяются присоединённые файлы и данные других информационных баз.
Опасно ли запускать проверку ссылок в рабочее время?
Сама проверка не изменяет данные и безопасна, но на больших базах она заметно нагружает сервер и может замедлить работу пользователей. Для крупных баз запускайте поиск в нерабочее время или ограничивайте его отдельными объектами.
Как удалить объект, если ссылки убрать нельзя?
Если объект используется в закрытых периодах или документах, которые нельзя изменять, удалять его нельзя — это нарушит целостность учёта. Вместо удаления пометьте элемент как неиспользуемый: добавьте пометку в наименование или используйте типовой механизм недействующих элементов, если он предусмотрен конфигурацией.