Уникальные идентификаторы (UID) в 1С:Предприятие — это невидимые пользователю метки, которые система присваивает каждому объекту базы данных. Они нужны для однозначной идентификации справочников, документов, регистров и других сущностей, особенно при обмене данными между базами или интеграции с внешними системами. Но как найти этот UID, если он не отображается в стандартном интерфейсе? Эта статья поможет разобраться.
В зависимости от версии платформы (1С 8.2 или 1С 8.3) и типа объекта (справочник, документ, регистр) способы просмотра UID могут отличаться. Мы рассмотрим универсальные методы через конфигуратор, отладчик, внешние обработки и даже программный код. А ещё объясним, почему иногда UID может отсутствовать или меняться при переносе данных.
Что такое UID в 1С и зачем он нужен
UID (Unique Identifier) — это глобально уникальный идентификатор, который 1С:Предприятие присваивает объектам метаданных и данным. В отличие от стандартных реквизитов (например, Ссылка или Код), UID:
- 🔹 Не изменяется при переносе объекта между базами (если не используется механизм "замена ссылок").
- 🔹 Генерируется автоматически при создании объекта и остаётся постоянным на протяжении его жизненного цикла.
- 🔹 Используется для синхронизации в распределённых информационных базах (РИБ) и при обмене через XML, JSON или веб-сервисы.
- 🔹 Не виден пользователю в стандартных формах, но доступен через программный интерфейс.
UID особенно важен в сценариях, где требуется однозначная привязка данных между системами. Например, при интеграции 1С с сайтом на Bitrix или 1С-Битрикс, где товары, заказы и контрагенты должны совпадать в обеих системах. Без UID при обмене данными можно столкнуться с дублированием или потерей связей между объектами.
Однако не все объекты в 1С имеют UID по умолчанию. Например, в старых конфигурациях (до 1С 8.3.6) UID мог не присваиваться автоматически, и его приходилось генерировать вручную. Сегодня большинство современных решений (например, 1С:ERP, 1С:УТ 11, 1С:Бухгалтерия 3.0) поддерживают UID "из коробки", но проверять его наличие всё равно полезно.
Способ 1: Просмотр UID через конфигуратор в режиме отладки
Самый надёжный способ увидеть UID — использовать конфигуратор в режиме Отладка. Этот метод работает для любых объектов: справочников, документов, регистров сведений и т.д. Инструкция:
- Откройте базу в режиме Конфигуратор (для этого при запуске 1С удерживайте клавишу
Shift). - Перейдите в меню
Сервис → Отладка → Начать отладку(или нажмитеF5). - В открывшемся окне 1С:Предприятие найдите нужный объект (например, документ
РеализацияТоваровУслуг) и откройте его. - Вернитесь в Конфигуратор и в окне отладки найдите переменную с вашим объектом (обычно это
Объектили имя формы). - Раскройте свойства объекта и найдите поле
УникальныйИдентификаторилиUID.
Если поле отсутствует, это может означать:
- 🔸 Объект не поддерживает UID (например, некоторые виртуальные таблицы).
- 🔸 Вы смотрите не тот уровень вложенности (UID может быть внутри свойства
Ссылка). - 🔸 В вашей конфигурации отключена поддержка UID (актуально для старых версий).
☑️ Подготовка к просмотру UID через отладку
Пример того, как может выглядеть UID в отладчике:
Объект.Ссылка.УникальныйИдентификатор = "a1b2c3d4-5678-90ef-1234-567890abcdef"
⚠️ Внимание: В некоторых конфигурациях (например, 1С:ЗУП 2.5) UID может храниться не в свойствеУникальныйИдентификатор, а в служебном реквизитеRefUIDилиGlobalUID. Если не нашли поле — проверьте все свойства объекта через точку.
Способ 2: Использование внешней обработки для массового просмотра UID
Если вам нужно получить UID для большого количества объектов (например, для всех элементов справочника Номенклатура), удобнее использовать внешнюю обработку. Одна из самых популярных — обработка "Просмотр UID объектов", которую можно скачать с портала Инфостарт или 1С-Сообщество.
Как работать с такой обработкой:
- Скачайте обработку (например,
ПросмотрUID.epf) и сохраните на компьютер. - В 1С:Предприятие перейдите в
Файл → Открытьи выберите скачанный файл. - В открывшемся окне укажите тип объекта (справочник, документ) и настройте фильтр (например, по дате или наименованию).
- Нажмите
Выполнить— обработка выведет таблицу с объектами и их UID.
Преимущества этого метода:
- 📌 Можно экспортировать UID в Excel или CSV для дальнейшей работы.
- 📌 Поддерживает пакетную обработку тысяч объектов.
- 📌 Часто содержит дополнительные функции (например, поиск дублей UID).
| Обработка | Поддерживаемые объекты | Экспорт | Особенности |
|---|---|---|---|
| Просмотр UID объектов (Инфостарт) | Справочники, документы, регистры | Excel, CSV, TXT | Поиск дублей, фильтрация по дате |
| UID Manager (1С-Сообщество) | Все объекты метаданных | Excel, JSON | Генерация новых UID, замена в пакетном режиме |
| Анализ связей по UID | Документы с ссылками | Excel | Визуализация связей между объектами |
Если вы не хотите скачивать обработку, можно написать простой запрос прямо в 1С:
ВЫБРАТЬ
Ссылка КАК Объект,
УникальныйИдентификатор КАК UID
ИЗ
Справочник.Номенклатура КАК Номенклатура
⚠️ Внимание: В некоторых конфигурациях (например, 1С:БП 2.0) полеУникальныйИдентификаторможет быть скрыто в виртуальных таблицах. В этом случае используйте прямой доступ через объект:Для Каждого Элемент Из Справочник.Номенклатура ЦиклСообщить(Элемент.Ссылка.УникальныйИдентификатор);
КонецЦикла;
Способ 3: Получение UID через программный код (1C:Enterprise)
Для разработчиков и опытных пользователей самый гибкий способ — получение UID через встроенный язык 1С. Это позволяет автоматизировать процесс, например, при выгрузке данных в JSON или XML.
Примеры кода для разных объектов:
UID справочника
Спр = Справочники.Контрагенты.НайтиПоНаименованию("ООО Ромашка");
Если Не Спр.Пустая() Тогда
UID = Спр.УникальныйИдентификатор;
Сообщить("UID контрагента: " + UID);
КонецЕсли;
UID документа
Док = Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру("000000001", Дата(2023,10,15));
Если Не Док.Пустая() Тогда
UID = Док.УникальныйИдентификатор;
Сообщить("UID документа: " + UID);
КонецЕсли;
UID регистра сведений
Запись = РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследнююЗапись();
Если Не Запись.Пустая() Тогда
UID = Запись.УникальныйИдентификатор;
Сообщить("UID записи: " + UID);
КонецЕсли;
Если при выполнении кода вы получаете ошибку "Недопустимое значение параметра (УникальныйИдентификатор)", это означает, что:
- 🔴 Объект не поддерживает UID (проверьте версию конфигурации).
- 🔴 Вы обращаетесь к несуществующему объекту (используйте
Пустая()для проверки). - 🔴 В вашей базе отключена функциональность UID (актуально для конфигураций до 1С 8.3.5).
Если вам нужно получить UID для объекта, который ещё не сохранён в базе (например, новый документ), сначала запишите его методом Записать() — только после этого система сгенерирует UID.
Способ 4: Просмотр UID в файлах выгрузки (XML, JSON)
UID часто используется при обмене данными между базами или внешними системами. Если у вас есть файл выгрузки (например, export.xml или data.json), можно найти UID прямо в нём.
Где искать UID в разных форматах:
- 📄 XML (обмен через Универсальный формат): ищите атрибут
UIDили тег<УникальныйИдентификатор>внутри объекта.<Документ Объект="ПоступлениеТоваровУслуг" UID="a1b2c3d4-5678-90ef-1234-567890abcdef">...
</Документ>
- 📄 JSON (REST API): UID обычно передаётся в поле
"ref_uid"или"global_uid".{"document": {
"ref": "ПоступлениеТоваровУслуг/000000001",
"ref_uid": "a1b2c3d4-5678-90ef-1234-567890abcdef","date": "2023-10-15"
}
}
- 📄 CSV/Excel: UID может быть в отдельном столбце с заголовком
UIDилиGlobalID.
Если вы не нашли UID в файле выгрузки, проверьте:
- 🔍 Настройки обмена: возможно, UID отключён в правилах конвертации.
- 🔍 Версию формата: в старых версиях Универсального формата обмена (до 2.0) UID мог не экспортироваться.
- 🔍 Права доступа: некоторые обработки выгрузки скрывают UID для безопасности.
⚠️ Внимание: При импорте данных по UID система 1С может автоматически заменять ссылки, если найдёт совпадение. Это полезно для синхронизации, но опасно, если UID дублируются или сгенерированы неправильно. Всегда проверяйте уникальность идентификаторов перед массовым импортом.
Способ 5: Просмотр UID в базе данных (прямой доступ к SQL)
Для опытных пользователей и администраторов есть способ получить UID прямо из SQL-базы, если 1С работает в клиент-серверном варианте (например, на Microsoft SQL Server или PostgreSQL). Этот метод требует знаний SQL и прав доступа к серверу.
Примеры запросов для разных СУБД:
Microsoft SQL Server
SELECT
t._IDRRef AS [Ссылка],
t._UID AS [UID]
FROM
_1SCatalog_Номенклатура AS t
WHERE
t._Description LIKE '%Ноутбук%';
PostgreSQL
SELECT
"_IDRRef" AS "Ссылка",
"_UID" AS "UID"
FROM
"_1SCatalog_Контрагенты"
WHERE
"_Description" ILIKE '%ООО Ромашка%';
Обратите внимание на особенности:
- 🗃️ В 1С таблицы имеют префикс
_1Sи суффикс с типом объекта (например,_Catalog_для справочников,_Document_для документов). - 🗃️ Поле UID обычно называется
_UIDили_GlobalUID. - 🗃️ Для документов может потребоваться join с таблицей
_1SDocuments.
⚠️ Внимание: Прямой доступ к базе данных 1С может нарушить её целостность. Не изменяйте данные через SQL без резервной копии! Для безопасных операций используйте встроенные механизмы 1С или специализированные утилиты (например, 1С:Администрирование сервера).
Как узнать структуру таблиц 1С в SQL?
Используйте запрос к системным таблицам, например:
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '_1S%'
Это выведет список всех таблиц 1С в базе данных. Для просмотра структуры конкретной таблицы используйте:
SELECT COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '_1SCatalog_Номенклатура'
Частые проблемы с UID и как их решить
При работе с UID в 1С можно столкнуться с типичными ошибками. Рассмотрим самые распространённые и способы их устранения.
| Проблема | Возможная причина | Решение |
|---|---|---|
| UID отсутствует у объекта | Старая версия конфигурации или отключённая поддержка UID | Обновите конфигурацию или вручную сгенерируйте UID через код |
| UID дублируется | Ошибка при переносе данных или ручном редактировании | Используйте обработку для поиска и замены дублей |
| UID меняется при обмене | Настроены правила замены ссылок в плане обмена | Проверьте настройки обмена в Администрирование → Обмен данными |
| Ошибка "Недопустимый UID" | Некорректный формат идентификатора (не соответствует GUID) | Генерируйте UID через функцию Новый УникальныйИдентификатор() |
Если вам нужно сгенерировать UID для объекта, который его не имеет, используйте код:
Объект = Справочники.Номенклатура.СоздатьЭлемент();
Объект.Наименование = "Новый товар";
Объект.УникальныйИдентификатор = Новый УникальныйИдентификатор(); // Генерация UID
Объект.Записать();
Для массовой генерации UID можно написать обработку:
Выборка = Справочники.Контрагенты.Выбрать();
Пока Выборка.Следующий() Цикл
Если Пустая(Выборка.УникальныйИдентификатор) Тогда
Объект = Выборка.ПолучитьОбъект();
Объект.УникальныйИдентификатор = Новый УникальныйИдентификатор();
Объект.Записать();
КонецЕсли;
КонецЦикла;
Если UID отсутствует у критически важных объектов (например, документов за прошлые периоды), не генерируйте его самостоятельно — это может нарушить целостность данных. Обратитесь к специалисту для анализа причин и восстановления связей.
FAQ: Частые вопросы о UID в 1С
Можно ли изменить UID объекта вручную?
Технически да, но это крайне не рекомендуется. UID используется для связывания объектов в разных базах, и его изменение может привести к разрыву связей. Если необходимо заменить UID (например, при слиянии баз), используйте специализированные обработки с функцией замены ссылок.
Почему у некоторых объектов нет UID?
Это может быть связано с:
- 🔹 Устаревшей версией конфигурации (до 1С 8.3.5 UID не генерировался автоматически).
- 🔹 Отключённой функциональностью в настройках обмена.
- 🔹 Особенностями объекта (например, виртуальные таблицы или временные объекты).
Чтобы добавить UID, обновите конфигурацию или используйте код для массовой генерации.
Как найти объект по UID?
Используйте метод НайтиПоUID() (доступен в последних версиях платформы):
UID = Новый УникальныйИдентификатор("a1b2c3d4-5678-90ef-1234-567890abcdef");
Объект = Справочники.Номенклатура.НайтиПоUID(UID);
Если метод недоступен, выполните запрос:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура ГДЕ УникальныйИдентификатор = &UID";
Запрос.УстановитьПараметр("UID", UID);
Результат = Запрос.Выполнить();
UID и GUID — это одно и то же?
В контексте 1С термины часто используются как синонимы, но технически:
- 🔹 GUID (Globally Unique Identifier) — стандартный формат уникальных идентификаторов (например,
a1b2c3d4-5678-90ef-1234-567890abcdef). - 🔹 UID в 1С — это реализация GUID, но может иметь специфические особенности (например, хранение в бинарном формате).
В коде 1С для генерации UID используется функция Новый УникальныйИдентификатор(), которая возвращает значение в формате GUID.
Как экспортировать UID для всех объектов базы?
Для массового экспорта используйте обработку типа "Выгрузка данных с UID" (доступна на Инфостарт). Альтернативно можно написать универсальный код:
// Пример для справочника "Номенклатура"
Результат = Новый Структура("Данные");
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
Данные = Новый Структура;
Данные.Вставить("Ссылка", Выборка.Ссылка);
Данные.Вставить("UID", Выборка.УникальныйИдентификатор);
Результат.Данные.Добавить(Данные);
КонецЦикла;
// Сохранение в JSON
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписьJSON.Записать(Результат);
ТекстJSON = ЗаписьJSON.Закрыть();
ТекстJSON.СохранитьКак("C:\export_uid.json");