Перейти к основному содержимому
Версия: 1.23.3

Правила решения коллизий

Загрузка пакета выполняется после сохранения прикрепленного SOP–файла к записи импортируемого пакета. При загрузке конфигурационных пакетов выполняется проверка записей VCS из пакета на предмет коллизий с конфигурацией целевого экземпляра. После загрузки пакета необходимо проанализировать коллизии.

к сведению

Коллизия – это логическое противоречие между текущим и импортируемым содержимым или свойствами конфигурационной записи.

Пример:

  1. Пользователь экспортировал локальный пакет с настройками бизнес-правила.
  2. Пользователь прикрепил пакет к записи импортированного пакета на другом экземпляре, где существует более новая версия этого бизнес-правила, т.е. она была обновлена позже, чем запись на исходном экземпляре.
  3. Пользователь получил сообщение о коллизии: на целевом экземпляре содержится более новая версия этой записи.

Информация о загрузке пакета содержится в связанном списке Журнал просмотра VCS на форме Импортированного пакета. Для каждой версии пакета отображается статус загрузки в соответствующем поле и информация о коллизии в поле Сообщение.

Возможные статусы загрузки:

СтатусОписание
КоллизияВерсия в этом статусе не может быть импортирована до тех пор, пока причины коллизии не будут устранены.
НормаВерсия не вызывает коллизию.
ПропущеноВерсия в этом статусе будет проигнорирована в процессе установки пакета. Для импорта версии измените статус Пропущено на Норма.
ПредупреждениеСтатус присваивается версиям, которые имеют незначительные проблемы, связанные с импортом. В зависимости от ошибки записи VCS будут либо перенесены на целевой экземпляр, либо пропущены.

Для решения коллизий после загрузки пакета, выполните следующие шаги:

  1. Откройте вкладку Журнал просмотра VCS в области Связанные списки на форме Импортированного пакета.

  2. Отфильтруйте список, исключив все записи со статусом Норма.

  3. Откройте первую запись. В поле Сообщение будет указана причина ошибки.

  4. Откройте запись из связанного списка Извлеченные записи.

  5. Внесите необходимые изменения в поле Копия записи (JSON).

    примечание

    В ряде случаев, когда решение коллизий требует большого количества изменений, рекомендуется производить повторную сборку локального пакета на исходном экземпляре. После выгрузки пакета замените пакет во вложениях к Импортированному пакету и нажмите кнопку Загрузить повторно.

  6. Нажмите Сохранить и выйти.

  7. Вернитесь в запись импортированного пакета и нажмите Подготовить к импорту.

  8. Убедитесь, что статус записи в связанном списке Журнал просмотра VCS изменился на Норма.

  9. Повторите шаги 3–8 до тех пор, пока все записи в списке Журнал просмотра VCS не перейдут в статус Норма или, при необходимости, Пропущено.

  10. Нажмите кнопку Импортировать обновления.

внимание

Если запись вызывает несколько коллизий, в системе отобразится только первая. Исправьте ошибку и нажмите Подготовить к импорту, чтобы увидеть следующую коллизию, связанную с этой записью.

Возможные коллизии

Коллизия 1


В пакете содержится версия записи Х. Запись Х связана с другой записью Y, которой нет на экземпляре. Версия записи Y также отсутствует в импортируемом пакете. При загрузке записи VCS в Журнале просмотра VCS в поле Сообщение появится информация:

Reference {sys_id} in {column_name} does not exists in referenced table {reference_table_name}

Решение:

  • Добавьте версию записи Y в локальный пакет на исходном экземпляре.

    ИЛИ

  • Оставьте запись в Журнале просмотра VCS в статусе Пропущено.

Коллизия 2


В пакете содержится версия на удаление записи Х. На экземпляре содержится запись, которая ссылается на запись X, или в пакете содержится версия записи, которая ссылается на запись Х. При загрузке записи VCS в Журнале просмотра VCS в поле Сообщение появится информация:

{column_name} column in {reference_table_name} table referenced on this record;

Решение:

Оставьте запись в Журнале просмотра VCS в статусе Пропущено.

Коллизия 3


Несовпадение набора колонок при импорте пакета.

Детали:

Таблица Запланированные скрипты на исходном экземпляре содержит N колонок. Таблица Запланированные скрипты на целевом экземпляре содержит N-1 колонок (см. схему ниже). При загрузке записи VCS в Журнале просмотра VCS в поле Сообщение появится информация:

Column "c_typical" related to "sys_schedule_script" does not exist.

Решение:

  • Продолжите импорт версии в статусе Предупреждение. В этом случае колонка c_typical не будет создана, а импортированная версия будет содержать N-1 пар ключ-значение в поле Копия записи (JSON).

    ИЛИ

  • Импортируйте пакет с версией колонки c_typical на целевой экземпляр. Выполните повторную загрузку локального пакета.

    ИЛИ

  • Если отсутствие определенной колонки ожидаемо:

    1. Откройте запись из Журнала просмотра VCS.
    2. Перейдите на форму записи в связанном списке Импортированные записи.
    3. Удалите из поля Копия записи (JSON) пару ключ-значение для колонки c_typical.
    4. Сохраните запись и нажмите Подготовить к импорту.

Коллизия 4


