Создает уникальный идентификатор заданной версии. В режиме совместимости конфигурации с Версия8_3_24 конструктор создает уникальные идентификаторы для версий 3 и 5, которые могут содержать ошибку (не полностью удовлетворять стандарту RFC4122), но алгоритм генерации – такой же, как в версии до 8.3.24 включительно. При выключенном режиме совместимости используется алгоритм с исправленной ошибкой. На алгоритм генерации версий 1 и 4 режим совместимости не влияет.
Синтаксис
Новый УникальныйИдентификатор(<Версия>, <ПространствоИмен>, <Имя>)Полное описание, параметры и ограничения
УникальныйИдентификатор.С указанием версии
УникальныйИдентификатор (UUID)
С указанием версии
Доступен, начиная с версии 8.3.21.
Синтаксис:
Новый УникальныйИдентификатор(<Версия>, <ПространствоИмен>, <Имя>)
Параметры:
<Версия> (обязательный)
Тип: ВерсияУникальногоИдентификатора.
Задает версию генерируемого уникального идентификатора.
<ПространствоИмен> (необязательный)
Тип: УникальныйИдентификатор.
Определяет пространство имен при генерации уникального идентификатора.
Используется только для идентификаторов версии 3 и 5.
<Имя> (необязательный)
Тип: Строка.
Задает имя при генерации уникального идентификатора.
Используется только для идентификаторов версии 3 и 5.
Описание:
Создает уникальный идентификатор заданной версии.
В режиме совместимости конфигурации с Версия8_3_24 конструктор создает уникальные идентификаторы для версий 3 и 5, которые могут содержать ошибку (не полностью удовлетворять стандарту RFC4122), но алгоритм генерации – такой же, как в версии до 8.3.24 включительно.
При выключенном режиме совместимости используется алгоритм с исправленной ошибкой.
На алгоритм генерации версий 1 и 4 режим совместимости не влияет.
Использование в версии:
Доступен, начиная с версии 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 не скрывает имя и не предназначен для хранения секрета.
Коллизии идентификаторов и уникальность внешнего ключа всё равно требуют правил контроля данных.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.