Ошибка "В процессе обновления информационной базы произошла критическая ошибка" в пустую конфигурацию
1С:Предприятие 8.3 (8.3.13.1513), режим совместимости 8.2
При загрузке конфигурации(.cf) в пустую базу и попытке обновить, получал ошибку.
В процессе обновления информационной базы произошла критическая ошибка по причине:
Ошибка при попытке вставки записи с неуникальным значением ссылки.
Microsoft SQL Server Native Client 11.0: Violation of PRIMARY KEY constraint 'PK___Chrc173__AC8ED0C4E093E775'. Cannot insert duplicate key in object 'dbo._Chrc17340NG'. The duplicate key value is (0xa040dc2d4659cfa8487345e49e5c49f4). HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=E, native=2627, line=1
В Технологическом журнале зафиксировалась аналогичная ошибка.
«08:52.535000-0,EXCP,4,process=1cv8,Usr=DefUser,dbpid=100,Exception=DataBaseException,Descr="Ошибка при попытке вставки записи с неуникальным значением ссылки. Microsoft SQL Server Native Client 11.0: Violation of PRIMARY KEY constraint 'PK___Chrc173__AC8ED0C4E093E775'. Cannot insert duplicate key in object 'dbo._Chrc17340NG'. The duplicate key value is (0xa040dc2d4659cfa8487345e49e5c49f4). HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=E, native=2627, line=1»
Чтобы «расшифровать» имя таблицы воспользовался статьей на ИТС и запуском обработки для получения информации о структуре таблиц базы данных в рабочей базе. Для поиска повторяющихся ключей на рабочей копии базы, воспользовался статьей nonunique, но без успешно.
Так как при повторной загрузке конфигурации(.cf) получал в ошибке уже другое имя таблицы 'dbo._Chrc552NG', пришлось применить другой метод для поиска причины неуникальной записи. После прочтения статьи ИТС узнал, что префикс «_Chrc…» относится к плану виду характеристик и чтобы узнать какие предопределенные объекты задублировались, выгрузил конфигурацию в файлы. Суммарное количество предопределенных элементов более 600 шт.
Запустил git bash here в каталоге, куда выгрузил конфигурацию в файлы, перешел в папку, где хранятся планы видов характеристик, например, «e:\Conf\ChartsOfCharacteristicTypes\» и запустил bash скрипт. Подробнее на ИТС о выгрузке конфигурации в xml-файлы.
Вывел скриптом совпадения поля «Item id = "guid"».
grep -r 'Item id=' | awk -F: '{print $0}' | sort | uniq -d | sort -r
Нашел 3 предопределенных элемента, у которых id одинаковый. После этого перед обновлением конфигурации в конфигураторе, нашел по имени Name объект, удалил и заново создал предопределенный объект, чтобы сгенерить новые id. Конфигурация обновилась.
Причины возникновения ошибки связываю с использованием платформы 8.3.10.2580, в части механизма «Выгрузить конфигурацию в файлы/Загрузить конфигурацию из файлов», т.к. до перехода на 8.3.13.1513, ошибки с обновлением в пустую конфигурацию не было. Как платформа при загрузке конфигурации из файлов смогла обновить и создать элементы с одинаковыми id, останется для меня загадкой и пусть разгадывают в 1С.
Буду рад, если статья кому-нибудь поможет.