Ссылка есть, документа не видно: где искать объект в базе 1С 8.3
Содержание
Быстрее всего найти объект по ссылке в 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С
Это основной способ для пользователя: никакого кода и прав администратора не нужно, только право просмотра объекта.
Как получить ссылку на объект
- Откройте документ или элемент справочника.
- В заголовке формы нажмите значок в виде звена цепочки («Получить ссылку»).
- В окне выделится строка
e1cib/data/.... Скопируйте её и отправьте коллеге в почту или мессенджер.
Так же копируется ссылка на список (e1cib/list/Документ.ПоступлениеТоваровУслуг), отчёт или обработку (e1cib/app/...). Это удобно, когда в инструкции нужно показать, куда именно идти.
Как перейти по ссылке
- Нажмите кнопку главного меню в левом верхнем углу окна программы.
- Выберите «Перейти по ссылке».
- Вставьте строку
e1cib/...и нажмите «Перейти».
В веб-клиенте ссылку можно вставить прямо в адресную строку браузера после адреса публикации и символа #:
https://server/buh/ru_RU/#e1cib/data/Документ.РеализацияТоваровУслуг?ref=8ca0000d8843cd1b11dc8d4b6ef1d5b0
Если программа сообщает, что объект не найден, причин три: ссылку скопировали из другой базы, объект удалили (не пометили, а именно удалили), или у вас нет прав на этот вид документов. Права проверяет администратор в профиле групп доступа пользователя.
Поиск объекта через «Все функции»
«Все функции» показывает дерево всех объектов конфигурации, в том числе тех, которых нет в разделах меню. Через него открывают список любого справочника или документа, регистры, константы и стандартные обработки платформы.
Как включить «Все функции»
- Главное меню → «Сервис» → «Параметры».
- Установите флажок «Отображать команду “Все функции”».
- Нажмите «Применить». Команда появится в главном меню.
Что делать дальше
Если известен тип объекта (он виден в навигационной ссылке после 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.
Журнал регистрации: кто и когда работал с объектом
Журнал не найдёт объект, которого нет, зато покажет, что с ним происходило: кто создал, изменил, провёл, пометил на удаление или удалил.
- Откройте журнал:
Администрирование → Обслуживание, раздел протоколов работы, или «Все функции» →Стандартные → Журнал регистрации. - Нажмите «Установить отбор».
- В поле «Данные» выберите объект. Если он уже удалён, выбрать его нельзя: отберите события по виду «Данные. Удаление» и метаданным нужного документа, а затем ищите по колонке «Представление данных» — там остаётся номер и дата.
- Сузьте период до нескольких дней: на базе с годами истории журнал без отбора открывается долго.
Журнал хранит только то, что разрешено уровнем регистрации событий. Если в настройках журнала включены одни ошибки, истории изменений не будет.
Внешние обработки и расширения для поиска
Когда поиск нужен регулярно, разовый код удобнее превратить в инструмент.
- 🧰 Консоль запросов. Внешняя обработка, которую открывают через
Файл → Открыть. В неё вставляют запросы из раздела выше, а параметр типа «УникальныйИдентификатор» задают строкой. - 🧩 Своя внешняя обработка. Форма с одним полем для GUID или навигационной ссылки и кнопкой «Найти», внутри — функции
УИДИзНавигационнойСсылкииНайтиПоУИД. Её можно подключить в справочник дополнительных обработок, чтобы запускать безФайл → Открыть. - 🔧 Расширение конфигурации . Если команда нужна всем, добавьте её расширением в рабочую зону администратора. Типовая конфигурация при этом не снимается с поддержки.
Открыть внешнюю обработку
из файла может только пользователь с правом интерактивного открытия внешних обработок. Обычно его дают лишь администраторам: файл .epf выполняет произвольный код в вашей базе. Чужие обработки из интернета перед запуском открывайте в Конфигураторе и читайте модуль.
Поиск по ссылке в обмене данными
В обменах между базами 1С объект опознаётся по УИД. Если документ пришёл из другой базы, его ссылка в приёмнике обычно совпадает со ссылкой в источнике: правила обмена создают объект с тем же идентификатором. Тогда навигационная ссылка из одной базы откроет тот же документ в другой.
Совпадения нет, если объект в приёмнике уже был до настройки обмена и его сопоставили, а не создали. Сопоставления конфигурации на БСП хранят в регистре сведений «Соответствие объектов информационных баз»: открыть его можно через «Все функции» → Регистры сведений. Там видны пары «идентификатор в источнике → объект в приёмнике».
Порядок поиска объекта из файла обмена:
- Найдите в XML нужный объект и его идентификатор (в формате EnterpriseData это узел
Ссылкавнутри ключевых свойств). - Проверьте, есть ли в приёмнике объект с этим УИД, функцией
НайтиПоУИД. - Если нет — ищите УИД источника в регистре соответствий.
- Если нет и там — объект в приёмник не загружался. Причину ищите в протоколе обмена, а не в данных.
Объект не открывается или удалён: причины и восстановление
Пометка на удаление и удаление — разные вещи. Помеченный объект на месте: в списке он перечёркнут, клавиша Delete на нём предлагает снять пометку. Удалённый объект из базы исчез, а ссылки на него в других документах превратились в <Объект не найден>.
Как вернуть удалённый объект
- Найдите резервную копию, сделанную до удаления. Дату удаления подскажет журнал регистрации.
- Разверните копию как отдельную базу: не загружайте
.dtповерх рабочей базы — потеряете всё, что введено после копии. - В копии найдите объект по УИД или по номеру и дате.
- Выгрузите его в XML универсальной обработкой выгрузки и загрузки данных. Она сохраняет ссылку объекта.
- Загрузите файл в рабочую базу. Ссылки
<Объект не найден>в документах снова покажут название, потому что УИД совпал. - Перепроведите документы, которые зависели от восстановленного объекта, если в нём есть движения.
Если копии нет, остаётся Конфигуратор: Администрирование → Тестирование и исправление, флажки проверки логической и ссылочной целостности. Для ссылок на несуществующие объекты выберите вариант «Создавать объекты». Программа создаст пустые объекты-заглушки с нужными ссылками, и данные в них придётся заполнить вручную. Вариант с удалением ссылок уничтожает связь безвозвратно.
Тестирование и исправление требует монопольного доступа: всех пользователей придётся вывести из базы, их сеансы оборвутся. Запускайте его вечером или в выходной, после свежей резервной копии.