Skip to content

МетодЗапроса

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

Синтаксис

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

Описание

Аннотация &МетодЗапроса позволяет автоматически генерировать реализацию методов запросов на основе их имен. Библиотека анализирует имя метода и создает соответствующий код для выполнения запроса к базе данных.

Правила именования методов

Имя метода должно следовать определенной структуре:

[Режим][Ограничения][Условия][Сортировка]

Где:

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

Поддерживаемые токены

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

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

Ограничения

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

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

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

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

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

Логические операторы

  • И - логическое И между условиями

Примеры

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

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

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

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

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

С ограничениями

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

Генерируемый код

Для метода:

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

Будет сгенерирован код:

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

Требования

  • Класс должен быть помечен аннотацией &ХранилищеСущностей
  • Метод должен быть помечен аннотацией &МетодЗапроса
  • Параметры метода должны соответствовать порядку их использования в имени метода

Ограничения

  • Не все комбинации токенов поддерживаются
  • Сложные запросы лучше реализовывать вручную с использованием ОпцииПоиска
  • Регистр имен полей должен точно совпадать с определением в сущности

См. также