Понадобилось мне решить в 1С следующую задачу.
Выбрать МИНИМУМ (МояТаблица.А, МояТаблица.Б)
ИЗ МояТаблица
где под функцией Минимум я хотел бы получить не агрегатную функцию, а выбрать минимальное из двух выражений.
На MySQL это делается элементарно
SELECT if(МояТаблица.А> МояТаблица.Б, МояТаблица.А, МояТаблица.Б)
from МояТаблица
В MS VFP помнится было
SELECT iif(МояТаблица.А> МояТаблица.Б, МояТаблица.А, МояТаблица.Б)
from МояТаблица
А в 1С такой операции нет (( Что делать?
Что и говорить Вариант с МИНИМУМОМ не сработал. 1С воспринимает эту функцию только как агрегатную.
Пробовал даже запрос типа
Выбрать (МояТаблица.А< МояТаблица.Б) *МояТаблица.А + (МояТаблица.А>= МояТаблица.Б)МояТаблица.Б
ИЗ МояТаблица
Тут я надеялся что результат логической операции можно будет использовать как чисто, 0 или 1.
Увы, тщетно.
Сработала конструкция типа такой
Выбрать МояТаблица.А
ИЗ МояТаблица
ГДЕ
МояТаблица.А< МояТаблица.Б)
ОБЪЕДИНИТЬ (типа юнион)
Выбрать МояТаблица.Б
ИЗ МояТаблица
ГДЕ
МояТаблица.А>= МояТаблица.Б)
Вот блин до чего приходится додумываться :(
А в реальности МояТаблица - это вообще вложенный запрос с отдельно взятым бубном..
Короче запросец на пустом месте удвоился.
PS:А набор функций которые можно использовать в запросах в 1С 8.1 это просто убожество