Версия 5 уникального идентификатора.
Полное описание, параметры и ограничения
ВерсияУникальногоИдентификатора.Версия5 (UUIDVersion.Version5)
ВерсияУникальногоИдентификатора (UUIDVersion)
Версия5 (Version5)
Доступен, начиная с версии 8.3.21.
Описание:
Версия 5 уникального идентификатора.
Использование в версии:
Доступен, начиная с версии 8.3.21.
Методическая информация
Практические примеры
Получить повторяемый UUID из собственного пространства имён и внешнего кода
Учебный код item:A-01 преобразуем в UUID версии 5. Одинаковые пространство и имя дают тот же результат, изменение регистра имени — другой.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Отдельная учебная база. Фрагмент вставьте в серверную ВыполнитьПример() Экспорт общего модуля УчебныеЗадачи.
Платформа 8.5.1.1343; примеры работают в памяти и не создают объекты справочников/документов.
Результаты UUID версий 3/5 зависят также от режима совместимости. Для сравнения между системами нужен отдельный тест контракта.
Пространство = Новый УникальныйИдентификатор("17c41c11-dc4f-41e1-b612-9c62fc508bc1");
ВнешнийКод = "item:A-01";
Первый = Новый УникальныйИдентификатор(ВерсияУникальногоИдентификатора.Версия5, Пространство, ВнешнийКод);
Повтор = Новый УникальныйИдентификатор(ВерсияУникальногоИдентификатора.Версия5, Пространство, ВнешнийКод);
ДругоеИмя = Новый УникальныйИдентификатор(ВерсияУникальногоИдентификатора.Версия5, Пространство, "item:a-01");
ДругоеПространство = Новый УникальныйИдентификатор("357382ac-a9d2-470e-a5c1-43fbd3d9a7e0");
ВДругомПространстве = Новый УникальныйИдентификатор(ВерсияУникальногоИдентификатора.Версия5, ДругоеПространство, ВнешнийКод);
Сообщить(Первый = Повтор);
Сообщить(Первый <> ДругоеИмя);
Сообщить(Первый <> ВДругомПространстве);Разбор по шагам
Пространство имён фиксировано для этого учебного контракта. Не создаём его случайно при каждом вызове.
Версия5 использует пространство и точное имя. Префикс item: отделяет класс учебных сущностей от других возможных ключей.
Повторяем тот же вызов и сравниваем значения UUID напрямую.
Имя чувствительно к содержимому, включая регистр. Преобразование A-01 в a-01 нельзя делать без правила внешнего контракта.
Другое пространство отделяет другой независимый набор ключей даже при совпадении внешнего имени.
Как проверить результат
Все три сравнения Истина: повтор одинаков, изменение имени/пространства даёт другое значение.
Для одного и того же режима совместимости повторный запуск воспроизводит идентификатор.
Ожидаемый результат
Показана воспроизводимая идентификация учебного внешнего кода без создания объекта в базе.
На что обратить внимание
Это не готовый контракт API Авито: внешние имена и пространства должен определить ваш интеграционный протокол.
Для совместимости старых конфигураций алгоритм UUID 3/5 может отличаться по замечанию локальной справки. Не обещаем точную строку между разными режимами.
Детерминированный UUID не скрывает имя и не предназначен для хранения секрета.
Коллизии идентификаторов и уникальность внешнего ключа всё равно требуют правил контроля данных.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.