Это старая версия документа.
Вопрос:
При конвертации базы до версии 4.2 выдаются сообщения следующего вида:
"Нарушение уникальности значений ключа 'Владелец,РольКолонки' класса 'База.КолонкаОбъекта'. Удалите записи, нарушающие уникальность ключа."
"Нарушение уникальности значений ключа 'Владелец,Наименование' класса 'База.ПараметрИмпорта'. Удалите записи, нарушающие уникальность ключа."
После этого конвертация откатывается. В чем проблема, как ее решить?
Ответ:
Вероятно, в исходной базе (в той, что была до конвертирования) имеется дублирование значений тех параметров, для которых ранее не существовало требований уникальности, а теперь эти требования появились.
Описываемый ниже способ исправления проблемы включает в себя удаление записей, что может нарушить логику работы пакетов импорта: ранее для таких ситуаций происходил импорт в одно поле из разных параметров файла (что в целом не совсем верно, но так пакеты ранее настроить было можно), теперь же, начиная с версии 4.2, такую загрузку, если в ней действительно есть необходимость, надо делать через отдельные этапы импорта. Используя приведённую ниже инструкцию, Вы не переделываете пакет импорта под новые требования, а просто исправляете препятствие для конвертации, удаляя дублирующие записи из списков соответствий параметров пакетов импорта. В связи с этим дальнейшем может потребоваться доработка соответствующего пакетов импорта.
Для решения проблемы сделайте следующее:
-
Откройте эту базу данных в Business Studio 4.0/4.1 (в зависимости от того, какой версии был бэкап).
Скачайте архив по ссылке под текстом данной статьи, распакуйте его содержимое в отдельную папку. В папке будет 5 файлов, название каждого из них будет содержать версию базы данных.
Импортируйте в Вашу базу данных информацию из файла, номер версии в названии которого соответствует номеру версии базы, использующейся в Вашей версии Business Studio (соответствия номеров версий Business Studio можно посмотреть в
Истории версий).
Далее откройте справочник "Хранимые фильтры" (в Главном меню программы команда "Отчёты - Хранимые фильтры") и:
Выполните фильтр "База.КолонкаОбъекта - дубли" (фильтр находится по пути Хранимые фильтры\Пользовательские фильтры\Поиск дублей в справочниках импорта). В окне с результатами фильтра записи будут отсортированы по убыванию значения в колонке "Количество(Владелец)". Для каждой из строк со значением > 1 необходимо:
Вызвать от ячейки колонки "Владелец" правой кнопкой мыши контекстное меню и выбрать там пункт "Открыть свойства параметра".
Сделать скриншот открывшегося окна, сохранить его (он может понадобиться потом для изучения требуемой логики работы этого пакета импорта, в соответствии с которой надо будет внести правки в пакет в версии 4.2).
Удалить строки с одинаковыми значениями параметра "Параметр класса" (оставить только одну строку с таким значением).
Выполните фильтр "База.ПараметрИмпорта - дубли" (фильтр находится по пути Хранимые фильтры\Пользовательские фильтры\Поиск дублей в справочниках импорта). В окне с результатами фильтра записи будут отсортированы по убыванию значения в колонке "Количество(Владелец)". Для каждой из строк со значением > 1 необходимо:
Вызвать от ячейки колонки "Владелец" правой кнопкой мыши контекстное меню и выбрать там пункт "Копировать текст ячейки".
Открыть справочник "Объект импорта".
Вызвать от заголовка колонки "Название" окно быстрого фильтра, вставить туда строку, скопированную в предыдущем пункте в буфер обмена (Ctrl+V), провести поиск.
От оставшейся единственной строки вызвать правой кнопкой мыши контекстное меню и выбрать там команду "Дополнительно - Поиск ссылок на объект". На этом этапе возможно 2 результата, для каждого из которых дальнейшие действия будут свои:
Если в окне поиска ссылок пусто, закройте его и удалите строку справочника "Объект импорта", от которой вызывали поиск ссылок на объект.
Если в окне поиска ссылок есть строка:
Откройте её свойства по кнопке на верхней панели окна поиска ссылок.
В открывшемся окне с помощью команды меню "Действия - Настройка колонок" выведите на показ колонку "Владелец" (выделите в открывшемся окне галочкой и нажмите кнопку "Применить").
Вызовите от заголовка выведенной на показ колонки "Владелец" правой кнопкой мыши контекстное меню и выберите в нём пункт "Открыть свойства параметра" - откроется окно настройки пакета импорта.
В окне настройки пакета импорта откройте вкладку "Параметры" и сделать скриншот всего окна настройки пакета импорта при открытой этой вкладке (он может понадобиться потом для изучения требуемой логики работы этого пакета импорта, в соответствии с которой надо будет внести правки в пакет в версии 4.2)
Удалите со вкладки "Параметры" строки с одинаковыми значениями в колонке "Параметр класса" (оставить только одну строку с таким значением) и сохраните пакет нажатием соответствующей кнопки в нижней части окна его настройки.
-
Попробуйте провести конвертацию этой базы данных.
Скачать файл "search_duplicate_key_in_import_repository.zip" (16 Кб)