К статье
Практический материал

Справочники и Данные · 11 мин

Уникальный идентификатор номенклатуры в 1С: что это и для чего нужен

Что такое уникальный идентификатор номенклатуры в 1С, где он хранится, зачем нужен, как получить GUID элемента и избежать ошибок при обмене данными.

В справочнике «Номенклатура» любой конфигурации 1С каждый элемент имеет несколько способов идентификации: код, артикул, наименование, штрихкод. Однако ни один из них не является по-настоящему надёжным: коды могут переиспользоваться после удаления, наименования редактируются, артикулы дублируются у разных поставщиков. Единственный гарантированно неизменный признак элемента — уникальный идентификатор, или GUID (Globally Unique Identifier).

Уникальный идентификатор присваивается объекту автоматически в момент создания и больше никогда не меняется, пока объект существует в базе. Он выглядит как строка из 36 символов, например: a3f2c1d4-5b6e-4a7f-8c9d-0e1f2a3b4c5d. Именно по GUID платформа связывает элементы справочника с документами, регистрами и другими объектами, а также сопоставляет данные при обмене между базами.

Понимание того, как устроен идентификатор номенклатуры, критично при настройке обмена с сайтом, интеграции с WMS или другой базой 1С, при загрузке данных из Excel и при поиске причин «задвоений» после синхронизации. Ниже разобраны устройство GUID, способы его получения, типовые сценарии использования и ошибки, которые приводят к дублям номенклатуры.

Что такое уникальный идентификатор и где он хранится в 1С

Физически GUID хранится в поле ссылки таблицы справочника в базе данных. Когда в документе «Реализация товаров» вы указываете товар, в табличной части сохраняется не наименование и не код, а именно ссылка, содержащая GUID. Поэтому переименование элемента номенклатуры никак не влияет на уже проведённые документы — они продолжают ссылаться на тот же объект.

Важно различать GUID объекта и его представление. В языке 1С ссылка — это составное значение, включающее тип объекта (например, «СправочникСсылка.Номенклатура») и сам идентификатор. Два элемента с одинаковым GUID, но в разных справочниках — это разные объекты. Один и тот же товар в двух разных базах по умолчанию имеет разные GUID, если только базы не были получены копированием или идентификаторы не были синхронизированы при обмене.

GUID не отображается в стандартных формах списка и карточки номенклатуры — платформа показывает пользователю код и наименование. Это внутренний технический реквизит, поэтому получить его можно только специальными способами: программно, через внешние обработки или при выгрузке данных.

Чем GUID отличается от кода, артикула и штрихкода

Путаница между идентификаторами — частая причина ошибок при интеграциях. Код справочника может быть числовым или строковым, он уникален только в рамках одной базы и одного уровня иерархии, а при удалении элемента код может быть выдан повторно новому элементу. Артикул и штрихкод вообще не гарантируют уникальность и хранятся как обычные редактируемые реквизиты.

ПризнакGUIDКодАртикул / штрихкод
Кто присваиваетПлатформа автоматическиАвтонумерация или вручнуюПользователь или загрузка
Можно изменитьНетДа, если разрешеноДа
УникальностьГлобальнаяВ пределах базыНе гарантирована
Виден пользователюНетДаДа
Используется в обменеДа, основной ключИногда как доп. ключКак доп. ключ поиска

Из сравнения следует практический вывод: для связи с внешними системами (сайт, CRM, складская программа) надёжнее всего хранить на той стороне именно GUID элемента номенклатуры, а код и артикул использовать только как вспомогательные ключи поиска при первичном сопоставлении.

Как узнать GUID элемента номенклатуры

Самый простой способ без программирования — выгрузить данные через типовой обмен (например, в CommerceML при обмене с сайтом): в XML-файле у каждого товара будет поле «Ид», содержащее GUID. Также идентификатор виден при выгрузке через универсальный обмен данными в формате XML.

Если доступен конфигуратор или режим «Предприятие» с правами на выполнение внешних обработок, GUID получают программно. Метод УникальныйИдентификатор() вызывается у ссылки на объект:

bsl
ГУИД = XMLСтрока(НоменклатураСсылка.УникальныйИдентификатор());

