К статье
Практический материал

Справочники и Данные · 10 мин

Как сделать ссылку на справочник в 1С

Как получить ссылку на элемент справочника в 1С: копирование ссылки в интерфейсе, получение ссылки кодом, поиск по ссылке, типичные ошибки и проверка результата.

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

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

Материал ориентирован на типовые конфигурации на управляемых формах (1С:Бухгалтерия, 1С:Управление торговлей, 1С:ERP и подобные), но принципы одинаковы и для самописных решений. Отличия обычно касаются только расположения команд в меню.

Что такое ссылка на элемент справочника и зачем она нужна

Внутри базы 1С каждый элемент справочника имеет уникальный внутренний идентификатор (GUID) и на его основе — объект типа «СправочникСсылка». Именно ссылка хранится в реквизитах документов, регистров и других справочников. Наименование, код и прочие поля — это атрибуты элемента, а ссылка — его «адрес» в базе.

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

Как скопировать ссылку на элемент справочника в интерфейсе

В управляемом интерфейсе «Такси» откройте нужный элемент справочника (карточку контрагента, номенклатуры, договора). Затем нажмите кнопку «Ещё» в командной панели формы и выберите пункт «Получить ссылку» — в большинстве конфигураций доступна и комбинация клавиш Ctrl+F11. Откроется окно, где можно скопировать навигационную ссылку вида e1cib/data/Справочник.Номенклатура?ref=....

Такую ссылку можно отправить коллеге по почте или в мессенджер. Если у него есть доступ к той же базе и этому справочнику, переход по ссылке (или вставка её в команду «Ещё → Перейти по ссылке» в главном меню) откроет именно этот элемент. Это самый быстрый способ указать коллеге на конкретную карточку без словесных описаний.

В обычных (неуправляемых) формах старых конфигураций прямой команды «Получить ссылку» может не быть. Там навигационные ссылки формируются иначе, и проще использовать передачу кода элемента или программный способ, описанный ниже.

Как получить навигационную ссылку в интерфейсе
  1. 1
    Откройте нужный элемент справочника двойным щелчком
  2. 2
    Нажмите «Ещё» в командной панели формы
  3. 3
    Выберите «Получить ссылку» или нажмите Ctrl+F11
  4. 4
    Скопируйте строку из появившегося окна
  5. 5
    Передайте ссылку коллеге или сохраните в заметках

Как перейти по ссылке и проверить, что она работает

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

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

Контрольные точки

Как проверить результат

Открытие по навигационной ссылке
Норма

Открывается карточка нужного элемента с заполненными полями

Тревожный признак

Ошибка «Объект не найден» или пустая форма

Ссылка в поле документа
Норма

Отображается наименование элемента, поле открывается по кнопке

Тревожный признак

В поле текст вида «<Объект не найден> (123:...)

Права доступа
Норма

Элемент открывается у всех, кому нужен доступ

Тревожный признак

У части пользователей ссылка не открывается — проверьте роли

Как получить ссылку на справочник программно в коде

Разработчику ссылка нужна чаще всего в обработках, при заполнении реквизитов документов или при обмене данными. Базовые способы на встроенном языке выглядят так:

// Поиск по коду

СсылкаНаЭлемент = Справочники.Номенклатура.НайтиПоКоду("000000123");

// Поиск по наименованию (точное совпадение)

СсылкаНаЭлемент = Справочники.Контрагенты.НайтиПоНаименованию("ООО Ромашка", Истина);

// Ссылка из объекта элемента

НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();

НовыйЭлемент.Наименование = "Тестовая позиция";

НовыйЭлемент.Записать();

СсылкаНаЭлемент = НовыйЭлемент.Ссылка;

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

Если известен GUID элемента (например, пришёл из внешней системы при обмене), ссылку получают через Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("...")). Этот способ не проверяет существование элемента — ссылка формируется всегда, поэтому дополнительно проверяют, существует ли объект, например запросом или попыткой обращения к реквизиту.

bsl
СсылкаНаЭлемент = Справочники.Номенклатура.НайтиПоКоду("000000123");
Если СсылкаНаЭлемент.Пустая() Тогда
    Сообщить("Элемент не найден");
КонецЕсли;

Как найти элемент, если известна только ссылка

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

