При обновлении конфигураций (например, при переходе с УТ 11.1 на УТ 11.2) специалисты часто сталкиваются с предупреждением конфигуратора во время реорганизации базы данных: «Код справочника стал неуникальным». При этом проверка справочника через консоль запросов до обновления может показывать, что элементы с указанными кодами существуют в единственном экземпляре.
Рассмотрим подробнее, почему возникают такие предупреждения, как устроена механика предопределенных элементов в платформе 1С:Предприятие 8.3 и какими способами можно устранить возникшие дубли кодов.
Проанализируем архитектурные особенности платформы 1С:Предприятие. Начиная с платформы 8.3, связь между предопределенными элементами в метаданных конфигурации и физическими записями в базе данных осуществляется через служебный реквизит ИмяПредопределенныхДанных.
Предопределенные элементы в Конфигураторе и в режиме «1С:Предприятие» — это фактически две разные сущности, связанные между собой указанным именем. Ситуация с неуникальностью кодов возникает по нескольким основным причинам:
ИмяПредопределенныхДанных (например, из-за особенностей синхронизации данных или некорректной отвязки), платформа при реорганизации базы создает из конфигуратора новый предопределенный элемент с исходным кодом. В итоге в базе образуются два элемента с одинаковыми кодами.ОбменДанными.Загрузка = Истина платформенные проверки уникальности кодов отключаются. Загруженные из другой базы (например, из БП 3.0) элементы могут занять код, зарезервированный разработчиками для новых предопределенных элементов в обновляемой конфигурации.СтатьиДвиженияДенежныхСредств), вводить новые элементы или менять их коды.Важно понимать: сообщение «Код справочника стал неуникальным» является предупреждением платформы, а не блокирующей ошибкой реорганизации. Платформа позволяет завершить обновление, однако после обновления в режиме «1С:Предприятие» при попытке изменить или записать элементы этого справочника система будет вызывать ошибку контроля уникальности кодов.
Посмотрим на практические способы исправления дублирующихся кодов и восстановления корректной работы базы данных.
В типовых конфигурациях 1С обработчики обновления Библиотеки Стандартных Подсистем (БСП) автоматически выполняют перенумерацию и слияние служебных элементов. Чтобы запустить этот процесс:
Если после запуска процедур обновления в справочнике остались элементы с одинаковыми кодами, проанализируем наличие ссылок на эти элементы в документах и регистрах.
СтатьиДвиженияДенежныхСредств) и настроим условие сравнения по совпадению реквизита Код.ИмяПредопределенныхДанных и отображается соответствующий значок).Если на образовавшийся дублирующий элемент нет ссылок в информационной базе, выполним его ручную adjustment-корректировку:
Предопределенный равно Ложь).Чтобы избежать проблем с неуникальностью кодов при последующих обновлениях, придерживаемся следующих правил:
Проверка логической целостности и Реорганизация информации.