Создание проекта в сценарии

В данном примере рассматривается создание проекта и задач по проекту при помощи сценария.

Пример сценария с использованием PublicAPI

Примечание
Актуальная документация по PublicAPI доступна по ссылке
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA до 3.12.1 включительно.
var metadata = PublicAPI.Projects.Objects.ProjectMetadataHead.LoadOrNull(1); //Метаданные проекта типа ProjectWork
var currentUser = PublicAPI.Portal.Security.User.GetCurrentUser(); //Текущий пользователь
var project = PublicAPI.Projects.Project.Create("Название проекта", metadata, DateTime.Today, DateTime.Today.AddDays(30), currentUser);

var projectplan = PublicAPI.Projects.ProjectPlan.Filter().Project(project).Find().FirstOrDefault();

var projectTask = PublicAPI.Projects.ProjectTaskBase.ProjectTask.Create(project)
    .Subject("Тема задачи")
    .StartDate(DateTime.Today)
    .EndDate(DateTime.Today.AddDays(1))
    .Executor(currentUser)
    .AddToPlan(projectplan); //Создание проектной задачи
var milestone = PublicAPI.Projects.ProjectTaskBase.Milestone.Create(project)
    .Subject("Тема КТ")
    .StartDate(DateTime.Today)
    .Executor(currentUser)
    .AddToPlan(projectplan); //Создание контрольной точки по проекту

Примеры сценариев без использования PublicAPI

Ниже приведено два сценария:

  1. для версий системы ELMA 3.5.х и ниже,
  2. для версий системы ELMA 3.6.х и выше.

Сценарий для версий системы ELMA 3.5.х и ниже

В сценарии должны быть объявлены следующие пространства имен:

using EleWise.ELMA.Projects.Models;
using EleWise.ELMA.Projects.Managers;
using EleWise.ELMA.Tasks.Models;
using EleWise.ELMA.Projects;
Текст сценария:
 var projectTemplateId=1; //идентификатор шаблона проекта
var projectTemplate = ProjectTemplateManager.Instance.LoadWithElevatedPrivilegies(projectTemplateId);
    var project = ProjectManager.Instance.Create(projectTemplate);

    project.ShowTaskBeforeDays = null;

    // Если нужно автоформирование папки проекта, то нужно обнулить поле Folder проекта, иначе задать нужную папку
    project.Folder = null;
project.Name = context.NazvanieProekta;
project.CreationAuthor=context.Author;
project.Manager=context.Meneger;
project.StartDate=DateTime.Now;
project.FinishDate=context.DataOkonchaniya;
    ProjectManager.Instance.SaveNew(project, projectTemplate);

    // Если нужно автоформирование папки проекта!
    ProjectManager.Instance.CopyTemplateFolders(projectTemplate, project);

    // Если нужно опубликовать
    ProjectManager.Instance.Publish(project);

    context.Proekt = (Project)project; //записываем в контекстную переменную типа Объект Проект
    
//Создание задачи проекта
var projectTask= ProjectTaskManager.Instance.Create(project, null);
projectTask.Subject="Тема задачи";
projectTask.Executor=context.Ispolnitelj; //устанавливаем исполнителя 
projectTask.StartDate=context.DataSozdaniya;
projectTask.EndDate=context.DataOkonchaniya;
projectTask.Save(); 

Сценарий для версий системы ELMA 3.6.х и выше

Пространства имен:
using EleWise.ELMA.Model.Services;
using EleWise.ELMA.Projects.Managers;
using EleWise.ELMA.Projects.Models;
using EleWise.ELMA.Security.Models;
using EleWise.ELMA.Security.Managers;
using EleWise.ELMA.Projects.Enums;
Текст сценария:
//Создание проекта типа "Проект"
var project = InterfaceActivator.Create<ProjectWork>();
project.StartDate = DateTime.Today; //Дата начала проекта
project.FinishDate = DateTime.Today; //Дата Завершения проекта
project.Manager = (User)UserManager.Instance.LoadByLogin("admin"); //Менеджер проекта
project.Name = "Название проекта"; //Название проекта
ProjectManager.Instance.SaveNew(project, true);

//Поиск плана проекта со статусом версии "Черновик"
var filter = InterfaceActivator.Create<ProjectPlanFilter>();
filter.Project = project;
filter.Status = ProjectPlanVersionStatus.Draft;
var projectplan = ProjectPlanManager.Instance.Find(filter, null).LastOrDefault();
 
//Создание исполнителя проектной задачи типа Пользователь
var executor = InterfaceActivator.Create<ProjectTaskExecutor>();
executor.Type = ProjectTaskExecutorType.User; //Тип Пользователь
executor.User = (User)UserManager.Instance.LoadByLogin("admin");
executor.Save();
 
//Создание простой проектной задачи
var PrjTask = InterfaceActivator.Create<ProjectPlanItem>();
PrjTask.ItemType = ProjectPlanItemType.ProjectTask; //Тип задачи - проектная задача
PrjTask.StartDate = DateTime.Today; //Дата начала - сегодня
PrjTask.EndDate = DateTime.Today; //Дата завершения - сегодня
PrjTask.CreationAuthor = (User)UserManager.Instance.LoadByLogin("admin"); //Автор задачи
PrjTask.Executor = executor; //Исполнитель - Тип (Пользователь), Пользователь
PrjTask.Subject = "Проектная задача"; //Название задачи
PrjTask.ProjectPlan = projectplan; //План проекта
 
//Создание контрольной точки
var Milestone = InterfaceActivator.Create<ProjectPlanItem>();
Milestone.ItemType = ProjectPlanItemType.Milestone; //Тип задачи - контрольная точка
Milestone.StartDate = DateTime.Today; //Дата начала - сегодня
Milestone.EndDate = DateTime.Today; //Дата завершения - сегодня
Milestone.CreationAuthor = (User)UserManager.Instance.LoadByLogin("admin"); //Автор задачи
Milestone.Executor =  executor; //Исполнитель - Тип (Пользователь), Пользователь
Milestone.Subject = "Контрольная точка"; //Название задачи
Milestone.ProjectPlan = projectplan; //План проекта