/// <summary> /// Функция считывает ресурсы при первичном чтении объекта из PLM и добавляет их в справочники /// </summary> /// <param name="obj">Объект PLM, из которого происходит чтение</param> /// <param name="strTask">Объект - структура задачи, в которую будут записаны ресурсы</param> public void AddResource(InfoObject obj, ref clTask strTask) { // Список трудовых ресурсов, входящих в текущую задачу из таблицы "Ресурсы:" var ResourcesTasks = obj.GetAttribute("Resources", AttributeDefBase.DataTypeEnum.CollectionOfElements); if (ResourcesTasks.CollectionElements.Count == 0) return; // Создание списка трудовых ресурсов для текущей задачи foreach (var resourc in ResourcesTasks.CollectionElements) { // Создание структуры трудовых ресурсов (для задачи) stResource strResource = new stResource(); // Заполнение структуры stResource(ресурсы) strResource.objResurce = resourc.GetValue<InfoObject>("ResourceLink"); strResource.responsible = IsRespUser(strTask, strResource.objResurce); strResource.unit = 1; // Проверка наличия ресурса в словаре ресурсов dictResource var gtRes = GetGTbyIO(strResource.objResurce); if (gtRes == null) { // Создание структуры трудовых ресурсов (для справочника) stResource elemResource = new stResource(); elemResource.objResurce = strResource.objResurce; // Краткое название ресурса var shortName = strResource.GetResourceNamePLM(); // Создание нового ресурса gtRes = this.GanttDiag.AddResource(shortName); // Задание календаря InfoObject resCalendar = strResource.objResurce.GetValue<InfoObject>("BasicCalendar"); gtRes.CalendarKey = ParentHelper.GetCalendarKey(resCalendar); elemResource.Res = gtRes; // Запись нового ресурса в словарь ресурсов dictResource.Add(elemResource); } strResource.Res = gtRes; // Запись в список трудовых ресурсов в структуре strTask strTask.lResourceTask.Add(strResource); } }
/// <summary> /// Функция считывает ресурсы из объекта ДГ и добавляет их в справочники /// </summary> /// <param name="obj">Объект PLM, из которого происходит чтение</param> /// <param name="strTask">Объект - структура задачи, в которую будут записаны ресурсы</param> public void TransferResources(GanttItem gt, ref clTask strTask) { if (gt.ItemType != GanttItemType.TaskItem) return; strTask.lResourceTask.Clear(); var task = (TaskItem)gt; foreach (var resrel in task.Resources) { var resitem = resrel.Resource; // Создание структуры трудовых ресурсов (для задачи) stResource strResource = new stResource(); strResource.Res = resitem; strResource.unit = 1; var ioRes = GetIObyGT(resitem); if (ioRes == null) { // Создание структуры трудовых ресурсов (для справочника) stResource elemResource = new stResource(); elemResource.Res = resitem; elemResource.objResurce = null; // Запись нового ресурса в словарь ресурсов dictResource.Add(elemResource); } else { strResource.responsible = IsRespUser(strTask, ioRes); } strResource.objResurce = ioRes; // Запись в список трудовых ресурсов в структуре strTask strTask.lResourceTask.Add(strResource); } }