Методы запросов
Одной из ключевых особенностей autumn-data является автоматическая генерация реализации методов запросов на основе их имен. Методы, помеченные аннотацией &МетодЗапроса, анализируются библиотекой, и для них генерируется соответствующий код выполнения запроса. Для использования аннотации &МетодЗапроса необходимо, чтобы класс был помечен аннотацией &ХранилищеСущностей.
Принцип работы
Метод, помеченный аннотацией &МетодЗапроса, должен:
- Следовать определенным соглашениям об именовании
- Иметь соответствующие параметры
Например:
bsl
&МетодЗапроса
Функция ПолучитьПоИмяРавно(Имя) Экспорт
Возврат Неопределено; // Реализация будет сгенерирована автоматически
КонецФункцииЭтот метод будет преобразован в следующий код:
bsl
Функция ПолучитьПоИмяРавно(Имя) Экспорт
ОпцииПоиска = Новый ОпцииПоиска();
ОпцииПоиска.Отбор("Имя", ВидСравнения.Равно, Имя);
Возврат ХранилищеСущностей.Получить(ОпцииПоиска);
КонецФункцииСтруктура имени метода
Имя метода состоит из следующих частей:
- Режим поиска -
ПолучитьилиПолучитьОдно - Ограничения (опционально) -
Первые,СоСмещением - Условия отбора -
По[Поле][ВидСравнения] - Сортировка (опционально) -
УпорядочитьПо[Поле][Направление]
Режимы поиска
Получить- возвращает коллекцию объектовПолучитьОдно- возвращает один объект илиНеопределено
Ограничения
Первые- ограничивает количество возвращаемых записейСоСмещением- пропускает указанное количество записей с начала
Виды сравнения
Равно(по умолчанию) - точное совпадениеНеРавно- не равноБольше- большеБольшеИлиРавно- больше или равноМеньше- меньшеМеньшеИлиРавно- меньше или равноВ- значение в спискеНеВ- значение не в списке
Направления сортировки
Возр(по умолчанию) - по возрастаниюУбыв- по убыванию
Примеры методов
Простые запросы
bsl
// Найти пользователя по ID
&МетодЗапроса
Функция ПолучитьОдноПоИдентификаторРавно(Идентификатор) Экспорт
Возврат Неопределено;
КонецФункции
// Найти пользователей по имени
&МетодЗапроса
Функция ПолучитьПоИмяРавно(Имя) Экспорт
Возврат Неопределено;
КонецФункцииСложные условия
bsl
// Пользователи старше указанного возраста
&МетодЗапроса
Функция ПолучитьПоВозрастБольше(Возраст) Экспорт
Возврат Неопределено;
КонецФункции
// Пользователи с именем из списка
&МетодЗапроса
Функция ПолучитьПоИмяВ(СписокИмен) Экспорт
Возврат Неопределено;
КонецФункции
// Активные пользователи
&МетодЗапроса
Функция ПолучитьПоАктивенРавно(Активен) Экспорт
Возврат Неопределено;
КонецФункцииМножественные условия
bsl
// Пользователи по имени и возрасту
&МетодЗапроса
Функция ПолучитьПоИмяРавноИВозрастБольше(Имя, Возраст) Экспорт
Возврат Неопределено;
КонецФункции
// Активные пользователи определенного возраста
&МетодЗапроса
Функция ПолучитьПоАктивенРавноИВозрастМеньшеИлиРавно(Активен, Возраст) Экспорт
Возврат Неопределено;
КонецФункцииСортировка
bsl
// Пользователи, отсортированные по имени
&МетодЗапроса
Функция ПолучитьУпорядочитьПоИмяВозр() Экспорт
Возврат Неопределено;
КонецФункции
// Пользователи по возрасту, отсортированные по дате создания (убывание)
&МетодЗапроса
Функция ПолучитьПоВозрастБольшеУпорядочитьПоДатаСозданияУбыв(Возраст) Экспорт
Возврат Неопределено;
КонецФункцииОграничения
bsl
// Первые 10 пользователей
&МетодЗапроса
Функция ПолучитьПервые(Количество) Экспорт
Возврат Неопределено;
КонецФункции
// Пользователи с пропуском первых N записей
&МетодЗапроса
Функция ПолучитьСоСмещением(Смещение) Экспорт
Возврат Неопределено;
КонецФункции
// Пагинация: первые N записей со смещением
&МетодЗапроса
Функция ПолучитьПервыеСоСмещением(Количество, Смещение) Экспорт
Возврат Неопределено;
КонецФункцииКомплексные запросы
bsl
// Сложный запрос с множественными условиями, сортировкой и ограничениями
&МетодЗапроса
Функция ПолучитьПервыеСоСмещениемПоАктивенРавноИВозрастБольшеИлиРавноУпорядочитьПоДатаСозданияУбыв(
Количество,
Смещение,
Активен,
Возраст
) Экспорт
Возврат Неопределено;
КонецФункцииСоответствие параметров
Параметры метода должны соответствовать порядку их появления в имени метода:
- Сначала идут параметры ограничений (
Первые,СоСмещением) - Затем параметры условий отбора в порядке их следования в имени
- Параметры сортировки не требуются, так как поля сортировки указываются в имени
Например, для метода:
bsl
ПолучитьПервыеСоСмещениемПоИмениРавноИВозрастБольшеУпорядочитьПоДатаСозданияУбыв(Количество, Смещение, Имя, Возраст)Порядок параметров:
Количество- для ограниченияПервыеСмещение- для ограниченияСоСмещениемИмя- для условияПоИмениРавноВозраст- для условияИВозрастБольше
Ограничения
- Не все комбинации условий и ограничений могут быть поддержаны
- Для сложных запросов рекомендуется использовать прямые вызовы
ХранилищеСущностей-родителя с объектомОпцииПоиска
