Skip to content

Методы запросов

Одной из ключевых особенностей autumn-data является автоматическая генерация реализации методов запросов на основе их имен. Методы, помеченные аннотацией &МетодЗапроса, анализируются библиотекой, и для них генерируется соответствующий код выполнения запроса. Для использования аннотации &МетодЗапроса необходимо, чтобы класс был помечен аннотацией &ХранилищеСущностей.

Принцип работы

Метод, помеченный аннотацией &МетодЗапроса, должен:

  1. Следовать определенным соглашениям об именовании
  2. Иметь соответствующие параметры

Например:

bsl
&МетодЗапроса
Функция ПолучитьПоИмяРавно(Имя) Экспорт
    Возврат Неопределено; // Реализация будет сгенерирована автоматически
КонецФункции

Этот метод будет преобразован в следующий код:

bsl
Функция ПолучитьПоИмяРавно(Имя) Экспорт
    ОпцииПоиска = Новый ОпцииПоиска();
    ОпцииПоиска.Отбор("Имя", ВидСравнения.Равно, Имя);
    Возврат ХранилищеСущностей.Получить(ОпцииПоиска);
КонецФункции

Структура имени метода

Имя метода состоит из следующих частей:

  1. Режим поиска - Получить или ПолучитьОдно
  2. Ограничения (опционально) - Первые, СоСмещением
  3. Условия отбора - По[Поле][ВидСравнения]
  4. Сортировка (опционально) - УпорядочитьПо[Поле][Направление]

Режимы поиска

  • Получить - возвращает коллекцию объектов
  • ПолучитьОдно - возвращает один объект или Неопределено

Ограничения

  • Первые - ограничивает количество возвращаемых записей
  • СоСмещением - пропускает указанное количество записей с начала

Виды сравнения

  • Равно (по умолчанию) - точное совпадение
  • НеРавно - не равно
  • Больше - больше
  • БольшеИлиРавно - больше или равно
  • Меньше - меньше
  • МеньшеИлиРавно - меньше или равно
  • В - значение в списке
  • НеВ - значение не в списке

Направления сортировки

  • Возр (по умолчанию) - по возрастанию
  • Убыв - по убыванию

Примеры методов

Простые запросы

bsl
// Найти пользователя по ID
&МетодЗапроса
Функция ПолучитьОдноПоИдентификаторРавно(Идентификатор) Экспорт
    Возврат Неопределено;
КонецФункции

// Найти пользователей по имени
&МетодЗапроса
Функция ПолучитьПоИмяРавно(Имя) Экспорт
    Возврат Неопределено;
КонецФункции

Сложные условия

bsl
// Пользователи старше указанного возраста
&МетодЗапроса
Функция ПолучитьПоВозрастБольше(Возраст) Экспорт
    Возврат Неопределено;
КонецФункции

// Пользователи с именем из списка
&МетодЗапроса
Функция ПолучитьПоИмяВ(СписокИмен) Экспорт
    Возврат Неопределено;
КонецФункции

// Активные пользователи
&МетодЗапроса
Функция ПолучитьПоАктивенРавно(Активен) Экспорт
    Возврат Неопределено;
КонецФункции

Множественные условия

bsl
// Пользователи по имени и возрасту
&МетодЗапроса
Функция ПолучитьПоИмяРавноИВозрастБольше(Имя, Возраст) Экспорт
    Возврат Неопределено;
КонецФункции

// Активные пользователи определенного возраста
&МетодЗапроса
Функция ПолучитьПоАктивенРавноИВозрастМеньшеИлиРавно(Активен, Возраст) Экспорт
    Возврат Неопределено;
КонецФункции

Сортировка

bsl
// Пользователи, отсортированные по имени
&МетодЗапроса
Функция ПолучитьУпорядочитьПоИмяВозр() Экспорт
    Возврат Неопределено;
КонецФункции

// Пользователи по возрасту, отсортированные по дате создания (убывание)
&МетодЗапроса
Функция ПолучитьПоВозрастБольшеУпорядочитьПоДатаСозданияУбыв(Возраст) Экспорт
    Возврат Неопределено;
КонецФункции

Ограничения

bsl
// Первые 10 пользователей
&МетодЗапроса
Функция ПолучитьПервые(Количество) Экспорт
    Возврат Неопределено;
КонецФункции

// Пользователи с пропуском первых N записей
&МетодЗапроса
Функция ПолучитьСоСмещением(Смещение) Экспорт
    Возврат Неопределено;
КонецФункции

// Пагинация: первые N записей со смещением
&МетодЗапроса
Функция ПолучитьПервыеСоСмещением(Количество, Смещение) Экспорт
    Возврат Неопределено;
КонецФункции

Комплексные запросы

bsl
// Сложный запрос с множественными условиями, сортировкой и ограничениями
&МетодЗапроса
Функция ПолучитьПервыеСоСмещениемПоАктивенРавноИВозрастБольшеИлиРавноУпорядочитьПоДатаСозданияУбыв(
    Количество,
    Смещение, 
    Активен, 
    Возраст
) Экспорт
    Возврат Неопределено;
КонецФункции

Соответствие параметров

Параметры метода должны соответствовать порядку их появления в имени метода:

  1. Сначала идут параметры ограничений (Первые, СоСмещением)
  2. Затем параметры условий отбора в порядке их следования в имени
  3. Параметры сортировки не требуются, так как поля сортировки указываются в имени

Например, для метода:

bsl
ПолучитьПервыеСоСмещениемПоИмениРавноИВозрастБольшеУпорядочитьПоДатаСозданияУбыв(Количество, Смещение, Имя, Возраст)

Порядок параметров:

  1. Количество - для ограничения Первые
  2. Смещение - для ограничения СоСмещением
  3. Имя - для условия ПоИмениРавно
  4. Возраст - для условия ИВозрастБольше

Ограничения

  • Не все комбинации условий и ограничений могут быть поддержаны
  • Для сложных запросов рекомендуется использовать прямые вызовы ХранилищеСущностей-родителя с объектом ОпцииПоиска