Разработка и Конфигурация · 13 мин
Как узнать ГУИД документа в 1С
Как узнать ГУИД документа в 1С: через запрос, код на встроенном языке, обработку, SQL и адресную строку. Пошаговые способы с примерами и частыми ошибками.
ГУИД (GUID, глобальный уникальный идентификатор) документа в 1С — это внутренний идентификатор ссылки, который платформа присваивает каждому объекту при создании. В отличие от номера документа, который видит пользователь и который может меняться или повторяться в разных периодах, ГУИД уникален в пределах базы и не меняется на протяжении всей жизни объекта. Именно поэтому ГУИД используется при обмене данными, интеграции с внешними системами, поиске «потерянных» объектов и отладке.
Задача узнать ГУИД документа возникает в нескольких типовых ситуациях: нужно сопоставить документ в 1С с записью во внешней системе, разобраться с ошибкой обмена, где фигурирует длинный идентификатор вида «8a3f2c1d-…», найти объект по ссылке из журнала регистрации или передать идентификатор разработчику. Способ получения ГУИДа зависит от того, кто вы — обычный пользователь без доступа к конфигуратору или разработчик с правами на запуск кода.
Ниже разобраны все рабочие способы: от встроенных механизмов платформы до запросов к базе данных напрямую. Для каждого указаны условия применения, ограничения и риски.
Что такое ГУИД документа и где он хранится
ГУИД в 1С — это 128-битное значение, которое платформа генерирует автоматически при создании нового объекта (документа, элемента справочника и т.д.). В текстовом виде он выглядит как строка из 36 символов: восемь шестнадцатеричных цифр, затем три группы по четыре и завершающая группа из двенадцати, разделённые дефисами. Пример формата: 8a3f2c1d-5e6b-4a7f-9c8d-1e2f3a4b5c6d.
В файловой базе идентификатор хранится внутри файла 1Cv8.1CD, в клиент-серверном варианте — в поле ссылки таблицы документа на стороне СУБД (MS SQL, PostgreSQL и др.). Важно понимать: ГУИД и ссылка — не одно и то же. Ссылка — это составное значение, включающее тип объекта и его идентификатор; ГУИД — только сама уникальная часть. Поэтому один и тот же ГУИД в разных таблицах теоретически может встретиться, хотя на практике совпадения практически исключены.
ГУИД не меняется при перенумерации документов, изменении даты, перепроведении или редактировании любых реквизитов. Он «умирает» только вместе с объектом: если документ удалить и создать заново с теми же данными, у нового объекта будет уже другой идентификатор.
Как узнать ГУИД через встроенный язык 1С
Универсальный способ для разработчика — метод УникальныйИдентификатор(), который есть у любой ссылки. Если у вас есть переменная со ссылкой на документ, получить ГУИД можно одной строкой:
ГУИД = ДокументСсылка.УникальныйИдентификатор();
Сообщить(ГУИД); // выведет например: 8a3f2c1d-5e6b-4a7f-9c8d-1e2f3a4b5c6d
Обратная задача — получить ссылку по известному ГУИДу — решается конструктором Новый УникальныйИдентификатор() и методом ПолучитьСсылку() менеджера документа:
ГУИД = Новый УникальныйИдентификатор("8a3f2c1d-5e6b-4a7f-9c8d-1e2f3a4b5c6d");
Ссылка = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(ГУИД);
Если Ссылка.ПолучитьОбъект() = Неопределено Тогда
Сообщить("Объект с таким ГУИД не найден");
КонецЕсли;
Такой код можно выполнить в консоли кода (внешняя обработка из публикаций на профильных ресурсах), во временной внешней обработке или в модуле при отладке. Для выполнения нужны права на запуск внешних обработок и, как правило, режим толстого или тонкого клиента с разрешённым выполнением кода.
ГУИД = ДокументСсылка.УникальныйИдентификатор();
Сообщить(Строка(ГУИД));Как получить ГУИД запросом
Если нужно получить идентификаторы сразу для списка документов — например, выгрузить их для интеграции — удобнее использовать запрос. В языке запросов 1С есть функция УникальныйИдентификатор(), которая принимает ссылку и возвращает её ГУИД:
ВЫБРАТЬ
Реализация.Номер,
Реализация.Дата,
УникальныйИдентификатор(Реализация.Ссылка) КАК ГУИД
ИЗ
Документ.РеализацияТоваровУслуг КАК Реализация
ГДЕ
Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода
Запрос удобно выполнить в консоли запросов — типовой инструмент входит в состав многих конфигураций на БСП (Библиотека стандартных подсистем) или доступен как отдельная внешняя обработка. Результат можно скопировать или выгрузить в табличный документ.
Учтите ограничение: функция работает только со ссылочными полями, и её нельзя использовать в условиях соединений и отборах на всех СУБД одинаково предсказуемо. Для выборки по известному ГУИДу надёжнее сравнивать ссылку, полученную через ПолучитьСсылку(), а не сам ГУИД в запросе.
Как узнать ГУИД без конфигуратора: способы для пользователя
Обычный пользователь часто не имеет права запускать внешние обработки и открывать конфигуратор. Для таких случаев есть несколько обходных путей, и их доступность зависит от конфигурации и прав.
Адресная строка веб-клиента
Если база работает через веб-клиент, откройте документ и посмотрите на адресную строку браузера. В URL после открытия формы присутствует параметр с идентификатором ссылки — это и есть ГУИД объекта. Способ не требует никаких дополнительных прав, но работает только в веб-клиенте.
Журнал регистрации и ошибки обмена
При ошибках обмена данными в сообщениях часто фигурирует идентификатор объекта. Откройте журнал регистрации (в типовых конфигурациях: «Администрирование» → «Обслуживание» → «Журнал регистрации»), найдите событие с ошибкой — в комментарии обычно указан и тип объекта, и его ГУИД. Это помогает понять, о каком документе идёт речь, даже если он уже удалён.
Типовые обработки поиска
В конфигурациях на базе БСП есть инструменты вроде «Поиск и удаление дублей» и универсальных подборов, а также обработка «Групповое изменение реквизитов», через которую можно вывести служебные поля. Если у вас есть доступ к разделу «Администрирование», проверьте наличие инструментов разработчика — во многих поставках туда включена консоль запросов или редактор объекта, где ГУИД виден напрямую.
Как выбрать способ
Как найти документ по известному ГУИДу
Обратная задача встречается даже чаще: в логах обмена или во внешней системе есть идентификатор, и нужно понять, какой это документ. Порядок действий такой:
Сначала уточните тип документа, если он неизвестен. Если тип известен (например, из текста ошибки), используйте ПолучитьСсылку() соответствующего менеджера. Если тип неизвестен, придётся перебрать несколько видов документов или воспользоваться универсальной обработкой поиска по ГУИДу, которая делает этот перебор автоматически.
- 1Скопируйте идентификатор из сообщения об ошибке или внешней системы
- 2Определите тип документа по контексту (текст ошибки, план обмена)
- 3Выполните код: Ссылка = Документы.ВидДокумента.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаГУИД))
- 4Проверьте существование: запросом к ссылке или попыткой получить объект
- 5Если объект не найден — проверьте, не удалён ли он, и поищите в других видах документов
Важный нюанс: метод ПолучитьСсылку() возвращает ссылку даже если объекта с таким ГУИДом не существует — создаётся так называемая «битая ссылка». Поэтому после получения ссылки всегда проверяйте существование объекта, например запросом ВЫБРАТЬ Ссылка ИЗ Документ.Вид ГДЕ Ссылка = &Ссылка или через проверку реквизита: у несуществующего объекта обращение к реквизитам вернёт признак отсутствия.
Как проверить результат
Запрос по ссылке возвращает строку, реквизиты доступны
Запрос пуст, реквизиты содержат текст про отсутствие объекта — это битая ссылка
УникальныйИдентификатор(Ссылка) совпадает с искомой строкой посимвольно
Различия в регистре или дефисах — проверьте копирование
Тип ссылки соответствует ожидаемому виду документа
ГУИД найден, но это другой вид объекта — уточните источник идентификатора
Получение ГУИДа напрямую из базы данных
В клиент-серверном варианте ссылка хранится в таблице документа на стороне СУБД. В MS SQL поле ссылки обычно имеет тип binary(16), и его можно преобразовать в привычный текстовый вид. Однако есть тонкость: порядок байтов в представлении 1С отличается от стандартного строкового формата UUID, поэтому «наивное» преобразование даст неправильную строку — группы байтов нужно переставлять.
Для чтения достаточно выполнить SELECT по таблице вида _DocumentXXX (точное имя таблицы можно узнать через функцию получения структуры хранения базы данных в конфигураторе). Если вы не уверены в схеме хранения и правилах перестановки байтов, безопаснее выгрузить ГУИДы штатными средствами — запросом или обработкой — и не лезть в СУБД.
В файловом варианте базы прямой доступ к внутреннему формату 1Cv8.1CD сторонними средствами не документирован и не рекомендуется: используйте только штатные механизмы платформы.
Типичные ошибки и ограничения
Первая частая ошибка — путать ГУИД с навигационной ссылкой или с представлением ссылки. Функция Строка(Ссылка) вернёт представление вида «Реализация товаров 0000-000123 от 12.03…», а не идентификатор. Для получения именно ГУИДа нужен метод УникальныйИдентификатор().
Вторая ошибка — ожидать, что ГУИД сохранится после переноса данных. При выгрузке-загрузке через некоторые механизмы (например, простое копирование через конвертацию без сопоставления ссылок) объект в новой базе может получить другой идентификатор. Устойчивое сопоставление обеспечивают планы обмена и правила конвертации, которые специально сохраняют ГУИДы.
Третья ошибка — использовать ГУИД как ключ в запросах соединений между базами без учёта типа. Идентификатор сам по себе не содержит информации о виде документа: храните рядом с ГУИДом и тип объекта, иначе поиск превратится в перебор всех таблиц.
Когда ГУИД не поможет: альтернативы
Для сопоставления объектов между системами ГУИД — не единственный и не всегда лучший вариант. Если документ создаётся во внешней системе первым, надёжнее хранить в 1С внешний идентификатор (в дополнительных сведениях или отдельном регистре) и искать по нему. Это избавляет от зависимости от того, какая система сгенерировала ключ.
В обменах через типовые планы обмена платформа сама ведёт регистрацию соответствий, и вмешиваться в ГУИДы вручную обычно не нужно. Ручная работа с идентификаторами оправдана при разовой отладке, восстановлении после сбоев и построении собственных интеграций.
Что важно запомнить
ГУИД документа получают методом УникальныйИдентификатор() в коде или одноимённой функцией в запросе; пользователю без прав помогут веб-клиент и журнал регистрации. ПолучитьСсылку() не гарантирует существование объекта — всегда проверяйте. В SQL-базу — только читать. ГУИД не меняется при редактировании, но может измениться при переносе данных без планов обмена.
Частые вопросы
Можно ли изменить ГУИД существующего документа?
Нет, штатными средствами идентификатор существующего объекта изменить нельзя. Единственный способ получить объект с другим ГУИДом — создать новый документ и перенести в него данные, а старый удалить. При этом все ссылки на старый объект станут битыми, поэтому такую операцию делают только с пониманием последствий.
Совпадут ли ГУИДы документа в разных базах при обмене?
Если обмен настроен через планы обмена или правила конвертации с сохранением ссылок — да, объект будет создан в базе-приёмнике с тем же идентификатором. При простой выгрузке в табличный документ или «ручном» переносе идентификаторы, как правило, разойдутся.
Что делать, если по известному ГУИДу объект не находится?
Сначала проверьте, правильно ли скопирована строка: лишние пробелы, фигурные скобки или потерянные дефисы ломают разбор. Затем убедитесь, что ищете в нужном виде документов. Если объект удалён, найти его можно только в резервной копии базы — восстановите копию в тестовом контуре и посмотрите данные там.
Одинаковы ли ГУИД в 1С и GUID в SQL Server?
По сути это один и тот же 128-битный идентификатор, но порядок байтов при хранении в СУБД отличается от строкового представления. При прямом чтении из SQL нужна перестановка байтов внутри групп, иначе строка не совпадёт с тем, что показывает 1С.
Можно ли узнать ГУИД документа, не открывая базу 1С?
Только при прямом доступе к СУБД в клиент-серверном варианте и только для чтения — с учётом особенностей хранения ссылок. Для файловой базы внешних безопасных инструментов нет: потребуется запустить платформу и использовать запрос или обработку.
Зачем вообще нужен ГУИД, если есть номер документа?
Номер не уникален: он повторяется в разных периодах, организациях и при перенумерации, а также может быть строковым с префиксами. ГУИД гарантированно уникален и постоянен, поэтому именно он используется для интеграций, обменов и однозначной идентификации объекта.