При удалении элементов справочников или документов из базы данных у разработчиков часто возникает вопрос: способна ли платформа 1С повторно использовать уникальный идентификатор (GUID / УИД) удаленного объекта для нового элемента? Рассмотрим подробно, как устроена генерация ссылок в платформе, исключено ли случайное повторение и в каких ситуациях дублирование идентификаторов все же может произойти.
Проанализируем работу платформы при автоматическом формировании ссылок. В штатном режиме повторное использование GUID от ранее удаленного объекта полностью исключено.
Платформа 1С использует специализированные алгоритмы для формирования уникальных идентификаторов:
Новый УникальныйИдентификатор() генерация происходит на основе псевдослучайных чисел. Длина GUID составляет 128 бит (2128 возможных комбинаций), поэтому математическая вероятность случайного совпадения двух идентификаторов исчезающе мала.В информационной базе 1С отсутствует какая-либо таблица «б/у идентификаторов» для их повторной утилизации. Каждому новому объекту всегда выделяется абсолютно новый GUID.
Несмотря на то что автоматическая генерация гарантирует уникальность, существуют нештатные и программные сценарии, при которых идентификатор может повториться или быть явно задан повторно.
Разберем основные причины возникновения коллизий:
УстановитьСсылкуНового(): разработчик может явно задать ссылку перед первой записью объекта в базу. Посмотрим на пример кода:
УИДСтарый = Новый УникальныйИдентификатор("12345678-1234-1234-1234-123456789abc");
СсылкаНового = Справочники.Контрагенты.ПолучитьСсылку(УИДСтарый);
НовыйЭлемент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйЭлемент.УстановитьСсылкуНового(СсылкаНового);
НовыйЭлемент.Наименование = "Новый контрагент";
НовыйЭлемент.Записать();
Если разработчик вручную передаст в метод ПолучитьСсылку() GUID ранее удаленного элемента, система применит именно его.
Выясним, какие правила следует соблюдать при разработке и администрировании, чтобы избежать проблем с дублированием ссылок:
Новый УникальныйИдентификатор(), перенесите все данные и выполните замену ссылок во всех документах и регистрах с помощью стандартной обработки поиска и удаления дублей.Таким образом, при штатной работе базы 1С повторное присвоение GUID удаленного объекта невозможно. Дублирование может возникнуть только при явных программных манипуляциях, нештатном обмене данными или сбоях системного времени.