Задача [0601]: Импорт/экспорт конфигурации: объекты проектов

Формулировка проблемы: дальнейшая реализация импорта и экспорта объектов конфигурации.

Связанные задачи:

Используется:

Решение: необходимо реализовать импорт/экспорт объектов модуля "Проекты".

Определим следующие понятия:

Общий механизм импорта/экспорта объектов конфигурации не изменяется и аналогичен уже реализованным объектам (см. "Связанные задачи"). Далее рассмотрим некоторые изменения и особенности новых объектов.

Разделим задачу на 4 части:

  1. Базовые изменения в среде импорта/экспорта

  2. Добавление поля "Код" в новые объекты импорта/экспорта

  3. Доработка справочника pm_custom_fields

  4. Особенности новых объектов импорта/экспорта

Базовые изменения в среде импорта/экспорта

Доработка списка объектов в среде импорта/экспорта.

В таблицу как экспорта, так и импорта конфигурации необходимо добавить следующие новые объекты (отмеченные жирным шрифтом) в столбец "Объект конфигурации":

  • Счетчики

  • Шаблоны номеров

  • Журналы

  • Создание документов

  • Фильтры потоков работ

  • Настройки нагрузок

  • Дела

  • Диалоги создания

  • Типы документов

  • Шаблоны документов

  • Внешние модули

  • Пользовательские компоненты

  • Внешние модули-компоненты

  • Справочники

  • Формы

  • Шаблоны маршрутов

  • Реестры

  • Группы реестров

  • Категории рисков

  • Портфели проектов

  • Шаблоны проектов

  • Личное дело

  • Карточки пользователей

  • Карточки подразделений

  • Карточки должностей

  • Действия по сотрудникам

  • Действия по резерву

  • Группы

  • Пользовательские отчеты

В браузерном диалоговом окне, который выходит по нажатию на кнопку "Импортировать" / "Экспортировать", необходимо доработать текст сообщения, добавив в него новые объекты:

Импорт Экспорт

В ходе импорта будет загружено:

Счетчиков: N

Шаблонов номеров: N

Журналов: N

Типов документов: N

Шаблонов документов: N

Групп и пунктов создания документов: N

Фильтров потоков работ: N

Настроек нагрузок: N

Внешних модулей: N

Пользовательских компонентов: N

Внешних модулей-компонентов: N

Справочников: N

Форм: N

Шаблонов маршрутов: N

Реестров: N

Групп реестров: N

Категорий рисков: N

Портфелей проектов: N

Шаблонов проектов: N

Папок личного дела: N

Карточек пользователей: N

Карточек должностей: N

Карточек подразделений: N

Действий по сотрудникам: N

Действий по резерву: N

Групп: N

Дел: N

Диалогов создания: N

Пользовательских отчетов: N

Данный процесс займет некоторое время. Вы действительно хотите продолжить?

В ходе экспорта будет выгружено:

Счетчиков: N

Шаблонов номеров: N

Журналов: N

Типов документов: N

Шаблонов документов: N

Групп и пунктов создания документов: N

Фильтров потоков работ: N

Настроек нагрузок: N

Внешних модулей: N

Пользовательских компонентов: N

Внешних модулей-компонентов: N

Справочников: N

Форм: N

Шаблонов маршрутов: N

Реестров: N

Групп реестров: N

Категорий рисков: N

Портфелей проектов: N

Шаблонов проектов: N

Папок личного дела: N

Карточек пользователей: N

Карточек должностей: N

Карточек подразделений: N

Действий по сотрудникам: N

Действий по резерву: N

Групп: N

Дел: N

Диалогов создания: N

Пользовательских отчетов: N

Данный процесс займет некоторое время. Вы действительно хотите продолжить?

где N - количество загружаемых (для импорта) либо выгружаемых (для экспорта) объектов соответствующего типа.

Примечание

Если количество объектов для какого-либо типа равно 0, то этот тип не должен входить в это сообщение.

Добавление поля "Код" для объекта "Категории рисков"

Необходимо добавить поле "Код" для объекта "Категории рисков" (после поля "Название"). Это поле должно соответствовать требованиям к полю ввода кода. В событиях логирования объекта "Категории рисков" необходимо учесть и новое свойство "Код".

