Пример использования ограничения
Если необходимо задать условие на существование детейлов по условию, в котором должно участвовать свойство агрегатора, необходимо использовать функцию Exist. При указании свойств в условии для функции Exist
необходимо явно указывать, что это свойство агрегатора:
<Имя агрегирующего свойства у детейла>.<Свойство агрегатора>.
Пример наложения ограничения на детейлы с использованием свойства агрегатора
Выявить ошибочно занесенные данные в базе: найти все компании, у которых существует программный продукт созданный раньше создания самой компании.
DataServiceLoader.InitializeDataSetvice();
View view = Information.GetView("CompanyL", typeof(Company));
View view2 = Information.GetView("SoftwareL", typeof(Software));
view.AddDetailInView("Software", view2, true);
var lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Company), view);
ExternalLangDef langDef = ExternalLangDef.LanguageDef;
var detail = new DetailVariableDef(langDef.GetObjectType("Details"), "Software", view2, "Company");
lcs.LimitFunction = langDef.GetFunction(langDef.funcExist, detail,
langDef.GetFunction(langDef.funcL,
new VariableDef(langDef.DateTimeType, Information.ExtractPropertyPath<Software>(x => x.DateCreation)),
new VariableDef(langDef.DateTimeType, Information.ExtractPropertyPath<Software>(x => x.Company.DateCreation))));
var dos = DataServiceProvider.DataService.LoadObjects(lcs);