Изменение GUID (глобального уникального идентификатора) в 1С:Предприятие — задача, с которой сталкиваются разработчики при миграции данных, восстановлении связей между объектами или устранении конфликтов при обмене. Этот идентификатор присваивается автоматически при создании любого объекта метаданных (справочников, документов, регистров) и используется платформой для однозначной идентификации. Однако в некоторых сценариях — например, при переносе данных между базами или исправлении ошибок интеграции — может потребоваться его ручная корректировка.
Важно понимать, что прямого интерфейса для изменения GUID в стандартном клиенте 1С нет — все манипуляции выполняются через конфигуратор, скрипты или внешние инструменты. Неправильные действия могут привести к разрыву ссылочной целостности, ошибкам при записи объектов или даже повреждению базы. В этой статье мы разберём легальные способы изменения GUID, их ограничения и альтернативные подходы для типовых задач.
Прежде чем приступать к изменению идентификаторов, убедитесь, что проблема не решается другими методами: пересозданием объекта, использованием обработок для переноса данных или настройкой правил обмена. В 90% случаев корректировка GUID — это "костыль", а не оптимальное решение.
Что такое GUID в 1С и почему его не рекомендуют менять
GUID (Globally Unique Identifier) в 1С:Предприятие 8 — это 16-байтовый идентификатор, который присваивается каждому объекту метаданных и данным при их создании. Он используется платформой для:
- 🔗 Однозначной идентификации объектов при обмене данными между базами (например, через Универсальный формат обмена или RLS)
- 🔄 Связывания объектов в распределённых информационных системах (например, в УТ 11 и БП 3.0)
- 📊 Контроля версий объектов в механизме
ПланыОбмена - 🔍 Поиска и восстановления ссылок при загрузке данных из внешних источников
Платформа 1С генерирует GUID автоматически с использованием алгоритма UUID v4, который гарантирует уникальность идентификатора в пределах системы. В большинстве случаев разработчику не нужно заботиться о ручном назначении GUID — однако есть сценарии, где это становится необходимым:
✅ Перенос данных между базами без использования типового обмена (например, при миграции из 1С:7.7 в 8.3).
✅ Восстановление связей после сбоя обмена, когда объекты дублируются с разными идентификаторами.
✅ Тестирование интеграций, где требуется эмулировать конфликты идентификаторов.
✅ Исправление ошибок после некорректного импорта данных из внешних систем (например, Excel или XML).
Однако изменение GUID чревато рисками:
⚠️ Внимание: Если объект с изменённым GUID уже участвовал в обмене данными, это может привести к потере ссылочной целостности в узлах распределённой системы. Например, в УТ 11 документ "Заказ клиента" может "отвязаться" от связанного с ним документа "Реализация товаров и услуг" в другой базе.
Способы изменения GUID в 1С: от простых к сложным
В зависимости от типа объекта и версии платформы доступны разные методы изменения идентификатора. Рассмотрим их по порядку — от самых безопасных до тех, что требуют глубоких знаний внутренней структуры базы.
### 1. Изменение GUID через конфигуратор (для объектов метаданных)
Этот способ подходит для объектов конфигурации (справочников, документов, регистров) и не затрагивает данные. Например, если вам нужно изменить GUID справочника Номенклатура перед выгрузкой конфигурации для другой базы.
Алгоритм действий:
- Откройте конфигуратор в режиме
1С:Предприятие(с правами администратора). - Перейдите в дерево метаданных и найдите нужный объект (например,
Справочники → Номенклатура). - Нажмите правой кнопкой на объект и выберите
Свойства. - В открывшемся окне найдите поле
Идентификатор(это и есть GUID в формате{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}). - Скопируйте новый GUID (можно сгенерировать через инструменты вроде UUID Generator) и вставьте его в поле.
- Сохраните конфигурацию (
Ctrl+S) и обновите базу данных (Конфигурация → Обновить базу данных).
⚠️ Внимание: После изменения GUID объекта метаданных все данные этого объекта станут недоступны до перезаписи! Например, если вы измените GUID справочника Контрагенты, все ранее созданные элементы справочника "исчезнут" из интерфейса, хотя физически останутся в базе. Для восстановления потребуется ручная правка таблиц.
### 2. Изменение GUID данных через запросы (для опытных пользователей)
Если нужно изменить GUID конкретного элемента данных (например, документа или записи справочника), можно воспользоваться языком запросов 1С. Этот метод требует понимания структуры системных таблиц.
Пример кода для изменения GUID документа:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДокументСсылка.Ссылка КАК Ссылка
|ИЗ
| Документ.ДокументКлиента КАК ДокументСсылка
|ГДЕ
| ДокументСсылка.Ссылка = &СсылкаНаДокумент";
Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Сообщить("Документ не найден!");
Иначе
// Получаем текущий GUID
ТекущийGUID = Результат[0].Ссылка.УникальныйИдентификатор();
// Генерируем новый GUID (например, через COM-объект)
НовыйGUID = Новый УникальныйИдентификатор();
// Меняем GUID в системной таблице (требует прав на прямую запись!)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПОМЕСТИТЬ &НовыйGUID ВТ_Идентификаторы
|ГДЕ
| ВТ_Идентификаторы.Ссылка = &ТекущийGUID";
Запрос.УстановитьПараметр("НовыйGUID", НовыйGUID);
Запрос.УстановитьПараметр("ТекущийGUID", ТекущийGUID);
Запрос.Выполнить();
КонецЕсли;
⚠️ Этот метод работает только в режиме 1С:Предприятие с полными правами и может нарушить целостность данных, если не учесть все связанные таблицы (например, ВТ_Документы, ВТ_Регистры).
☑️ Подготовка к изменению GUID через запрос
Инструменты для массового изменения GUID
Для сложных сценариев (например, миграции больших объёмов данных) ручное изменение GUID неэффективно. В таких случаях используют специализированные инструменты:
| Инструмент | Назначение | Особенности | Стоимость |
|---|---|---|---|
| 1С:Конвертация данных | Перенос данных между базами с сохранением или заменой GUID | Официальное решение от 1С, поддерживает правила преобразования | Входит в поставку 1С:Предприятие 8 |
| DataProcessor | Массовая обработка данных, включая замену GUID | Требует навыков работы с SQL и 1С |
От 15 000 ₽ |
| Vanessa-AddIn | Автоматизация тестирования и модификация данных | Поддерживает генерацию GUID по шаблонам | Бесплатно (open-source) |
| SQL-скрипты | Прямая правка таблиц 1С через MS SQL Server или PostgreSQL |
Высокий риск повреждения базы, требует бэкапа | Бесплатно |
🔹 1С:Конвертация данных — самый безопасный вариант для типовых конфигураций (УТ 11, БП 3.0, ЗУП 3.1). Инструмент позволяет настроить правила преобразования GUID при переносе, например:
- 🔄 Замена GUID по соответствию (старый → новый)
- 🔀 Автоматическая генерация новых GUID для всех объектов
- 📋 Сохранение оригинальных GUID для выборочных объектов
🔹 Vanessa-AddIn подходит для автоматизированного тестирования, где требуется эмулировать конфликты GUID. Например, можно создать сценарий, который:
- Считывает GUID объекта из тестовой базы.
- Генерирует новый GUID по заданному шаблону.
- Подменяет идентификатор в целевой базе.
- Проверяет корректность ссылок после изменения.
⚠️ Внимание: При использовании SQL-скриптов для правки GUID напрямую в таблицах1С(например,_1SJOURNили_1SCATALOG) обязательно отключите всех пользователей от базы и заблокируйте регламентные задания. В противном случае возможна порча данных из-за параллельных транзакций.
Риски и последствия изменения GUID
Даже если вам удалось успешно изменить GUID объекта, это может привести к скрытым проблемам. Рассмотрим типичные "подводные камни":
### 1. Нарушение ссылочной целостности
В 1С многие объекты связаны между собой через GUID. Например:
- 📄 Документ
Поступление товаровссылается на элемент справочникаКонтрагент. - 📊 Записи регистров (
РегистрНакопления.ОстаткиТоваров) хранят ссылки на документы. - 🔗 В распределённых базах (RLS) объекты синхронизируются по GUID.
Если вы измените GUID только в одном месте (например, только в справочнике Контрагенты, но не в связанных документах), ссылки "разорвутся". В лучшем случае пользователь увидит пустое значение вместо названия контрагента. В худшем — база перестанет открываться из-за ошибок чтения данных.
### 2. Проблемы с обменом данными
Если объект с изменённым GUID участвует в обмене (например, через ПланОбмена или Универсальный формат), узлы-получатели могут:
- 🔄 Создать дубликат объекта (так как не найдут оригинал по новому GUID).
- ❌ Отказаться принимать изменения из-за конфликта идентификаторов.
- ⚠️ Записать данные в неверные регистры (если GUID используется в правилах обмена).
🔹 Пример: В базе УТ 11 вы изменили GUID документа Заказ клиента №123. При следующем обмене с БП 3.0 система создаст новый документ вместо обновления существующего, так как не найдёт оригинал по старому GUID.
### 3. Ошибки при записи объектов
Некоторые объекты в 1С имеют жёсткую привязку к GUID на уровне платформы. Например:
- 📑 Документы с проводками (например,
РеализацияТоваровУслуг) — изменение GUID может привести к расхождению итогов в регистрах. - 📋 Планы видов характеристик — GUID используется для связывания значений характеристик с объектами.
- 🔧 Объекты с подчинёнными данными (например, документы с табличными частями) — требуется синхронная замена GUID во всех связанных таблицах.
⚠️ Внимание: В конфигурациях с управляемыми формами (например, УТ 11.4, БП 3.0) изменение GUID может привести к ошибкам отображения форм, если идентификатор используется в макетах или клиентских скриптах.
Перед изменением GUID экспортируйте объект в XML или DT-файл — это поможет восстановить данные, если что-то пойдёт не так. Используйте команду Файл → Сохранить данные как... в конфигураторе.
Альтернативные подходы: когда изменять GUID не нужно
В большинстве случаев задачу, для которой вы хотели изменить GUID, можно решить другими способами. Рассмотрим альтернативы:
### 1. Использование обработок для переноса данных
Если цель — перенос данных между базами, вместо изменения GUID лучше использовать специализированные обработки:
- 📤 Выгрузка/загрузка данных XML (встроенная в платформу).
- 🔄 Универсальный обмен данными (для типовых конфигураций).
- 📦 Обработки от партнёров 1С (например, "Перенос данных из УТ 10.3 в УТ 11").
🔹 Преимущество: Обработки автоматически разрешают конфликты GUID, создавая новые идентификаторы для объектов в целевой базе.
### 2. Настройка правил обмена
Если проблема в конфликтах при обмене, настройте правила синхронизации:
- Откройте
Планы обменав конфигураторе. - Найдите узел, с которым возникают конфликты.
- В настройках узла установите флаг
Игнорировать ошибки при приёме(для тестирования). - Используйте обработку
УниверсальныйОбменДанными.epfдля ручного разрешения конфликтов.
### 3. Пересоздание объекта с нужным GUID
Если требуется, чтобы объект имел конкретный GUID (например, для тестирования), можно:
- Удалить объект в базе.
- Создать новый объект с тем же наименованием.
- В момент создания подменить GUID через
ОбработкаПередЗаписью:
Пример кода для подмены GUID при записи:
Процедура ОбработкаПередЗаписью(Отказ, РежимЗаписи)
Если РежимЗаписи = РежимЗаписиДокумента.Запись Тогда
// Подменяем GUID на нужный (например, для тестирования)
ЭтотОбъект.УникальныйИдентификатор = Новый УникальныйИдентификатор("7F3E9A2B-1C8D-4E5F-A6B7-8C9D0E1F2A3B");
КонецЕсли;
КонецПроцедуры
⚠️ Этот метод работает только для новых объектов. Для существующих потребуется удаление и повторное создание.
В 1С нет жёсткой защиты от дублирования GUID на уровне платформы, но это приведёт к непредсказуемому поведению:
Для восстановления потребуется ручная правка системных таблиц или восстановление из бэкапа.Что будет, если два объекта будут иметь одинаковый GUID?
"Нарушена уникальность идентификаторов".
Практические примеры: когда изменение GUID оправдано
Несмотря на риски, есть сценарии, где изменение GUID — единственное решение. Разберём два реальных кейса.
### Кейс 1: Восстановление связей после сбоя обмена
Ситуация: При обмене между УТ 11 и БП 3.0 произошел сбой, и документ РеализацияТоваровУслуг был дублирован с новым GUID. В результате:
- В УТ документ имеет GUID
{A1B2C3D4-.... - В БП тот же документ имеет GUID
{E5F6G7H8-.... - Связанные проводки в БП ссылаются на несуществующий документ.
Решение:
- В БП 3.0 найдите дублированный документ и удалите его.
- С помощью 1С:Конвертация данных перенесите документ из УТ в БП с сохранением оригинального GUID.
- Проверьте целостность ссылок в регистрах бухгалтерии (
РегистрБухгалтерии.ХозРасчеты).
🔹 Результат: Связи между документами восстановлены, проводки корректно отражаются в отчётах.
### Кейс 2: Тестирование конфликтов при интеграции
Ситуация: Разрабатывается интеграция 1С с внешней системой. Необходимо протестировать поведение при конфликте GUID (например, когда внешняя система отправляет объект с идентификатором, который уже существует в базе).
Решение:
- Создайте тестовый документ в 1С (например,
ЗаказПокупателя). - С помощью Vanessa-AddIn или прямого SQL-запроса измените его GUID на значение, которое будет отправлено внешней системой.
- Запустите тестовый обмен и проверьте обработку конфликта (создание дубля, игнорирование, ошибка).
⚠️ Внимание: Для тестирования конфликтов GUID используйте копию рабочей базы. Внешние системы (например, EDI-операторы или маркетплейсы) могут заблокировать ваш аккаунт за отправку дублирующихся идентификаторов.
🔹 Результат: Выявлены слабые места в обработке конфликтов, доработаны правила обмена.
Как проверить корректность изменений
После изменения GUID необходимо убедиться, что:
- Объект доступен в интерфейсе 1С (не "исчез" после правки).
- Все ссылки на объект работают (например, в документах, отчётах, регистрах).
- Обмен данными проходит без ошибок (если объект участвует в синхронизации).
- Нет дублирующихся идентификаторов в базе.
Способы проверки:
- 🔍 Тестовый запрос: Выполните запрос для поиска объектов с одинаковыми GUID:
ВЫБРАТЬ
Ссылка.УникальныйИдентификатор() КАК GUID,
ВЫРАЗИТЬ(Ссылка КАК Строка) КАК Объект,
КОЛИЧЕСТВО(*) КАК Количество
ИЗ
Документ.ЛюбойДокумент КАК Ссылка
СГРУППИРОВАТЬ ПО
Ссылка.УникальныйИдентификатор()
ИМЕЮЩИЕ
КОЛИЧЕСТВО(*) > 1
- 📊 Проверка регистров: Убедитесь, что в регистрах накопления/сведений нет "битых" ссылок на ваш объект.
- 🔄 Тестовый обмен: Выполните тестовый сеанс обмена с узлом-партнёром (например, через
ПланОбмена.Основной). - 📑 Отчёты: Проверьте отчёты, которые используют изменённый объект (например,
Оборотно-сальдовая ведомостьдля документов).
⚠️ Внимание: Если после изменения GUID вы обнаружили, что объект "исчез" из интерфейса, но физически присутствует в базе (виден в запросах), это означает, что его метаданные не синхронизированы с данными. Восстановить работоспособность можно черезТестирование и исправление ИБв конфигураторе (менюАдминистрирование → Тестирование и исправление).
Изменение GUID — это крайняя мера. В 90% случаев задачу можно решить через настройку обмена, перенос данных или пересоздание объектов. Всегда тестируйте изменения на копии базы!
FAQ: Частые вопросы по изменению GUID в 1С
Можно ли изменить GUID объекта без конфигуратора?
Нет, для изменения GUID объектов метаданных или данных обязательно нужен доступ к конфигуратору с правами администратора. В пользовательском режиме (1С:Предприятие) нет инструментов для этой операции.
Исключение — использование внешних обработок (например, Vanessa-AddIn), но они тоже требуют запуска в привилегированном режиме.
Как сгенерировать новый GUID для объекта в 1С?
В коде 1С новый GUID можно создать с помощью конструктора Новый УникальныйИдентификатор():
НовыйGUID = Новый УникальныйИдентификатор(); // Генерация случайного GUID
Сообщить(НовыйGUID.Строка()); // Вывод в формате {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
Для генерации GUID по шаблону (например, для тестирования) используйте метод УникальныйИдентификатор(Строка):
КонкретныйGUID = Новый УникальныйИдентификатор("A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11");
Что делать, если после изменения GUID база не открывается?
Если после правки GUID база перестала открываться с ошибкой типа "Нарушена структура базы данных" или "Не найден объект метаданных", выполните следующие шаги:
- Восстановите базу из бэкапа (если он есть).
- Если бэкапа нет, попробуйте запустить
Тестирование и исправление ИБв конфигураторе (менюАдминистрирование → Тестирование и исправление). Отметьте флаги:- 🔧
Реиндексация таблиц - 🔍
Проверка ссылочной целостности - 📋
Восстановление последовательностей
- 🔧
- Если тестирование не помогло, обратитесь в поддержку 1С с логами ошибок (файл
1CV8Log\*.log).
🔹 Важно: Не пытайтесь исправить ошибку вручную через SQL, если не уверены в структуре таблиц — это может усугубить проблему.
Можно ли изменить GUID в облачной версии 1С (1С:Fresh)?
Нет, в 1С:Fresh и других облачных решениях (1С:Линк, 1С:EDO) нет доступа к конфигуратору и системным таблицам. Изменение GUID в облаке возможно только через:
- 📤 Обращение в техническую поддержку 1С с обоснованием необходимости (например, для восстановления после сбоя обмена).
- 🔄 Использование типового функционала обмена данными (если проблема в конфликтах GUID).
Самостоятельная правка GUID в облаке приведёт к нарушению лицензионного соглашения и может стать причиной блокировки аккаунта.
Как найти все объекты в базе с конкретным GUID?
Чтобы найти все объекты (документы, справочники, регистры), ссылающиеся на определённый GUID, используйте универсальный запрос:
ВЫБРАТЬ
"Ссылка" КАК Объект,
"УникальныйИдентификатор()" КАК GUID
ИЗ
(
| ВЫБРАТЬ
| Ссылка КАК Ссылка
| ИЗ
| Документ.ЛюбойДокумент КАК Ссылка
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Ссылка КАК Ссылка
| ИЗ
| Справочник.Лю