Что такое ссылка в 1С (GUID)

GUID = Globally Unique Identifier — это уникальная комбинация из 128-бит. Как уже ясно из определения, его основное преимущество — это уникальность. Если точнее, то коридор формирования значений равен 2^128, т.е. очень маловероятно, что в двух разных СУБД (или других системах) будут сгенерированы две одинаковые комбинации ГУИД.

В 1С ссылками являются именно GUID, т.е. суррогатные первичные ключи.

Для использования GUID, а не автоинкрементного Number есть как минимум 2 причины:

  1. Избегается зависимость от одного звена (единой точки входа) СУБД (или какойнибудь другой системы кластеров) для составления комбинаций Primary Keys.
  2. Решается проблема повторяемости Primary Keys в рамках всей системы управления базой данных (или другой системы).

Комбинация GUID

Как расшифровать GUID? Есть несколько вариантов генерации:

  • Random: Составляется комбинация из 128-Бит случайным образом.
  • Time-based: Базируется на текущей дате и времени.
  • Hardware-based: На основании конфигурации оборудования, MAC-адреса и т.д..
  • Content-based (MD5 or SHA-1 hash of data): На основании хэш-данных файлов.
Курс 1С: Эксперт. Таблицы 1С. Что такое Ссылка 1С и GUID
Таблицы 1С. Что такое Ссылка 1С

GUID разбит на сегменты (октеты), а тип комбинации определяется по первому байту седьмого сегмента. ee:d4:ad:5d-64:57-46:23-94:8c-11:c6:a4:a9:4f:56 где, например,  4 — Random, 1 — Time-based.

Cсылка 1С и дата создания

Разработчики систем управления (БД и других) столкнулись с тем, что, например, несколько серверов в одном кластере, должны формировать уникальные ключи в рамках всего кластера. Для решения такой задачи и был придуман механизм генерации уникальных комбинаций (ГУИД).

Т.е. во многих случаях, ГУИД выигрывает у автоинкрементных ID, как например, у идентификаторов постов в блогах или форумах. Но при этом, безусловно, на составление таких комбинаций затрачиваются ресурсы (в отличие от автоинкрементных).

Как правило сервер 1С сразу генерит пачку ссылок для сеанса, причем на основании времени. А при вызове конструктора Новый УникальныйИдентификатор — формирование идентификатора реализуется на типе Random. То же самое и для предопределенных элементов справочников или перечислений.

Курс 1С: Эксперт. Ссылка 1С, создание по уникальному идентификатору
Ссылка 1С, создание по уникальному идентификатору

Таким образом, общий механизм 1С по генерации PK ссылочных типов (кратко, просто ссылка), отвечает только за уникальность этих значений.

Порядок по времени создания в общем механизме платформы 1С не обеспечивается.

Следовательно, большая часть ссылок, которые сформированы сервером 1С в рамках оперативной деятельности, действительно упорядочены по времени, потому что их тип Time-Based. Но никто не может дать гарантии, что среди не будет ссылок сформированных принудительно, т.е алгоритмом Random.

Данная тема подробнее рассматривается в пакете видео-курса «Секреты 1С: Эксперта» Шаг 2. Занятие 03-01 Структура таблиц / Справочники

Константин Ефимов | 1С: Эксперт. Разработка систем 1С с нуля.

КОНСТАНТИН ЕФИМОВ
Комментарии и вопросы