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С позволяет однозначно идентифицировать объекты данных в различных системах. Это особенно важно при разработке решений, требующих интеграции и обмена данными между информационными базами или внешними системами.