public static List <ReferenceObject> GetDependenciesObjects(bool?returnOnlyMasterWorks, string guidStringForSearch) { Filter filter = new Filter(ProjectDependenciesReferenceInfo); AddTermByGuidParamPE(ref filter, SynchronizationParameterGuids.param_DependencyType_Guid, 5, (int)LogicalOperator.And); // Условие: в названии содержится "является укрупнением" //ReferenceObjectTerm termMasterWork = new ReferenceObjectTerm(LogicalOperator.Or); ReferenceObjectTerm termMasterWork = AddTermByGuidParamPE(ref filter, SynchronizationParameterGuids.param_MasterWork_Guid, guidStringForSearch); // Условие: в названии содержится "является детализацией" ReferenceObjectTerm termSlaveWork = AddTermByGuidParamPE(ref filter, SynchronizationParameterGuids.param_SlaveWork_Guid, guidStringForSearch, (int)LogicalOperator.Or); // Группируем условия в отдельную группу (другими словами добавляем скобки) TermGroup group1 = filter.Terms.GroupTerms(new Term[] { termMasterWork, termSlaveWork }); //редактируем при необходимости if (returnOnlyMasterWorks != null) { if (!(bool)returnOnlyMasterWorks) { group1.Remove(termSlaveWork); } else { group1.Remove(termMasterWork); } } return(ProjectDependenciesReference.Find(filter)); }
private static Filter GetFilter(bool?returnOnlyMasterWorks, string guidStringForSearch) { Filter filter = new Filter(ProjectDependenciesReferenceInfo); // Условие: тип зависимости "синхронизация" ReferenceObjectTerm termSyncType = new ReferenceObjectTerm(filter.Terms, LogicalOperator.And); // устанавливаем параметр termSyncType.Path.AddParameter(ProjectDependenciesReference.ParameterGroup.OneToOneParameters.Find(SynchronizationParameterGuids.param_DependencyType_Guid)); // устанавливаем оператор сравнения termSyncType.Operator = ComparisonOperator.Equal; // устанавливаем значение для оператора сравнения termSyncType.Value = 5; // Условие: в названии содержится "является укрупнением" //ReferenceObjectTerm termMasterWork = new ReferenceObjectTerm(LogicalOperator.Or); ReferenceObjectTerm termMasterWork = new ReferenceObjectTerm(filter.Terms); // устанавливаем параметр termMasterWork.Path.AddParameter(ProjectDependenciesReference.ParameterGroup.OneToOneParameters.Find(SynchronizationParameterGuids.param_MasterWork_Guid)); // устанавливаем оператор сравнения termMasterWork.Operator = ComparisonOperator.Equal; // устанавливаем значение для оператора сравнения termMasterWork.Value = guidStringForSearch; // Условие: в названии содержится "является детализацией" ReferenceObjectTerm termSlaveWork = new ReferenceObjectTerm(filter.Terms, LogicalOperator.Or); //ReferenceObjectTerm term1 = new ReferenceObjectTerm(filter.Terms, LogicalOperator.Or); // устанавливаем параметр termSlaveWork.Path.AddParameter(ProjectDependenciesReference.ParameterGroup.OneToOneParameters.Find(SynchronizationParameterGuids.param_SlaveWork_Guid)); // устанавливаем оператор сравнения termSlaveWork.Operator = ComparisonOperator.Equal; // устанавливаем значение для оператора сравнения termSlaveWork.Value = guidStringForSearch; // Группируем условия в отдельную группу (другими словами добавляем скобки) TermGroup group1 = filter.Terms.GroupTerms(new Term[] { termMasterWork, termSlaveWork }); //редактируем при необходимости if (returnOnlyMasterWorks != null) { if (!(bool)returnOnlyMasterWorks) { group1.Remove(termSlaveWork); } else { group1.Remove(termMasterWork); } } return(filter); }