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

Разработка и Конфигурация · 10 мин

1С: ссылка как строка — способы преобразования и практические примеры

Как преобразовать ссылку в строку в 1С 8.3: Строка(), GUID, ЗначениеВСтрокуВнутр, навигационная ссылка. Примеры кода, ошибки и обратное преобразование.

Задача получить ссылку объекта в виде строки возникает в 1С постоянно: при обмене данными с внешними системами, при выгрузке в Excel или CSV, при логировании, при поиске элемента по уникальному идентификатору. Проблема в том, что «ссылка как строка» — не одно значение, а несколько разных представлений, и выбор неправильного варианта приводит к неработающему обмену или невозможности восстановить объект обратно.

У одной и той же ссылки есть как минимум четыре строковых представления: представление (например, «Реализация товаров 0000-000123 от 12.03.2026»), уникальный идентификатор GUID, внутренняя строка через ЗначениеВСтрокуВнутр() и навигационная ссылка вида e1cib/data/.... Каждое из них решает свою задачу, и только GUID и внутренняя строка позволяют однозначно вернуться к объекту.

Ниже разобраны все основные способы преобразования ссылки в строку во встроенном языке 1С 8.3, обратное преобразование, типичные ошибки и критерии выбора варианта под конкретную задачу.

Что именно считается «ссылкой как строкой» в 1С

Ссылка в 1С — это типизированный объект (СправочникСсылка, ДокументСсылка и т.д.), который содержит внутренний идентификатор и указание на тип данных. Сама по себе она не является строкой, поэтому при записи в текстовый файл, JSON или передаче по HTTP её нужно явно преобразовать.

Различают четыре варианта строкового представления:

  • Представление — то, что видит пользователь: наименование элемента справочника или «номер от дата» для документа. Не уникально, для идентификации не подходит.
  • GUID — уникальный идентификатор объекта, стабилен в пределах базы, стандарт для обменов.
  • Внутренняя строка — результат ЗначениеВСтрокуВнутр(), содержит тип и идентификатор, восстанавливается только средствами 1С.
  • Навигационная ссылка — строка вида e1cib/data/Справочник.Номенклатура?ref=..., используется веб-клиентом и при публикации базы.

Способ 1. Строка(Ссылка) — быстрое представление для пользователя

Самый простой вариант — функция Строка() или неявное преобразование при конкатенации. Она возвращает представление объекта, а не идентификатор.

ТекстСообщения = "Ошибка в документе: " + Строка(ДокументСсылка);

// Результат: "Ошибка в документе: Реализация товаров и услуг 0000-000123 от 12.03.2026"

Этот способ подходит для сообщений пользователю, журнала регистрации и отладочного вывода. Но результат нельзя использовать для поиска объекта: два разных элемента справочника могут иметь одинаковое наименование, а номер документа не уникален между периодами и организациями.

Способ 2. GUID — стандарт для обмена и интеграций

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

СтрокаGUID = Строка(НоменклатураСсылка.УникальныйИдентификатор());

// "8f3e2a1b-4c5d-6e7f-8a9b-0c1d2e3f4a5b"

Обратное преобразование требует указания менеджера конкретного типа объекта:

GUID = Новый УникальныйИдентификатор(СтрокаGUID);

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

Если НайденнаяСсылка.ПолучитьОбъект() = Неопределено Тогда

// объекта с таким GUID нет — ПолучитьСсылку вернёт «пустую битую» ссылку

КонецЕсли;

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

Получить объект по строке GUID
  1. 1
    Получите строку GUID из внешней системы или файла
  2. 2
    Создайте объект: Новый УникальныйИдентификатор(СтрокаGUID)
  3. 3
    Вызовите ПолучитьСсылку(GUID) у менеджера нужного типа
  4. 4
    Проверьте существование объекта запросом или ПолучитьОбъект()
  5. 5
    Обрабатывайте случай отсутствия объекта, не считая ссылку валидной автоматически

Как узнать тип объекта, если известен только GUID

GUID сам по себе не содержит типа. Если внешняя система передаёт только идентификатор, тип нужно передавать отдельным полем либо искать перебором по менеджерам — что медленно и допустимо только в сервисных обработках.

Способ 3. ЗначениеВСтрокуВнутр — сериализация внутри 1С

Функция ЗначениеВСтрокуВнутр() преобразует значение (в том числе ссылку) во внутреннее строковое представление, которое платформа умеет восстанавливать функцией ЗначениеИзСтрокиВнутр().

СтрокаВнутр = ЗначениеВСтрокуВнутр(ДокументСсылка);

// Сохраняем в хранилище значения или текстовое поле

ВосстановленнаяСсылка = ЗначениеИзСтрокиВнутр(СтрокаВнутр);

Преимущество: строка содержит и тип, и идентификатор, поэтому восстановление не требует знания менеджера объекта. Ограничения серьёзные: формат внутренний, не документирован, может меняться между версиями платформы и не читается внешними системами. Использовать его для обмена с не-1С системами нельзя.

