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

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

ГУИД в 1С: сколько символов и как с ним работать

Сколько символов в ГУИДе 1С, как устроен идентификатор, способы получить GUID объекта, преобразование из ссылки и обратно, типичные ошибки при обмене.

ГУИД (GUID, глобально уникальный идентификатор) в 1С — это строка из 36 символов, которая однозначно идентифицирует любой объект базы данных: элемент справочника, документ, запись регистра. Формат фиксированный: 32 шестнадцатеричных символа, сгруппированных в пять блоков через дефисы, например 8a3f2c1e-9b4d-4e5f-a1b2-c3d4e5f6a7b8.

Длина 36 символов — это стандартное текстовое представление 128-битного значения. Внутри платформа хранит идентификатор компактно, но при выводе в строку, передаче через веб-сервисы или обмене между базами всегда используется именно 36-символьная форма с дефисами. Если вы встретили значение из 32 символов без дефисов — это тот же GUID, но записанный без разделителей, что допустимо при программной обработке.

Ниже разобрано, как устроен ГУИД, где его посмотреть в пользовательском режиме и в коде, как преобразовать ссылку в строку и обратно, а также какие ошибки чаще всего возникают при обмене данными между базами.

Формат ГУИДа: из чего состоят 36 символов

Строковое представление GUID строится по шаблону XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. Первые три блока — по 8, 4 и 4 символа, четвёртый — 4 символа, пятый — 12. Допустимы только цифры 0–9 и латинские буквы a–f (регистр не имеет значения, платформа обычно выводит строчные буквы).

Каждый символ кодирует 4 бита, поэтому 32 значащих символа дают 128 бит информации. Такое пространство значений делает вероятность случайного совпадения двух идентификаторов практически нулевой, что и позволяет использовать GUID как ключ объекта при обмене между разными информационными базами.

Как получить ГУИД объекта в коде

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

ГУИДСтрокой = Строка(СсылкаНаЭлемент.УникальныйИдентификатор());

// Результат: "8a3f2c1e-9b4d-4e5f-a1b2-c3d4e5f6a7b8"

Обратная операция — создание идентификатора из строки и получение ссылки по нему — выполняется через конструктор и метод ПолучитьСсылку менеджера объекта:

Идентификатор = Новый УникальныйИдентификатор("8a3f2c1e-9b4d-4e5f-a1b2-c3d4e5f6a7b8");

СсылкаНаЭлемент = Справочники.Номенклатура.ПолучитьСсылку(Идентификатор);

Важная проверка: полученная таким способом ссылка может оказаться «битой», если объект с таким GUID в базе отсутствует. Поэтому после ПолучитьСсылку стоит проверить существование объекта через запрос или попытку обращения к реквизиту с обработкой исключения.

Как узнать ГУИД элемента справочника
  1. 1
    Откройте консоль кода или обработку с возможностью выполнения произвольного кода
  2. 2
    Получите ссылку на нужный элемент через поиск по наименованию или запрос
  3. 3
    Вызовите Ссылка.УникальныйИдентификатор() и преобразуйте результат в строку
  4. 4
    Проверьте длину результата: должно быть ровно 36 символов с дефисами

Где посмотреть ГУИД без программирования

В пользовательском режиме ГУИД не отображается в стандартных формах, но есть несколько практических способов его увидеть. Первый — внешние обработки «Редактор объекта» или аналогичные инструменты для разработчиков, которые показывают ссылку и идентификатор выбранного элемента. Второй — динамический список с добавленной колонкой, если конфигурация это позволяет.

Третий способ — через адресную строку веб-клиента. При открытии объекта в тонком или веб-клиенте в URL часто присутствует внутреннее представление ссылки, из которого можно извлечь идентификатор. Этот метод зависит от версии платформы и режима работы, поэтому надёжнее использовать обработку или консоль кода.

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

ГУИД в обмене данными и интеграциях

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

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

Хранение ГУИДа в реквизитах и строковых полях

Частая задача — сохранить GUID внешней системы в реквизите объекта. Здесь важна длина строки: минимум 36 символов, а с учётом возможных скобок или префиксов внешних систем разумно закладывать 40–50. Если поставить длину 32, строка с дефисами обрежется, и восстановить идентификатор будет невозможно.

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

Типичные ошибки при работе с ГУИД
01
Отводить под хранение GUID строку длиной 32 символа — значение с дефисами обрезается и теряется
02
Сравнивать идентификаторы строками без учёта регистра — внешняя система может вернуть верхний регистр, и сравнение даст ложное несовпадение
03
Пересоздавать объект вместо переноса — новый GUID рвёт связь с базой-корреспондентом и порождает дубли при обмене
04
Использовать ПолучитьСсылку без проверки существования объекта — дальнейшее обращение к реквизитам битой ссылки вызывает ошибку

Проверка корректности и отладка

Признак корректного GUID — длина 36 символов, дефисы на позициях 9, 14, 19 и 24, остальные знаки — шестнадцатеричные. Если строка короче, длиннее или содержит посторонние символы (пробелы, фигурные скобки из внешних систем), её нужно очистить перед использованием.

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

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

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

Длина строки идентификатора
Норма

Ровно 36 символов, дефисы на позициях 9, 14, 19, 24

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

32 символа без дефисов, обрезанная строка, лишние скобки

Поиск объекта по GUID
Норма

ПолучитьСсылку вернула ссылку, объект открывается и читается

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

Ссылка получена, но обращение к реквизитам вызывает ошибку — объект отсутствует

Обмен между базами
Норма

Объект в приёмнике обновляется, дублей нет

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

После синхронизации появляются дубли с одинаковым наименованием

Частые вопросы о ГУИД в 1С

Может ли ГУИД в 1С быть длиной 32 символа?

Текстовое представление по стандарту всегда 36 символов с дефисами. Значение из 32 символов — это тот же идентификатор без разделителей, его можно привести к каноническому виду программно. Конструктор Новый УникальныйИдентификатор принимает строку в стандартном формате с дефисами.

Меняется ли ГУИД при изменении объекта?

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

Можно ли задать ГУИД новому объекту вручную?

Да, метод УстановитьСсылкуНового позволяет назначить объекту ссылку с нужным идентификатором до записи. Это используют при переносе данных, чтобы сохранить связи между базами. Назначить GUID уже записанному объекту нельзя.

Почему при обмене появились дубли элементов?

Наиболее частая причина — объект в одной из баз был удалён и создан заново, из-за чего получил новый GUID. Обмен не находит соответствие по идентификатору и создаёт новый элемент. Устраняется через механизм соответствия объектов в плане обмена или повторной привязкой по полям поиска.

Как сравнить два ГУИДа, полученных из разных систем?

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

Итог

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

ГУИД в 1С — это 36 символов в формате 8-4-4-4-12, неизменный идентификатор объекта на всё время его жизни. Получают его методом УникальныйИдентификатор(), обратно ссылку строят через ПолучитьСсылку с обязательной проверкой существования объекта. Для хранения в реквизитах закладывайте строку не короче 36 символов, а при обмене следите, чтобы объекты переносились, а не пересоздавались.