При переходе на новые релизы 1С:Управление нашей фирмой (УНФ), особенно при переходе с ветки 1.6.18 на 1.6.19 и выше, технические специалисты часто сталкиваются с критической ошибкой: «Идентификатор объекта стал неуникальным». Эта проблема блокирует процесс реструктуризации базы данных и не позволяет завершить обновление. Ситуация осложняется тем, что стандартные методы, такие как простая выгрузка/загрузка .dt или обычное тестирование и исправление, не всегда приносят результат.
В данной статье мы подробно разберем причины возникновения этой коллизии и рассмотрим пошаговый алгоритм действий для восстановления работоспособности базы данных.
Прежде всего, проанализируем ситуацию. Ошибка возникает на этапе реструктуризации таблиц базы данных. В системе 1С:Предприятие каждый объект метаданных (справочник, документ, реквизит) имеет свой уникальный внутренний идентификатор (UUID). При обновлении конфигурации платформа сопоставляет старые идентификаторы с новыми. Если в системных таблицах (таких как Config, ConfigSave или ConfigCAS) появляются записи с дублирующимися UUID или именами, процесс прерывается.
Чаще всего «паршивая овца» кроется в механизме расширений или патчей (исправлений), которые были установлены ранее. Даже если вы визуально удалили расширение, записи о нем могли остаться в скрытых системных таблицах файловой базы. Рассмотрим подробнее методы решения этой проблемы.
Как показывает практика практикующих программистов, стандартного «Тестирования и исправления» (ТИИ) может быть недостаточно, если не выбраны правильные опции. Разберем алгоритм действий в Конфигураторе:
1Cv8.1CD).Если в процессе ТИИ утилита chdbfl.exe находит ошибки, которые не может исправить, это верный признак логического разрушения структуры таблиц метаданных.
Рассмотрим ситуацию, когда «призрачные» расширения мешают обновлению. В современных версиях 1С патчи (исправления от разработчика) также являются расширениями. Проанализируем следующие действия:
/ClearConfigCache или вручную очистив папки в %LOCALAPPDATA%\1C\1Cv8\.Посмотрим на пример того, почему это важно: при обновлении УНФ 1.6.19 происходит серьезное изменение структуры журналов документов. Если патч, предназначенный для версии 1.6.18, пытается «удержать» старую структуру метаданных, возникает конфликт идентификаторов.
Поскольку УНФ построена на базе Библиотеки стандартных подсистем (БСП), в ней существует справочник ИдентификаторыОбъектовМетаданных. Если проблема в нем, нам поможет специальный инструмент. Выясним, как с ним работать:
cf-файле.Проанализируем технические требования релизов УНФ. Версии ветки 1.6.19 крайне чувствительны к версии платформы 1С:Предприятие. На старых релизах платформы (ниже 8.3.15) механизмы реструктуризации могли работать некорректно с длинными идентификаторами таблиц. Рекомендация: перед обновлением конфигурации обновите платформу до актуального стабильного релиза (например, последней версии 8.3.22 или выше).
Если ошибка сохраняется, вероятно, проблема в конкретной таблице журнала документов, которая перестраивается при обновлении. Попробуем следующий метод:
cf).Если ошибка «Идентификатор объекта стал неуникальным» не уходит даже после ТИИ, применим метод переноса конфигурации через файлы:
.cf файл..cf.Этот метод часто помогает избавиться от «фантомных» записей в таблице Config, так как при выгрузке в файлы и обратной сборке мусорные данные не переносятся.
Мы рассмотрели основные способы решения проблемы с неуникальными идентификаторами. В большинстве случаев помогает полное ТИИ со сжатием таблиц и предварительным удалением всех патчей. Помните, что работа с метаданными на уровне файлов — это крайняя мера, и всегда начинайте с проверки целостности базы стандартными средствами платформы.