Как найти уникальный идентификатор 1С?

  55
 Когда кто-то удаляет данные из базы без проверки ссылок на эти объекты, то везде где этот объект использовался появляется сообщение вида: Объект не найден (84:bf5600145e3710ab11dda4c605dbe824) . https://helpf.pro/uploads/img/_1-46z7I4U7Ww.png В   2
  Переделал обработки из статей Битая ссылка, Объект не найден, Уникальный Идентификатор, GUID и Поиск в базе битых ссылок — объект не найден под Управляемые формы. Скачать Блокировка записей, невозможно изменить или удалить из регистра. Конфликт блокировок MS SQL + 1C  3
  При попытке удалить запись из регистра сведений — получаю ошибку: она заблокирована, ошибка блокировок и т.д. Отключил всех пользователей, перезапустил сервер, пробую удалить — опять ошибка блокировки 🙁 Путем тестов было вяснено, что проблема В учетной политике не указан вид тарифа страховых взносов. Как указать?  0
  Создайте новую запись учетной политики с начала года — Например 01.01.2013 В учетной смотрите дату начала учетной политики. Поставьте дату начала года (например 01.01.13) закладка появиться должна. Проверьте Тариф страховых взносов: Меню Зарпла Выгрузка результата запроса в текстовый файл с разделителями  0
  Запрос = Новый Запрос(); Запрос.УстановитьПараметр(» ДатаНач» ,НачалоДня(ДатаНач)); Запрос.УстановитьПараметр(» ДатаКон» ,КонецДня(ДатаКон)); Запрос.УстановитьПараметр(» Организация» ,Организация); Запрос.Текст = » ВЫБРАТЬ | ПоступлениеТоваровУ Посмотреть все результаты поиска похожих

Если Вам встречались в базе записи «<Объект не найден>», то значит настала пора познакомитсья с Уникальным идентификатором.

Уникальный идентификатор — это уникальный набор символов который характерезует экземпляр метаданных объектного типа в 1С(Напрмимер, элемент справочника или документ). По сути ссылка и является уникальным идентификатором, причем даже у разных видов объектов он не может быть похож. Выглядит он примерно так:

Т.е. это набор из 32 шестнадцатеричных цифр разделенных дефисами.

Надпись <Объект не найден> появляется в базе когда есть ссылка(уникальный идентификатор) на объект, а объекта в базе нет. Такое может возникнуть или при удалении объектов без проврки ссылочной целостности или при обмене между базами.

Разберем для примера надпись: <Объект не найден> (36:9c4e0022642fda9811e10393c0d776fd)

Для начала узнаем какой тип объекта был удален, для этого используем метод ПолучитьСтруктуруХраненияБазыДанных(), он возвращает таблицу значений(по умолчанию в формате SDBL) где указано соответсвие внутренних идентификаторов и объектов метаданных.

Например можно написать такой код:

ТЗ = ПолучитьСтруктуруХраненияБазыДанных();
ТЗ.ВыбратьСтроку();

В ней мы находим идентификатор который в конце содержит 36 (цифры до двоеточия), но только не в составе числа(Document2836), а точное соответсвие. В нашем случае это следующая строка:

Reference36 Справочник.Номенклатура

Значит удаленный элемент был элементом справочника «Номенклатура».

Как Вы заметили внутри скобок находится тип объекта и уникальный идентификатор строкой.

Теперь мы можем на одной из архивных копий найти удаленный элемент, добавив дефисы в имеющуюся у нас строку идентификтора:

ГУИД = Новый УникальныйИдентификатор(«9c4e0022-642f-da98-11e1-0393c0d776fd»); СсылкаНаУдаленныйЭлемент = Справочники.Номенклатура.ПолучитьСсылку(ГУИД);

Зная все значения полей мы можем вручную или с помощью обработок воссоздать удаленный элемент, но у них будет одно главное отличие — разные Уникальные идентификаторы. А если мы хотим восстановить элемент, то и идентификатор нужно восстановить тот же. Для этого нужно использовать метод «УстановитьСсылкуНового», например так:

ВосстанавливаемыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент(); ГУИД = Новый УникальныйИдентификатор(«9c4e0022-642f-da98-11e1-0393c0d776fd»); СсылкаНаУдаленныйЭлемент = Справочники.Номенклатура.ПолучитьСсылку(ГУИД); ВосстанавливаемыйЭлемент.УстановитьСсылкуНового(СсылкаНаУдаленныйЭлемент);

Теперь можно заполнить остальные поля.