УникальныйИдентификатор.Из строки

Конструкторы

Создает уникальный идентификатор из указанной строки GUID. Уникальность полученного таким образом идентификатора определяется уникальностью строки и поэтому не гарантирована.

Синтаксис

Новый УникальныйИдентификатор(<Строка>)

Примеры платформы

СтрокаGUID = "a763cfbb-f94f-4c67-8e13-0e96a3a7f353";
НовыйGUID = Новый УникальныйИдентификатор(СтрокаGUID);
Полное описание, параметры и ограничения

УникальныйИдентификатор.Из строки

УникальныйИдентификатор (UUID)

Из строки

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

Синтаксис:
Новый УникальныйИдентификатор(<Строка>)
Параметры:

<Строка> (обязательный)
Тип: Строка.
Строка GUID. Строка задается в виде "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", где Х - символы обозначающие шестнадцатеричное число.
Описание:

Создает уникальный идентификатор из указанной строки GUID. Уникальность полученного таким образом идентификатора определяется уникальностью строки и поэтому не гарантирована.

Пример:

СтрокаGUID = "a763cfbb-f94f-4c67-8e13-0e96a3a7f353";
НовыйGUID = Новый УникальныйИдентификатор(СтрокаGUID);

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

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

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

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

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

Учебный код item:A-01 преобразуем в UUID версии 5. Одинаковые пространство и имя дают тот же результат, изменение регистра имени — другой.

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

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

Подготовка

  1. Отдельная учебная база. Фрагмент вставьте в серверную ВыполнитьПример() Экспорт общего модуля УчебныеЗадачи.

  2. Платформа 8.5.1.1343; примеры работают в памяти и не создают объекты справочников/документов.

  3. Результаты UUID версий 3/5 зависят также от режима совместимости. Для сравнения между системами нужен отдельный тест контракта.

Пространство = Новый УникальныйИдентификатор("17c41c11-dc4f-41e1-b612-9c62fc508bc1");
ВнешнийКод = "item:A-01";
Первый = Новый УникальныйИдентификатор(ВерсияУникальногоИдентификатора.Версия5, Пространство, ВнешнийКод);
Повтор = Новый УникальныйИдентификатор(ВерсияУникальногоИдентификатора.Версия5, Пространство, ВнешнийКод);
ДругоеИмя = Новый УникальныйИдентификатор(ВерсияУникальногоИдентификатора.Версия5, Пространство, "item:a-01");
ДругоеПространство = Новый УникальныйИдентификатор("357382ac-a9d2-470e-a5c1-43fbd3d9a7e0");
ВДругомПространстве = Новый УникальныйИдентификатор(ВерсияУникальногоИдентификатора.Версия5, ДругоеПространство, ВнешнийКод);
Сообщить(Первый = Повтор);
Сообщить(Первый <> ДругоеИмя);
Сообщить(Первый <> ВДругомПространстве);

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

  1. Пространство имён фиксировано для этого учебного контракта. Не создаём его случайно при каждом вызове.

  2. Версия5 использует пространство и точное имя. Префикс item: отделяет класс учебных сущностей от других возможных ключей.

  3. Повторяем тот же вызов и сравниваем значения UUID напрямую.

  4. Имя чувствительно к содержимому, включая регистр. Преобразование A-01 в a-01 нельзя делать без правила внешнего контракта.

  5. Другое пространство отделяет другой независимый набор ключей даже при совпадении внешнего имени.

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

  1. Все три сравнения Истина: повтор одинаков, изменение имени/пространства даёт другое значение.

  2. Для одного и того же режима совместимости повторный запуск воспроизводит идентификатор.

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

Показана воспроизводимая идентификация учебного внешнего кода без создания объекта в базе.

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

  1. Это не готовый контракт API Авито: внешние имена и пространства должен определить ваш интеграционный протокол.

  2. Для совместимости старых конфигураций алгоритм UUID 3/5 может отличаться по замечанию локальной справки. Не обещаем точную строку между разными режимами.

  3. Детерминированный UUID не скрывает имя и не предназначен для хранения секрета.

  4. Коллизии идентификаторов и уникальность внешнего ключа всё равно требуют правил контроля данных.

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

Создать идентификатор и восстановить то же значение из строки

Отличаем создание случайного UUID от разбора его строкового представления. Новый UUID не означает, что в базе появился документ.

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

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

Подготовка

  1. Отдельная учебная база. Фрагмент вставьте в серверную ВыполнитьПример() Экспорт общего модуля УчебныеЗадачи.

  2. Платформа 8.5.1.1343; примеры работают в памяти и не создают объекты справочников/документов.

  3. Результаты UUID версий 3/5 зависят также от режима совместимости. Для сравнения между системами нужен отдельный тест контракта.

Идентификатор = Новый УникальныйИдентификатор;
Текст = Строка(Идентификатор);
Восстановленный = Новый УникальныйИдентификатор(Текст);
Сообщить(СтрДлина(Текст) = 36);
Сообщить(Восстановленный = Идентификатор);
Нулевой = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000");
Сообщить(НРег(Строка(Нулевой)) = "00000000-0000-0000-0000-000000000000");
Попытка
    Некорректный = Новый УникальныйИдентификатор("это не UUID");
Исключение
    Сообщить("Неверное строковое представление UUID не принято");
КонецПопытки;

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

  1. Конструктор без аргументов генерирует новый идентификатор. Строка создаёт его стандартное представление с дефисами.

  2. Конструктор из строки восстанавливает переданное значение, а не генерирует новое случайное.

  3. Нулевой UUID — конкретное допустимое значение. Его нужно отличать от Неопределено.

  4. Неверное представление отлавливаем отдельно. Не заменяем его автоматически новым UUID, иначе связь с исходным объектом будет потеряна.

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

  1. Все три булевых сравнения Истина; выводится сообщение о некорректном UUID.

  2. Идентификатор первого запуска может отличаться от следующего: точную случайную строку не фиксируем как ожидаемый результат.

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

Показан корректный круговой переход UUID ↔ строка и отдельная ошибка разбора.

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

  1. UUID — идентификатор, не пароль, не токен доступа и не доказательство существования объекта базы.

  2. Для долговременной связи сохраните созданный UUID один раз, не генерируйте новый при каждом повторе обмена.

  3. Нулевой UUID не является автоматически Неопределено или пустой ссылкой конкретного справочника.

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

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

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

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

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