static public void AddResource(ReferenceObject projectElement, ReferenceObject newUsedResource) { projectElement.BeginChanges(); newUsedResource.Reload(); projectElement.AddLinkedObject(ProjectManagementWork.PM_link_UsedResources_GUID, newUsedResource); projectElement.EndChanges(); }
/// <summary> /// Возможность редактирования объекта, если можно true, иначе false /// </summary> static bool CanEditObject(ReferenceObject projectElement) { if (projectElement == null) { return(false); } projectElement.Unlock(); if (projectElement.CanEdit) { try { projectElement.BeginChanges(); projectElement.EndChanges(); } catch (ObjectLockErrorException) { return(false); } finally { projectElement.Unlock(); } return(true); } else { return(false); } }
static public ReferenceObject CopyPE(ReferenceObject исходныйОбъект, ReferenceObject целевойОбъект, List <Guid> listParametersToSkip) { ReferenceObject копияИсходногоОбъекта = References.ProjectManagementReference.CreateReferenceObject(целевойОбъект, References.Class_ProjectManagementWork); foreach (Parameter parameter in копияИсходногоОбъекта.ParameterValues) { if (parameter.IsReadOnly) { continue; } if (listParametersToSkip.Contains(parameter.ParameterInfo.Guid) || listLinksToSkip.Contains(parameter.ParameterInfo.Guid)) { continue; } копияИсходногоОбъекта[parameter.ParameterInfo].Value = исходныйОбъект[parameter.ParameterInfo].Value; } копияИсходногоОбъекта.SetParent(целевойОбъект); копияИсходногоОбъекта.EndChanges(); if (копияИсходногоОбъекта != null) { return(копияИсходногоОбъекта); } else { MessageBox.Show("Не удалось создать копию в целевом объекте - " + целевойОбъект.ToString()); } return(null); }
//создаём синхронизацию public static void SyncronizeWorks(ReferenceObject masterWork, ReferenceObject slaveWork) { ReferenceObject синхронизация = ProjectDependenciesReference.CreateReferenceObject(Class_ProjectDependency); синхронизация[SynchronizationParameterGuids.param_DependencyType_Guid].Value = 5;// DependencyType.Synchronization; синхронизация[SynchronizationParameterGuids.param_MasterWork_Guid].Value = masterWork.SystemFields.Guid; синхронизация[SynchronizationParameterGuids.param_SlaveWork_Guid].Value = slaveWork.SystemFields.Guid; синхронизация[SynchronizationParameterGuids.param_MasterProject_Guid].Value = ProjectManagementWork.GetProject(masterWork).SystemFields.Guid; синхронизация[SynchronizationParameterGuids.param_SlaveProject_Guid].Value = ProjectManagementWork.GetProject(slaveWork).SystemFields.Guid; синхронизация.EndChanges(); //return синхронизация; }
internal EditReasonNote(ProjectManagementWork work, string editType, string reason, bool needManagerAction = false) { //#if test // MessageBox.Show("referenceInfo - " + EditReasonNote.ReferenceInfo.ToString()); // MessageBox.Show("Reference - " + Reference.ToString()); // MessageBox.Show("classObject - " + classObject.ToString()); //#endif ReferenceObject newObject = Reference.CreateReferenceObject(classObject);// создание // Параметр "Тип редактирования" int editTypeCode = Array.IndexOf(TypeNames, editType); newObject[EditReasonNote.ERN_param_EditType_Guid].Value = editTypeCode; newObject[EditReasonNote.ERN_param_Reason_Guid].Value = reason; newObject[EditReasonNote.ERN_param_NeedActionManager_Guid].Value = needManagerAction; newObject.SetLinkedObject(EditReasonNote.ERN_link_ToPrjctMgmntN1_Guid, work.ReferenceObject); newObject.EndChanges(); this.ReferenceObject = newObject; }
/// <summary> /// Метод копирования используемых ресурсов /// </summary> /// <param name="owner">Элемент проекта в который копируем используемые ресурсы</param> /// <param name="whence">Элемент проекта с которого копируем используемые ресурс</param> /// <param name="PlanningSpaceForNewRes_Guid">Пространство планирования для новых ресурсов</param> /// <param name="PlanningSpaceForCheck_Guid">Копировать ресурсы только из этого пространства планирования</param> /// <returns></returns> public static bool СкопироватьИспользуемыеРесурсы_изЭлементаПроекта_вЭлементПроекта(ReferenceObject owner, ReferenceObject whence , Guid?PlanningSpaceForNewRes_Guid = null, Guid?PlanningSpaceForCheck_Guid = null, bool onlyPlanningRes = false) { if (owner == null || whence == null) { return(false); } //получение списка используемых ресурсов с детализации var usedResources = ProjectManagementWork.GetLinkedUsedNonConsumableResources(whence, onlyPlanningRes) .Where(UseRes => { var currentGuidPlanningSpaceRes = UsedResource.GetPlanningSpaceUsedResource(UseRes.ReferenceObject); if (PlanningSpaceForCheck_Guid != null && PlanningSpaceForCheck_Guid != currentGuidPlanningSpaceRes) { return(false); } ReferenceObject NonExpendableResource = null; //Получаем Ресурс из справочника Ресурсы NonExpendableResource = UsedResource.GetResourcesLink(UseRes.ReferenceObject); if (NonExpendableResource == null) { //MessageBox.Show("NonExpendableResource == null"); return(false); } //Проверка ресурса на тип switch (NonExpendableResource.Class.Name) { case "Оборудование и оснастка": { return(false); } case "Оснащение": { return(false); } case "Комплектующие": { return(false); } case "Ресурсы материалов": { return(false); } } return(true); }).ToList(); if (usedResources.Count() == 0) { return(true); } var result = new List <ReferenceObject>(usedResources.Count); //цикл копирования используемых ресурсов с детализации, в справочник используемыее ресурсы foreach (var usedResource in usedResources) { //Здесь дописать копирование нужных параметров и связей var newResourceUsed = usedResource.ReferenceObject.CreateCopy(usedResource.ReferenceObject.Class); // var newResourceUsed = ResourceUsed.CreateReferenceObject(null, ResourceUsed.Classes.Find(Dinamika.Guids.ResourceUsedReference.TypeNonExpendableResourcesUsedReferenceObject_Guid)); /* * //Получаем Ресурс из справочника Ресурсы * var NonExpendableResource = usedResource.GetObject(Guids.ResourceUsedReference.Links.ResourcesLink_Guid); * * newResourceUsed[Guids.ResourceUsedReference.Name_Guid].Value = usedResource[Guids.ResourceUsedReference.Name_Guid].Value; * * if (NonExpendableResource != null) * newResourceUsed.SetLinkedObject(Guids.ResourceUsedReference.Links.ResourcesLink_Guid, NonExpendableResource); * * newResourceUsed[Guids.ResourceUsedReference.Number_Guid].Value = usedResource[Guids.ResourceUsedReference.Number_Guid].Value; * * * newResourceUsed[Guids.ResourceUsedReference.BeginDate_Guid].Value = usedResource[Guids.ResourceUsedReference.BeginDate_Guid].Value; * newResourceUsed[Guids.ResourceUsedReference.EndDate_Guid].Value = usedResource[Guids.ResourceUsedReference.EndDate_Guid].Value; * * newResourceUsed[Guids.ResourceUsedReference.FactValue_Guid].Value = usedResource[Guids.ResourceUsedReference.FactValue_Guid].Value; * newResourceUsed[Guids.ResourceUsedReference.FixNumber_Guid].Value = usedResource[Guids.ResourceUsedReference.FixNumber_Guid].Value; */ if (PlanningSpaceForNewRes_Guid != null && PlanningSpaceForNewRes_Guid != Guid.Empty) { if (!newResourceUsed.Changing) { newResourceUsed.BeginChanges(); } } { newResourceUsed[UsedResource.param_PlanningSpace_Guid].Value = PlanningSpaceForNewRes_Guid; } //else //newResourceUsed[Guids.ResourceUsedReference.PlanningSpace_Guid].Value = Project(owner)[Dinamika.Guids.ProjectManagementReference.TypeProjectElement.PlanningSpace_Guid].Value; /* * //в библиотеке TF - isActual * newResourceUsed[Guids.ResourceUsedReference.FactValue_Guid].Value = usedResource[Guids.ResourceUsedReference.FactValue_Guid].Value; * * //ResourceGroupLin * newResourceUsed.SetLinkedObject(Guids.ResourceUsedReference.Links.ResourceGroup_Nto1_Guid, usedResource.GetResourceGroupLink()); * * newResourceUsed[Guids.ResourceUsedReference.Workload_Guid].Value = usedResource[Guids.ResourceUsedReference.Workload_Guid].Value; */ newResourceUsed.EndChanges(); //WaitingHelper.SetText(string.Format("Добавление ресурса {0} в элемент проекта {1}", newResourceUsed.ToString(), owner.ToString())); // newResourceUsed.Reload(); result.Add(newResourceUsed); } //подключаем используемые ресурсы к элемент укрумения if (CanEditObject(owner) == false) { return(false); } owner.BeginChanges(); foreach (var newResource in result) { // if (newResource.Changing) // newResource.EndChanges(); ProjectManagementWork.AddResource(owner, newResource); //owner.AddLinkedObject(Guids.ProjectManagementReference.TypeProjectElement.Links.ProjectElementResLinks_1toN_Guid, newResource); } owner.EndChanges(); owner.Unlock(); //пересчитываем суммарные трудозатраты RecalcResourcesWorkLoad(owner); return(true); }