Обратная задача — найти элемент по известному GUID — решается методом ПолучитьСсылку() менеджера справочника с предварительным созданием объекта «УникальныйИдентификатор» из строки. Перед использованием результата полезно проверить, что ссылка не «битая», то есть объект реально существует в базе.

Как получить GUID через консоль кода
  1. 1
    Откройте любую обработку с консолью кода или создайте внешнюю обработку
  2. 2
    Получите ссылку на нужный элемент номенклатуры (по коду, наименованию или запросом)
  3. 3
    Выполните: Сообщить(Ссылка.УникальныйИдентификатор())
  4. 4
    Скопируйте строку вида a3f2c1d4-5b6e-4a7f-8c9d-0e1f2a3b4c5d
  5. 5
    Проверьте результат, выполнив обратный поиск элемента по этому GUID

Роль GUID при обмене данными между базами

В типовых планах обмена (УТ ↔ БП, УТ ↔ УТ, обмен с сайтом) сопоставление объектов идёт именно по GUID. Когда элемент номенклатуры впервые выгружается из базы-источника, в базе-приёмнике создаётся новый элемент, и ему либо присваивается тот же GUID из пакета обмена, либо создаётся регистрация соответствия «GUID источника — ссылка приёмника» в регистре сведений соответствия объектов.

Именно поэтому при корректно настроенном обмене повторная выгрузка того же товара не создаёт дубль: приёмник находит объект по идентификатору и обновляет его реквизиты. Если же соответствие потеряно (например, очищен регистр соответствия или элемент в приёмнике удалён и создан заново вручную), при следующем обмене появится дубль.

Типичные проблемы: дубли и «битые» ссылки

Дубли номенклатуры после обмена возникают в трёх типовых ситуациях. Первая — первичная загрузка в базу, где товары уже были заведены вручную: GUID у «ручных» элементов другие, и обмен создаёт новые. Вторая — удаление элемента в одной из баз с последующим ручным созданием «такого же» товара. Третья — обмен по правилам, где поиск настроен по наименованию или артикулу, а эти реквизиты различаются.

«Битая» ссылка — ситуация, когда в документе или регистре хранится GUID объекта, которого уже нет в базе. В формах это выглядит как строка вида «<Объект не найден> (a3f2c1d4-...)». Причина — прямое удаление элемента минуя контроль ссылочной целостности, либо загрузка документа раньше, чем пришла сама номенклатура из другой базы.

Типичные ошибки
01
Сопоставление товаров при интеграции по наименованию — любое переименование рождает дубль
02
Ручное создание в базе-приёмнике элемента, который придёт обменом, — получите два разных GUID для одного товара
03
Удаление элементов с «битыми» ссылками до разбора, откуда они взялись, — теряется история документов
04
Использование кода справочника как ключа интеграции — после удаления код выдаётся другому элементу

Практические сценарии использования GUID

Интеграция с сайтом и внешними системами

При обмене с интернет-магазином на стороне сайта сохраняют GUID каждого товара из 1С. Тогда при повторных выгрузках сайт обновляет существующие карточки, а не создаёт новые. Если сайт хранит только артикулы, смена артикула в 1С приведёт к потере связи.

Загрузка прайсов и первичное сопоставление

При загрузке данных из Excel GUID поставщика обычно отсутствует, поэтому первичное сопоставление делают по артикулу и наименованию, а затем в таблице соответствий фиксируют GUID найденного элемента 1С. При следующих загрузках поиск идёт уже по сохранённому идентификатору — это быстрее и надёжнее.

Перенос данных между базами

При миграции из старой конфигурации в новую через универсальный формат или конвертацию данных правила обычно настроены так, чтобы GUID элементов сохранялись. Это позволяет потом безболезненно переносить документы и остатки: ссылки в них разрешатся в те же самые элементы.

Контрольные точки

Как проверить результат

Повторный обмен после первичной загрузки
Норма

Количество элементов номенклатуры не растёт, реквизиты обновляются

Тревожный признак

Появляются дубли с тем же наименованием

Ссылки в документах после переноса
Норма

