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

Администрирование · 9 мин

GUID электронного документа в 1С: где посмотреть и как использовать

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

GUID (глобальный уникальный идентификатор) — это внутренний 36-символьный код, который платформа 1С присваивает каждому объекту базы: документу, элементу справочника, записи регистра. В отличие от номера документа, который виден пользователю и может меняться, GUID неизменен на всём протяжении жизни объекта и уникален в пределах всей информационной базы.

Знать GUID документа нужно при обмене данными между базами, при поиске «битых» ссылок, при отладке интеграций с внешними системами (сайт, CRM, ЭДО), а также когда по ошибочной записи в логе требуется найти конкретный документ. Проблема в том, что в стандартном интерфейсе 1С GUID не отображается — его нужно получать специальными способами.

Ниже разобраны рабочие методы: от простого программного кода до консоли запросов и универсальных обработок, а также обратная задача — найти документ по известному GUID.

Где хранится GUID и почему его не видно в интерфейсе

Платформа 1С хранит ссылку на объект как 16-байтовое значение в поле _IDRRef таблицы базы данных. В пользовательском интерфейсе отображаются только представления объекта — номер, дата, наименование. GUID считается служебной информацией и в типовых формах документов не выводится.

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

Важно понимать разницу: GUID привязан к конкретной базе. Один и тот же документ в двух разных базах (например, после обмена) может иметь одинаковый GUID — если обмен выполнялся штатными механизмами синхронизации, — либо разные, если документы создавались независимо.

Способ 1. Получить GUID через встроенный язык 1С

Самый надёжный метод — функция УникальныйИдентификатор(), доступная у любой ссылки. Код можно выполнить в консоли кода, во внешней обработке или через отладчик.

bsl
// Получить GUID известной ссылки
СсылкаНаДокумент = Документы.РеализацияТоваровУслуг.НайтиПоНомеру("00000000123", ТекущаяДатаСеанса());
Если Не СсылкаНаДокумент.Пустая() Тогда
    ГУИД = СсылкаНаДокумент.УникальныйИдентификатор();
    Сообщить(Строка(ГУИД)); // например: 8a3f2c1e-5b7d-4e9a-b1c2-3d4e5f6a7b8c
Иначе
    Сообщить("Документ не найден");
КонецЕсли;

Строковое представление GUID получают функцией Строка() или XMLСтрока(). Для передачи во внешние системы обычно используют именно строковый формат через дефисы — он стандартен для веб-сервисов и REST-интеграций.

Если код выполняется в управляемом приложении, помните про контекст: на клиенте доступ к запросам и поиску по номеру ограничен. Выполняйте такой код на сервере (директива &НаСервере) или в фоновом задании.

Способ 2. Консоль запросов и консоль кода

Если конфигурация работает в режиме управляемого приложения и есть доступ к пункту «Все функции», откройте стандартную обработку «Консоль запросов» или используйте популярные инструменты разработчика (например, «Инструменты разработчика» — ИР). Через запрос GUID получают функцией языка запросов:

bsl
ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка КАК Ссылка,
    РеализацияТоваровУслуг.Номер КАК Номер
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
    РеализацияТоваровУслуг.Номер = &Номер

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

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

Способ 3. GUID в URL при веб-доступе и в строке навигационной ссылки

Если база опубликована на веб-сервере или используется тонкий клиент, у каждого открытого объекта есть навигационная ссылка вида e1cib/data/Документ.РеализацияТоваровУслуг?ref=8a3f2c1e5b7d4e9ab1c23d4e5f6a7b8c. Получить её можно через команду «Получить ссылку» (кнопка в форме объекта или сочетание в меню «Ещё»).

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

Обратная задача: найти документ по известному GUID

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

bsl
СтрокаГУИД = "8a3f2c1e-5b7d-4e9a-b1c2-3d4e5f6a7b8c";
Ид = Новый УникальныйИдентификатор(СтрокаГУИД);
Найден = Ложь;
Для Каждого ВидДокумента Из Метаданные.Документы Цикл
    Ссылка = Документы[ВидДокумента.Имя].ПолучитьСсылку(Ид);
    Если Ссылка.ПолучитьОбъект() <> Неопределено Тогда
        Сообщить("Найден: " + Ссылка);
        Найден = Истина;
        Прервать;
    КонецЕсли;
КонецЦикла;
Если Не Найден Тогда
    Сообщить("Объект с таким GUID отсутствует (битая ссылка или другая база)");
КонецЕсли;

Проверка ПолучитьОбъект() <> Неопределено отличает реально существующий документ от «битой ссылки» — ситуации, когда GUID есть, но сам объект удалён или никогда не существовал в этой базе. На больших базах перебор всех видов документов занимает время; если тип объекта известен из контекста лога, ограничьтесь одним видом.

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

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

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

Проверка результата

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

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

Формат строки GUID
Норма

36 символов: 5 групп через дефисы, только hex-цифры 0-9 и a-f

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

32 символа без дефисов или посторонние символы — вероятно, формат из ref= навигационной ссылки

Обратный поиск по GUID
Норма

ПолучитьСсылку + ПолучитьОбъект возвращает объект с ожидаемыми номером и датой

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

ПолучитьОбъект() = Неопределено во всех видах документов — битая ссылка или чужая база

Совпадение при обмене
Норма

GUID документа в базе-источнике и базе-приёмнике совпадают после штатной синхронизации

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

GUID различаются — документ создавался в приёмнике самостоятельно, риск дублей

Итог

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

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

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

Можно ли посмотреть GUID документа без программирования?

Да, частично. Команда «Получить ссылку» в форме документа покажет навигационную ссылку с идентификатором после ref=. Для получения классического GUID с дефисами без кода подойдут внешние обработки типа «Инструменты разработчика», которые выводят GUID в таблице результата запроса.

Меняется ли GUID при перенумерации или изменении документа?

Нет. GUID присваивается один раз при создании объекта и не зависит от номера, даты, проведения и любых правок. Единственный способ «сменить» GUID — удалить объект и создать новый.

Почему по GUID из лога обмена документ не находится в базе?

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

Как передать GUID документа на сайт или в 1С:Документооборот?

Используйте строковое представление Строка(Ссылка.УникальныйИдентификатор()) — это стандартный формат UUID, понятный веб-сервисам и HTTP-API. На принимающей стороне 1С восстановите идентификатор через Новый УникальныйИдентификатор(Строка).

Чем GUID отличается от навигационной ссылки?

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

Можно ли задать документу свой GUID при создании?

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