Связи объектов в 1С 8.3: где их увидеть разработчику и пользователю

· 9 мин

Содержание

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

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

Что нужно узнатьГде смотретьРежим
Какие объекты конфигурации используют справочник или документПоиск ссылок на объектКонфигуратор
Полная картина типов и реквизитовКонфигурация → Отчет по конфигурацииКонфигуратор
Какие документы введены на основании текущегоСтруктура подчиненностиПредприятие
Где в базе используется конкретный элементМеста использованияПредприятие
Массовый поиск ссылок кодомфункция НайтиПоСсылкам()Обработка, консоль
Битые ссылки «Объект не найден»Тестирование и исправлениеКонфигуратор

Связи в метаданных: поиск ссылок в Конфигураторе

Конфигуратор хранит связи между объектами через типы реквизитов. Если у документа РеализацияТоваровУслуг есть реквизит с типом СправочникСсылка.Контрагенты, это и есть связь. Платформа умеет собирать такие связи сама.

Поиск ссылок на объект

  1. Откройте базу в режиме Конфигуратора и раскройте дерево конфигурации.
  2. Найдите нужный объект, например справочник Номенклатура.
  3. Щёлкните по нему правой кнопкой мыши и выберите Поиск ссылок на объект.
  4. Результат появится в отдельной панели: список объектов метаданных с указанием, где именно используется ссылка.

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

💡 Поиск работает и для отдельного реквизита. Кликните правой кнопкой по реквизиту — получите список форм и макетов, где он выведен.

Свойства, которые прямо задают связи

Поиск ссылок показывает не всё. Часть зависимостей описана в свойствах объектов, и смотреть их нужно вручную:

  • 🔗 Владельцы у подчинённого справочника. Например, договоры подчинены контрагентам.
  • 📑 Движения на вкладке «Движения» документа и Регистраторы у регистра — какие документы пишут в какой регистр.
  • 🎯 Связи параметров выбора и Связь по владельцу у реквизита формы или объекта — от чего зависит список выбора.
  • 🔔 Подписки на события в ветке Общие — свойство «Источник» показывает, на какие объекты подписан обработчик.
  • ⚙️ Функциональные опции — включают или скрывают реквизиты целиком.
  • 📋 Критерии отбора — на их основе в карточке строятся списки «связанных документов».

Связи в программном коде

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

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

Наглядная схема зависимостей: отчёты и деревья

Встроенного редактора ER-диаграмм в Конфигураторе нет. Картинку «справочник — документ — регистр» платформа не рисует. Зато есть способы получить обозримую картину.

Отчёт по конфигурации

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

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

Структура подчиненности документа

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

Из дерева можно открыть любой документ двойным щелчком. Это лучший способ разобраться в цепочке «заказ → отгрузка → оплата → возврат».

Сторонние инструменты

Для схем на уровне всей конфигурации разработчики используют обработки визуализации метаданных и выгрузку конфигурации в файлы с последующим разбором. В 1С:EDT объекты хранятся в виде файлов, и связи удобно искать средствами среды разработки. Выбирайте инструмент из проверенного источника и запускайте сначала на копии базы.

Как посмотреть связи конкретной записи в режиме Предприятия

Метаданные говорят, где ссылка может быть. Чтобы узнать, где она есть у конкретного контрагента или товара, нужен режим Предприятия.

Места использования

В типовых конфигурациях на базе БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11 и другие) есть отчёт «Места использования».

  1. Откройте карточку элемента или выделите его в списке.
  2. Нажмите Ещё в командной панели.
  3. Выберите Места использования.
  4. Отчёт покажет все документы, элементы справочников и записи регистров, где встречается ссылка.

Отчёт строится полным перебором таблиц. На большой базе он может работать минуты — это нормально.

Панель навигации карточки

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

Отбор в списке документов

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

Что вам нужно найти?

Запросы и обработки для анализа зависимостей

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

Консоль запросов

Консоль запросов — внешняя обработка для разработчиков. Она позволяет выполнить произвольный запрос на чтение. Пример: все реализации по одному контрагенту в Бухгалтерии 3.0.

ВЫБРАТЬ
    Реализация.Ссылка КАК Документ,
    Реализация.Дата КАК Дата,
    Реализация.СуммаДокумента КАК Сумма
ИЗ
    Документ.РеализацияТоваровУслуг КАК Реализация
ГДЕ
    Реализация.Контрагент = &Контрагент
УПОРЯДОЧИТЬ ПО
    Дата

