Ссылка есть, документа не видно: где искать объект в базе 1С 8.3

· 10 мин

Содержание

Быстрее всего найти объект по ссылке в 1С так: скопируйте навигационную ссылку вида e1cib/data/Документ.РеализацияТоваровУслуг?ref=..., откройте в главном меню программы команду «Перейти по ссылке», вставьте строку и нажмите «Перейти». Документ или элемент справочника откроется сразу, без поиска по спискам.

Если на руках не навигационная ссылка, а голый идентификатор (GUID), строка <Объект не найден> или только имя объекта из сообщения об ошибке, выбор другой. Пользователю хватит «Все функции» и поиска в списке. Администратору — журнала регистрации. Разработчику — запроса или пары строк кода, которые находят ссылку по УИД во всех справочниках и документах сразу. Всё ниже относится к платформе 1С:Предприятие 8.3 и одинаково работает в БП 3.0, ЗУП 3.1, УТ 11 и других типовых конфигурациях.

Что такое ссылка на объект 1С и из чего она состоит

У каждого документа, элемента справочника, плана видов характеристик, бизнес-процесса и задачи есть ссылка. Это не номер и не наименование, а внутренний идентификатор: тип объекта плюс 128-битный уникальный идентификатор (UUID). Номер можно поменять, наименование тоже, ссылка остаётся прежней всю жизнь объекта.

Встречается ссылка в трёх видах:

  • 🔗 Навигационная ссылка — e1cib/data/Справочник.Контрагенты?ref=8ca0000d8843cd1b11dc8d4b6ef1d5b0. Её копируют из формы объекта и пересылают коллеге.
  • 🧩 УИД (GUID) — 6ef1d5b0-8d4b-11dc-8ca0-000d8843cd1b. Его выдаёт метод УникальныйИдентификатор(), он же фигурирует в файлах обмена.
  • ❌ Битая ссылка — в поле формы вместо названия видно <Объект не найден> (45:8ca0000d8843cd1b11dc8d4b6ef1d5b0). Число до двоеточия — внутренний номер типа (таблицы), дальше 32 шестнадцатеричных символа самой ссылки.

Шестнадцатеричная строка в навигационной ссылке и УИД — одно и то же значение, но байты в них переставлены. Если просто вставить ref в поле поиска как GUID, ничего не найдётся. Как переводить одно в другое, показано в разделе про запросы.

Навигационная ссылка привязана к информационной базе, а не к серверу. Ссылка из рабочей базы откроет тот же объект в её копии (выгрузка .dt, тестовая база), если объект там есть. Ссылка из другой организации или другой конфигурации ничего не откроет.

Переход по навигационной ссылке в интерфейсе 1С

Это основной способ для пользователя: никакого кода и прав администратора не нужно, только право просмотра объекта.

Как получить ссылку на объект

  1. Откройте документ или элемент справочника.
  2. В заголовке формы нажмите значок в виде звена цепочки («Получить ссылку»).
  3. В окне выделится строка e1cib/data/.... Скопируйте её и отправьте коллеге в почту или мессенджер.

Так же копируется ссылка на список (e1cib/list/Документ.ПоступлениеТоваровУслуг), отчёт или обработку (e1cib/app/...). Это удобно, когда в инструкции нужно показать, куда именно идти.

Как перейти по ссылке

  1. Нажмите кнопку главного меню в левом верхнем углу окна программы.
  2. Выберите «Перейти по ссылке».
  3. Вставьте строку e1cib/... и нажмите «Перейти».

В веб-клиенте ссылку можно вставить прямо в адресную строку браузера после адреса публикации и символа #:

https://server/buh/ru_RU/#e1cib/data/Документ.РеализацияТоваровУслуг?ref=8ca0000d8843cd1b11dc8d4b6ef1d5b0

Если программа сообщает, что объект не найден, причин три: ссылку скопировали из другой базы, объект удалили (не пометили, а именно удалили), или у вас нет прав на этот вид документов. Права проверяет администратор в профиле групп доступа пользователя.

Поиск объекта через «Все функции»

«Все функции» показывает дерево всех объектов конфигурации, в том числе тех, которых нет в разделах меню. Через него открывают список любого справочника или документа, регистры, константы и стандартные обработки платформы.

Как включить «Все функции»

  1. Главное меню → «Сервис» → «Параметры».
  2. Установите флажок «Отображать команду “Все функции”».
  3. Нажмите «Применить». Команда появится в главном меню.

Что делать дальше

Если известен тип объекта (он виден в навигационной ссылке после data/), откройте в «Все функции» ветку Документы или Справочники, выберите вид объекта и найдите объект в списке по номеру, дате или контрагенту через строку поиска.

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

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

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

