Разработка и Конфигурация · 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Откройте консоль кода или создайте внешнюю обработку с командой
- 2Найдите ссылку на документ по номеру и дате или получите её из открытой формы
- 3Вызовите метод УникальныйИдентификатор() у ссылки
- 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С ничего не найдёт. Для сопоставления нужны функции преобразования, которые пишутся отдельно под конкретную СУБД.
Отдельная ошибка — попытка получить 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 выполняется через ПолучитьСсылку с проверкой существования объекта.