Уникальный идентификатор – это уникальный набор символов который характеризует экземпляр метаданных объектного типа в 1С(Например, элемент справочника или документ).
Уникальный идентификатор (GUID)
Если Вам встречались в базе записи “<Объект не найден>”, то значит настала пора познакомится с Уникальным идентификатором.
По сути ссылка и является уникальным идентификатором, причем даже у разных видов объектов он не может быть похож. Выглядит он примерно так:
de80b7c8-aa22-11dc-a0f4-0011d85708ff
Т.е. это набор из 32 шестнадцатеричных цифр разделенных дефисами.
Надпись <Объект не найден> появляется в базе когда есть ссылка(уникальный идентификатор) на объект, а объекта в базе нет. Такое может возникнуть или при удалении объектов без проврки ссылочной целостности или при обмене между базами.
Разберем для примера надпись: <Объект не найден> (36:9c4e0022642fda9811e10393c0d776fd)
Для начала узнаем какой тип объекта был удален, для этого используем метод ПолучитьСтруктуруХраненияБазыДанных(), он возвращает таблицу значений(по умолчанию в формате SDBL) где указано соответсвие внутренних идентификаторов и объектов метаданных.
Например можно написать такой код:
ТЗ = ПолучитьСтруктуруХраненияБазыДанных();
ТЗ.ВыбратьСтроку();
В ней мы находим идентификатор который в конце содержит 36 (цифры до двоеточия), но только не в составе числа(Document2836), а точное соответствие. В нашем случае это следующая строка:
Иванов Иван Иванович | Справочник.Сотрудники |
Значит удаленный элемент был элементом справочника “Сотрудники”.
Как Вы заметили внутри скобок находится тип объекта и уникальный идентификатор строкой.
Теперь мы можем на одной из архивных копий найти удаленный элемент, добавив дефисы в имеющуюся у нас строку идентификтора:
ГУИД = Новый УникальныйИдентификатор("9c4e0022-642f-da98-11e1-0393c0d776fd");
СсылкаНаУдаленныйЭлемент = Справочники.Номенклатура.ПолучитьСсылку(ГУИД);
Зная все значения полей мы можем вручную или с помощью обработок воссоздать удаленный элемент, но у них будет одно главное отличие – разные Уникальные идентификаторы. А если мы хотим восстановить элемент, то и идентификатор нужно восстановить тот же. Для этого нужно использовать метод “УстановитьСсылкуНового“, например так:
ВосстанавливаемыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
ГУИД = Новый УникальныйИдентификатор("9c4e0022-642f-da98-11e1-0393c0d776fd");
СсылкаНаУдаленныйЭлемент = Справочники.Номенклатура.ПолучитьСсылку(ГУИД);
ВосстанавливаемыйЭлемент.УстановитьСсылкуНового(СсылкаНаУдаленныйЭлемент);
Уникальный идентификатор широко применяется при передачи данных по Com-соединению. Теперь можно заполнить остальные поля.
1С: Как получить уникальный идентификатор объекта, GUID?
&НаСервере
Процедура Команда1НаСервере()
анкета=Объект.АнкетаАбитуриента;
Если НЕ анкета.Пустая() Тогда
GUID=анкета.УникальныйИдентификатор();
Объект.CUID=GUID;
Сообщить("GUID"+GUID);
конецесли;
КонецПроцедуры
1С: Как получить ссылку по уникальному идентификатору, GUID?
&НаСервере
Процедура ПолучитьПоGUIDНаСервере()
ГУИД = Новый УникальныйИдентификатор(Объект.CUID);
НайденнаяСсылка = Документы.АнкетаАбитуриента.ПолучитьСсылку(ГУИД);
Сообщить("Объект="+НайденнаяСсылка);
КонецПроцедуры
Связь Пользователя Информационной базы с Элементом Справочника пользователи.
Во-первых Для Справочника Сотрудники добавляем реквизит “ПользовательИБ” типом Строка. В Реквизит будем сохранять GUID пользователя информационной базы.

Во-вторых напишем обработку заполняющую Реквизит “ПользовательИБ” в Справочнике Пользователи.
&НаСервере
Процедура Команда1НаСервере()
Название=Объект.Строка;
ОписаниеПользователяИБ = ПользователиИнформационнойБазы.НайтиПоИмени(Название);//.ТекущийПользователь();//.УникальныйИдентификатор()//..НовоеОписаниеПользователяИБ();
GUid=ОписаниеПользователяИБ.УникальныйИдентификатор;
Пользователь=Объект.Пользователь;
ОбъектП=Пользователь.ПолучитьОбъект();
ОбъектП.ПоьзовательИБ=GUid;
ОбъектП.Записать();
//GUid=ОписаниеПользователяИБ.УникальныйИдентификатор();
КонецПроцедуры
&НаКлиенте
Процедура Команда1(Команда)
Команда1НаСервере();
КонецПроцедуры.
В третьих В документ при создании на сервере добавляем код получающий Элемент справочника Пользователи с использованием GUIDа ТекущегоПользователя
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ОписаниеПользователяИБ=ПользователиИнформационнойБазы.ТекущийПользователь();
GUid=ОписаниеПользователяИБ.УникальныйИдентификатор;
Объект.Отвественный=Справочники.Пользователи.НайтиПоРеквизиту("ПоьзовательИБ", Строка(Guid));
КонецПроцедуры