Разработчику и администратору чаще всего достаётся не навигационная ссылка, а GUID из лога, файла обмена или сообщения об ошибке. Здесь помогает встроенный язык.

Перевод ref из навигационной ссылки в УИД

В строке ref из 32 символов сначала идут 4-я и 5-я группы UUID, потом 3-я, 2-я и 1-я. Функция ниже собирает их в правильном порядке:

Функция УИДИзНавигационнойСсылки(Ref)
	Возврат Новый УникальныйИдентификатор(
		Сред(Ref, 25, 8) + "-" + Сред(Ref, 21, 4) + "-"
		+ Сред(Ref, 17, 4) + "-" + Сред(Ref, 1, 4) + "-" + Сред(Ref, 5, 12));
КонецФункции

Проверка на примере: из 8ca0000d8843cd1b11dc8d4b6ef1d5b0 получится 6ef1d5b0-8d4b-11dc-8ca0-000d8843cd1b. Тот же порядок действует и для хвоста строки <Объект не найден> (45:...).

Обратное действие — ПолучитьНавигационнуюСсылку(Ссылка): функция вернёт готовую строку e1cib/data/... для любого объекта.

Ссылка по УИД, когда тип известен

УИД = Новый УникальныйИдентификатор("6ef1d5b0-8d4b-11dc-8ca0-000d8843cd1b");
Ссылка = Справочники.Контрагенты.ПолучитьСсылку(УИД);
Если Ссылка.ПолучитьОбъект() = Неопределено Тогда
	Сообщить("Объекта с таким УИД в справочнике нет");
Иначе
	Сообщить(Ссылка.Наименование);
КонецЕсли;

ПолучитьСсылку() не проверяет, существует ли объект: она лишь собирает ссылку нужного типа. Проверку делает ПолучитьОбъект(), который для несуществующего объекта возвращает Неопределено.

Поиск по УИД во всех справочниках и документах

Когда тип неизвестен, перебираем все справочники и документы конфигурации. Код запускают на сервере, например во внешней обработке или в консоли кода:

&НаСервере
Функция НайтиПоУИД(СтрокаУИД)
	УИД = Новый УникальныйИдентификатор(СтрокаУИД);
	Найдено = Новый Массив;
	Для Каждого ОбъектМД Из Метаданные.Справочники Цикл
		Ссылка = Справочники[ОбъектМД.Имя].ПолучитьСсылку(УИД);
		Если Ссылка.ПолучитьОбъект() <> Неопределено Тогда
			Найдено.Добавить(ПолучитьНавигационнуюСсылку(Ссылка));
		КонецЕсли;
	КонецЦикла;
	Для Каждого ОбъектМД Из Метаданные.Документы Цикл
		Ссылка = Документы[ОбъектМД.Имя].ПолучитьСсылку(УИД);
		Если Ссылка.ПолучитьОбъект() <> Неопределено Тогда
			Найдено.Добавить(ПолучитьНавигационнуюСсылку(Ссылка));
		КонецЕсли;
	КонецЦикла;
	Возврат Найдено;
КонецФункции

Функция вернёт массив навигационных ссылок: любую из них вставляют в «Перейти по ссылке». В типовой БП это несколько сотен коротких обращений к базе, на файловой базе — секунды.

Где используется ссылка: НайтиПоСсылкам

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

Колонка Данные — объект или запись регистра, где встретилась ссылка, Метаданные — его вид. На больших базах функция работает долго: она проверяет все таблицы, где тип ссылки может встретиться.

Запрос, который находит битые ссылки

Пример для поля «Контрагент» в реализациях. Разыменование несуществующего объекта даёт NULL, на этом и строится отбор:

ВЫБРАТЬ
	Р.Ссылка КАК Документ,
	Р.Контрагент КАК БитаяСсылка
ИЗ
	Документ.РеализацияТоваровУслуг КАК Р
ГДЕ
	Р.Контрагент <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
	И Р.Контрагент.Наименование ЕСТЬ NULL

Условие с пустой ссылкой нужно, иначе в результат попадут документы с незаполненным полем: у пустой ссылки наименование тоже NULL.

Журнал регистрации: кто и когда работал с объектом

Журнал не найдёт объект, которого нет, зато покажет, что с ним происходило: кто создал, изменил, провёл, пометил на удаление или удалил.

  1. Откройте журнал: Администрирование → Обслуживание, раздел протоколов работы, или «Все функции» → Стандартные → Журнал регистрации.
  2. Нажмите «Установить отбор».
  3. В поле «Данные» выберите объект. Если он уже удалён, выбрать его нельзя: отберите события по виду «Данные. Удаление» и метаданным нужного документа, а затем ищите по колонке «Представление данных» — там остаётся номер и дата.
  4. Сузьте период до нескольких дней: на базе с годами истории журнал без отбора открывается долго.

