Разработка и Конфигурация · 11 мин
Как посмотреть GUID в 1С: все рабочие способы
Как посмотреть GUID объекта в 1С: через СКД, консоль кода, метод УникальныйИдентификатор(), внешние обработки и запросы. Примеры кода и типичные ошибки.
GUID (глобальный уникальный идентификатор) в 1С — это 36-символьная строка вида 8a3f7c2e-1b4d-4e5a-9c6f-2d8b0a1e3f45, которую платформа присваивает каждому объекту базы: документу, элементу справочника, записи регистра. Именно по GUID система однозначно отличает один объект от другого, даже если у них совпадают наименования и номера.
Знать GUID объекта чаще всего требуется в трёх ситуациях: при настройке обмена данными между базами (сопоставление объектов идёт именно по идентификаторам), при разборе ошибок синхронизации с сайтом или другой учётной системой и при поиске «битых» ссылок. Пользователю в обычном режиме GUID не показывается — платформа скрывает его, поэтому для просмотра нужны специальные приёмы.
Ниже разобраны все рабочие способы: от простых подходов через встроенные инструменты до программных методов для разработчика. Выбор зависит от того, есть ли у вас доступ к конфигуратору, работаете вы в тонком клиенте или веб-клиенте и насколько часто задача повторяется.
Где в 1С хранится GUID и почему его не видно в интерфейсе
Платформа 1С хранит уникальный идентификатор внутри ссылки на объект. Когда вы открываете карточку контрагента или документа, система оперирует именно ссылкой, но на экран выводит только представление — наименование, номер, дату. Сам GUID при этом остаётся «под капотом» и в стандартных формах не отображается.
Это сделано осознанно: для пользователя идентификатор не несёт смысла, а случайное его изменение или копирование «вручную» могло бы нарушить целостность данных. Поэтому штатного поля «GUID» ни в одной типовой форме вы не найдёте — его нужно извлекать программно или через специальные инструменты.
Важно различать GUID ссылки и GUID объекта в плане обмена. При выгрузке в формате EnterpriseData или через универсальный обмен объект часто идентифицируется именно по GUID ссылки. Если объект был удалён и создан заново (даже с теми же реквизитами), GUID будет другим — и синхронизация посчитает его новым объектом.
Способ 1: через консоль кода или внешнюю обработку
Самый универсальный метод — выполнить фрагмент встроенного кода. Для этого подойдёт любая консоль кода: из подсистемы «Инструменты разработчика» (ИР), из типовых обработок на Инфостарте или встроенная в вашу конфигурацию, если она доработана. Метод работает и в тонком, и в толстом клиенте.
Логика простая: получаете ссылку на объект (выбрав её через подбор или найдя запросом) и вызываете метод УникальныйИдентификатор(). Результат выводится через Сообщить() или в поле результата.
// Вариант 1: известна ссылка (например, выбрана в параметре)
Сообщить(СсылкаНаОбъект.УникальныйИдентификатор());
// Вариант 2: поиск по наименованию и вывод GUID
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 Т.Ссылка ИЗ Справочник.Контрагенты КАК Т ГДЕ Т.Наименование = &Наименование";
Запрос.УстановитьПараметр("Наименование", "ООО Ромашка");
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Сообщить(Строка(Выборка.Ссылка.УникальныйИдентификатор()));
КонецЕсли;Обратите внимание: метод УникальныйИдентификатор() есть только у ссылок, а не у объектов данных. Если у вас переменная типа «СправочникОбъект», сначала обратитесь к её свойству Ссылка. Это частая причина ошибки «Метод не обнаружен».
Способ 2: через консоль запросов и СКД
Если нужно получить GUID сразу для списка объектов — например, выгрузить идентификаторы всех контрагентов для сопоставления с внешней системой — удобнее консоль запросов. В языке запросов 1С есть функция УникальныйИдентификатор(), которая применяется к полю ссылки.
Пример запроса: ВЫБРАТЬ Т.Ссылка, УникальныйИдентификатор(Т.Ссылка) КАК GUID ИЗ Справочник.Номенклатура КАК Т. Результат можно выгрузить в табличный документ или Excel и передать в смежную систему. Тот же приём работает в отчётах на СКД — добавьте вычисляемое поле с этой функцией, и GUID появится в отчёте без единой строки кода.
Учтите ограничение: функция УникальныйИдентификатор() в запросе не работает для таблиц, у которых нет ссылочного поля (например, для табличных частей или записей регистров сведений без измерений-ссылок). Для регистров идентифицируйте строку по набору измерений или по регистратору.
- 1Откройте консоль запросов (ИР или типовая обработка)
- 2Напишите запрос с функцией УникальныйИдентификатор(Ссылка)
- 3Выполните запрос и найдите нужный объект в результате
- 4Скопируйте значение колонки GUID
- 5Проверьте: длина строки — 36 символов с дефисами
Способ 3: через инструменты разработчика (ИР) и типовые функции
Подсистема «Инструменты разработчика» — стандарт де-факто для таких задач. В ней есть команда «Редактор объекта БД», которая показывает GUID выбранной ссылки прямо в форме, а также консоль кода с подсказками. Если ИР развёрнут в базе, это самый быстрый путь: открыли редактор, указали ссылку — идентификатор виден сразу.
В некоторых типовых конфигурациях (например, в БСП — библиотеке стандартных подсистем) есть общие модули для работы с идентификаторами. Так, функция вида ОбщегоНазначения.ЗначениеРеквизитаОбъекта напрямую GUID не вернёт, но связка с методом ссылки решает задачу в одну строку в отладчике.
Ещё один приём для разовой задачи — окно «Вычислить выражение» (Shift+F9) в отладчике конфигуратора. Остановившись на точке останова, вычислите выражение Ссылка.УникальныйИдентификатор() — получите GUID без написания обработок.
Обратная задача: найти объект по известному GUID
Часто нужно не узнать GUID, а наоборот — найти объект, которому он принадлежит. Типичный сценарий: в логе обмена ошибка «объект с идентификатором 8a3f7c2e-... не найден», и требуется понять, что это был за документ и в какой таблице его искать.
Для этого служит метод ПолучитьСсылку(Новый УникальныйИдентификатор("строка-guid")) у менеджера конкретного типа, например Справочники.Контрагенты.ПолучитьСсылку(...). Если тип неизвестен, перебирают менеджеры всех ссылочных типов и проверяют, не пустая ли получилась ссылка и существует ли объект.
Ид = Новый УникальныйИдентификатор("8a3f7c2e-1b4d-4e5a-9c6f-2d8b0a1e3f45");
Ссылка = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(Ид);
Если Ссылка.ПолучитьОбъект() = Неопределено Тогда
Сообщить("Объект не найден (битая ссылка или другой тип)");
Иначе
Сообщить("Найден: " + Ссылка);
КонецЕсли;В ИР для этого есть готовая функция поиска по GUID по всем таблицам — она перебирает типы автоматически. Это заметно быстрее ручного перебора, особенно в больших конфигурациях с сотнями видов документов.
GUID в файловой и клиент-серверной базе, в веб-клиенте
Сам идентификатор не зависит от режима работы: в файловой базе, на сервере 1С и в СУБД (MS SQL, PostgreSQL) GUID одного и того же объекта одинаков. Различается только способ его посмотреть. В веб-клиенте, где недоступен толстый клиент и часть обработок, работают консоль кода в тонком режиме, запросы и ИР (его веб-совместимые функции).
На уровне СУБД GUID хранится в бинарном виде, и его текстовое представление в SQL отличается порядком байтов от того, что показывает 1С. Поэтому вытаскивать GUID напрямую SQL-запросом к таблицам — плохая идея: полученное значение потребует перестановки байтов и легко ошибиться. Практически всегда надёжнее получить идентификатор средствами платформы.
Сравнение вариантов
Подходит для разовой проверки одного объекта; требует установленной консоли или ИР
Оптимально для списка объектов и выгрузки GUID пакетом; не подходит для регистров без ссылок
Быстро, если уже идёт отладка; неудобно для массовых задач
Не рекомендуется: бинарный формат и перестановка байтов, высокий риск ошибки
Типичные ошибки и как их избежать
Самая распространённая ошибка — попытка вызвать УникальныйИдентификатор() у объекта, а не у ссылки. Сообщение «Метод объекта не обнаружен» означает, что нужно сначала обратиться к свойству Ссылка. Вторая по частоте — перепутанные GUID после восстановления базы из копии: объекты, созданные заново обработкой загрузки, получили новые идентификаторы, и сопоставление со старой системой разошлось.
Третья ошибка — копирование GUID из письма или лога с лишними пробелами и переносами строк. Конструктор Новый УникальныйИдентификатор(строка) выдаст ошибку формата, если в строке есть невидимые символы. Перед использованием очищайте строку функцией СокрЛП().
Как проверить результат
36 символов, 4 дефиса, только hex-цифры 0-9 и a-f
Другая длина, русские буквы, лишние символы
По GUID через ПолучитьСсылку находится именно тот объект
Объект не найден или найден другой
GUID в источнике и приёмнике совпадают для сопоставленного объекта
Идентификаторы различаются — объект будет задвоен
Что важно запомнить
GUID в 1С не отображается в интерфейсе и извлекается только средствами платформы: методом УникальныйИдентификатор() у ссылки, функцией в запросе или инструментами разработчика. Идентификатор неизменен в течение жизни объекта и является основой обменов, поэтому его нельзя править вручную, а при пересоздании объекта он всегда становится новым.
Частые вопросы
Можно ли посмотреть GUID в 1С без конфигуратора и программирования?
Да, если в базе установлены «Инструменты разработчика» или аналогичная подсистема — там GUID показывается в редакторе объекта. Без каких-либо инструментов, штатной кнопкой в типовой форме, идентификатор посмотреть нельзя: платформа принципиально его скрывает.
Меняется ли GUID объекта при изменении его реквизитов?
Нет. Идентификатор присваивается один раз при создании ссылки и остаётся постоянным при любых изменениях наименования, реквизитов и даже пометки удаления. Новый GUID появляется только у заново созданного объекта.
Что означает GUID из всех нулей?
Идентификатор вида 00000000-0000-0000-0000-000000000000 — это «пустой» GUID. Он встречается у пустых ссылок и в полях, где идентификатор не заполнен. Найти по нему реальный объект невозможно.
Как узнать GUID записи регистра сведений?
У записей регистров сведений нет собственного GUID — они идентифицируются набором измерений (и периодом для периодических регистров). Если нужен стабильный идентификатор для обмена, его добавляют отдельным реквизитом или используют GUID регистратора.
Почему GUID в выгрузке XML отличается от того, что показывает 1С?
Обычно дело не в отличии, а в формате: в некоторых выгрузках идентификатор записывается без дефисов или в другом регистре. Сравнивайте значения, приведя оба к одному виду — 32 hex-символа без разделителей, в нижнем регистре.
Можно ли задать объект свой GUID при загрузке данных?
Да, при программной загрузке: сначала формируется ссылка через ПолучитьСсылку(Новый УникальныйИдентификатор(...)), затем она назначается новому объекту через УстановитьСсылкуНового. Так сохраняют идентификаторы при миграции между базами, но использовать приём нужно аккуратно, чтобы не создать конфликтов с существующими объектами.