1) Я так понимаю это и не функция вовсе, в привычном понимании этого слова. Поскольку сам я описать нечто подобное точно не смогу через vip. Мне кажется, эта конструкция (так будет правильней) поддерживается непосредственно компилятором (то же касается и функции If()). Если да, то в документации явно есть неточности (см. ниже)
2) Эту функцию нельзя использовать без присваивания в левой части (иначе компилятор просто не может вывести тип выражения), почему такое поведение не описать в документации? Сейчас компилятор выдает неинформативную ошибку, что-то про нехватку ')'
т.е. написать в доке, что можно так
aa := Case(...);
но нельзя просто
Case(...);
3) Следующий код вообще не компилится, хотя все требования для работы псевдофункции Сase соблюдены:
Код: Выделить всё
insert into tblLocal (NRec, DogovorNRec, Number, Summa, DDoc, DocTypeName)
select
KatSopr.NRec,
dogovorNRec,
KatSopr.NSopr,
KatSopr.Summa,
KatSopr.DSopr,
Case(KatSopr.VidSopr; 111 : 'Акт на услуги', 101 : 'Приходная накладная'; '')
from
KatSopr
where
((
dogovorNRec == KatSopr.CDogovor
));