Погоди, Максим. Ты прав с технической стороны.
Чтобы сделать то, что andreynikolai сказал на человеческом языке, запрос вообще по другой таблице делать надо.
Сгруппируйте по клиенту CustTransOpen.
Вы получите список клиентов с открытыми проводками.
Далее из этого списка надо выбрать тех, кто имеет проводки для сопоставления.
Я бы чуть изменил условия задачи и показывал всех клиентов у которых число проводок больше 2. С практической точки зрения, этого вполне достаточно.
Если условия задачи не менять, то надо показать клиентов у которых есть проводки с положительной и отрицательной суммой в custTransOpen.
Далее возникает сложность как в одном запросе сделать max,min, если Аксапта не позволяет подставлять алиасы для полей. Но у нас есть два поля с суммами, а нам нужен только +-.
поэтому select, по которому должен строится запрос должен выглядеть так
Код:
CusttransOpen cto;
select minof(AmountCur), maxof(AmountMST) from cto
group by AccountNum;
Далее, возникает проблема с тем, что в Аксапте нет Having и нельзя одним запросом отобрать те строки в которых сумма и положительная и отрицательная. Но можно это выделить цветом в форме.
В чем состоит мораль:
1. выразите на простом человеческом языке ваше желание.
2. посмотрите есть ли уже готовая функциональность для этого
3. поищите существующие таблицы
4. если нет прямого ответа, то может стоит чуть модифицировать ваше желание?
Дополнительно: профилируйте запросы. Старайтесь не задавать SQL'ю работу по перебору проводок от начала времен. Тем более, в сложных join'ах.
Query и форма для Аксапты 3.0 прилагаются в проекте.
Обратите внимание, что query лучше не строить динамически, а задавать в АОТе.
//// Интересно как php показал Group By... Попробуем так...