Разработка и Конфигурация · 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. Проверять существование нужно отдельно — через запрос, ПолучитьОбъект() или проверку на «битую ссылку».
- 1Получите строку GUID из внешней системы или файла
- 2Создайте объект: Новый УникальныйИдентификатор(СтрокаGUID)
- 3Вызовите ПолучитьСсылку(GUID) у менеджера нужного типа
- 4Проверьте существование объекта запросом или ПолучитьОбъект()
- 5Обрабатывайте случай отсутствия объекта, не считая ссылку валидной автоматически
Как узнать тип объекта, если известен только GUID
GUID сам по себе не содержит типа. Если внешняя система передаёт только идентификатор, тип нужно передавать отдельным полем либо искать перебором по менеджерам — что медленно и допустимо только в сервисных обработках.
Способ 3. ЗначениеВСтрокуВнутр — сериализация внутри 1С
Функция ЗначениеВСтрокуВнутр() преобразует значение (в том числе ссылку) во внутреннее строковое представление, которое платформа умеет восстанавливать функцией ЗначениеИзСтрокиВнутр().
СтрокаВнутр = ЗначениеВСтрокуВнутр(ДокументСсылка);
// Сохраняем в хранилище значения или текстовое поле
ВосстановленнаяСсылка = ЗначениеИзСтрокиВнутр(СтрокаВнутр);
Преимущество: строка содержит и тип, и идентификатор, поэтому восстановление не требует знания менеджера объекта. Ограничения серьёзные: формат внутренний, не документирован, может меняться между версиями платформы и не читается внешними системами. Использовать его для обмена с не-1С системами нельзя.
Способ 4. Навигационная ссылка e1cib
Функция ПолучитьНавигационнуюСсылку(Ссылка) возвращает строку вида e1cib/data/Документ.РеализацияТоваровУслуг?ref=.... Такая ссылка открывает объект в тонком или веб-клиенте и используется, например, при формировании писем с гиперссылками на документы.
НавСсылка = ПолучитьНавигационнуюСсылку(ДокументСсылка);
ТекстПисьма = "Откройте документ: " + НавСсылка;
Обратный разбор навигационной ссылки штатной функцией не предусмотрен — её парсят вручную, извлекая тип из части после e1cib/data/ и GUID из параметра ref (с перестановкой байтов, что является известной особенностью формата). Для новых разработок надёжнее передавать GUID и тип отдельно.
Сравнение способов и выбор под задачу
| Способ | Что возвращает | Обратное восстановление | Где применять |
|---|---|---|---|
| Строка(Ссылка) | Представление | Невозможно | Сообщения, логи, печать |
| Строка(Ссылка.УникальныйИдентификатор()) | GUID | ПолучитьСсылку() у менеджера типа | Обмен, API, файлы выгрузки |
| ЗначениеВСтрокуВнутр() | Внутренняя строка с типом | ЗначениеИзСтрокиВнутр() | Хранение внутри 1С |
| ПолучитьНавигационнуюСсылку() | e1cib-строка | Ручной разбор | Ссылки для клиента, письма |
Как выбрать способ
Проверка результата и типичные ошибки
После обратного преобразования всегда проверяйте, что объект реально существует и имеет ожидаемый тип. Контрольные точки:
- Длина строки GUID — 36 символов с дефисами; при другом формате
Новый УникальныйИдентификатор()вызовет исключение. - Конструктор
Новый УникальныйИдентификатор(Строка)бросает ошибку на некорректной строке — оборачивайте вПопытка...Исключение. - После
ПолучитьСсылку()проверяйте существование объекта, иначе получите «битую ссылку», которая вылезет ошибкой позже в другом месте кода. - При обмене между базами помните: GUID объекта в разных базах совпадает только если базы связаны обменом или объект создавался с явным указанием ссылки.
Как проверить результат
36 символов формата xxxxxxxx-xxxx-...
Представление объекта или пустая строка
Запрос к объекту возвращает данные
ПолучитьОбъект() возвращает Неопределено
Приёмная сторона находит объект по GUID и типу
Ссылки не находятся, тип неизвестен
FAQ
Как получить GUID ссылки в запросе 1С?
В языке запросов есть функция УникальныйИдентификатор(): выбираете УникальныйИдентификатор(Таблица.Ссылка) КАК GUID. Результат приходит значением типа УникальныйИдентификатор, который затем преобразуется в строку функцией Строка().
Можно ли найти объект по наименованию вместо строки ссылки?
Да, через НайтиПоНаименованию() у менеджера справочника, но поиск не гарантирует уникальность: одинаковые наименования встречаются часто. Для документов аналог — НайтиПоНомеру() с учётом даты. Для надёжной идентификации всегда предпочтителен GUID.
Почему ПолучитьСсылку() возвращает ссылку, хотя объекта нет в базе?
Метод ПолучитьСсылку() только конструирует ссылку из GUID, не обращаясь к данным. Существование проверяется отдельно: запросом, вызовом ПолучитьОбъект() или проверкой на битую ссылку через запрос с условием Ссылка ЕСТЬ NULL.
Как передать ссылку в веб-сервис или HTTP-API?
Передавайте два поля: строку GUID и имя типа объекта (например, «Справочник.Номенклатура»). На приёмной стороне по имени типа получают менеджер через Метаданные или соответствие, затем вызывают ПолучитьСсылку(Новый УникальныйИдентификатор(GUID)).
Изменится ли строка GUID при переносе объекта в другую базу?
При обмене через типовые механизмы (конвертация данных, планы обмена) GUID обычно сохраняется. При загрузке произвольными обработками объект создаётся с новым GUID, если ссылку явно не установить через УстановитьСсылкуНового().
Что важно запомнить
«Ссылка как строка» — это четыре разных представления. Для пользователя — Строка(Ссылка), для обмена — GUID с обязательной передачей типа, для хранения внутри 1С — ЗначениеВСтрокуВнутр, для открытия в клиенте — навигационная ссылка. После любого обратного преобразования проверяйте существование объекта.