Маленькие хитрости в запросах


Выбрать только целое значение:

накладываем условие в запросе: ВЫРАЗИТЬ(Данные КАК ЧИСЛО(15,0)) = Данные, где данные это поле запроса

Выбрать значение кратное например 5:

накладываем условие в запросе: ВЫРАЗИТЬ(Данные/5 КАК ЧИСЛО(15,0)) = Данные/5, где данные это поле запроса, а вместо 5 может быть любое число

Условие по типу значения документа или справочника:

накладываем условие в запросе: ГДЕ Реквизит ССЫЛКА Документ["НаименованиеДокумента"]

Разность дат в запросе:

Часто требуется рассчитать возраст, стаж, срок до события и пр. Это удобно сделать непосредственно в запросе при помощи функции РазностьДат:

РАЗНОСТЬДАТ (<Дата1>, <Дата2>, <Тип>)

В зависимости от указываемого типа - СЕКУНДА, ЧАС, ДЕНЬ, МЕСЯЦ, ГОД -  получим соответствующее числовое значение.

Однако есть один нюанс, поясню на примере расчета возраста:

РАЗНОСТЬДАТ (ДеньРождения (1 сентября 1980), ТекущаяДата (26 июля 2012), ГОД);

Эта функция вернет нам разницу в 32, хотя полных лет только 31, т.к. день рождения еще не наступил. Эту проблему можно решить разными способами, например обойти при помощи ввода дополнительного условия в запрос:

 ВЫБОР
КОГДА ДОБАВИТЬКДАТЕ(ДатаРождения, ГОД, РАЗНОСТЬДАТ(ДатаРождения, ТекущаяДата, ГОД)) > ТекущаяДата
ТОГДА РАЗНОСТЬДАТ(ДатаРождения, ТекущаяДата, ГОД) - 1
ИНАЧЕ РАЗНОСТЬДАТ(ДатаРождения, ТекущаяДата, ГОД)
КОНЕЦ

В нашем примере  функция вернет 31, что будет корректно для подсчета полных лет.


Если у вас возникли вопросы, вы можете обратиться к нашим специалистам