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

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

Как узнать GUID документа в 1С

Как узнать GUID документа 1С: через конфигуратор, внешнюю обработку, запрос, URL-ссылку и COM. Пошаговые инструкции, код и разбор ошибок.

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

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

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

Что такое GUID и где он хранится в базе 1С

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

Формат отображения — пять групп шестнадцатеричных цифр через дефис, например b2c1d4e5-8f3a-4b2c-9d1e-7a6b5c4d3e2f. В SQL-базе тот же идентификатор хранится в перевёрнутом (переставленном по байтам) виде, поэтому прямое сравнение строки из 1С с содержимым таблицы SQL не сработает без преобразования.

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

Как узнать GUID через консоль кода или внешнюю обработку

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

Код выглядит так:

ДокументСсылка = Документы.РеализацияТоваровУслуг.НайтиПоНомеру("0000-000123", ТекущаяДата());

Если Не ДокументСсылка.Пустая() Тогда

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

КонецЕсли;

Если документ уже открыт в форме, GUID можно получить из реквизита ссылки формы: ЭтаФорма.Объект.Ссылка.УникальныйИдентификатор(). Результат выводится в окно сообщений, откуда его можно скопировать.

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

Как получить GUID без конфигуратора: ссылка и веб-клиент

Через команду «Получить ссылку»

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

Учтите: представление в ссылке e1cib отличается порядком байтов от классического формата с дефисами. Для интеграций обычно нужен стандартный вид, поэтому такую строку придётся преобразовать кодом или использовать как есть, если принимающая система понимает формат 1С.

Через адресную строку веб-клиента

Если база опубликована на веб-сервере, откройте документ в браузере и посмотрите на адресную строку. В параметре ref будет тот же служебный идентификатор. Это единственный способ, доступный пользователю без каких-либо дополнительных прав и инструментов.

Как найти GUID через запрос и в динамическом списке

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

Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Документ.ПоступлениеТоваровУслуг ГДЕ Дата >= &НачДата");

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл

Сообщить(Строка(Выборка.Ссылка.УникальныйИдентификатор()));

КонецЦикла;

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

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

Обратная ситуация встречается не реже: в журнале обмена или в ошибке «Объект не найден (8a3f5c2e...)» есть GUID, и нужно понять, что это за документ. Для этого используется метод ПолучитьСсылку:

НовыйИд = Новый УникальныйИдентификатор("8a3f5c2e-1111-2222-3333-444455556666");

ДокСсылка = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(НовыйИд);

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

Сообщить("Объект с таким GUID не существует или удалён");

Иначе

Сообщить(ДокСсылка);

КонецЕсли;

Если тип документа неизвестен, придётся перебрать все виды документов через метаданные и для каждого вызвать ПолучитьСсылку с проверкой существования. Для больших баз такой перебор ресурсоёмок — выполняйте его вне рабочего времени или ограничьте список вероятных типов.

GUID в SQL-базе и типичные ошибки

В клиент-серверных базах администраторы иногда ищут GUID напрямую в таблицах MS SQL или PostgreSQL. Это возможно, но идентификатор там хранится в бинарном виде с переставленными байтами, и простой поиск строки из 1С ничего не найдёт. Для сопоставления нужны функции преобразования, которые пишутся отдельно под конкретную СУБД.

Типичные ошибки
01
Поиск GUID из 1С напрямую в SQL-таблице без преобразования байтового порядка — совпадений не будет
02
Использование номера документа вместо GUID в интеграции — после перенумерации связь с внешней системой ломается
03
Попытка получить GUID у несохранённого объекта — у нового документа до записи ссылка ещё не зафиксирована, идентификатор может отличаться после записи
04
Копирование идентификатора из ссылки e1cib как классического GUID без преобразования формата

Отдельная ошибка — попытка получить GUID объекта, который создан кодом, но ещё не записан. У такого объекта ссылка временная, и надёжный идентификатор появится только после вызова метода Записать(). Всегда проверяйте, что документ записан, прежде чем передавать его GUID во внешнюю систему.

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

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

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

5 групп шестнадцатеричных символов через дефис, всего 36 знаков

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

Строка без дефисов или с символами вне диапазона 0-9 и a-f

Существование объекта
Норма

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

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

ПолучитьОбъект возвращает Неопределено — ссылка битая

Совпадение с внешней системой
Норма

По GUID находится тот же документ с тем же номером и датой

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

Находится другой документ — перепутан формат идентификатора

FAQ

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

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

Можно ли узнать GUID без прав разработчика?

Да. Откройте документ и нажмите Ctrl+F11 («Получить ссылку») — идентификатор будет в конце строки после параметра ref. В веб-клиенте тот же идентификатор виден прямо в адресной строке браузера. Никаких специальных прав для этого не требуется.

Что означает ошибка «Объект не найден» с GUID в скобках?

Это «битая ссылка»: объект был удалён, но ссылки на него остались в других документах или регистрах. По GUID из текста ошибки можно через ПолучитьСсылку определить, к какому типу относился объект, и затем решить — восстанавливать его или очищать ссылки штатной обработкой поиска и удаления помеченных объектов.

Одинаковы ли GUID одного документа в разных базах при обмене?

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

Чем GUID из ссылки e1cib отличается от обычного UUID?

Это тот же идентификатор, но записанный в служебном байтовом порядке платформы 1С. Для внутренних задач 1С разницы нет, а для передачи во внешние системы строку из e1cib-ссылки нужно преобразовать в классический формат — либо кодом, либо получением GUID методом УникальныйИдентификатор().

Итог

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

GUID документа получают методом Ссылка.УникальныйИдентификатор() в коде, командой «Получить ссылку» (Ctrl+F11) в тонком клиенте или из адресной строки веб-клиента. Идентификатор неизменен и надёжен для интеграций, но формат из e1cib-ссылки отличается от классического UUID и требует преобразования. Обратный поиск документа по GUID выполняется через ПолучитьСсылку с проверкой существования объекта.