Связи объектов в 1С 8.3: где их увидеть разработчику и пользователю
Содержание
Посмотреть связи в 1С можно на двух уровнях. В Конфигураторе — щёлкните правой кнопкой по объекту метаданных и выберите Поиск ссылок на объект: платформа покажет все реквизиты, регистры, формы и подписки, которые на него завязаны. В режиме Предприятия — откройте документ или элемент справочника, в меню Ещё выберите Места использования или Структура подчиненности, и увидите конкретные записи базы, которые на него ссылаются.
Типичная ситуация: бухгалтер хочет удалить задвоенного контрагента , а программа не даёт — «на объект есть ссылки». Или разработчик меняет тип реквизита и боится сломать отчёты. В обоих случаях нужен анализ зависимостей, только инструменты разные: для метаданных одни, для записей базы другие.
| Что нужно узнать | Где смотреть | Режим |
|---|---|---|
| Какие объекты конфигурации используют справочник или документ | Поиск ссылок на объект | Конфигуратор |
| Полная картина типов и реквизитов | Конфигурация → Отчет по конфигурации | Конфигуратор |
| Какие документы введены на основании текущего | Структура подчиненности | Предприятие |
| Где в базе используется конкретный элемент | Места использования | Предприятие |
| Массовый поиск ссылок кодом | функция НайтиПоСсылкам() | Обработка, консоль |
| Битые ссылки «Объект не найден» | Тестирование и исправление | Конфигуратор |
Связи в метаданных: поиск ссылок в Конфигураторе
Конфигуратор хранит связи между объектами через типы реквизитов. Если у документа РеализацияТоваровУслуг есть реквизит с типом СправочникСсылка.Контрагенты, это и есть связь. Платформа умеет собирать такие связи сама.
Поиск ссылок на объект
- Откройте базу в режиме Конфигуратора и раскройте дерево конфигурации.
- Найдите нужный объект, например справочник
Номенклатура. - Щёлкните по нему правой кнопкой мыши и выберите
Поиск ссылок на объект. - Результат появится в отдельной панели: список объектов метаданных с указанием, где именно используется ссылка.
Двойной щелчок по строке результата переводит к месту использования в дереве. Так видно не только реквизиты документов, но и измерения регистров, параметры команд, источники подписок на события, состав подсистем.
💡 Поиск работает и для отдельного реквизита. Кликните правой кнопкой по реквизиту — получите список форм и макетов, где он выведен.
Свойства, которые прямо задают связи
Поиск ссылок показывает не всё. Часть зависимостей описана в свойствах объектов, и смотреть их нужно вручную:
- 🔗 Владельцы у подчинённого справочника. Например, договоры подчинены контрагентам.
- 📑 Движения на вкладке «Движения» документа и Регистраторы у регистра — какие документы пишут в какой регистр.
- 🎯 Связи параметров выбора и Связь по владельцу у реквизита формы или объекта — от чего зависит список выбора.
- 🔔 Подписки на события в ветке
Общие— свойство «Источник» показывает, на какие объекты подписан обработчик. - ⚙️ Функциональные опции — включают или скрывают реквизиты целиком.
- 📋 Критерии отбора — на их основе в карточке строятся списки «связанных документов».
Связи в программном коде
Тип реквизита — не единственный способ связать объекты. Модули обращаются друг к другу по имени: Справочники.Номенклатура.НайтиПоКоду(...). Такие связи поиск ссылок не покажет. Для них используйте глобальный поиск по тексту всех модулей конфигурации в меню Правка Конфигуратора и ищите имя объекта.
Перед удалением или переименованием объекта метаданных проверьте и поиск ссылок, и поиск по тексту модулей. Ссылка из кода найдётся только при синтаксическом контроле или уже в работе у пользователя.
Наглядная схема зависимостей: отчёты и деревья
Встроенного редактора ER-диаграмм в Конфигураторе нет. Картинку «справочник — документ — регистр» платформа не рисует. Зато есть способы получить обозримую картину.
Отчёт по конфигурации
Пункт Конфигурация → Отчет по конфигурации выгружает описание объектов в текстовый документ. Отметьте нужные ветки и свойства — для анализа связей достаточно реквизитов с типами, табличных частей, измерений регистров и регистраторов.
Полученный текст удобно сохранить и искать в нём по имени объекта. Это быстрый способ ответить на вопрос «где ещё используется тип СправочникСсылка.Склады», особенно когда нужно передать список коллеге без доступа к Конфигуратору.
Структура подчиненности документа
Для пользователя самая наглядная схема — дерево связанных документов. Откройте документ, например счёт покупателю, и в меню Ещё выберите Структура подчиненности. Откроется дерево: что введено на основании (реализация, счёт-фактура, поступление оплаты) и на основании чего введён сам документ.
Из дерева можно открыть любой документ двойным щелчком. Это лучший способ разобраться в цепочке «заказ → отгрузка → оплата → возврат».
Сторонние инструменты
Для схем на уровне всей конфигурации разработчики используют обработки визуализации метаданных и выгрузку конфигурации в файлы с последующим разбором. В 1С:EDT объекты хранятся в виде файлов, и связи удобно искать средствами среды разработки. Выбирайте инструмент из проверенного источника и запускайте сначала на копии базы.
Как посмотреть связи конкретной записи в режиме Предприятия
Метаданные говорят, где ссылка может быть. Чтобы узнать, где она есть у конкретного контрагента или товара, нужен режим Предприятия.
Места использования
В типовых конфигурациях на базе БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11 и другие) есть отчёт «Места использования».
- Откройте карточку элемента или выделите его в списке.
- Нажмите
Ещёв командной панели. - Выберите
Места использования. - Отчёт покажет все документы, элементы справочников и записи регистров, где встречается ссылка.
Отчёт строится полным перебором таблиц. На большой базе он может работать минуты — это нормально.
Панель навигации карточки
В карточке контрагента, сотрудника или номенклатуры сверху есть ссылки на связанные списки: договоры, банковские счета, контактные лица, документы. Они построены через подчинение справочников и критерии отбора. Это быстрый, но неполный взгляд: в панель попадает только то, что разработчик туда вывел.
Отбор в списке документов
Для простых вопросов хватает отбора. Откройте журнал документов и в строке поиска или в отборе списка задайте контрагента либо договор. Так видно все документы по одному участнику, но только одного вида или журнала.
Запросы и обработки для анализа зависимостей
Когда стандартных отчётов мало, нужен свой запрос или обработка. Оба варианта работают без изменения конфигурации.
Консоль запросов
Консоль запросов — внешняя обработка для разработчиков. Она позволяет выполнить произвольный запрос на чтение. Пример: все реализации по одному контрагенту в Бухгалтерии 3.0.
ВЫБРАТЬ
Реализация.Ссылка КАК Документ,
Реализация.Дата КАК Дата,
Реализация.СуммаДокумента КАК Сумма
ИЗ
Документ.РеализацияТоваровУслуг КАК Реализация
ГДЕ
Реализация.Контрагент = &Контрагент
УПОРЯДОЧИТЬ ПО
Дата
Параметр &Контрагент задаётся в консоли выбором из справочника. Запрос подходит, когда вы знаете, в какой таблице искать.
Функция НайтиПоСсылкам
Если таблица неизвестна, используйте платформенную функцию НайтиПоСсылкам(). Она принимает массив ссылок и возвращает таблицу значений с колонками Ссылка, Данные и Метаданные. Функция доступна на сервере, поэтому во внешней обработке вызывайте её из процедуры с директивой &НаСервере.
&НаСервере
Процедура НайтиСвязиНаСервере(ИскомаяСсылка)
МассивСсылок = Новый Массив;
МассивСсылок.Добавить(ИскомаяСсылка);
Найденные = НайтиПоСсылкам(МассивСсылок);
Для Каждого СтрокаТаблицы Из Найденные Цикл
Сообщить(СтрокаТаблицы.Метаданные.ПолноеИмя() + ": " + Строка(СтрокаТаблицы.Данные));
КонецЦикла;
Сообщить("Всего найдено: " + Формат(Найденные.Количество(), "ЧН=0; ЧГ=0"));
КонецПроцедуры
Процедура выведет полное имя объекта метаданных и представление каждой записи, где встречается ссылка. По сути это то же, что делает отчёт «Места использования», только результат можно обработать дальше: выгрузить в таблицу, отфильтровать, посчитать.
💡 Передавайте в массив сразу несколько ссылок — например, все дубли контрагента. Один проход по базе быстрее нескольких.
Поиск и удаление дублей
Обработка Администрирование → Обслуживание → Поиск и удаление дублей тоже работает со связями. Она находит похожие элементы, показывает места их использования и умеет заменить ссылки на оригинал во всех документах. После замены дубль можно удалить. Сделайте резервную копию перед заменой ссылок — операция меняет проведённые документы, в том числе в закрытых периодах.
Почему связи мешают удалению и как их очистить
Платформа не даст физически удалить объект, на который есть ссылки, если удаление идёт через контроль ссылочной целостности. Это главное техническое ограничение, ради которого чаще всего и смотрят связи.
Удаление помеченных объектов
Путь в Бухгалтерии 3.0, ЗУП 3.1 и УТ 11 одинаковый: Администрирование → Обслуживание → Удаление помеченных объектов.
- Запустите обработку и дождитесь окончания поиска.
- Объекты без ссылок удалятся.
- Объекты, на которые есть ссылки, останутся в списке с перечнем мест использования.
- Откройте каждое место, замените или очистите ссылку, затем повторите удаление.
Частая картина: помеченный договор не удаляется, потому что на него ссылается непомеченный документ прошлого года. Варианты — пометить на удаление и документ или перевыбрать договор в нём.
Битые ссылки
Битая ссылка — запись, которая ссылается на уже несуществующий объект. В поле она выглядит как <Объект не найден> с внутренним идентификатором в скобках. Появляется после неаккуратного удаления, сбоя обмена или прямой правки данных.
Их находит Администрирование → Тестирование и исправление в Конфигураторе с флажком «Проверка ссылочной целостности информационной базы». Для найденных битых ссылок выберите действие:
| Вариант | Что произойдёт | Когда выбирать |
|---|---|---|
| Создавать объекты | Платформа создаст пустые объекты-заглушки | Нужно сохранить движения и потом разобраться вручную |
| Очищать ссылки | Поле станет пустым | Ссылка явно мусорная |
| Не изменять | Только отчёт о найденном | Первый, диагностический прогон |
Тестирование и исправление требует монопольного доступа. Все пользователи должны выйти из базы, их несохранённые данные будут потеряны. Запускайте вне рабочего времени и только после резервной копии.
Файловая и клиент-серверная база: что меняется
Инструменты одинаковые, но поведение отличается.
Файловый вариант:
- 📁 Вся база — один файл
1Cv8.1CD. Поиск ссылок по данным идёт локально и на небольших базах быстрый. - 🛠 Для проверки физической целостности файла есть утилита
chdbfl.exeв каталогеbinплатформы. Она запускается при закрытой базе и проверяет структуру файла, а не логические связи. - ⏱ Тяжёлый отчёт «Места использования» заметно тормозит работу остальных пользователей.
Клиент-серверный вариант:
- 🖥
НайтиПоСсылкам()и отчёты выполняются на сервере 1С и нагружают СУБД. На базе в сотни гигабайт поиск по всем таблицам занимает долгое время. - 🗄 Ссылки в таблицах СУБД хранятся как двоичные идентификаторы. Искать их SQL-запросом в обход платформы неудобно, а изменять данные напрямую в СУБД нельзя: платформа об этом не узнает, и вы получите ту же битую ссылку.
- 🔒 Тестирование и исправление по-прежнему запускается из Конфигуратора и требует, чтобы в базе не было сеансов. Перед запуском сеансы завершают через консоль администрирования кластера — предупредите пользователей заранее.
💡 На большой серверной базе сначала сузьте поиск: запрос к конкретным таблицам быстрее полного НайтиПоСсылкам(). Полный перебор оставьте для финальной проверки перед удалением.
Частые вопросы
Можно ли посмотреть связи без доступа к Конфигуратору?
Почему «Поиск ссылок на объект» не нашёл обращение из модуля?
Как увидеть связи документа с регистрами?
Влияет ли поиск ссылок на данные?
НайтиПоСсылкам() только читают базу. Меняют данные замена дублей, удаление помеченных и исправление при тестировании.