Журнал хранит только то, что разрешено уровнем регистрации событий. Если в настройках журнала включены одни ошибки, истории изменений не будет.

Внешние обработки и расширения для поиска

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

  • 🧰 Консоль запросов. Внешняя обработка, которую открывают через Файл → Открыть. В неё вставляют запросы из раздела выше, а параметр типа «УникальныйИдентификатор» задают строкой.
  • 🧩 Своя внешняя обработка. Форма с одним полем для GUID или навигационной ссылки и кнопкой «Найти», внутри — функции УИДИзНавигационнойСсылки и НайтиПоУИД. Её можно подключить в справочник дополнительных обработок, чтобы запускать без Файл → Открыть.
  • 🔧 Расширение конфигурации . Если команда нужна всем, добавьте её расширением в рабочую зону администратора. Типовая конфигурация при этом не снимается с поддержки.

Открыть внешнюю обработку из файла может только пользователь с правом интерактивного открытия внешних обработок. Обычно его дают лишь администраторам: файл .epf выполняет произвольный код в вашей базе. Чужие обработки из интернета перед запуском открывайте в Конфигураторе и читайте модуль.

Поиск по ссылке в обмене данными

В обменах между базами 1С объект опознаётся по УИД. Если документ пришёл из другой базы, его ссылка в приёмнике обычно совпадает со ссылкой в источнике: правила обмена создают объект с тем же идентификатором. Тогда навигационная ссылка из одной базы откроет тот же документ в другой.

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

Порядок поиска объекта из файла обмена:

  1. Найдите в XML нужный объект и его идентификатор (в формате EnterpriseData это узел Ссылка внутри ключевых свойств).
  2. Проверьте, есть ли в приёмнике объект с этим УИД, функцией НайтиПоУИД.
  3. Если нет — ищите УИД источника в регистре соответствий.
  4. Если нет и там — объект в приёмник не загружался. Причину ищите в протоколе обмена, а не в данных.
Сопоставление полей
УИД в файле обмена→Ссылка объекта в приёмнике (если объект создан обменом)
УИД источника в регистре соответствий→Сопоставленный объект приёмника
Номер и дата документа→Поиск в списке, если УИД не совпал

Объект не открывается или удалён: причины и восстановление

Пометка на удаление и удаление — разные вещи. Помеченный объект на месте: в списке он перечёркнут, клавиша Delete на нём предлагает снять пометку. Удалённый объект из базы исчез, а ссылки на него в других документах превратились в <Объект не найден>.

Диагностика: выберите симптом

Как вернуть удалённый объект

  1. Найдите резервную копию, сделанную до удаления. Дату удаления подскажет журнал регистрации.
  2. Разверните копию как отдельную базу: не загружайте .dt поверх рабочей базы — потеряете всё, что введено после копии.
  3. В копии найдите объект по УИД или по номеру и дате.
  4. Выгрузите его в XML универсальной обработкой выгрузки и загрузки данных. Она сохраняет ссылку объекта.
  5. Загрузите файл в рабочую базу. Ссылки <Объект не найден> в документах снова покажут название, потому что УИД совпал.
  6. Перепроведите документы, которые зависели от восстановленного объекта, если в нём есть движения.

Если копии нет, остаётся Конфигуратор: Администрирование → Тестирование и исправление, флажки проверки логической и ссылочной целостности. Для ссылок на несуществующие объекты выберите вариант «Создавать объекты». Программа создаст пустые объекты-заглушки с нужными ссылками, и данные в них придётся заполнить вручную. Вариант с удалением ссылок уничтожает связь безвозвратно.

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

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

Совпадают ли ссылки на один и тот же документ в двух разных базах?
Только если документ попал во вторую базу обменом или выгрузкой с сохранением УИД. Документы, введённые вручную в каждой базе, имеют разные ссылки, даже при одинаковых номерах.
Меняется ли ссылка при перепроведении, изменении номера или копировании документа?
При перепроведении и смене номера — нет. Копия, созданная командой «Скопировать», получает новую ссылку: это отдельный объект.
Можно ли найти по ссылке запись регистра сведений?
Ссылки есть только у ссылочных объектов: справочников, документов, планов видов характеристик, счетов, обменов, бизнес-процессов и задач. Запись регистра ищут по измерениям через отбор списка регистра в «Все функции».
Работает ли навигационная ссылка после обновления конфигурации?
Да, если объект метаданных не переименовали. Имя вида объекта входит в ссылку, поэтому после переименования документа в конфигурации старые ссылки перестают открываться.
Как отправить ссылку на документ человеку без доступа к базе?
Никак: навигационная ссылка открывает объект только внутри базы и только с правами пользователя. Человеку без доступа отправляют печатную форму или выгрузку в файл.