Разработка и Конфигурация · 10 мин
GUID в 1С: что это такое и как с ним работать
GUID в 1С — уникальный идентификатор объекта. Разбираем, как получить GUID ссылки, зачем он нужен при обмене данными и как избежать типичных ошибок.
GUID (Globally Unique Identifier) в 1С — это уникальный идентификатор, который платформа автоматически присваивает каждому объекту базы данных: элементу справочника, документу, записи регистра и другим ссылочным сущностям. Он выглядит как строка вида «a1b2c3d4-e5f6-7890-abcd-ef1234567890» и гарантированно не повторяется в пределах базы, а при корректной генерации — и в разных базах.
Понимание GUID важно при обмене данными между конфигурациями, интеграции с внешними системами, поиске «битых» ссылок и синхронизации справочников. Пользователь в интерфейсе GUID не видит, но разработчик и администратор сталкиваются с ним постоянно: именно по GUID система решает, новый это объект или уже существующий.
В отличие от кода элемента справочника или номера документа, GUID не зависит от настроек нумерации, не меняется при перенумерации и не может быть отредактирован пользователем. Это делает его надёжным «ключом» объекта для технических задач.
Что такое GUID и зачем он нужен в 1С
Каждый объект данных в 1С имеет внутреннюю ссылку — значение, по которому платформа однозначно находит объект в базе. GUID — это текстовое представление этой ссылки, понятное и человеку, и внешним системам. Пока объект существует, его GUID не меняется: ни при переименовании, ни при изменении реквизитов, ни при перенумерации.
Основное назначение GUID — идентификация объектов при обмене между базами. Когда данные выгружаются из одной базы в другую, коды и номера могут совпадать с уже существующими, а GUID позволяет точно определить, какой объект куда относится. На этом принципе построены планы обмена, конвертация данных, синхронизация с сайтами и CRM.
Также GUID используется при интеграции через веб-сервисы и HTTP-API: внешняя система хранит у себя идентификаторы объектов 1С и по ним запрашивает или обновляет данные. Это надёжнее, чем сопоставление по наименованию или коду, которые могут дублироваться.
Где посмотреть и как получить GUID объекта
В пользовательском интерфейсе GUID не отображается — это чисто техническая информация. Получить его можно программно через встроенный язык или через специальные обработки.
Самый простой способ в коде — вызвать метод УникальныйИдентификатор() у ссылки на объект. Результат имеет тип «УникальныйИдентификатор», который легко преобразуется в строку.
Ссылка = Справочники.Номенклатура.НайтиПоКоду("000000001");
GUIDСтрокой = Строка(Ссылка.УникальныйИдентификатор());
Сообщить(GUIDСтрокой); // например: a1b2c3d4-e5f6-7890-abcd-ef1234567890Обратная задача — найти объект по известному GUID — решается конструктором Новый УникальныйИдентификатор(Строка) с последующим вызовом ПолучитьСсылку() у менеджера соответствующего типа объекта.
- 1Получите строку GUID из внешней системы или файла обмена
- 2Создайте значение: Новый УникальныйИдентификатор(СтрокаGUID)
- 3Вызовите у менеджера типа объекта метод ПолучитьСсылку(УникальныйИдентификатор)
- 4Проверьте, что ссылка не битая: запросом или проверкой Ссылка.ПолучитьОбъект() не равен Неопределено
Для разовых задач без написания кода используются готовые обработки «поиск объекта по GUID» — их можно найти в составе типовых инструментов разработчика или написать за несколько минут на встроенном языке.
Структура GUID и его особенности в 1С
Стандартный GUID состоит из 32 шестнадцатеричных символов, сгруппированных дефисами в пять блоков: 8-4-4-4-12. В 1С есть важная особенность: внутреннее двоичное представление GUID платформы отличается порядком байтов от «классического» текстового вида. Поэтому GUID из файла выгрузки 1С и GUID, записанный в XML по стандарту, могут выглядеть по-разному при сравнении побайтово.
Для практики это означает одно: при интеграции с внешними системами нужно договориться о формате передачи GUID и при необходимости выполнять преобразование порядка байтов. В типовых механизмах обмена (например, при синхронизации с сайтом) это уже учтено, но при самостоятельной разработке интеграции различие форматов — частый источник ошибок «объект не найден».
GUID и обмен данными между базами
В планах обмена и правилах конвертации данных GUID — основной критерий сопоставления объектов. Когда данные приходят в базу-приёмник, система сначала ищет объект по GUID: если нашла — обновляет его, если нет — ищет по полям поиска (код, наименование, ИНН) или создаёт новый.
Из этого следуют важные практические правила. Во-первых, при первоначальном переносе данных между базами нужно сохранять GUID объектов, иначе справочники задвоятся: в приёмнике создадутся новые объекты с новыми идентификаторами. Во-вторых, при ручном создании «одинаковых» элементов в двух базах их GUID будут разными, и синхронизация воспримет их как разные объекты.
Если обмен уже настроен и работает, вмешиваться в GUID вручную не нужно. Проблемы обычно возникают после нештатных операций: восстановления из копии, загрузки данных сторонними обработками или ручной правки правил обмена.
Битые ссылки и их связь с GUID
«Битая ссылка» — это ссылка на объект, который был физически удалён из базы. В запросах она отображается как «Объект не найден» с указанием GUID удалённого объекта. Именно по GUID в этом сообщении можно определить, какой именно объект был удалён, и понять масштаб проблемы.
Битые ссылки появляются при прямом удалении объектов без контроля ссылочной целостности — например, сторонними обработками очистки данных. Штатное удаление через пометку на удаление с последующей обработкой «Удаление помеченных объектов» проверяет наличие ссылок и не даёт удалить используемый объект.
Как проверить корректность работы с GUID
После настройки обмена или интеграции полезно выполнить контрольную проверку: выгрузить тестовый объект, убедиться, что в базе-приёмнике он создался с тем же GUID, и при повторной выгрузке обновился, а не задублировался.
Как проверить результат
Идентификаторы совпадают полностью
В приёмнике создан объект с другим GUID — будет дубль
Объект обновляется, новых элементов не создаётся
Появляются дубли с одинаковым наименованием
Ссылки открываются, объект доступен
Отображается 'Объект не найден' с GUID
Для массовой проверки удобно написать простой запрос или отчёт, сравнивающий GUID сопоставленных объектов в двух базах через COM-соединение или файл выгрузки. Расхождения на этапе тестирования устранить гораздо дешевле, чем после запуска обмена в рабочем режиме.
Ограничения и альтернативы GUID
GUID не всегда является лучшим ключом для сопоставления. Если обмен идёт между независимыми базами, где объекты создавались отдельно, GUID изначально разные, и сопоставлять приходится по бизнес-ключам: ИНН и КПП для контрагентов, артикулу для номенклатуры, коду для валют. После первого сопоставления система обычно запоминает соответствие в регистре и дальше работает по GUID.
Как выбрать ключ сопоставления
Ещё одно ограничение: GUID нечитаем для человека. Для обмена с системами, где участвуют люди (например, выгрузка в Excel для менеджеров), лучше использовать коды и наименования, а GUID оставить для машинной идентификации.
Что важно запомнить
GUID — постоянный уникальный идентификатор объекта 1С, который назначается при создании и не меняется. Получается методом УникальныйИдентификатор(), используется для обмена и интеграций. Главные риски — дубли при нарушении сопоставления и битые ссылки при нештатном удалении объектов.
Частые вопросы о GUID в 1С
Чем GUID отличается от кода элемента справочника?
Код — это номер в рамках нумерации конкретного справочника, он может повторяться в разных базах и меняться при перенумерации. GUID уникален глобально, присваивается платформой один раз и не меняется никогда. Для пользователя ориентир — код, для системы и обменов — GUID.
Можно ли изменить GUID существующего объекта?
Штатными средствами — нет, платформа не позволяет редактировать уникальный идентификатор. Единственный способ «получить объект с нужным GUID» — создать новый объект с принудительной установкой ссылки через УстановитьСсылкуНового(), что делается при переносе данных. В рабочей базе без необходимости так делать не следует.
Что означает «Объект не найден» с длинным кодом в сообщении?
Это битая ссылка: документ или регистр ссылается на объект, который был физически удалён. Длинный код в скобках — GUID удалённого объекта. По нему можно определить тип и происхождение удалённого объекта, а затем либо восстановить объект с этим GUID, либо очистить ссылки на него.
Совпадут ли GUID объектов после переноса данных в новую базу?
Зависит от способа переноса. Типовые обработки переноса (например, через конвертацию данных) сохраняют GUID, и объекты в новой базе получают те же идентификаторы. Если же данные загружаются как «новые» — через обмен или произвольную загрузку — GUID будут сгенерированы заново.
Почему внешняя система не находит объект по GUID из 1С?
Чаще всего причина в различии порядка байтов: внутреннее представление GUID в 1С отличается от стандартного текстового формата. Проверьте, в каком виде идентификатор передаётся в API, и согласуйте с разработчиком внешней системы единый формат — обычно решается простым преобразованием строки.
Может ли GUID повториться в двух разных базах случайно?
Теоретически вероятность совпадения случайно сгенерированных GUID существует, но она настолько мала, что на практике считается нулевой. Реальные совпадения встречаются только тогда, когда базы связаны происхождением: одна создана копией другой или данные переносились с сохранением идентификаторов.