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

Разработка и Конфигурация · 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 не отображается — это чисто техническая информация. Получить его можно программно через встроенный язык или через специальные обработки.

Самый простой способ в коде — вызвать метод УникальныйИдентификатор() у ссылки на объект. Результат имеет тип «УникальныйИдентификатор», который легко преобразуется в строку.

bsl
Ссылка = Справочники.Номенклатура.НайтиПоКоду("000000001");
GUIDСтрокой = Строка(Ссылка.УникальныйИдентификатор());
Сообщить(GUIDСтрокой); // например: a1b2c3d4-e5f6-7890-abcd-ef1234567890

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

Как найти объект по GUID
  1. 1
    Получите строку GUID из внешней системы или файла обмена
  2. 2
    Создайте значение: Новый УникальныйИдентификатор(СтрокаGUID)
  3. 3
    Вызовите у менеджера типа объекта метод ПолучитьСсылку(УникальныйИдентификатор)
  4. 4
    Проверьте, что ссылка не битая: запросом или проверкой Ссылка.ПолучитьОбъект() не равен Неопределено

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

Структура GUID и его особенности в 1С

Стандартный GUID состоит из 32 шестнадцатеричных символов, сгруппированных дефисами в пять блоков: 8-4-4-4-12. В 1С есть важная особенность: внутреннее двоичное представление GUID платформы отличается порядком байтов от «классического» текстового вида. Поэтому GUID из файла выгрузки 1С и GUID, записанный в XML по стандарту, могут выглядеть по-разному при сравнении побайтово.

Для практики это означает одно: при интеграции с внешними системами нужно договориться о формате передачи GUID и при необходимости выполнять преобразование порядка байтов. В типовых механизмах обмена (например, при синхронизации с сайтом) это уже учтено, но при самостоятельной разработке интеграции различие форматов — частый источник ошибок «объект не найден».

GUID и обмен данными между базами

В планах обмена и правилах конвертации данных GUID — основной критерий сопоставления объектов. Когда данные приходят в базу-приёмник, система сначала ищет объект по GUID: если нашла — обновляет его, если нет — ищет по полям поиска (код, наименование, ИНН) или создаёт новый.

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

Типичные ошибки при работе с GUID
01
Сопоставление объектов по наименованию вместо GUID — приводит к дублям при любом переименовании
02
Удаление и пересоздание объекта вместо исправления — старые ссылки из внешних систем становятся битыми
03
Игнорирование различия порядка байтов GUID при интеграции — внешняя система не находит объекты
04
Хранение GUID в базе как числа или строки без контроля формата — ошибки преобразования при поиске

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

Битые ссылки и их связь с GUID

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

Битые ссылки появляются при прямом удалении объектов без контроля ссылочной целостности — например, сторонними обработками очистки данных. Штатное удаление через пометку на удаление с последующей обработкой «Удаление помеченных объектов» проверяет наличие ссылок и не даёт удалить используемый объект.

Как проверить корректность работы с GUID

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

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

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

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

Идентификаторы совпадают полностью

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

В приёмнике создан объект с другим GUID — будет дубль

Повторная выгрузка того же объекта
Норма

Объект обновляется, новых элементов не создаётся

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

Появляются дубли с одинаковым наименованием

Ссылки на объект в документах
Норма

Ссылки открываются, объект доступен

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

Отображается 'Объект не найден' с GUID

Для массовой проверки удобно написать простой запрос или отчёт, сравнивающий GUID сопоставленных объектов в двух базах через COM-соединение или файл выгрузки. Расхождения на этапе тестирования устранить гораздо дешевле, чем после запуска обмена в рабочем режиме.

Ограничения и альтернативы GUID

GUID не всегда является лучшим ключом для сопоставления. Если обмен идёт между независимыми базами, где объекты создавались отдельно, GUID изначально разные, и сопоставлять приходится по бизнес-ключам: ИНН и КПП для контрагентов, артикулу для номенклатуры, коду для валют. После первого сопоставления система обычно запоминает соответствие в регистре и дальше работает по GUID.

Маршрут решения

Как выбрать ключ сопоставления

Базы связаны с момента создания или данные переносились с сохранением GUIDИспользуйте сопоставление по GUID — это самый надёжный вариант
Объекты создавались независимо в каждой базеСначала сопоставьте по бизнес-ключам (ИНН, артикул, код), затем зафиксируйте соответствие GUID
Интеграция с внешней системой через APIПередавайте 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 существует, но она настолько мала, что на практике считается нулевой. Реальные совпадения встречаются только тогда, когда базы связаны происхождением: одна создана копией другой или данные переносились с сохранением идентификаторов.