В процессе конвертации базы выдается сообщение "Нарушение уникальности значений ключа"
Описание проблемы
При конвертации базы:
- до версии 4.2 - выдается сообщение одного из следующих видов (после этого конвертация откатывается):
- «Нарушение уникальности значений ключа 'Владелец,РольКолонки' класса 'База.КолонкаОбъекта'. Удалите записи, нарушающие уникальность ключа.»
- «Нарушение уникальности значений ключа 'Владелец,Наименование' класса 'База.ПараметрИмпорта'. Удалите записи, нарушающие уникальность ключа.»
- «Нарушение уникальности значений ключа 'User,КатегорияПрав' класса 'База.ПраваПользователя'. Удалите записи, нарушающие уникальность ключа.»
- до версии 5 или 5.1 - выдается сообщение одного из следующих видов (после этого конвертация прерывается):
- «Нарушение уникальности значений ключа 'User,Меню' класса 'База.ПраваНаМеню'. Удалите записи, нарушающие уникальность ключа.»
- «Нарушение уникальности значений ключа 'Владелец,ТипКонтакта' класса 'БизнесМодель.КонтактыФизЛиц'. Удалите записи, нарушающие уникальность ключа.»
- «Нарушение уникальности значений ключа 'ПереченьПараметровКлюча' класса 'НазваниеКласса'. Удалите записи, нарушающие уникальность ключа.», где ПереченьПараметровКлюча и НазваниеКласса - любые, кроме перечисленных выше.
- до версии 6.0 и выше - выдается сообщение одного из следующих видов (после этого конвертация прерывается):
- «Нарушение уникальности значений ключа 'Person' класса 'BizArch.UsersSettings'. Удалите записи, нарушающие уникальность ключа» или «Нарушение уникальности значений ключа 'Физическое лицо' класса 'Настройки пользователей Business Studio'. Удалите записи, нарушающие уникальность ключа».
- «Нарушение уникальности значений ключа 'ПереченьПараметровКлюча' класса 'НазваниеКласса'. Удалите записи, нарушающие уникальность ключа.», где ПереченьПараметровКлюча и НазваниеКласса - любые, кроме перечисленных выше.
Решение проблемы
Вероятно, в исходной базе (в той, что была до конвертирования) имеется дублирование значений тех параметров, для которых ранее не существовало требований уникальности, а теперь (в новой версии программы) эти требования появились.
Ссылки на статьи по решения каждой из указанных проблем приведены в таблице ниже.
| № | Текст сообщения об ошибке | Рекомендации по решению проблемы |
|---|---|---|
| 1 | Нарушение уникальности значений ключа 'Владелец,РольКолонки' класса 'База.КолонкаОбъекта'. Удалите записи, нарушающие уникальность ключа. | См. раздел Решение проблемы с уникальностью значений ключа в классах "База.КолонкаОбъекта" и "База.ПараметрИмпорта" ниже. |
| 2 | Нарушение уникальности значений ключа 'Владелец,Наименование' класса 'База.ПараметрИмпорта'. Удалите записи, нарушающие уникальность ключа. | |
| 3 | Нарушение уникальности значений ключа 'User,КатегорияПрав' класса 'База.ПраваПользователя'. Удалите записи, нарушающие уникальность ключа. | См. раздел Решение проблемы с уникальностью значений ключа в классе "База.ПраваПользователя" ниже. |
| 4 | Нарушение уникальности значений ключа 'User,Меню' класса 'База.ПраваНаМеню'. Удалите записи, нарушающие уникальность ключа. | См. раздел Решение проблемы с уникальностью значений ключа в классе "База.ПраваПользователяНаМеню" ниже. |
| 5 | Нарушение уникальности значений ключа 'Владелец,ТипКонтакта' класса 'БизнесМодель.КонтактыФизЛиц'. Удалите записи, нарушающие уникальность ключа. | См. раздел Решение проблемы с уникальностью значений ключа в классе "БизнесМодель.КонтактыФизЛиц" ниже. |
| 6 | Нарушение уникальности значений ключа 'Person' класса 'BizArch.UsersSettings'. Удалите записи, нарушающие уникальность ключа. | См. раздел Решение проблемы с уникальностью значений ключа в классе "Настройки пользователей Business Studio" (BizArch.UsersSettings) ниже. |
| Нарушение уникальности значений ключа 'Физическое лицо' класса 'Настройки пользователей Business Studio'. Удалите записи, нарушающие уникальность ключа. | ||
| 7 | Текст «Нарушение уникальности значений ключа 'ПереченьПараметровКлюча' класса 'НазваниеКласса'. Удалите записи, нарушающие уникальность ключа.», где ПереченьПараметровКлюча и НазваниеКласса - любые, кроме перечисленных выше. | Проблему можно решать по аналогии с описанием решения для проблемы Решение проблемы с уникальностью значений ключа в классе "База.ПраваПользователяНаМеню". Если при этом возникнут вопросы или сложности, для решения проблемы можно обратиться на техподдержку со страницы Системы интерактивной поддержки Ошибки при операциях с базой данных. |
Решение проблемы с уникальностью значений ключа в классах "База.КолонкаОбъекта" и "База.ПараметрИмпорта"
Внимание!
Описываемый ниже способ исправления проблемы включает в себя удаление записей, что может нарушить логику работы пакетов импорта: ранее для таких ситуаций происходил импорт в одно поле из разных параметров файла (что в целом не совсем верно, но так пакеты ранее настроить было можно), теперь же, начиная с версии 4.2, такую загрузку, если в ней действительно есть необходимость, надо делать через отдельные этапы импорта. Используя приведённую ниже инструкцию, Вы не переделываете пакет импорта под новые требования, а просто исправляете препятствие для конвертации, удаляя дублирующие записи из списков соответствий параметров пакетов импорта. В связи с этим в дальнейшем может потребоваться доработка соответствующего пакета импорта.
Для решения проблемы сделайте следующее:
- Восстановите базу данных из сделанной перед конвертацией резервной копии (см. Загрузка базы данных из файла).
- Откройте эту базу данных в Business Studio той версии, в которой Вы работали до конвертации.
- Скачайте архив по ссылке под текстом данной статьи, распакуйте его содержимое в отдельную папку. В папке будет 5 файлов, название каждого из них будет содержать версию базы данных.
- Импортируйте в Вашу базу данных информацию из файла, номер версии в названии которого соответствует номеру версии базы, использующейся в Вашей версии Business Studio (соответствия номеров версий Business Studio можно посмотреть в Истории версий).
- Далее откройте справочник «Хранимые фильтры» (в Главном меню программы команда «Отчёты - Хранимые фильтры») и:
- Выполните фильтр «База.КолонкаОбъекта - дубли» (фильтр находится по пути Хранимые фильтры\Пользовательские фильтры\Поиск дублей в справочниках импорта). В окне с результатами фильтра записи будут отсортированы по убыванию значения в колонке «Количество(Владелец)». Для каждой из строк со значением > 1 необходимо:
- Вызвать от ячейки колонки «Владелец» правой кнопкой мыши контекстное меню и выбрать там пункт «Открыть свойства параметра».
- Сделать скриншот открывшегося окна, сохранить его (он может понадобиться потом для изучения требуемой логики работы этого пакета импорта, в соответствии с которой надо будет внести правки в пакет в версии 4.2).
- Удалить строки с одинаковыми значениями параметра «Параметр класса» (оставить только одну строку с таким значением).
- Выполните фильтр «База.ПараметрИмпорта - дубли» (фильтр находится по пути Хранимые фильтры\Пользовательские фильтры\Поиск дублей в справочниках импорта). В окне с результатами фильтра записи будут отсортированы по убыванию значения в колонке «Количество(Владелец)». Для каждой из строк со значением > 1 необходимо:
- Вызвать от ячейки колонки «Владелец» правой кнопкой мыши контекстное меню и выбрать там пункт «Копировать текст ячейки».
- Открыть справочник «Объект импорта».