При обновлении системы всем имеющимся объектам будут присвоены коды из их названий в локали С с приведением к валидному виду:

  • все неразрешенные символы заменяются на _;

  • если название начинается с цифры, то в начало кода добавляется _.

Если после приведения кодов к валидному виду некоторые из них будут одинаковыми, то в конец таких кодов добавляются порядковые номера.

Доработка справочника pm_custom_fields

Необходимо добавить в справочник pm_custom_fields новое поле "code".

Если в системе имеется этот справочник, то при обновлении системы всем его записям будут присвоены коды из значений колонки "name" с приведением к валидному виду:

  • все неразрешенные символы заменяются на _;

  • если название начинается с цифры, то в начало кода добавляется _.

Если после приведения кодов к валидному виду некоторые из них будут одинаковыми, то в конец таких кодов добавляются порядковые номера.

Особенности новых объектов импорта/экспорта

Поведение флажков зависимых объектов для новых объектов импорта/ экспорта должно быть аналогичным (см. Особенности поведения флажков зависимых объектов).

Импорт/экспорт категорий рисков

Экспорт категорий рисков

При раскрытии ветки "Категории рисков" должен отображаться список неудаленных категорий рисков. В столбце "Объект конфигурации" должно отображаться название категории рисков, а в столбце "Код" - ее код. Напротив каждой категории должен быть флажок для возможности выбора.

При экспорте категории риска необходимо выгружать следующую информацию:

  • значение поля "Название"

  • значение поля "Код"

Импорт категорий рисков

Если в импортируемой конфигурации присутствуют категории рисков, то они должны отобразиться в ветке "Категории рисков" с теми же свойствами, что и в среде экспорта. При этом если в среде импорта среди категорий рисков присутствует категория с таким же кодом, то в поле столбца "Доп.информация" должен отображаться текст:

Объект будет заменен

После успешного импорта конфигурации категория рисков должна добавиться в подраздел "Категории рисков" раздела "Проекты". Если категория импортируется с заменой, то имеющаяся категория рисков должна замениться импортируемой с таким же кодом. Если заменяемый объект был удален, он восстанавливается.

Импорт/экспорт портфелей проектов

Связанные объекты

Объект конфигурации "Портфели проектов" зависит от:

  • "Портфели проектов"

    При включении флага портфеля автоматически должны включиться флаги всех его родительских портфелей.

Экспорт портфелей проектов

При раскрытии ветки "Портфели проектов" должен отображаться древовидный список портфелей проектов. При этом корневой узел портфелей проектов не отображается (root). Каждый дочерний портфель отделен от родительского отступом вправо. В столбце "Объект конфигурации" должно отображаться название соответствующего портфеля, а в столбце "Код" - его код. Объекты одного уровня в каждой ветке дерева отсортированы в алфавитном порядке. Напротив каждого портфеля должен быть флаг для возможности выбора.

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

  • значение поля "Название"

  • значение поля "Код"

  • значение поля "Код" родительского портфеля

Значения указанных настроек, а также связи между объектами должны сохраняться после импорта конфигурации.

Импорт портфелей проектов

Если в импортируемой конфигурации присутствуют портфели проектов, то они должны отобразиться в ветке "Портфели проектов" с теми же свойствами, что и в среде экспорта. При этом если в среде импорта среди неудаленных портфелей проектов присутствует портфель с таким же кодом, то в поле столбца "Доп.информация" должен отображаться текст:

Объект будет заменен

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

Значение настройки "Удалять права при замене объектов" не должно учитываться: права не должны быть удалены.

Ответственный менеджер в импортированном портфеле

Все импортированные портфели должны иметь значение поля "Ответственный менеджер":

  • если портфель заменяется, то значение ответственного менеджера должно сохраниться из портфеля среды импорта;

  • если импортированный портфель переносится в качестве дочернего, то ответственным менеджером должен быть назначен менеджер ближайшего родительского портфеля среды импорта;

  • если портфель импортируется в корневой портфель среды импорта, менеджером должен быть назначен генеральный директор; если орг. структура среды импорта не имеет генерального директора - методолог, импортировавший данный портфель.

Импорт/экспорт шаблона проектов

Связанные объекты:

