Администрирование · 10 мин
GUID в 1С: как найти уникальный идентификатор объекта
Как найти GUID (уникальный идентификатор) справочника, документа или ссылки в 1С: через конфигуратор, запросы, внешнюю обработку и код. Практические способы и ошибки.
GUID (глобальный уникальный идентификатор) в 1С — это 36-символьная строка вида «8d4f5e2a-3b1c-4e7a-9f2d-1a2b3c4d5e6f», которую платформа присваивает каждой ссылке на объект: элементу справочника, документу, записи плана счетов и так далее. В отличие от кода или номера, GUID не меняется при перенумерации и не повторяется даже в разных базах, поэтому именно по нему работает обмен данными, синхронизация с сайтами и внешними системами.
Найти GUID нужно в типичных ситуациях: восстановить «битую» ссылку вида «Объект не найден», сопоставить записи двух баз после обмена, передать идентификатор разработчику внешней системы или проверить, тот ли это объект после переноса данных. Ниже — рабочие способы получить GUID в режиме предприятия и конфигуратора, а также обратная задача: найти объект по известному GUID.
Что такое GUID в 1С и где он хранится
Каждая ссылка в 1С — это не код и не номер, а внутреннее значение, построенное на базе UUID. При выводе GUID представляется строкой из 32 шестнадцатеричных цифр, сгруппированных дефисами. Идентификатор формируется при создании объекта и остаётся неизменным всю жизнь ссылки, включая выгрузки и загрузки через типовые планы обмена.
Важно понимать: GUID хранится внутри самой ссылки, а не в отдельном реквизите объекта. Поэтому в таблицах базы данных вы не найдёте колонку «GUID» — идентификатор извлекается программно методом УникальныйИдентификатор() или функцией XMLСтрока(). Это объясняет, почему «просто открыть карточку и посмотреть» не получится: в стандартных формах GUID не отображается.
У регистров сведений и наборов записей ссылочного GUID нет — там записи идентифицируются набором измерений. GUID есть только у ссылочных типов: справочников, документов, планов видов характеристик, планов счетов, планов видов расчёта, задач, бизнес-процессов, планов обмена.
Как найти GUID объекта через внешнюю обработку
Самый быстрый способ для пользователя без навыков программирования — внешняя обработка «Получение GUID» или аналогичная. Такие обработки распространяются свободно и работают в любом режиме предприятия без изменения конфигурации. Обработка открывается через меню «Файл → Открыть» (в управляемом приложении — «Главное меню → Файл → Открыть»).
Порядок работы типичный: в поле обработки выбираете объект (например, элемент справочника «Номенклатура»), и обработка выводит его GUID в текстовом виде. Многие обработки сразу показывают и обратное — находят объект по вставленному GUID.
Если скачивать обработку нельзя (ограничения безопасности), тот же результат даёт консоль кода или любая форма, где можно выполнить выражение. Подробнее — в следующем разделе.
- 1Откройте меню: Файл → Открыть (или Главное меню → Файл → Открыть)
- 2Выберите файл внешней обработки получения GUID
- 3В поле объекта укажите нужный элемент справочника или документ
- 4Скопируйте отображённый GUID через буфер обмена
- 5Проверьте: строка должна содержать 36 символов с четырьмя дефисами
Как получить GUID программно: запрос и код
В коде на встроенном языке GUID ссылки получают двумя способами. Первый — метод УникальныйИдентификатор(), который возвращает значение типа «УникальныйИдентификатор»; при преобразовании в строку получается привычный вид с дефисами. Второй — функция XMLСтрока(Ссылка), которая сразу возвращает строковое представление. Для большинства задач обмена используют именно XMLСтрока: результат совпадает с тем, что пишется в файлы обмена.
// Вариант 1
ГУИД = Строка(СсылкаНаОбъект.УникальныйИдентификатор());
// Вариант 2 — идентичен по результату
ГУИД = XMLСтрока(СсылкаНаОбъект);
В языке запросов метод УникальныйИдентификатор() недоступен напрямую, но GUID можно вывести через представление ссылки либо получить запросом список ссылок и затем в обходе результата вычислить идентификаторы. На практике для массового вывода GUID удобнее консоль запросов с постобработкой или небольшой отчёт на СКД с вычисляемым полем.
ГУИД = XMLСтрока(СсылкаНаОбъект); // вернёт строку вида 8d4f5e2a-3b1c-4e7a-9f2d-1a2b3c4d5e6fКак найти объект по известному GUID
Обратная задача возникает при разборе «битых ссылок» и логов обмена: есть GUID, нужно понять, что это за объект. Сначала определите тип объекта. Если GUID пришёл из файла обмена, тип обычно указан рядом (например, «CatalogObject.Номенклатура»). Если типа нет, придётся перебирать метаданные.
Программно объект находится через метод менеджера типа: Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаГУИД)). Далее проверяют, существует ли объект: если запрос по полученной ссылке не вернул данных либо Ссылка.ПолучитьОбъект() возвращает Неопределено — объект удалён, и перед вами «битая ссылка».
ГУИД = Новый УникальныйИдентификатор("8d4f5e2a-3b1c-4e7a-9f2d-1a2b3c4d5e6f");
Ссылка = Справочники.Номенклатура.ПолучитьСсылку(ГУИД);
Если Ссылка.ПолучитьОбъект() = Неопределено Тогда
// объект с таким GUID в базе отсутствует
КонецЕсли;
Для поиска по всем типам сразу пишут цикл по коллекциям метаданных (справочники, документы и т.д.) с проверкой существования каждой ссылки. Готовые обработки «Поиск объекта по GUID» делают то же самое автоматически.
Как восстановить объект по GUID при «битой ссылке»
Текст «Объект не найден (8d4f5e2a:...)» в документе или записи означает: ссылка с таким GUID есть, а самого объекта в базе нет. Такое случается после удаления без контроля ссылочной целостности, сбоев обмена или загрузки неполного пакета данных.
Основной способ восстановления — дождаться повторной выгрузки объекта из базы-источника: при обмене объект придёт со своим исходным GUID и встанет на место «битой» ссылки автоматически. Если источника нет, объект создают вручную с принудительной установкой ссылки через УстановитьСсылкуНового(): новому объекту назначают ссылку с нужным GUID до записи, и все существующие упоминания начинают указывать на него.
Учтите ограничение: восстановленный таким способом объект содержит только те данные, которые вы внесёте вручную. Реквизиты, табличные части и движения исходного объекта по одному GUID не восстанавливаются — для этого нужна выгрузка из резервной копии или базы-источника.
GUID при обмене данными и типичные ошибки
В типовых планах обмена сопоставление объектов идёт по GUID: объект, выгруженный из одной базы, загружается в другую с тем же идентификатором. Благодаря этому перенумерация кодов и изменение наименований не ломают синхронизацию. Проблемы начинаются, когда объект создали независимо в обеих базах — получаются дубли с разными GUID и одинаковым содержимым.
Разруливать дубли нужно через сопоставление в настройках обмена (поиск по реквизитам с последующей «склейкой»), а не ручной правкой GUID. Принудительная смена GUID существующего объекта штатными средствами невозможна — идентификатор меняется только созданием нового объекта с заданной ссылкой, что фактически означает перенос данных.
Как проверить результат и не ошибиться
Полученный GUID проверяйте по формату: 36 символов, группы 8-4-4-4-12 шестнадцатеричных цифр через дефис. Строка из сообщения «Объект не найден» часто выглядит иначе (с двоеточием и другим порядком групп) — это внутреннее представление, и для поиска его нужно преобразовать обработкой или кодом, иначе объект не найдётся.
После поиска объекта по GUID убедитесь, что найден именно тот элемент: сверьте наименование, код и дату создания с ожидаемыми. Если по GUID нашёлся объект в другой базе — дополнительно сверьте несколько реквизитов, потому что вероятность коллизии GUID практически нулевая, но человеческая ошибка при копировании строки вполне реальна.
Как проверить результат
36 символов, группы 8-4-4-4-12 через дефисы
Двоеточия, другая длина, буквы выше F — это не GUID, а внутреннее представление
ПолучитьОбъект() вернул объект, реквизиты доступны
Вернуло Неопределено — объект удалён, ссылка «битая»
Наименование и реквизиты совпадают с ожидаемыми
Найден объект с похожими данными, но другим содержимым — возможен дубль из обмена
Частые вопросы о GUID в 1С
Можно ли узнать GUID без программирования и внешних обработок?
Частично да. GUID виден в файлах выгрузки обмена данными и в универсальном отчёте, если добавить вычисляемое поле. Но без обработки или минимального кода в форме объекта идентификатор не отображается — платформа его не показывает штатно.
Меняется ли GUID при переносе объекта между базами?
При типовом обмене — нет: объект загружается с исходным GUID, иначе сопоставление не работало бы. GUID изменится только если объект создать заново вручную или обработкой без установки ссылки — тогда платформа сгенерирует новый идентификатор.
Чем GUID отличается от кода справочника и номера документа?
Код и номер — видимые пользователю реквизиты, которые могут повторяться в разных базах и меняться при перенумерации. GUID — скрытый внутренний идентификатор, уникальный глобально и неизменный в течение жизни объекта.
Можно ли двум объектам назначить одинаковый GUID?
В одной базе — нет, платформа не даст записать два объекта одного типа с одной ссылкой. В разных базах одинаковый GUID у разных объектов возможен при некорректной настройке обмена, и это приводит к конфликтам при синхронизации.
Почему XMLСтрока и УникальныйИдентификатор дают одинаковый результат?
Оба способа выводят один и тот же 128-битный идентификатор ссылки, только один возвращает значение специального типа, а другая — сразу строку. Для передачи во внешние системы обычно используют строковый вариант.
Что делать, если GUID из сообщения об ошибке не находится?
Скорее всего, вы копируете внутреннее представление с двоеточием. Преобразуйте его в стандартный формат через обработку поиска по GUID или проверьте, не перепутаны ли группы символов при ручном наборе.
Что важно запомнить
GUID — неизменный идентификатор ссылки, а не реквизит объекта. Получают его через XMLСтрока() или УникальныйИдентификатор(), объект по GUID ищут через ПолучитьСсылку() с обязательной проверкой существования. «Битые ссылки» восстанавливаются обменом или установкой ссылки новому объекту, а не удалением.