diff --git a/README.md b/README.md index c2f7424..0216282 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ * Создание и сохранение сущностей * Чтение и поиск объектов * Поиск сущностей со сложными отборами + * Сортировка результатов * Удаление сущностей * Активная запись * Работа через ХранилищеСущностей @@ -190,12 +191,11 @@ Метод `ПолучитьОдно()` возвращает одну (первую попавшуюся) сущность или `Неопределено`, если найти сущность не удалось. -Оба метода в качестве второго параметра могут принимать в себя условия отбора в следующих видах: +Оба метода в качестве второго параметра могут принимать в себя условия поиска в следующих видах: * `Неопределено` (параметр не заполнен) - поиск без отборов; * `Соответствие` - пары ИмяПоля-ЗначениеПоля, используемые как отбор по "равно"; -* `ЭлементОтбора` - объект типа "ЭлементОтбора", позволяющий использовать более сложные условия, например, с видом сравнения "БольшеИлиРавно"; -* `Массив` - массив с элементами типа "ЭлементОтбора", позволяющий использовать сложные условия отбора, соединяемые через логическое `И`. +* `ОпцииПоиска` - объект типа "ОпцииПоиска", позволяющий использовать сложные условия отбора и сортировки. ### Поиск сущностей с простыми отборами @@ -235,15 +235,34 @@ ```bsl // Найдем всех физических лиц, у которых дата рождения больше, чем 01.01.1990. -ЭлементОтбора = Новый ЭлементОтбора("ДатаРождения", ВидСравнения.БольшеИлиРавно, Дата(1990, 1, 1)); -НайденныеФизЛица = МенеджерСущностей.Получить(Тип("ФизическоеЛицо"), ЭлементОтбора); +ОпцииПоиска = Новый ОпцииПоиска; +ОпцииПоиска.Отбор("ДатаРождения", ВидСравнения.БольшеИлиРавно, Дата(1990, 1, 1)); + +НайденныеФизЛица = МенеджерСущностей.Получить(Тип("ФизическоеЛицо"), ОпцииПоиска); // Найдем всех физических лиц, рожденных в 90-ые. -МассивОтборов = Новый Массив; -МассивОтборов.Добавить(Новый ЭлементОтбора("ДатаРождения", ВидСравнения.БольшеИлиРавно, Дата(1990, 1, 1))); -МассивОтборов.Добавить(Новый ЭлементОтбора("ДатаРождения", ВидСравнения.Меньше, Дата(2000, 1, 1))); +ОпцииПоиска = Новый ОпцииПоиска() + .Отбор("ДатаРождения", ВидСравнения.БольшеИлиРавно, Дата(1990, 1, 1)) + .Отбор("ДатаРождения", ВидСравнения.Меньше, Дата(2000, 1, 1)); + +ДетиДевяностых = МенеджерСущностей.Получить(Тип("ФизическоеЛицо"), ОпцииПоиска); +``` + + + +### Сортировка результатов + +```bsl + +// Найдем всех физических лиц, у которых дата рождения больше, чем 01.01.1990 +// и отсортируем результат по дате рождения в порядке убывания. + +ОпцииПоиска = Новый ОпцииПоиска() + .Отбор("ДатаРождения", ВидСравнения.БольшеИлиРавно, Дата(1990, 1, 1)) + .СортироватьПо("ДатаРождения", НаправлениеСортировки.ПоУбыванию); + +ДетиДевяностыхПоВозрасту = МенеджерСущностей.Получить(Тип("ФизическоеЛицо"), ОпцииПоиска); -ДетиДевяностых = МенеджерСущностей.Получить(Тип("ФизическоеЛицо"), МассивОтборов); ``` @@ -558,6 +577,7 @@ * [`МодельДанных`](src/Классы/МодельДанных.os), * [`ОбъектМодели`](src/Классы/ОбъектМодели.os), * [`ЭлементОтбора`](src/Классы/ЭлементОтбора.os); + * [`ЭлементПорядка`](src/Классы/ЭлементПорядка.os); * значения модулей-перечислений: * [`ТипыКолонок`](src/Модули/ТипыКолонок.os), * [`ТипыПодчиненныхТаблиц`](src/Модули/ТипыПодчиненныхТаблиц.os), @@ -570,6 +590,7 @@ * [`МодельДанных`](src/Классы/МодельДанных.os), * [`ОбъектМодели`](src/Классы/ОбъектМодели.os), * [`ЭлементОтбора`](src/Классы/ЭлементОтбора.os); + * [`ЭлементПорядка`](src/Классы/ЭлементПорядка.os); * значения модулей-перечислений: * [`ТипыКолонок`](src/Модули/ТипыКолонок.os), * [`ТипыПодчиненныхТаблиц`](src/Модули/ТипыПодчиненныхТаблиц.os), diff --git a/docs/README.md b/docs/README.md index d6c8674..41cfed3 100644 --- a/docs/README.md +++ b/docs/README.md @@ -9,6 +9,8 @@ * [КоннекторJSON](КоннекторJSON.md) * [МодельДанных](МодельДанных.md) * [ОбъектМодели](ОбъектМодели.md) +* [ЭлементОтбора](ЭлементОтбора.md) +* [ЭлементПорядка](ЭлементПорядка.md) ### Перечисления