При обновлении конфигурации «1С:Бухгалтерия предприятия» (или других типовых решений на базе Библиотеки Стандартных Подсистем) специалисты часто сталкиваются с ошибкой реструктуризации базы данных, указывающей на неуникальное значение поля ПрисоединенныйФайл в регистре сведений ПрисоединенныеФайлы.
При этом самостоятельная проверка данных с помощью запроса до обновления показывает, что все записи в базе данных являются полностью уникальными. Проанализируем причину возникновения этой неполадки и разберем наиболее простые и эффективные способы ее решения.
Разберем механику процесса обновления. Ошибка возникает не из-за дублей в исходных данных базы, а непосредственно в момент физической перестройки (реструктуризации) таблиц СУБД платформой «1С:Предприятие».
Если в процессе сравнения и объединения конфигураций платформа по какой-то причине (например, из-за изменения определяемых типов или состава типов БСП) теряет автоматическую связь между измерением ПрисоединенныйФайл в основной конфигурации и аналогичным измерением в обновлении, она интерпретирует это как две раздельные операции:
ПрисоединенныйФайл.ПрисоединенныйФайл.Во время создания нового измерения в процессе реструктуризации платформа копирует данные во временную таблицу. Так как связь со старым измерением потеряна, новое ключевое поле заполняется значением по умолчанию (пустой ссылкой). В результате для всех имеющихся строк регистра в ключевом поле образуется одинаковое пустое значение, что приводит к нарушению уникальности первичного ключа и ошибке СУБД.
Рассмотрим самый быстрый и корректный способ решения проблемы без снятия с поддержки и удаления метаданных.
Выполним следующие шаги в режиме «Конфигуратор»:
ПрисоединенныеФайлы и развернем его измерение ПрисоединенныйФайл.F7).Явная установка соответствия исключает удаление и повторное создание колонки в таблице СУБД, сохраняя все существующие ссылки и их уникальность.
Если обновляемая конфигурация находится на полной поддержке поставщика и в нее не вносились доработки, вместо процедуры сравнения и объединения целесообразно использовать механизм полной загрузки:
.cf) нужного релиза.При загрузке конфигурации целиком структура метаданных замещается из файла поставщика без выполнения промежуточного сопоставления, что предотвращает подобные ошибки.
Если структура регистра сведений ПрисоединенныеФайлы не терпит изменений в новом релизе, можно просто исключить его из обработки:
ПрисоединенныеФайлы.ПрисоединенныйФайл.