Конфликты импорта
Конфликты различаются по степени критичности. Всего существует три категории критичности.
-
Низкая критичность — некритичные конфликты, разрешение которых можно игнорировать. К этой категории относятся, например, конфликты типов
InvalidCardReference
иInvalidRowReference
. -
Нормальная критичность — любые конфликты, которые не относятся к двум оставшимся категориям.
-
Высокая критичность — особенно критичные конфликты, которые могут сюда относятся все конфликты метаданных.
Типы конфликтов импорта
Следующие конфликты могут быть обнаружены при проверке загружаемых данных перед импортом Решения.
Тип конфликта | Конфликт | Причина |
---|---|---|
Конфликты данных |
GlobalUniqueViolated |
Возникает, если импортируемая карточка нарушает требование уникальности значения поля, установленное на уровне БД. Данный конфликт связан с тем, что значение поля с признаком "Unique globally" в импортируемой карточке совпадает со значением данного поля в существующей карточке. |
CardUniqueViolated |
Возникает, если импортируемая карточка нарушает требование уникальности значения поля, установленное на уровне экземпляра карточки. В схеме карточки для поля установлен признак уникальности "Unique within card". |
|
SectionUniqueViolated |
Возникает, если импортируемая карточка нарушает требование уникальности значения поля, установленное на уровне секции экземпляра карточки. В схеме карточки для поля установлен признак уникальности "Unique within section". |
|
TreeUniqueViolated |
Возникает, если импортируемая карточка нарушает требование уникальности значения поля, установленное на уровне всего дерева иерархической секции. В схеме карточки для поля установлен признак уникальности "Unique within tree". |
|
SecondRowInStructSection |
Возникает, если импортируемые данные добавляют новую строку в "плоскую" секцию. Данный конфликт связан с тем, что из-за различий идентификаторов строк одной "плоской" секции в импортируемых и существующих данных, при импорте в секцию будет добавлена вторая строка, что запрещено для данного типа секций. |
|
TreeCycleDetected |
Возникает, если в импортируемых данных строка A является родительской для строки Б, а в целевой БД — строка Б является родительской для А, из-за чего при импорте будет произведена попытка перемещения родительской строки в дочернюю. |
|
InvalidCardTypeId |
Возникает, если тип импортируемой карточки не зарегистрирован в целевой БД. |
|
InvalidCardReference |
Возникает, если значение поля с типом REFCARDID в импортируемых данных ссылается на карточку, которой нет в целевой БД и нет в импортируемых данных. |
|
InvalidEnumValue |
Возникает, если значение поля типа ENUM в импортируемых данных, отсутствует в списке возможных значений данного поля в целевой БД. |
|
InvalidRowReference |
Возникает, если значение поля с типом REFID в импортируемых данных ссылается на строку, которой нет в целевой БД и нет в импортируемых данных. |
|
Custom |
Логика проверки данного конфликта реализована в расширении Менеджера решений. |
|
Конфликты метаданных |
DuplicatedFieldName |
Возникает, если поля с аналогичными названиями в импортируемых данных и в целевой БД имеют разные идентификаторы. |
DuplicatedFieldId |
Возникает, если поля с аналогичными идентификаторами в импортируемых данных и в целевой БД имеют разные имена. |
|
DuplicatedSectionAlias |
Возникает, если секции с аналогичными названиями в импортируемых данных и в целевой БД имеют разные идентификаторы. |
|
DuplicatedSectionId |
Возникает, если секции с аналогичными идентификаторами в импортируемых данных и в целевой БД имеют разные имена. |
|
InvalidReferencedCardTypeId |
Возникает, если поле с типом REFID или REFCARDID в импортируемых данных ссылается на тип карточек, которого нет в целевой БД. |
|
InvalidReferencedSectionTypeId |
Возникает, если поле с типом REFID или REFCARDID в импортируемых данных ссылается на тип секции, которой нет в целевой БД и в импортируемых данных. |
|
InvalidReferencedField |
Возникает, если поле с типом REFID или REFCARDID в импортируемых данных и поле в целевой БД ссылаются на разные типы карточек или типы секций. |
|
IncompatibleFieldTypeChange |
Возникает, если тип поля в импортируемых данных несовместим с типом данного поля в целевой БД, или различается список возможных значений поля с типом ENUM. |
|
InvalidCardTypeId |
Возникает, если расширенная секции в импортируемых данных расширяет тип карточек, отсутствующий в целевой БД. |
|
InvalidParentSectionId |
Возникает, если родительская секция импортируемой дочерней секции отсутствует в целевой БД и в импортируемых данных. |
|
OwnerCardID |
Возникает, когда импортировался файл, у которого в |
|
RowParentChangedConflict |
Возникает, когда различаются родители у строки данных в базе-приемнике и в импортируемом решении. |
Варианты решения конфликтов импорта
Следующие варианты решения конфликтов могут быть применены к данным перед импортом Решения.
Отредактировать объект вручную в базе-приёмнике. |
Данный вариант предполагает, что пользователь самостоятельно исправит в целевой БД конфликтующие данные. |
Заменить старый объект новым. |
Заменяет значение ROWID в импортируемых данных на значение из целевой БД. Данное решение предлагается для конфликтов: TreeUniqueViolated, SectionUniqueViolated. |
Поменять поле импортируемого объекта. |
Заменяет идентификатор поля в импортируемых данных на новый. Данное решение предлагается для конфликтов: TreeUniqueViolated, SectionUniqueViolated. |
Заменить ID на Guid.Empty. |
Изменяет идентификатор ссылки на "00000000-0000-0000-0000-000000000000". Данное решение предлагается для конфликта: InvalidRowReference. |
Не импортировать секцию метаданных. |
Удаляет из импортируемых данных вызывавшую конфликт секцию. Данное решение предлагается для конфликта: DuplicatedSectionAlias. |
Не импортировать поле метаданных |
Удаляет из импортируемых данных вызывавшее конфликт поле. Данное решение предлагается для конфликта: DuplicatedFieldName. |
Заменить старую роль новой. |
Заменяет идентификатор роли в импортируемых данных на значение из целевой БД. Данное решение предлагается для конфликта: Custom при нарушении уникальности имени для роли. |
Поменять имя импортируемой роли. |
Заменяет идентификатор роли в импортируемых данных на новый. Данное решение предлагается для конфликта: Custom при нарушении уникальности имени для роли. |
Заменить старую разметку новой. |
Заменяет идентификатор разметки в импортируемых данных на значение из целевой БД. Данное решение предлагается для конфликта: Custom при нарушении уникальности имени для разметки. |
Поменять имя импортируемой разметки. |
Заменяет идентификатор разметки в импортируемых данных на новый. Данное решение предлагается для конфликта: Custom при нарушении уникальности имени для разметки. |
Задать в |
Значение вычисляется путем анализа импортируемых данных, находятся карточки, ссылающиеся на этот файл. |
Игнорировать |
Вариант разрешения позволяет пропустить разрешение некритичного конфликта. |
Групповое решение конфликтов
При большом количестве конфликтов существует возможность группового разрешения однотипных конфликтов — флаги в правой части строки конфликта.
-
Ручной выбор конфликтов. При таком варианте можно выбрать каждый конфликт с помощью флага в правой части строки для каждого конфликта.
-
Групповой выбор с помощью флага
Конфликты без разрешения
. Позволяет выбрать только конфликты, у которых нет разрешения. Статус разрешения обозначается иконкой-индикатором в столбце Разрешён. -
Групповой выбор с помощью флага
Выбрать всё
. Позволяет выбрать или отменить выбор всех обнаруженных конфликтов. -
Групповой выбор похожих конфликтов с помощью кнопки Выбрать похожие. Кнопка позволяет сгруппировать все конфликты одного вида и применить к ним одно из доступных разрешений. Похожие конфликты перемещаются наверх таблицы.
При выборе двух и более однотипных конфликтов становится доступной кнопка Применить групповое решение. Нажатие на кнопку вызывает окно выбора доступных вариантов решения. Выберите из списка вариант решения, запустите разрешение кнопкой Продолжить или отмените групповое решение кнопкой Отмена. При выборе Продолжить выбранный вариант решения конфликта применяется ко всем выбранным конфликтам, при выборе Отмена окно закрывается, вариант решения не применяется.
Если были выбраны конфликты разного типа, при нажатии на кнопку Применить групповое решение отображается сообщение Решение доступно для X конфликтов из Y выбранных
.