Показать сообщение отдельно
Старый 31.03.2010, 11:28   #16  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Wamr Посмотреть сообщение
"сумма по которым = 0" это having(sum(AmountCur)) = 0, а не where AmountCur = 0

то есть поставщик\договор, по которому примерно такая ситуация:
накладная -500руб
оплата 300руб
оплата 200руб
Если эти движения не сопоставлены, то, с точки зрения Аксапты, накладная не оплачена.
Аксапта будет предлагать/создавать новую оплату для этой несопоставленной накладной.
правильное условие оплаченности сформулировано в методе open таблицы VendTrans.

Повторюсь:
Цитата:
Сообщение от mazzy Посмотреть сообщение
В-третьих, обязательно старайтесь вникнуть в предметную область. Сумма по полю AmountCur не имеет никакого смысла, если вы не накладываете никаких условий на валюту. Сейчас ваш запрос суммирует рубли, тугрики, евро, доллары и т.д. и проверяет получившуюся сумму на ноль. Смысла в этом условии - никакого.

В-четвертых, обязательно поймите смысл полей. Так вы делаете выборку с условием (VTr.closed='') и добавляете having sum(VTr.AmountCur)=0. Вообще говоря, в Аксапте если проводка НЕ закрыта, то ее надо анализировать и выбирать даже если сумма оплат с накладными равна 0. Такова логика Аксапты. Система перестает анализировать только Закрытые записи.
И еще:
Цитата:
Сообщение от mazzy Посмотреть сообщение
Ваш Having одним махом нарушает логику работы стандартного функционала и превращает Аксапту в 1С
__________________
полезное на axForum, github, vk, coub.