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

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

Как узнать идентификатор документа в 1С

Как узнать уникальный идентификатор (GUID) документа в 1С: через запрос, отладчик, обработку и встроенный язык. Проверка результата, типичные ошибки и FAQ.

Каждый документ в базе 1С имеет внутренний уникальный идентификатор — GUID (глобально уникальный идентификатор). Он не совпадает с номером документа, который видит пользователь: номер может меняться при перенумерации, а GUID остаётся неизменным на всём протяжении жизни объекта. Именно по GUID работает обмен данными между базами, синхронизация с сайтами и внешними системами.

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

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

Что такое GUID документа и где он хранится

GUID (Globally Unique Identifier) — это 128-битное значение, которое 1С присваивает объекту в момент его создания. В строковом виде он выглядит как набор из 36 символов: 8a3f2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c. Идентификатор генерируется платформой автоматически и не может быть изменён штатными средствами.

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

Как узнать идентификатор через встроенный язык

Основной способ — метод УникальныйИдентификатор(), который есть у любой ссылки на объект базы. Достаточно получить ссылку на документ и вызвать метод. Пример кода:

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

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

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

КонецЕсли;

Этот код можно выполнить в консоли кода (внешней обработке «Консоль кода» или аналогичной), во внешней обработке собственной разработки или в обработчике любого доступного события. Результат выводится в окно сообщений в строковом представлении GUID.

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

Обратная задача — найти документ по известному GUID — решается через конструктор Новый УникальныйИдентификатор и метод ПолучитьСсылку. Это полезно, когда идентификатор пришёл из внешней системы, а нужно открыть объект в базе.

Как получить GUID через консоль запросов

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

ВЫБРАТЬ

РеализацияТоваровУслуг.Номер КАК Номер,

УникальныйИдентификатор(РеализацияТоваровУслуг.Ссылка) КАК GUID

ИЗ

Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг

ГДЕ

РеализацияТоваровУслуг.Дата МЕЖДУ &НачалоПериода И &КонецПериода

Запрос выполняется в консоли запросов — типовой обработке, которая есть в составе инструментов разработчика, либо в любой аналогичной внешней консоли. Результат выводится таблицей, которую можно сохранить в табличный документ и передать, например, разработчику интеграции.

Порядок действий в консоли запросов
  1. 1
    Откройте консоль запросов в режиме предприятия
  2. 2
    Вставьте текст запроса с функцией УникальныйИдентификатор
  3. 3
    Задайте параметры отбора: период, организацию, номер
  4. 4
    Нажмите «Выполнить» и проверьте колонку GUID в результате
  5. 5
    При необходимости сохраните таблицу в файл

Как узнать GUID через отладчик

Если у вас есть доступ к конфигуратору, идентификатор удобно посмотреть в отладке. Установите точку останова в модуле, где доступна ссылка на документ, запустите отладку и в табло (окно вычисления выражений) введите выражение ДокументСсылка.УникальныйИдентификатор().

Этот способ хорош, когда документ уже участвует в каком-то алгоритме — например, при разборе ошибки обмена. Вы видите GUID в контексте выполнения кода и сразу можете сравнить его с тем, что передаётся во внешнюю систему.

Способы для пользователя без конфигуратора

Не у каждого специалиста есть права на конфигуратор. В этом случае идентификатор можно получить штатными и полуштатными средствами режима «Предприятие».

Через внешнюю обработку

Существуют универсальные обработки «Уникальный идентификатор объекта», которые открываются через меню «Файл — Открыть». Достаточно выбрать документ в поле ссылки — обработка покажет его GUID и, при необходимости, выполнит обратный поиск объекта по идентификатору.

Через строку навигационной ссылки

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

Сравнение способов

Встроенный язык

Точно и быстро для одного объекта; требует права на выполнение кода

Консоль запросов

Подходит для массовой выборки по отбору; нужна сама консоль

Отладчик

Удобен при разборе ошибок; нужен доступ к конфигуратору

Внешняя обработка

Работает без конфигуратора; обработку нужно найти и открыть

Навигационная ссылка

Доступна обычному пользователю; формат отличается от текстового GUID

Как проверить результат и частые ошибки

Проверить корректность полученного GUID просто: выполните обратный поиск — создайте объект УникальныйИдентификатор из строки и получите ссылку. Если ссылка не пустая и открывает именно тот документ, идентификатор верный.

GUID = Новый УникальныйИдентификатор("8a3f2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c");

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

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

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

КонецЕсли;

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

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

Когда GUID действительно нужен, а когда можно обойтись без него

Идентификатор незаменим при настройке синхронизации между базами, интеграции с сайтом, CRM или складской системой, а также при поиске «битых ссылок» и разборе расхождений после обмена. Во всех этих задачах номер и дата документа не гарантируют однозначного совпадения.

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

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

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

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

36 символов с дефисами, шестнадцатеричные цифры

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

Строка короче, содержит «Объект не найден»

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

ПолучитьСсылку(GUID) открывает нужный документ

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

Ссылка пустая или ведёт на другой объект

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

GUID совпадает в базе-источнике и базе-приёмнике

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

Документ дублируется с новым идентификатором

Часто задаваемые вопросы

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

Да. Достаточно права открывать внешние обработки: запустите универсальную обработку поиска GUID или получите навигационную ссылку на документ через меню «Ещё». Полный доступ к конфигуратору для этого не требуется.

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

Нет. Идентификатор присваивается один раз при создании объекта и не зависит от проведения, изменения реквизитов или перенумерации. GUID меняется только при физическом удалении и повторном создании объекта.

Как найти документ, если известен только его GUID?

Используйте метод ПолучитьСсылку соответствующего менеджера документа: Документы.ИмяДокумента.ПолучитьСсылку(Новый УникальныйИдентификатор("...")). Если тип документа неизвестен, придётся перебрать нужные виды документов и проверить существование ссылки в каждом.

Почему GUID из навигационной ссылки не совпадает с текстовым?

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

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

Зависит от способа переноса. При обмене через правила конвертации или планы обмена GUID сохраняется, и документ в приёмнике получает тот же идентификатор. При создании документа вручную или загрузке без привязки по GUID объект получит новый идентификатор.

Что означает строка «Объект не найден» вместо представления ссылки?

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

Итог

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

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