Запись VCS на целевом экземпляре более новая, чем запись VCS в пакете. Сравнение версий производится по дате и времени в значении ключа sys_updated_at в поле Копия записи (JSON). Записи VCS, для которых найдена более новая версия, будут находиться в статусе Пропущено. При загрузке записи VCS в Журнале просмотра VCS в поле Сообщение появится информация:

The system has a newer record

Решение:

  • Установите статус Норма для импорта версии из пакета.

    ИЛИ

  • Оставьте запись в Журнале просмотра VCS в статусе Пропущено, чтобы сохранить записи на целевом экземпляре без изменений.

Коллизия 5


В пакете находится запись VCS на удаление таблицы. В таблице на целевом экземпляре содержатся записи. При загрузке записи VCS в Журнале просмотра VCS в поле Сообщение появится информация:

Table is not empty

Решение:

  • Установите статус Норма. В этом случае таблица и ее записи будут удалены.

    ИЛИ

  • Оставьте запись в Журнале просмотра VCS в статусе Пропущено.

Коллизия 6


Пакет содержит версии записей приложения X, которое не установлено на целевом экземпляре. При загрузке записи VCS в Журнале просмотра VCS в поле Сообщение появится информация:

Related application "{application_id}" does not exist. Please repack this pack on the source instance.

Решение:

  1. Выгрузите локальный пакет с версией записи sys_application с исходного экземпляра.
  2. Импортируйте пакет на целевой экземпляр.
  3. Нажмите Загрузить повторно, чтобы выполнить повторную загрузку пакета с версиями записей приложения X.

Коллизия 7


Причиной коллизии является нарушение уникального ключа.

Детали:

В импортированном пакете содержится запись X1 из таблицы с уникальным ограничением. На целевом экземпляре содержится такая же запись (X2) с другим ID, то есть эти записи идентичны во всем, кроме их ID. После загрузки пакета на целевой экземпляр появляется коллизия записи VCS. При загрузке записи VCS в Журнале просмотра VCS в поле Сообщение появится информация:

This record has a duplication of a unique key. DETAIL: Key (column_id, record_id, language_id)=(156941403909472422, 159170696512371798, 156628684306200767)

Решение:

  • Удалите запись X2 на целевом экземпляре и нажмите Загрузить повторно.

    ИЛИ

  • Пропустите импорт версии для записи X1.

Коллизия 8


Импортируемая колонка уже существует на одном из уровней наследования целевой таблицы.

Детали:

Целевой экземпляр содержит таблицу X и ее дочернюю таблицу Y. Таблица Y наследует колонки из таблицы X. В пакете находится запись VCS, которая добавляет колонку А в таблицу Y. В родительской таблице Х на целевом экземпляре уже содержится колонка с названием А. При загрузке записи VCS в Журнале просмотра VCS в поле Сообщение появится информация:

A record for column A already created in the table X.

Решение:

Установите для записи X статус Пропущено.

Коллизия 9


Версия импортируемой колонки относится к таблице, которой нет на целевом экземпляре. В импортируемом пакете запись версии таблицы также отсутствует. При загрузке записи VCS в Журнале просмотра VCS в поле Сообщение появится информация:

Attempt to read property "name" on null

Решение:

Импортируйте пакет с версией данной таблицы и версиями колонок sys_id, sys_created_at, sys_created_by, sys_updated_at и sys_updated_by. Затем нажмите Загрузить повторно, чтобы выполнить повторную загрузку текущего пакета.

Коллизия 10


Запись VCS не может быть загружена, если в поле Политика защиты указано Защищена. При загрузке записи VCS в Журнале просмотра VCS в поле Сообщение появится информация:

Don't update, policy is protected

Решение:

Решение зависит от значения поля Политика защиты, которое необходимо для целевой записи после загрузки пакета.

  • Для импорта без изменения политики защиты:

    1. Перейдите на запись через связанный список Журнал просмотра VCS.
    2. В открывшейся форме перейдите на запись VCS в связанном списке Импортированные записи.
    3. Измените политику защиты на Защищено.
    4. Нажмите Подготовить к импорту наверху справа.

Теперь на форме импортированного пакета можно увидеть, что для версии данной записи изменился текст в поле Сообщение.

  • Для импорта с изменением политики защиты:

    1. Вернитесь на экземпляр, на котором собирался импортируемый пакет.
    2. Откройте запись VCS, с которой была коллизия, и установите флажок Игнорировать флаг Protected.
    3. Экспортируйте локальный пакет с обновленной записью и загрузите его на целевой экземпляр.

Коллизия 11


Версия импортируемой записи VCS на целевом экземпляре была изменена (поле Политика защиты = Изменена). При загрузке записи VCS в Журнале просмотра VCS в поле Сообщение появится информация:

Don't update, record is changed

Решение:

  1. В связанном списке Журнал просмотра VCS импортируемого пакета откройте необходимую запись.
  2. В связанном списке Актуальная версия будет находиться текущая версия записи.
  3. Ознакомьтесь со значениями в полях текущей версии: Копия записи (JSON), Локальный пакет и Кем создано.
  4. Примите решение по импорту версии. Если версия должна быть импортирована – переведите статус записи в Журнале просмотра VCS в Норма.