Как получить уникальный идентификатор GUID в 1С

GUID (Globally Unique Identifier) в системе «1С:Предприятие» – это уникальный идентификатор, который позволяет однозначно определять объекты базы данных. Эти идентификаторы широко используются в процессах интеграции и обмена данными между различными системами. Технические особенности устройства GUID можно прочитать по ссылке.

Что такое GUID и для чего он нужен?

GUID представляет собой 128-битное значение, которое записывается в виде строки из 36 символов. Этот идентификатор гарантированно уникален не только в рамках одной информационной базы, но и во всех базах данных во всем мире.

Пример GUID: `8f9676e5-5710-11e8-9c2d-fa7ae01bbebc`

Основные сценарии использования GUID в 1С:

  • Идентификация объектов при обмене данными между базами
  • Уникальная идентификация элементов в распределенных системах
  • Интеграция с внешними информационными системами
  • Хранение внешних идентификаторов объектов

Как получить GUID в программном коде 1С

Создание объекта типа УникальныйИдентификатор

Перем ИдентификаторGUID;
ИдентификаторGUID = НовыйУникальныйИдентификатор();
Сообщить(ИдентификаторGUID);
// Пример вывода: 8f9676e5-5710-11e8-9c2d-fa7ae01bbebc

Получение GUID для существующего объекта 1С

// Допустим, у нас есть ссылка на элемент справочника
Перем СправочникСсылка;
СправочникСсылка = Справочники.Контрагенты.НайтиПоНаименованию("ООО Тестовая компания");

// Получение GUID из ссылки
Перем ИдентификаторGUID;
ИдентификаторGUID = СправочникСсылка.УникальныйИдентификатор();
Сообщить(ИдентификаторGUID);

Форматы представления GUID

GUID может быть представлен в нескольких форматах:

  • Значение типа УникальныйИдентификатор — встроенный тип данных 1С
  • Строковое представление — 36 символов с разделителями-дефисами

Форматы можно преобразовывать:

// Из строки в тип УникальныйИдентификатор
Перем СтрокаGUID, ОбъектGUID;
СтрокаGUID = "8f9676e5-5710-11e8-9c2d-fa7ae01bbebc";
ОбъектGUID = Новый УникальныйИдентификатор(СтрокаGUID);

// Из типа УникальныйИдентификатор в строку
Перем ОбъектGUID, СтрокаGUID;
ОбъектGUID = НовыйУникальныйИдентификатор();
СтрокаGUID = Строка(ОбъектGUID);

Практические примеры использования GUID

Связывание объектов из разных баз данных

// Функция для поиска товара по внешнему GUID.

 В этом примере мы храним внешний идентификатор товарв
Функция НайтиТоварПоВнешнемуGUID(ВнешнийGUID) Экспорт
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |   Товары.Ссылка КАК Ссылка
    |ИЗ
    |   Справочник.Товары КАК Товары
    |ГДЕ
    |   Товары.ВнешнийИдентификатор = &ВнешнийИдентификатор";
    
    Запрос.УстановитьПараметр("ВнешнийИдентификатор", ВнешнийGUID);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Если РезультатЗапроса.Пустой() Тогда
        Возврат Справочники.Товары.ПустаяСсылка();
    Иначе
        Выборка = РезультатЗапроса.Выбрать();
        Выборка.Следующий();
        Возврат Выборка.Ссылка;
    КонецЕсли;
КонецФункции

Получение ссылки по ГУИД

НайденныйДокумент = Документы.ПриходнаяНакладная.ПолучитьСсылку(Новый УникальныйИдентификатор("b86d3572-106c-402f-9123-76ac3274142a"));

Генерация уникального имени файла

// Функция для создания уникального имени файла
Функция СоздатьУникальноеИмяФайла(Расширение) Экспорт
    Возврат СтрЗаменить(Строка(НовыйУникальныйИдентификатор()), "-", "") + "." + Расширение;
КонецФункции

Отличие GUID от UUID в контексте 1С

Термины GUID (Globally Unique Identifier) и UUID (Universally Unique Identifier) в контексте 1С практически идентичны и часто используются как синонимы. Однако, есть некоторые исторические и контекстные различия:

Происхождение:
– GUID изначально продвигался компанией Microsoft
– UUID определен в стандарте RFC 4122

В контексте 1С:
– В документации и программном коде 1С чаще используется термин GUID
– API-интерфейс использует название типа УникальныйИдентификатор
– При интеграции с другими системами может использоваться термин UUID

Техническая реализация:
– И GUID, и UUID имеют одинаковую структуру (128 бит / 16 байт)
– Используют одинаковый формат представления в виде строки с дефисами
– Оба гарантируют глобальную уникальность значений

На практике в разработке на 1С эти термины равнозначны и отличаются лишь контекстом использования.

Иногда можно встретить строковое представление UUID. Например, в представлении т.н. “Битых ссылок”
<Объект не найден> (54:a4f3c16824e0db6911ed89cf76a52401)

или при получении навигационной ссылки на объект

e1cib/data/Документ.ПриходныйОрдерНаТовары?ref=b2c9d05073f81ea211ee56df9c84ab37
Оно отличается тем, что в нем нет дефисов, а октеты в UUID и в GUID выстроены в разном порядке.

UUID ссылки:

  • 1 – b2c9
  • 2 – d050
  • 3 – 73f8
  • 4 – 1ea2
  • 5 – 11ee
  • 6 – 56df
  • 7 – 9c84
  • 8 – ab37

GUID ссылки:

  • 7 – 9c84
  • 8 – ab37
  • 6 – 56df
  • 5 – 11ee
  • 1 – b2c9
  • 2 – d050
  • 3 – 73f8
  • 4 – 1ea2

Заключение

Использование GUID в 1С позволяет однозначно идентифицировать объекты данных в различных системах. Это особенно важно при разработке решений, требующих интеграции и обмена данными между информационными базами или внешними системами.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

девятнадцать + 5 =

К НАЧАЛУ