AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 04.06.2018, 09:40   #1  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Как проверить, что можно вызвать оператор next на таблице?
1. Как проверить, что можно вызвать оператор next на таблице?
2. Как избежать выпадения в дебаггер?

вопросы относятся к любой версии аксапты.

Код:
X++:
static void Job13(Args _args)
{
    CustTrans   ct1;
    CustTrans   ct2;

    // let's assume that method 'one' search a record
    select ct1; // where ct1.AccountNum == 'someAccount'
    ct2.data(ct1.data()); // or ct2.data(ct1);

    // contract postcondition
    Debug::assert(ct1.RecId != 0);
    Debug::assert(ct2.RecId == ct1.RecId);

    //////////////////////////////////

    // let's assume that method 'two' accepts a custTrans record as parameter
    Debug::assert(ct2.RecId != 0);
    try
    {
        // Questions:
        // 1. How to check that 'next' can be used?
        // 2. How to suppress a debugger?
        next ct2;
    }
    catch
    {
        Warning('catch it!');
    }
}
пара скриншотов на ax2009 (в остальных версиях поведение такое же).
Miniaturansicht angehängter Grafiken
Klicken Sie auf die Grafik für eine größere Ansicht

Name:	1.PNG
Hits:	508
Größe:	40,9 KB
ID:	11940  
Angehängte Grafiken
 
__________________
полезное на axForum, github, vk, coub.
Alt 04.06.2018, 10:40   #2  
Stitch_MS ist offline
Stitch_MS
Участник
Benutzerbild von Stitch_MS
Соотечественники
 
397 / 483 (17) +++++++
Registriert seit: 27.02.2006
Ort: Дания
Как вариант, вместо
X++:
ct2.data(ct1.data());
написать
X++:
select ct2 where ct2.RecId == ct1.RecId
Alt 04.06.2018, 11:04   #3  
SRF ist offline
SRF
Участник
MCBMSS
Axapta Retail User
 
376 / 562 (19) +++++++
Registriert seit: 08.08.2007
Blog-Einträge: 1
Не знаю поможет ли это вам, но в AX 2012 методы возвращают разные значения
X++:
info(strFmt("%1 %2", ct2.found(), ct1.found()));
__________________
Sergey Nefedov
This post has been rated by: mazzy (5).
Alt 04.06.2018, 12:28   #4  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Zitat von Stitch_MS Beitrag anzeigen
...написать...
вопрос не в том "как написать"
вопрос как проверить что именно передает уже написанный код.

Zitat:
Zitat von SRF Beitrag anzeigen
Не знаю поможет ли это вам, но в AX 2012 методы возвращают разные значения
X++:
info(strFmt("%1 %2", ct2.found(), ct1.found()));
опа. в 2012 действительно добавили методы.
и этот, похоже, то что надо.

а в предыдущих версиях как?
__________________
полезное на axForum, github, vk, coub.
Alt 04.06.2018, 21:40   #5  
sukhanchik ist offline
sukhanchik
Administrator
Benutzerbild von sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.343 / 3563 (125) ++++++++++
Registriert seit: 13.06.2004
Ort: Москва
Глупый вопрос, но конструкция
X++:
if (ct2)
{
    next ct2;
}
не прокатывает? Или я чего-то не понял в задаваемом вопросе?
__________________
Возможно сделать все. Вопрос времени
Alt 04.06.2018, 22:26   #6  
Logger ist offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3.996 / 3293 (117) ++++++++++
Registriert seit: 12.10.2004
Ort: Москва
Blog-Einträge: 2
Не прокатывает.
This post has been rated by: sukhanchik (2), mazzy (2).
Alt 04.06.2018, 22:30   #7  
sukhanchik ist offline
sukhanchik
Administrator
Benutzerbild von sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.343 / 3563 (125) ++++++++++
Registriert seit: 13.06.2004
Ort: Москва
Понял, спасибо. Я просто очень редко пользовался этой конструкцией и поэтому на такие особенности еще не успел наткнуться
__________________
Возможно сделать все. Вопрос времени
Alt 04.06.2018, 23:19   #8  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Zitat von sukhanchik Beitrag anzeigen
не прокатывает?
угу. не прокатывает. я специально добавил
X++:
Debug::assert(ct2.RecId != 0);
чтобы показать какие предусловия выполняются в данном месте.
__________________
полезное на axForum, github, vk, coub.
Alt 05.06.2018, 08:26   #9  
Dreadlock ist offline
Dreadlock
Участник
Benutzerbild von Dreadlock
 
298 / 224 (8) ++++++
Registriert seit: 07.05.2009
Ort: Москва
Я делал всегда так, начиная с Ах3.0..Ах2012 и у меня работало:
X++:
static void nextCursor(Args _args)
{
    SalesTable salesTable;
    
    select noFetch salesTable
        where salesTable.RecId != 5637159589;
    
    next salesTable;
    
    do
    {
        info(strFmt('Sales id is %1', salesTable.SalesId));
        
        if (salesTable)
        {
            next salesTable;  
        }        
    }
    while (salesTable);
    
    info('Done');
}
В моем окружении, в той компании в которой я проверял Job, только один заказ с RecId == 5637159589
Alt 05.06.2018, 15:50   #10  
dmn ist offline
dmn
Участник
 
9 / 18 (1) ++
Registriert seit: 25.09.2014
На 2009 вот так перестал ругаться и вываливаться в отладчик. И recId вроде как одинаков у обоих курсоров.
X++:
ct2.data(ct1.data()); // or ct2.data(ct1);
ct2.reread();
Правда, вот это
X++:
next ct1
отрабатывает, а после
X++:
next ct2
ct2.recId == 0
This post has been rated by: Владимир Максимов (2), alex55 (1).
Alt 05.06.2018, 16:34   #11  
DSPIC ist offline
DSPIC
Боец
 
1.077 / 1243 (44) ++++++++
Registriert seit: 11.04.2008
DEL

Geändert von DSPIC (05.06.2018 um 16:37 Uhr)
Alt 05.06.2018, 17:06   #12  
-DocSerzh- ist offline
-DocSerzh-
Участник
 
5 / 10 (1) +
Registriert seit: 19.04.2006
:(
AX 2012 6.3.3000.111
на строке
next ct2
в debug не выходит, DAX сваливается в дамп и пытается отправиться в MS...
Alt 05.06.2018, 20:33   #13  
Владимир Максимов ist offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1.720 / 1207 (44) ++++++++
Registriert seit: 13.01.2004
Blog-Einträge: 3
У меня получилось обойтись без ошибок так

X++:
       ct2.reread();
        next ct2;
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Фильтрование записей при "переходе к основной таблице" demID DAX: Программирование 10 18.11.2015 12:52
sumitsaxfactor: Generating Next Number Sequence in SQL Blog bot DAX Blogs 0 03.05.2011 21:11
Накладной расход, переход к основной таблице ZVV DAX: Программирование 0 03.03.2010 16:55
Что и как можно резать? George Nordic DAX: Администрирование 1 11.05.2004 18:44
фильтр по связанной таблице mick_777 DAX: Программирование 13 21.08.2002 16:00

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 20:37 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.