Объект конфигурации "Шаблон проектов" зависит от:

  • объекта "Категория рисков"

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

Экспорт шаблона проектов

При раскрытии ветки "Шаблоны проектов" должен отобразиться одноуровневый список всех шаблонов проектов, в том числе и скрытых. В столбце "Объект конфигурации" должно отображаться название шаблона, в столбце "Код" - его код. Шаблоны проектов в списке должны быть отсортированы в алфавитном порядке, а также рядом с каждым шаблоном проектов должен быть флаг для возможности выбора.

При экспорте шаблона проекта необходимо выгружать следующую информацию:

  • значение поля "Наименование шаблона проекта"

  • значения поля "Код"

  • Структура шаблона

    для каждого мероприятия:

    • значение поля №

    • значение поля "Название"

    • значение поля "Длительность"

    • значение поля "Зависит"

    • код значения выпадающего списка "Форма завершения"

  • Настройки:

    • значение выпадающего списка "Тип расчета сроков"

    • значение выпадающего списка "Тип расчета прогресса"

    • состояние флага "Перерасчет прогресса при изменении сроков"

    • значение выпадающего списка "Вес мероприятия"

    • значение выпадающего списка "Способ ввода сроков"

    • значение выпадающего списка "Тип прогресса"

  • Управление рисками (для каждого риска, в том числе и для удаленного):

    • значение поля "Наименование"

    • значение выпадающего списка "Категория":

    • значение выпадающего списка "Статус"

    • значение выпадающего списка "Воздействие"

    • значение поля "Вероятность(%)"

    • значение поля "Мероприятия"

  • Внешний вид:

    • состояние флага "Длительность"

    • состояние флага "Начало"

    • состояние флага "Завершение"

    • состояние флага "Зависит"

    • состояние флага "Ответственный"

    • состояние флага "Плановая стоимость"

    • состояние флага "Фактическая стоимость"

    • состояние флага "Прогресс"

    • состояние флагов всех дополнительных полей шаблона (при их наличии)

  • Дополнительные поля:

    • значение колонки "code" записи дополнительного поля в справочнике pm_custom_fields

  • статус шаблона проектов (активный, скрытый).

Импорт шаблона проектов

Если в импортируемой конфигурации присутствуют шаблоны проектов, то они должны отобразиться в ветке "Шаблоны проектов" с теми же свойстами, что и в среде экспорта. При этом если в среде импорта среди шаблонов проектов присутствует шаблон проектов с таким же кодом, то в поле столбца "Доп.информация" должен отображаться текст:

Объект будет заменен

После успешного импорта конфигурации шаблон проектов должен добавиться в подраздел "Шаблоны проектов" раздела "Проекты". Если шаблон проекта импортируется с заменой, то имеющийся в системе шаблон проекта должен замениться импортируемым с таким же кодом. При замене необходимо учитывать статус шаблона:

  • если скрытый шаблон заменяется на активный, то он восстанавливается;

  • если активный шаблон заменяется на скрытый, то он скрывается.

Тип расчета прогресса импортированного шаблона проекта

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

При импорте такого шаблона проекта отобразится сообщение с текстом:

Тип расчета прогресса шаблона проекта %название_шаблона_проекта% был изменен на "Среднее арифметическое значение"

Если таких шаблонов проектов несколько, они перечисляются через запятую.

Форма завершения мероприятий в структуре импортированного шаблона проекта

Значение данного поля должно зависеть от кодов записи справочника "Формы завершения работ" в средах экспорта и импорта.

Если коды записи справочника work_completion совпадают в средах экспорта и импорта, то мероприятию необходимо присвоить форму завершения среды импорта с этим кодом.

Если запись справочника с таким кодом отсутствует, для формы завершения мероприятия необходимо установить значение "По умолчанию".

Дополнительные поля импортированного шаблона проекта

Значение данного поля должно зависеть от значений колонки "code" записи дополнительного поля в справочнике pm_custom_fields в средах экспорта и импорта.

Если коды записи справочника pm_custom_fields совпадают в средах экспорта и импорта, шаблон проекта будет иметь дополнительное поле из справочника среды импорта с этим кодом.

Если справочник pm_custom_fields или запись справочника с таким кодом отсутствуют, шаблон не будет иметь данное дополнительное поле.