Глобальный контекст.ПолучитьУникальныйИдентификаторСПоддержкойСовместимости

Методы · GetUUIDWithCompatibilitySupport

Функция генерирует уникальные идентификаторы для версий 3 и 5 в зависимости от значения параметра <Совместимость>. Для версий 1 и 4 уникальные идентификаторы генерируются по тому же алгоритму, что и при использовании конструктора объекта УникальныйИдентификатор.

Синтаксис

ПолучитьУникальныйИдентификаторСПоддержкойСовместимости(<Совместимость>, <Версия>, <ПространствоИмен>, <Имя>)
Полное описание, параметры и ограничения

Глобальный контекст.ПолучитьУникальныйИдентификаторСПоддержкойСовместимости (Global context.GetUUIDWithCompatibilitySupport)

Глобальный контекст (Global context)

ПолучитьУникальныйИдентификаторСПоддержкойСовместимости (GetUUIDWithCompatibilitySupport)

Доступен, начиная с версии 8.3.25.

Синтаксис:
ПолучитьУникальныйИдентификаторСПоддержкойСовместимости(<Совместимость>, <Версия>, <ПространствоИмен>, <Имя>)
Параметры:

<Совместимость> (обязательный)
Тип: Булево.
Определяет поведение функции при генерации уникальных идентификаторов версий 3 и 5:
Истина – идентификатор генерируется по такому же алгоритму, как в версиях до 8.3.24 включительно. Такие идентификаторы могут содержать ошибку (не полностью удовлетворять стандарту RFC4122),

Ложь – идентификатор генерируется без ошибки.

<Версия> (обязательный)
Тип: ВерсияУникальногоИдентификатора.
Задает версию уникального идентификатора, которую необходимо сгенерировать.

<ПространствоИмен> (необязательный)
Тип: УникальныйИдентификатор.
Задает пространство имен, по которому генерируется уникальный идентификатор. Используется только для уникальных идентификаторов версий 3 и 5.

<Имя> (необязательный)
Тип: Строка.
Задает имя, по которому генерируется уникальный идентификатор. Используется только для уникальных идентификаторов версий 3 и 5.
Возвращаемое значение:
Тип: УникальныйИдентификатор.

Описание:

Функция генерирует уникальные идентификаторы для версий 3 и 5 в зависимости от значения параметра <Совместимость>.
Для версий 1 и 4 уникальные идентификаторы генерируются по тому же алгоритму, что и при использовании конструктора объекта УникальныйИдентификатор.

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер, интеграция.

Использование в версии:

Доступен, начиная с версии 8.3.25.

Описание изменено в версии 8.3.27.

Методическая информация

Практические примеры

Получить устойчивый UUID для собственного учебного ключа

Одинаковые пространство имён и имя дают одинаковый UUID версии 5; меняя учебное имя или пространство, получаем отдельные ключи.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Собственная учебная база 8.5.1.1343. Создайте внешнюю обработку с управляемой формой, командой Выполнить и кнопкой этой команды; весь модуль урока вставьте в форму.

  2. Первый урок выполняется в обычном тонком/толстом клиенте, затем для сравнения только в своём клиенте /TESTCLIENT. Менеджер /TESTMANAGER — другой режим и не выдаётся за тестируемый сеанс.

  3. Все обращения диагностические: не устанавливают компоненты, не открывают карту, не отключают режимы защиты и не завершают клиента.

  4. Статическая сверка имён API не доказывает результат запуска на вашем клиенте; Истина/Ложь здесь зависят от среды.

&НаКлиенте
Процедура Выполнить(Команда)
    Пространство = Новый УникальныйИдентификатор("70a582c7-190a-435e-83fd-b9f51a9a01ce");
    ДругоеПространство = Новый УникальныйИдентификатор("2240fbc8-608d-42f2-9fe8-a6b8a56bd730");
    ИмяЗаказа = "guide-owned-order-001";
    Версия = ВерсияУникальногоИдентификатора.Версия5;
    Первый = ПолучитьУникальныйИдентификаторСПоддержкойСовместимости(Ложь, Версия, Пространство, ИмяЗаказа);
    Повторный = ПолучитьУникальныйИдентификаторСПоддержкойСовместимости(Ложь, Версия, Пространство, ИмяЗаказа);
    ВторойЗаказ = ПолучитьУникальныйИдентификаторСПоддержкойСовместимости(Ложь, Версия, Пространство, "guide-owned-order-002");
    ДругойИсточник = ПолучитьУникальныйИдентификаторСПоддержкойСовместимости(Ложь, Версия, ДругоеПространство, ИмяЗаказа);
    ВерсияТри = ПолучитьУникальныйИдентификаторСПоддержкойСовместимости(Ложь, ВерсияУникальногоИдентификатора.Версия3, Пространство, ИмяЗаказа);
    Совместимый = ПолучитьУникальныйИдентификаторСПоддержкойСовместимости(Истина, Версия, Пространство, ИмяЗаказа);
    Сообщить(ТипЗнч(Первый) = Тип("УникальныйИдентификатор"));
    Сообщить(Первый = Повторный);
    Сообщить(Первый <> ВторойЗаказ);
    Сообщить(Первый <> ДругойИсточник);
    Сообщить(Первый <> ВерсияТри);
    Сообщить(СтрШаблон("Для этого учебного имени старый совместимый результат совпал=%1", Первый = Совместимый));
    Сообщить("Учебный UUID заказа: " + Строка(Первый));
КонецПроцедуры

Разбор по шагам

  1. Оба пространства — собственные фиксированные UUID из текста урока, не стандартные пространства DNS/URL и не реальные идентификаторы чужой базы.

  2. Сначала выбираем версию 5 и явно Ложь для совместимости. Пространство и имя участвуют в устойчивом ключе; простой случайный Новый УникальныйИдентификатор такую повторяемость не обеспечивает.

  3. Все повторные вызовы для одного учебного заказа используют одинаковые аргументы. Второй заказ отличается именем, другой источник — пространством имён.

  4. Версия 3 показана отдельным вызовом; её ключ не выдаётся за тот же результат версии 5.

  5. Истина совместимости воспроизводит поведение до 8.3.24 включительно, которое для версий 3/5 могло не полностью соответствовать RFC4122. Не обещаем, что для каждого имени старый результат обязательно отличается.

  6. UUID — идентификатор, не пароль или подпись. Устойчивость имени не подтверждает право доступа к заказу и не создаёт документ в базе.

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

  1. Первые пять проверок ожидаются Истина на собственных фиксированных примерах; шестая диагностическая, затем выводится собственный UUID.

  2. При повторном запуске первый UUID стабилен. Документы заказа, ключи аутентификации и внешние сервисы не используются.

Ожидаемый результат

На полностью заданных данных показаны реальный именованный UUID, версия, пространство и режим совместимости.

На что обратить внимание

  1. Изменение регистра/пробелов в имени или выбранной версии может изменить ключ; нормализацию договоритесь выполнять до генерации.

  2. Не менять совместимость в действующем обмене без миграционного плана существующих ключей.

  3. Не превращать предсказуемый UUID в токен авторизации и не обещать математическую невозможность коллизий.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.