Параметр &Контрагент задаётся в консоли выбором из справочника. Запрос подходит, когда вы знаете, в какой таблице искать.

Функция НайтиПоСсылкам

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

&НаСервере
Процедура НайтиСвязиНаСервере(ИскомаяСсылка)

    МассивСсылок = Новый Массив;
    МассивСсылок.Добавить(ИскомаяСсылка);

    Найденные = НайтиПоСсылкам(МассивСсылок);

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

    Сообщить("Всего найдено: " + Формат(Найденные.Количество(), "ЧН=0; ЧГ=0"));

КонецПроцедуры

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

💡 Передавайте в массив сразу несколько ссылок — например, все дубли контрагента. Один проход по базе быстрее нескольких.

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

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

Почему связи мешают удалению и как их очистить

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

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

Путь в Бухгалтерии 3.0, ЗУП 3.1 и УТ 11 одинаковый: Администрирование → Обслуживание → Удаление помеченных объектов.

  1. Запустите обработку и дождитесь окончания поиска.
  2. Объекты без ссылок удалятся.
  3. Объекты, на которые есть ссылки, останутся в списке с перечнем мест использования.
  4. Откройте каждое место, замените или очистите ссылку, затем повторите удаление.

Частая картина: помеченный договор не удаляется, потому что на него ссылается непомеченный документ прошлого года. Варианты — пометить на удаление и документ или перевыбрать договор в нём.

Битые ссылки

Битая ссылка — запись, которая ссылается на уже несуществующий объект. В поле она выглядит как <Объект не найден> с внутренним идентификатором в скобках. Появляется после неаккуратного удаления, сбоя обмена или прямой правки данных.

Их находит Администрирование → Тестирование и исправление в Конфигураторе с флажком «Проверка ссылочной целостности информационной базы». Для найденных битых ссылок выберите действие:

ВариантЧто произойдётКогда выбирать
Создавать объектыПлатформа создаст пустые объекты-заглушкиНужно сохранить движения и потом разобраться вручную
Очищать ссылкиПоле станет пустымСсылка явно мусорная
Не изменятьТолько отчёт о найденномПервый, диагностический прогон

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

Файловая и клиент-серверная база: что меняется

Инструменты одинаковые, но поведение отличается.

Файловый вариант:

  • 📁 Вся база — один файл 1Cv8.1CD. Поиск ссылок по данным идёт локально и на небольших базах быстрый.
  • 🛠 Для проверки физической целостности файла есть утилита chdbfl.exe в каталоге bin платформы. Она запускается при закрытой базе и проверяет структуру файла, а не логические связи.
  • ⏱ Тяжёлый отчёт «Места использования» заметно тормозит работу остальных пользователей.

Клиент-серверный вариант:

  • 🖥 НайтиПоСсылкам() и отчёты выполняются на сервере 1С и нагружают СУБД. На базе в сотни гигабайт поиск по всем таблицам занимает долгое время.
  • 🗄 Ссылки в таблицах СУБД хранятся как двоичные идентификаторы. Искать их SQL-запросом в обход платформы неудобно, а изменять данные напрямую в СУБД нельзя: платформа об этом не узнает, и вы получите ту же битую ссылку.
  • 🔒 Тестирование и исправление по-прежнему запускается из Конфигуратора и требует, чтобы в базе не было сеансов. Перед запуском сеансы завершают через консоль администрирования кластера — предупредите пользователей заранее.

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

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

Можно ли посмотреть связи без доступа к Конфигуратору?
Да, на уровне данных. «Места использования», «Структура подчиненности» и обработка удаления помеченных работают в режиме Предприятия. Связи метаданных без Конфигуратора не увидеть.
Почему «Поиск ссылок на объект» не нашёл обращение из модуля?
Он ищет связи через типы и свойства метаданных. Обращения по имени в коде находит только поиск по тексту модулей.
Как увидеть связи документа с регистрами?
В Конфигураторе — вкладка «Движения» документа. В Предприятии — команда просмотра движений документа (кнопка «ДтКт» в Бухгалтерии) показывает записи регистров по нему.
Влияет ли поиск ссылок на данные?
Нет. Поиск ссылок, «Места использования» и НайтиПоСсылкам() только читают базу. Меняют данные замена дублей, удаление помеченных и исправление при тестировании.
Почему удаление помеченных не находит ссылку, которую я вижу?
Если ссылка хранится в строке без типа или в реквизите типа «Строка», платформа не считает её ссылкой. Такие места ищут запросом по тексту.