Товары отображаются наименованиями

Тревожный признак

Строки вида «<Объект не найден>»

Поиск элемента по GUID из внешней системы
Норма

Находится ровно один корректный элемент

Тревожный признак

Элемент не найден или найден другой товар

Ограничения и безопасные приёмы работы

GUID нельзя назначить вручную произвольному элементу через интерфейс пользователя — только программно при создании объекта методом ПолучитьСсылку(Новый УникальныйИдентификатор(...)) с последующей записью. Это штатный приём при миграциях, но использовать его без понимания механизма рискованно: можно создать объект со ссылкой, которая уже существует, и получить конфликт.

При групповой обработке номенклатуры (объединение дублей, замена ссылок) используйте типовые механизмы поиска и замены дублей — они корректно переносят ссылки из всех документов и регистров на «выживший» элемент. Самостоятельная замена ссылок запросом по таблицам базы напрямую запрещена лицензионным соглашением и почти гарантированно разрушит данные.

Перед любой интеграцией зафиксируйте в техническом задании, какой идентификатор является главным ключом сопоставления товаров. Если обе стороны договорились о GUID из 1С и сохраняют его у себя, большинство проблем с дублями исчезает ещё на этапе проектирования.
ПЗ
Практическое замечание
Маршрут решения

Как выбрать действие

После обмена появились дубли товаровПроверьте регистр соответствия объектов и восстановите связь по GUID, затем объедините дубли типовой обработкой
В документах «<Объект не найден>»Найдите элемент по GUID из текста ошибки; если его нет — восстановите из резервной копии или создайте с тем же GUID программно
Нужно связать номенклатуру с сайтомПередайте на сайт GUID через выгрузку CommerceML и храните его как внешний код товара
Планируется миграция в новую базуНастройте правила переноса с сохранением GUID, чтобы документы ссылались на те же элементы

FAQ

Можно ли изменить GUID существующего элемента номенклатуры?

Штатными средствами — нет, идентификатор неизменен. На практике «сменить» GUID можно только создав новый элемент с нужной ссылкой программно и перенеся на него все ссылки типовой обработкой поиска и замены, после чего удалив старый элемент. Это трудоёмкая операция, требующая резервной копии.

Совпадают ли GUID одинаковых товаров в разных базах 1С?

Только если база была получена копированием или элементы пришли туда обменом с сохранением идентификаторов. Если один и тот же товар завели вручную в двух базах, GUID будут разными — для обмена потребуется таблица соответствий.

Чем GUID отличается от «Ид» в файле выгрузки на сайт?

В типовом обмене CommerceML поле «Ид» товара, как правило, и есть GUID элемента номенклатуры из 1С. Но в некоторых настройках «Ид» может быть составным (например, GUID товара плюс GUID характеристики через разделитель), поэтому перед интеграцией стоит проверить реальный формат выгрузки.

Что делать, если в документе отображается «<Объект не найден>»?

Скопируйте GUID из текста сообщения и проверьте, существует ли элемент с таким идентификатором. Если объект удалён, восстановите его из копии или дождитесь повторной загрузки из базы-источника. Удалять документы с такими ссылками до разбора причин не следует.

Можно ли использовать штрихкод вместо GUID для интеграции?

Можно как вспомогательный ключ, но не как единственный: штрихкоды могут дублироваться, меняться производителем и отсутствовать у части товаров. Надёжная схема — GUID как основной ключ, штрихкод и артикул как ключи первичного поиска.

Где посмотреть GUID без программирования и конфигуратора?

Выгрузите каталог товаров типовым обменом с сайтом или универсальным обменом XML — идентификаторы будут в файле. Также GUID виден в некоторых типовых отчётах по соответствию объектов при настроенной синхронизации данных.

Итог

Что важно запомнить

Уникальный идентификатор номенклатуры — это GUID, который платформа присваивает элементу при создании и использует для всех внутренних ссылок и обменов. Он не меняется при редактировании карточки, поэтому именно его следует применять как ключ интеграции. Дубли и «битые» ссылки почти всегда следствие потери соответствия GUID — лечатся восстановлением связей и типовым объединением дублей.