• Авторизация


Тернарная операция в языке запросов 1С 29-01-2009 01:05 к комментариям - к полной версии - понравилось!


Понадобилось мне решить в 1С следующую задачу.


Выбрать МИНИМУМ (МояТаблица.А, МояТаблица.Б)
ИЗ МояТаблица

где под функцией Минимум я хотел бы получить не агрегатную функцию, а выбрать минимальное из двух выражений.

На MySQL это делается элементарно

SELECT if(МояТаблица.А> МояТаблица.Б, МояТаблица.А, МояТаблица.Б)
from МояТаблица


В MS VFP помнится было
SELECT iif(МояТаблица.А> МояТаблица.Б, МояТаблица.А, МояТаблица.Б)
from МояТаблица



А в 1С такой операции нет (( Что делать?

Что и говорить Вариант с МИНИМУМОМ не сработал. 1С воспринимает эту функцию только как агрегатную.
Пробовал даже запрос типа


Выбрать (МояТаблица.А< МояТаблица.Б) *МояТаблица.А + (МояТаблица.А>= МояТаблица.Б)МояТаблица.Б
ИЗ МояТаблица

Тут я надеялся что результат логической операции можно будет использовать как чисто, 0 или 1.
Увы, тщетно.

Сработала конструкция типа такой

Выбрать МояТаблица.А
ИЗ МояТаблица
ГДЕ
МояТаблица.А< МояТаблица.Б)

ОБЪЕДИНИТЬ (типа юнион)

Выбрать МояТаблица.Б
ИЗ МояТаблица
ГДЕ
МояТаблица.А>= МояТаблица.Б)


Вот блин до чего приходится додумываться :(
А в реальности МояТаблица - это вообще вложенный запрос с отдельно взятым бубном..
Короче запросец на пустом месте удвоился.

PS:А набор функций которые можно использовать в запросах в 1С 8.1 это просто убожество
вверх^ к полной версии понравилось! в evernote
Комментарии (6):
Inq 29-01-2009-01:14 удалить
А чего им неймется-то? SQL'я мало?
Лучше еще ничего не придумано, имхо.
Glo_fish 29-01-2009-01:21 удалить
кому то тоже стоит нажать РЕсет:)))
altesack 29-01-2009-01:31 удалить
Inq, просто у них логическая структура данных весьма далека от того что хранится в их субдах. Вот поэтому штатный SQL практически не подходит, даже если сервер на SQL. И поэтому придумали свой язык наподобие SQL, кроме всего прочего - он ещё и на клиенте выполняется запрос-то :)
Пипец полный
Real_fish, Да, всё. Иду баиньки :)
Inq 29-01-2009-02:35 удалить
altesack, не знаю, что такое страшное и неординарное нужно хранить в базах 1С, но штатных средств, например, той же MySQL не хватило бы? INT, BYTE, VARCHAR...
Про Oracle я уж и не говорю (не работал с ней, но знаю что штука мощная).

Логическая структура... неумение составлять структуру БД?

Аж жутко стало.
altesack 29-01-2009-09:55 удалить
Мне кажется это идёт от того, что базу настраивает программист 1С, а не админ СУБД.
Погоня за гибкостью конфигурирования..
В результате БД создаётся не человеком, а Конфигуратором 1С по некоей типовой схеме с кучей своих лишних структур
Inq 29-01-2009-13:08 удалить
Ну... не знаю.
Один раз написать качественный конструктор.

по крайней мере это мой подход и мое видение проблемы.

Никто не считает байты :( Все привыкли считать мегабайты... или уже гигабайты.

Хотя эти байты эти же мегабайты и "берегут".


Комментарии (6): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Тернарная операция в языке запросов 1С | altesack - Записки Старого Мешка | Лента друзей altesack / Полная версия Добавить в друзья Страницы: раньше»