Найти в Дзене

Как найти объект в 1С по уникальному идентификатору?

В 1С:Предприятие каждый объект базы данных (элемент справочника, документ, перечисление и т.д.) имеет уникальный идентификатор (УИД), который представляет собой globally unique identifier (GUID). Этот УИД является постоянным и уникальным для каждого экземпляра объекта. Для поиска объекта по его уникальному идентификатору используется метод НайтиПоУникальномуИдентификатору() . Этот метод доступен у менеджеров различных объектов конфигурации (справочников, документов и т.д.). Синтаксис: <МенеджерОбъекта>.НайтиПоУникальномуИдентификатору(<УникальныйИдентификатор>) Plain TextCopy Параметры: Возвращаемое значение: Метод возвращает ссылку на объект, если он найден. Если объект с таким УИД не существует или не найден в указанном типе, метод возвращает Неопределено . Предположим, у вас есть УИД объекта в виде строки, и вы хотите найти соответствующий элемент справочника "Номенклатура" или документ "РеализацияТоваровУслуг". // 1. Предположим, у нас есть УИД в строковом представленииСтрокаУИД
Оглавление

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

Для поиска объекта по его уникальному идентификатору используется метод НайтиПоУникальномуИдентификатору() .

Метод НайтиПоУникальномуИдентификатору()

Этот метод доступен у менеджеров различных объектов конфигурации (справочников, документов и т.д.).

Синтаксис:

<МенеджерОбъекта>.НайтиПоУникальномуИдентификатору(<УникальныйИдентификатор>)

Plain TextCopy

Параметры:

  • <МенеджерОбъекта> : Это менеджер типа объекта, в котором вы хотите найти элемент (например, Справочники.Номенклатура , Документы.РеализацияТоваровУслуг ).
  • <УникальныйИдентификатор> : Значение типа УникальныйИдентификатор , которое вы ищете.

Возвращаемое значение:

Метод возвращает ссылку на объект, если он найден. Если объект с таким УИД не существует или не найден в указанном типе, метод возвращает Неопределено .

Пример использования

Предположим, у вас есть УИД объекта в виде строки, и вы хотите найти соответствующий элемент справочника "Номенклатура" или документ "РеализацияТоваровУслуг".

// 1. Предположим, у нас есть УИД в строковом представленииСтрокаУИД = "a0d6e8b4-c3f2-4a1b-9d8c-7e6f5a4b3c2d"; // Пример УИД// 2. Преобразуем строковый УИД в тип УникальныйИдентификаторПоисковыйУИД = Новый УникальныйИдентификатор(СтрокаУИД);// 3. Поиск элемента справочника "Номенклатура"СсылкаНаНоменклатуру = Справочники.Номенклатура.НайтиПоУникальномуИдентификатору(ПоисковыйУИД);Если СсылкаНаНоменклатуру <> Неопределено ТогдаСообщить("Найден элемент справочника Номенклатура: " + СсылкаНаНоменклатуру);// Теперь вы можете работать со ссылкой, например, получить объект:ОбъектНоменклатура = СсылкаНаНоменклатуру.ПолучитьОбъект();Сообщить("Наименование: " + ОбъектНоменклатура.Наименование);ИначеСообщить("Элемент справочника Номенклатура с таким УИД не найден.");КонецЕсли;Сообщить("---");// 4. Поиск документа "РеализацияТоваровУслуг"СсылкаНаДокумент = Документы.РеализацияТоваровУслуг.НайтиПоУникальномуИдентификатору(ПоисковыйУИД);Если СсылкаНаДокумент <> Неопределено ТогдаСообщить("Найден документ РеализацияТоваровУслуг: " + СсылкаНаДокумент);// Получить объект документа для работы с его даннымиОбъектДокумент = СсылкаНаДокумент.ПолучитьОбъект();Сообщить("Номер документа: " + ОбъектДокумент.Номер + ", Дата: " + ОбъектДокумент.Дата);ИначеСообщить("Документ РеализацияТоваровУслуг с таким УИД не найден.");КонецЕсли;

Plain TextCopy

Важные моменты:

  • Тип УИД: Важно, что параметр метода НайтиПоУникальномуИдентификатору() должен быть именно типа УникальныйИдентификатор , а не строкой. Для преобразования строки в этот тип используйте конструктор Новый УникальныйИдентификатор(<СтрокаУИД>) .
  • Конкретный тип объекта: Вы должны знать, к какому типу объекта (справочник, документ и т.д.) относится искомый УИД. Метод ищет только в рамках указанного менеджера. Если вы не знаете тип объекта, то задача усложняется, и обычно требует перебора всех типов метаданных или использования полнотекстового поиска.
  • Возвращает ссылку: Метод возвращает ссылку, а не сам объект. Чтобы получить доступ к данным объекта (полям, табличным частям), необходимо вызвать метод ПолучитьОбъект() у полученной ссылки.
  • Производительность: Поиск по УИД является одним из самых эффективных способов поиска объекта в 1С, так как УИД является индексируемым полем в базе данных.