Справочники и Данные · 10 мин
Как сделать ссылку на справочник в 1С
Как получить ссылку на элемент справочника в 1С: копирование ссылки в интерфейсе, получение ссылки кодом, поиск по ссылке, типичные ошибки и проверка результата.
Ссылка на справочник в 1С — это уникальный указатель на конкретный элемент справочника, который программа использует для связи данных между собой. Когда в документе выбирают контрагента или номенклатуру, в поле записывается не текст наименования, а именно ссылка на элемент справочника. Понимание того, как получить и использовать такую ссылку, нужно и обычному пользователю, и разработчику.
Задача «сделать ссылку на справочник» возникает в разных ситуациях: нужно отправить коллеге прямую навигационную ссылку на карточку контрагента, найти элемент по известному коду, получить ссылку программно в обработке или исправить «битую ссылку» в документе. Для каждого сценария есть свой способ, и дальше они разобраны по отдельности.
Материал ориентирован на типовые конфигурации на управляемых формах (1С:Бухгалтерия, 1С:Управление торговлей, 1С:ERP и подобные), но принципы одинаковы и для самописных решений. Отличия обычно касаются только расположения команд в меню.
Что такое ссылка на элемент справочника и зачем она нужна
Внутри базы 1С каждый элемент справочника имеет уникальный внутренний идентификатор (GUID) и на его основе — объект типа «СправочникСсылка». Именно ссылка хранится в реквизитах документов, регистров и других справочников. Наименование, код и прочие поля — это атрибуты элемента, а ссылка — его «адрес» в базе.
Благодаря этому переименование элемента не ломает связи: документ продолжает указывать на тот же элемент, потому что хранит ссылку, а не текст. Если же элемент удалить физически, в документах останется «битая ссылка» — значение вида «Объект не найден», и это уже проблема целостности данных.
Как скопировать ссылку на элемент справочника в интерфейсе
В управляемом интерфейсе «Такси» откройте нужный элемент справочника (карточку контрагента, номенклатуры, договора). Затем нажмите кнопку «Ещё» в командной панели формы и выберите пункт «Получить ссылку» — в большинстве конфигураций доступна и комбинация клавиш Ctrl+F11. Откроется окно, где можно скопировать навигационную ссылку вида e1cib/data/Справочник.Номенклатура?ref=....
Такую ссылку можно отправить коллеге по почте или в мессенджер. Если у него есть доступ к той же базе и этому справочнику, переход по ссылке (или вставка её в команду «Ещё → Перейти по ссылке» в главном меню) откроет именно этот элемент. Это самый быстрый способ указать коллеге на конкретную карточку без словесных описаний.
В обычных (неуправляемых) формах старых конфигураций прямой команды «Получить ссылку» может не быть. Там навигационные ссылки формируются иначе, и проще использовать передачу кода элемента или программный способ, описанный ниже.
- 1Откройте нужный элемент справочника двойным щелчком
- 2Нажмите «Ещё» в командной панели формы
- 3Выберите «Получить ссылку» или нажмите Ctrl+F11
- 4Скопируйте строку из появившегося окна
- 5Передайте ссылку коллеге или сохраните в заметках
Как перейти по ссылке и проверить, что она работает
Чтобы открыть элемент по полученной навигационной ссылке, запустите 1С, войдите в нужную базу и используйте команду «Перейти по ссылке» — обычно она находится в меню круглой кнопки приложения или через «Ещё» в разделе сервисных команд. Вставьте скопированную строку и подтвердите переход.
Успешный результат — открывшаяся карточка именно того элемента, на который указывала ссылка. Если вместо этого появляется сообщение об ошибке или открывается пустая форма, причины обычно такие: элемент удалён, у пользователя нет прав на этот справочник, или ссылка относится к другой базе (например, скопирована из копии базы, а открывается в рабочей).
Как проверить результат
Открывается карточка нужного элемента с заполненными полями
Ошибка «Объект не найден» или пустая форма
Отображается наименование элемента, поле открывается по кнопке
В поле текст вида «<Объект не найден> (123:...)
Элемент открывается у всех, кому нужен доступ
У части пользователей ссылка не открывается — проверьте роли
Как получить ссылку на справочник программно в коде
Разработчику ссылка нужна чаще всего в обработках, при заполнении реквизитов документов или при обмене данными. Базовые способы на встроенном языке выглядят так:
// Поиск по коду
СсылкаНаЭлемент = Справочники.Номенклатура.НайтиПоКоду("000000123");
// Поиск по наименованию (точное совпадение)
СсылкаНаЭлемент = Справочники.Контрагенты.НайтиПоНаименованию("ООО Ромашка", Истина);
// Ссылка из объекта элемента
НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
НовыйЭлемент.Наименование = "Тестовая позиция";
НовыйЭлемент.Записать();
СсылкаНаЭлемент = НовыйЭлемент.Ссылка;
Важный нюанс: методы поиска возвращают пустую ссылку, если элемент не найден. Перед использованием результата проверяйте его через НайденныйЭлемент.Пустая() или конструкцию ЗначениеЗаполнено(СсылкаНаЭлемент), иначе в документы запишется пустое значение, а ошибку вы заметите поздно.
Если известен GUID элемента (например, пришёл из внешней системы при обмене), ссылку получают через Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("...")). Этот способ не проверяет существование элемента — ссылка формируется всегда, поэтому дополнительно проверяют, существует ли объект, например запросом или попыткой обращения к реквизиту.
СсылкаНаЭлемент = Справочники.Номенклатура.НайтиПоКоду("000000123");
Если СсылкаНаЭлемент.Пустая() Тогда
Сообщить("Элемент не найден");
КонецЕсли;Как найти элемент, если известна только ссылка
Обратная задача тоже встречается: есть ссылка (например, из сообщения об ошибке или из реквизита документа), и нужно понять, что это за элемент. Самый простой путь — открыть документ, где заполнен реквизит, и нажать кнопку открытия поля: карточка элемента откроется напрямую.
Программно получить объект по ссылке можно через метод СсылкаНаЭлемент.ПолучитьОбъект(). После этого доступны все реквизиты: наименование, код, дополнительные поля. Учтите, что ПолучитьОбъект() для несуществующего элемента вернёт значение «Неопределено», поэтому в коде делают проверку перед обращением к реквизитам.
Если ссылка «битая» (элемент удалён), в интерфейсе поле покажет строку вида «Объект не найден». Массово такие места ищут штатной обработкой поиска и удаления дублей либо проверкой конфигурации с тестированием ссылочной целостности — но это уже задача администратора.
Типичные ошибки и ограничения
Самая частая ошибка пользователей — попытка передать «ссылку», скопировав просто наименование элемента или адрес из браузера при работе через веб-клиент без проверки. Навигационная ссылка работает только внутри той же информационной базы: в другой базе тот же GUID может отсутствовать или указывать на другой объект.
У разработчиков типовые промахи другие: поиск по наименованию без учёта дублей (найдётся первый попавшийся элемент, а их может быть несколько), отсутствие проверки на пустую ссылку и попытка изменить элемент напрямую через ссылку без получения объекта. Ссылка предназначена только для чтения реквизитов; для изменения всегда вызывают ПолучитьОбъект().
Как выбрать подходящий способ
Выбор метода зависит от роли и исходных данных. Пользователю без доступа к конфигуратору достаточно команд интерфейса; разработчику при автоматизации нужны программные методы с обязательными проверками результата.
Как выбрать действие
Если задача разовая и касается одной карточки — не усложняйте: интерфейсные команды решают её за полминуты. Программные методы оправданы при массовой обработке, интеграции и автоматическом заполнении документов.
Что важно запомнить
Ссылка — это уникальный указатель на элемент справочника, а не его наименование. В интерфейсе её копируют через «Ещё → Получить ссылку» (Ctrl+F11), в коде — через методы НайтиПоКоду, НайтиПоНаименованию или свойство Ссылка. Всегда проверяйте результат на пустоту и помните, что навигационные ссылки работают только внутри своей базы.
Частые вопросы
Почему навигационная ссылка не открывается у коллеги?
Чаще всего причины три: коллега работает в другой базе (GUID не совпадают), у него нет прав на этот справочник, либо элемент был удалён. Проверьте, что оба пользователя заходят в одну и ту же информационную базу, и при необходимости уточните у администратора настройку ролей.
Чем ссылка отличается от кода элемента справочника?
Код — это видимый пользователю номер элемента, который может совпадать в разных базах и даже меняться при ручной правке. Ссылка — внутренний уникальный идентификатор, который не меняется в течение жизни элемента и однозначно определяет его в конкретной базе.
Можно ли получить ссылку на ещё не записанный элемент?
Формально у нового объекта ссылка появляется сразу после создания, но до вызова метода Записать() элемента в базе нет, и ссылка ведёт «в никуда». Использовать такую ссылку в реквизитах других объектов можно только после записи элемента.
Что делать, если НайтиПоНаименованию находит не тот элемент?
Убедитесь, что передан второй параметр «Истина» (точное совпадение) и что наименование в базе в точности совпадает с искомым, включая пробелы. Если дублей несколько, надёжнее искать по коду, по дополнительному реквизиту или по GUID.
Как узнать GUID элемента справочника?
Программно — через выражение СсылкаНаЭлемент.УникальныйИдентификатор(). В интерфейсе GUID виден в конце навигационной ссылки после параметра ref, хотя он там представлен в служебном формате, отличном от привычного вида идентификатора.
Опасно ли удалять элементы, на которые есть ссылки?
Пометка удаления безопасна: ссылки останутся рабочими, элемент просто перестанет предлагаться при выборе. Опасно физическое удаление через «Удаление помеченных объектов» без контроля ссылок — тогда в документах появятся значения «Объект не найден». Штатная обработка удаления показывает все места использования и позволяет отменить операцию.