AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.09.2005, 10:35   #1  
Smith is offline
Smith
Участник
 
76 / 10 (1) +
Регистрация: 02.09.2004
Выбор максимального подтверждения по заказу.
Доброе утро!

Нужно из журнала подтверждений CustConfirmJour выбирать в цикле данные. При этом подразумевается, что на один заказ нужно выводить одну строку, а в таблице их может быть несколько. Отличаются они помимо всего прочего значением поля "Подтверждение" - ConfirmDocNum (это не порядковый номер подтверждения). Если на один заказ несколько строк, то должна выводиться строка с максимальным значением этого поля.

Стандартная группировка не подходит - поля в селекте мешают.
Пробовал такой вариант:

PHP код:
CustConfirmJour      custConfirmJour;
CustConfirmJour     custCJ;
;
    while 
select SalesIdrecidconfirmdocnum
        from custConfirmJour join salesid
maxof(confirmdocnum)
        
from custCJ group by SalesId
        where custConfirmJour
.SalesId == custCJ.SalesId &&
              
custConfirmJour.confirmdocnum == custCJ.confirmdocnum
    
{
         print(
custConfirmJour.SalesId +
         
' ' int2str(custConfirmJour.recid) + ' ' custConfirmJour.confirmdocnum);
    } 
Не проходит - возвращается пустой набор.
В обычном СКЛ можно было бы сделать
where custConfirmJour.confirmdocnum in (select ... )
но мы в аксапте, а здесь свои правила
Старый 26.09.2005, 10:41   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Но можно сделать ExistsJoin
__________________
Axapta v.3.0 sp5 kr2
Старый 26.09.2005, 10:44   #3  
Smith is offline
Smith
Участник
 
76 / 10 (1) +
Регистрация: 02.09.2004
А пример можно?
Старый 26.09.2005, 11:18   #4  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Извините по поводу ExistsJoin - начал читать с конца

Если не критично использование двух запросов, то можно сделать так

PHP код:
CustConfirmJour      custConfirmJourcustConfirmJour1;
CustConfirmJour     custCJ;
;
    while 
select SalesIdmaxof(confirmdocnum)
        
from custConfirmJour1 group by SalesId
        join salesid
        from custCJ group by SalesId
        where custConfirmJour1
.SalesId == custCJ.SalesId &&
              
custConfirmJour1.confirmdocnum == custCJ.confirmdocnum
    
{
        
select salesIdrecidconfirmdocnum from custConfirmJour
        where custConfirmJour
.SalesId ==  custConfirmJour1.SalesId &&
            
custConfirmJour.confirmdocnum ==  custConfirmJour1.confirmdocnum;
         print(
custConfirmJour.SalesId +
         
' ' int2str(custConfirmJour.recid) + ' ' custConfirmJour.confirmdocnum);
    } 
__________________
Axapta v.3.0 sp5 kr2
Старый 26.09.2005, 11:50   #5  
Smith is offline
Smith
Участник
 
76 / 10 (1) +
Регистрация: 02.09.2004
тоже вариант, спасибо
Старый 26.09.2005, 11:52   #6  
Smith is offline
Smith
Участник
 
76 / 10 (1) +
Регистрация: 02.09.2004
вот так более компактно:
PHP код:
CustConfirmJour      custConfirmJour;
CustConfirmJour     custCJ;
;  

  while 
select SalesIdmaxof(confirmdocnum)
        
from custCJ group by SalesId
    
{
         
select firstonly SalesIdrecidconfirmdocnum
         from custConfirmJour
         where custConfirmJour
.SalesId == custCJ.SalesId &&
              
custConfirmJour.confirmdocnum == custCJ.confirmdocnum;

         print(
custConfirmJour.SalesId +
         
' ' int2str(custConfirmJour.recid) + ' ' custConfirmJour.confirmdocnum);
        
pause;
    } 
Старый 26.09.2005, 12:00   #7  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Или так.
__________________
Axapta v.3.0 sp5 kr2
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Выбор первичной валюты kenzo DAX: Программирование 6 03.07.2006 12:21
Программное создание платежей по заказу murad DAX: Программирование 4 06.06.2006 18:29
Обработка нового типа документа по заказу PavelSR DAX: Программирование 7 31.05.2006 14:50
оплата по заказу: аванс 50% в течении 10 дней и 50% после отгрузки OlegKocherga DAX: Функционал 11 14.11.2003 14:56
Создание Закупки по Заказу для другой Компании Anton Sk. DAX: Функционал 3 19.12.2001 23:42

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:55.