Программно получить объект по ссылке можно через метод СсылкаНаЭлемент.ПолучитьОбъект(). После этого доступны все реквизиты: наименование, код, дополнительные поля. Учтите, что ПолучитьОбъект() для несуществующего элемента вернёт значение «Неопределено», поэтому в коде делают проверку перед обращением к реквизитам.

Если ссылка «битая» (элемент удалён), в интерфейсе поле покажет строку вида «Объект не найден». Массово такие места ищут штатной обработкой поиска и удаления дублей либо проверкой конфигурации с тестированием ссылочной целостности — но это уже задача администратора.

Типичные ошибки и ограничения

Самая частая ошибка пользователей — попытка передать «ссылку», скопировав просто наименование элемента или адрес из браузера при работе через веб-клиент без проверки. Навигационная ссылка работает только внутри той же информационной базы: в другой базе тот же GUID может отсутствовать или указывать на другой объект.

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

Типичные ошибки
01
Поиск по наименованию без параметра точного совпадения — находится не тот элемент при неполном совпадении
02
Отсутствие проверки Пустая() — в документы записывается пустое значение
03
Передача навигационной ссылки между разными базами — GUID не совпадает, ссылка не работает
04
Изменение реквизитов через ссылку без ПолучитьОбъект() — изменения не сохраняются
05
Удаление элементов с битыми ссылками без резервной копии — потеря данных без возможности отката

Как выбрать подходящий способ

Выбор метода зависит от роли и исходных данных. Пользователю без доступа к конфигуратору достаточно команд интерфейса; разработчику при автоматизации нужны программные методы с обязательными проверками результата.

Маршрут решения

Как выбрать действие

Нужно показать коллеге конкретную карточку в той же базеСкопируйте навигационную ссылку через «Ещё → Получить ссылку»
Нужно заполнить реквизит документа в обработкеИспользуйте НайтиПоКоду() или НайтиПоНаименованию() с проверкой Пустая()
Есть только GUID из внешней системыИспользуйте ПолучитьСсылку(УникальныйИдентификатор) и проверьте существование элемента
В документах видны записи «Объект не найден»Сделайте копию базы и привлеките администратора для анализа ссылочной целостности

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

Итог

Что важно запомнить

Ссылка — это уникальный указатель на элемент справочника, а не его наименование. В интерфейсе её копируют через «Ещё → Получить ссылку» (Ctrl+F11), в коде — через методы НайтиПоКоду, НайтиПоНаименованию или свойство Ссылка. Всегда проверяйте результат на пустоту и помните, что навигационные ссылки работают только внутри своей базы.

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

Почему навигационная ссылка не открывается у коллеги?

Чаще всего причины три: коллега работает в другой базе (GUID не совпадают), у него нет прав на этот справочник, либо элемент был удалён. Проверьте, что оба пользователя заходят в одну и ту же информационную базу, и при необходимости уточните у администратора настройку ролей.

Чем ссылка отличается от кода элемента справочника?

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

Можно ли получить ссылку на ещё не записанный элемент?

Формально у нового объекта ссылка появляется сразу после создания, но до вызова метода Записать() элемента в базе нет, и ссылка ведёт «в никуда». Использовать такую ссылку в реквизитах других объектов можно только после записи элемента.

Что делать, если НайтиПоНаименованию находит не тот элемент?

Убедитесь, что передан второй параметр «Истина» (точное совпадение) и что наименование в базе в точности совпадает с искомым, включая пробелы. Если дублей несколько, надёжнее искать по коду, по дополнительному реквизиту или по GUID.

Как узнать GUID элемента справочника?

Программно — через выражение СсылкаНаЭлемент.УникальныйИдентификатор(). В интерфейсе GUID виден в конце навигационной ссылки после параметра ref, хотя он там представлен в служебном формате, отличном от привычного вида идентификатора.

Опасно ли удалять элементы, на которые есть ссылки?

Пометка удаления безопасна: ссылки останутся рабочими, элемент просто перестанет предлагаться при выборе. Опасно физическое удаление через «Удаление помеченных объектов» без контроля ссылок — тогда в документах появятся значения «Объект не найден». Штатная обработка удаления показывает все места использования и позволяет отменить операцию.