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