- Вызвать от заголовка колонки «Название» окно быстрого фильтра, вставить туда строку, скопированную в предыдущем пункте в буфер обмена (Ctrl+V), провести поиск.

- От оставшейся единственной строки вызвать правой кнопкой мыши контекстное меню и выбрать там команду «Дополнительно - Поиск ссылок на объект». На этом этапе возможно 2 результата, для каждого из которых дальнейшие действия будут свои:
- Если в окне поиска ссылок пусто, закройте его и удалите строку справочника «Объект импорта», от которой вызывали поиск ссылок на объект.
- Если в окне поиска ссылок есть строка:
- Откройте её свойства по кнопке на верхней панели окна поиска ссылок.
- В открывшемся окне с помощью команды меню «Действия - Настройка параметров» (в Business Studio версий до 5.0 включительно - «Настройка колонок») выведите на показ параметр «Владелец» (выделите в открывшемся окне галочкой и нажмите кнопку «Применить»).
- Вызовите от заголовка выведенного на показ параметра «Владелец» правой кнопкой мыши контекстное меню и выберите в нём пункт «Открыть свойства параметра» - откроется окно настройки пакета импорта.
- В окне настройки пакета импорта откройте вкладку «Параметры» и сделать скриншот всего окна настройки пакета импорта при открытой этой вкладке (он может понадобиться потом для изучения требуемой логики работы этого пакета импорта, в соответствии с которой надо будет внести правки в пакет в версии 4.2)
- Удалите со вкладки «Параметры» строки с одинаковыми значениями в колонке «Параметр класса» (оставить только одну строку с таким значением) и сохраните пакет нажатием соответствующей кнопки в нижней части окна его настройки.
- Сделайте резервную копию базы данных (см. Сохранение базы данных в файл).
- Попробуйте провести конвертацию этой базы данных.
Скачать файл "search_duplicate_key_in_import_repository.zip" (16 Кб)
Решение проблемы с уникальностью значений ключа в классе "База.ПраваПользователя"
Для решения проблемы сделайте следующее:
- Восстановите базу данных из сделанной перед конвертацией резервной копии (см. Загрузка базы данных из файла).
- Откройте эту базу данных в Business Studio той версии, в которой Вы работали до конвертации.
- Откройте справочник «Права пользователя» (см. здесь).
- Отобразите параметры «User» и «Категория прав» (с помощью команды меню «Действия - Настройка параметров» (в Business Studio версий до 5.0 включительно - «Настройка колонок») вызовите окно настройки, отметьте эти строки флажками и нажмите кнопку «Применить») и отсортируйте справочник по параметру «User» кликом левой клавиши мыши по заголовку колонки.
- Найдите записи-дубли с одинаковыми значениями в обоих этих параметрах и удалите неактуальную запись с заменой ссылок на актуальную, выбирая соответствующий пункт в окне удаления.
- Повторите предыдущий пункт для всех дублей.
- Сделайте резервную копию базы данных (см. Сохранение базы данных в файл).
- Попробуйте провести конвертацию этой базы данных.
Решение проблемы с уникальностью значений ключа в классе "База.ПраваПользователяНаМеню"
Для решения проблемы сделайте следующее:
- Восстановите базу данных из сделанной перед конвертацией резервной копии (см. Загрузка базы данных из файла).
- Откройте эту базу данных в Business Studio той версии, в которой Вы работали до конвертации.
- Откройте справочник «Права пользователя на меню» (см. здесь) .
- Отобразите параметры «Пользователь» и «Меню» (с помощью команды меню «Действия - Настройка параметров» (в Business Studio версий до 5.0 включительно - «Настройка колонок») вызовите окно настройки, отметьте эти строки флажками и нажмите кнопку «Применить») и отсортируйте справочник по параметру «User» кликом левой клавиши мыши по заголовку параметра.
- Найдите записи-дубли с одинаковыми значениями в обоих этих параметрах и удалите их, оставляя по 1 строке для каждой такой ситуации.
- Сделайте резервную копию базы данных (см. Сохранение базы данных в файл).
- Попробуйте провести конвертацию этой базы данных.
Решение проблемы с уникальностью значений ключа в классе "БизнесМодель.КонтактыФизЛиц"
Для решения проблемы сделайте следующее:
- Восстановите базу данных из сделанной перед конвертацией резервной копии (см. Загрузка базы данных из файла).
- Откройте эту базу данных в Business Studio той версии, в которой Вы работали до конвертации.
- Откройте справочник «БизнесМодель.КонтактыФизЛиц» (в Главном меню пункт «Справочники - Все справочники», в открывшемся окне вызовите окно поиска сочетанием клавиш «Ctrl+F», проведите поиск по БизнесМодель.КонтактыФизЛиц, откройте найденный справочник).
- Включите возможность редактировать значения полей из окна справочника (с помощью команды меню «Действия - Редактирование значений ячеек»(в Business Studio версий до 5.0 включительно - «Редактирование значений колонок»)).
- Отобразите параметры «Владелец» и «Тип контакта» (с помощью команды меню «Действия - Настройка параметров» (в Business Studio версий до 5.0 включительно - «Настройка колонок») вызовите окно настройки, отметьте эти строки флажками и нажмите кнопку «Применить») и отсортируйте справочник по параметру «Владелец» кликом левой клавиши мыши по заголовку параметра.
- Найдите записи-дубли с одинаковыми значениями в обоих этих параметрах, после этого:
- Для тех из этих записей, у которых также полностью идентичны значения в поле «Контакт» - удалите лишние записи, оставляя по 1 строке для каждой такой ситуации.
- Для тех из этих записей, у которых также значения в поле «Контакт» разные - скорее всего требуется сохранить все такие контакты. Для того, чтобы это сделать, нужно устранить проблему с уникальностью значения ключа. Это делается путем выбора для данной строки другого типа контакта той же категории (например, можно создать для электронной почты типы контакта «Электронная почта 2» и «Электронная почта 3» с категорией «Почта» и назначать их дублирующим контактам электронной почты одного и того же физлица):
- Сделайте резервную копию базы данных (см. Сохранение базы данных в файл).
- Попробуйте провести конвертацию этой базы данных.
Решение проблемы с уникальностью значений ключа в классе "Настройки пользователей Business Studio" (BizArch.UsersSettings)
Для решения проблемы сделайте следующее:
- Восстановите базу данных из сделанной перед конвертацией резервной копии (см. Загрузка базы данных из файла).
- Откройте эту базу данных в Business Studio той версии, в которой Вы работали до конвертации.
- Откройте справочник «Настройки пользователей Business Studio» (Главное меню - Справочники - Все справочники - включить флажок «Показать все», Самостоятельные объекты - Настройки пользователей - Настройки пользователей Business Studio).
- Отобразите параметр «Физическое лицо», если она у вас не выведена на показ (с помощью команды меню «Действия - Настройка параметров» (в Business Studio версий до 5.0 включительно - «Настройка колонок») вызовите окно настройки, отметьте эту строку флажком и нажмите кнопку «Применить»), и отсортируйте справочник по параметру «Физическое лицо» кликом левой клавиши мыши по заголовку параметра.
- Найдите записи-дубли с одинаковым значением в этом параметру и решите проблему дублирования одним из следующих способов:
- Удалите некорректную запись/записи (если такая/такие есть).
- Смените физлицо для записи/записей на другое/другие, чтобы избежать дублирования.
- Повторите предыдущий пункт для всех дублей.
- Сделайте резервную копию базы данных (см. Сохранение базы данных в файл).
- Попробуйте провести конвертацию этой базы данных.