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