Способ 4. Навигационная ссылка e1cib

Функция ПолучитьНавигационнуюСсылку(Ссылка) возвращает строку вида e1cib/data/Документ.РеализацияТоваровУслуг?ref=.... Такая ссылка открывает объект в тонком или веб-клиенте и используется, например, при формировании писем с гиперссылками на документы.

НавСсылка = ПолучитьНавигационнуюСсылку(ДокументСсылка);

ТекстПисьма = "Откройте документ: " + НавСсылка;

Обратный разбор навигационной ссылки штатной функцией не предусмотрен — её парсят вручную, извлекая тип из части после e1cib/data/ и GUID из параметра ref (с перестановкой байтов, что является известной особенностью формата). Для новых разработок надёжнее передавать GUID и тип отдельно.

Сравнение способов и выбор под задачу

СпособЧто возвращаетОбратное восстановлениеГде применять
Строка(Ссылка)ПредставлениеНевозможноСообщения, логи, печать
Строка(Ссылка.УникальныйИдентификатор())GUIDПолучитьСсылку() у менеджера типаОбмен, API, файлы выгрузки
ЗначениеВСтрокуВнутр()Внутренняя строка с типомЗначениеИзСтрокиВнутр()Хранение внутри 1С
ПолучитьНавигационнуюСсылку()e1cib-строкаРучной разборСсылки для клиента, письма
Маршрут решения

Как выбрать способ

Нужно показать объект пользователю в сообщении или отчётеИспользуйте Строка(Ссылка) или представление
Данные уходят во внешнюю систему или файл обменаПередавайте Строка(Ссылка.УникальныйИдентификатор()) и имя типа
Ссылку нужно сохранить и потом восстановить только внутри 1СИспользуйте ЗначениеВСтрокуВнутр / ЗначениеИзСтрокиВнутр
Нужна ссылка, открывающая объект в клиентеИспользуйте ПолучитьНавигационнуюСсылку()

Проверка результата и типичные ошибки

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

  • Длина строки GUID — 36 символов с дефисами; при другом формате Новый УникальныйИдентификатор() вызовет исключение.
  • Конструктор Новый УникальныйИдентификатор(Строка) бросает ошибку на некорректной строке — оборачивайте в Попытка...Исключение.
  • После ПолучитьСсылку() проверяйте существование объекта, иначе получите «битую ссылку», которая вылезет ошибкой позже в другом месте кода.
  • При обмене между базами помните: GUID объекта в разных базах совпадает только если базы связаны обменом или объект создавался с явным указанием ссылки.
Типичные ошибки
01
Использование Строка(Ссылка) как ключа обмена — представление не уникально, связи рвутся
02
Отсутствие проверки существования объекта после ПолучитьСсылку — битые ссылки в данных
03
Передача GUID без типа объекта — на приёмной стороне невозможно вызвать ПолучитьСсылку
04
Использование ЗначениеВСтрокуВнутр для обмена с внешними системами — формат несовместим
05
Отсутствие Попытка/Исключение при создании GUID из строки — обработка падает на мусорных данных
Контрольные точки

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

Строка GUID
Норма

36 символов формата xxxxxxxx-xxxx-...

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

Представление объекта или пустая строка

Восстановленная ссылка
Норма

Запрос к объекту возвращает данные

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

ПолучитьОбъект() возвращает Неопределено

Обмен с внешней системой
Норма

Приёмная сторона находит объект по GUID и типу

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

Ссылки не находятся, тип неизвестен

FAQ

Как получить GUID ссылки в запросе 1С?

В языке запросов есть функция УникальныйИдентификатор(): выбираете УникальныйИдентификатор(Таблица.Ссылка) КАК GUID. Результат приходит значением типа УникальныйИдентификатор, который затем преобразуется в строку функцией Строка().

Можно ли найти объект по наименованию вместо строки ссылки?

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

Почему ПолучитьСсылку() возвращает ссылку, хотя объекта нет в базе?

Метод ПолучитьСсылку() только конструирует ссылку из GUID, не обращаясь к данным. Существование проверяется отдельно: запросом, вызовом ПолучитьОбъект() или проверкой на битую ссылку через запрос с условием Ссылка ЕСТЬ NULL.

Как передать ссылку в веб-сервис или HTTP-API?

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

Изменится ли строка GUID при переносе объекта в другую базу?

При обмене через типовые механизмы (конвертация данных, планы обмена) GUID обычно сохраняется. При загрузке произвольными обработками объект создаётся с новым GUID, если ссылку явно не установить через УстановитьСсылкуНового().

Итог

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

«Ссылка как строка» — это четыре разных представления. Для пользователя — Строка(Ссылка), для обмена — GUID с обязательной передачей типа, для хранения внутри 1С — ЗначениеВСтрокуВнутр, для открытия в клиенте — навигационная ссылка. После любого обратного преобразования проверяйте существование объекта.