Miklix

Χρήση ενός ερωτήματος σε μια κλάση συμβάσεων δεδομένων SysOperation στο Dynamics AX 2012

Δημοσιεύθηκε: 16 Φεβρουαρίου 2025 στις 1:21:40 π.μ. UTC

Αυτό το άρθρο περιγράφει τις λεπτομέρειες σχετικά με τον τρόπο προσθήκης ενός ερωτήματος με δυνατότητα διαμόρφωσης και φιλτραρίσματος από τον χρήστη σε μια κλάση συμβολαίων δεδομένων SysOperation στο Dynamics AX 2012 (και στο Dynamics 365 for Operations)


Αυτή η σελίδα μεταφράστηκε μηχανικά από τα αγγλικά, προκειμένου να είναι προσβάσιμη σε όσο το δυνατόν περισσότερους ανθρώπους. Δυστυχώς, η αυτόματη μετάφραση δεν είναι ακόμη μια τελειοποιημένη τεχνολογία, οπότε μπορεί να προκύψουν λάθη. Αν προτιμάτε, μπορείτε να δείτε την πρωτότυπη αγγλική έκδοση εδώ:

Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012

Οι πληροφορίες σε αυτήν την ανάρτηση βασίζονται στο Dynamics AX 2012 R3. Μπορεί να ισχύει ή να μην ισχύει για άλλες εκδόσεις. (Ενημέρωση: Μπορώ να επιβεβαιώσω ότι αυτό λειτουργεί και στο Dynamics 365 for Operations)

Φαίνεται ότι ξεχνάω πάντα τις λεπτομέρειες σχετικά με τον τρόπο καθορισμού και προετοιμασίας ενός ερωτήματος στο πλαίσιο SysOperation. Υποθέτω ότι οι περισσότερες από τις ομαδικές εργασίες που έχω κάνει δεν βασίζονται σε ερωτήματα με δυνατότητα διαμόρφωσης από το χρήστη, αλλά κάθε τόσο χρειάζεται να κάνω μια τέτοια ομαδική εργασία, επομένως αυτή η ανάρτηση είναι επίσης για δική μου αναφορά.

Πρώτον, στην κλάση σύμβασης δεδομένων, το ερώτημα θα αποθηκευτεί συσκευασμένο σε μια συμβολοσειρά. Η μέθοδος parm του πρέπει να είναι διακοσμημένη με το χαρακτηριστικό AifQueryTypeAttribute, όπως και έτσι (σε ​​αυτό το παράδειγμα έχω χρησιμοποιήσει το ερώτημα SalesUpdate, αλλά μπορείτε να το αντικαταστήσετε με οποιοδήποτε ερώτημα AOT):

[
    DataMemberAttribute,
    AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
    ;

    packedQuery = _packedQuery;
    return packedQuery;
}

Αν θέλετε το ερώτημα να αποφασίζεται από την κλάση ελεγκτή, μπορείτε επίσης να χρησιμοποιήσετε μια κενή συμβολοσειρά. Σε αυτήν την περίπτωση, πρέπει επίσης να εφαρμόσετε μερικές βοηθητικές μεθόδους (τις οποίες πιθανότατα θα πρέπει να εφαρμόσετε ούτως ή άλλως για δική σας διευκόλυνση όταν χρειάζεται να αποκτήσετε πρόσβαση στο ερώτημα):

public Query getQuery()
{
    ;

    return new Query(SysOperationHelper::base64Decode(packedQuery));
}

public void setQuery(Query _query)
{
    ;

    packedQuery = SysOperationHelper::base64Encode(_query.pack());
}

Εάν πρέπει να αρχικοποιήσετε το ερώτημα (για παράδειγμα, να προσθέσετε εύρη), θα πρέπει να εφαρμόσετε μια μέθοδο initQuery:

public void initQuery()
{
    Query queryLocal = this.getQuery();
    ;

    // add ranges, etc...

    this.setQuery(queryLocal);
}

Πρέπει να φροντίσετε να καλέσετε αυτήν τη μέθοδο από την κλάση ελεγκτή.

Μοιραστείτε το στο BlueskyΚοινή χρήση στο FacebookΚοινοποίηση στο LinkedInΜοιραστείτε το στο TumblrΚοινοποίηση στο XΚοινοποίηση στο LinkedInΚαρφιτσώστε στο Pinterest

Μίκελ Μπανγκ Κρίστενσεν

Σχετικά με τον συγγραφέα

Μίκελ Μπανγκ Κρίστενσεν
Ο Μιχαήλ είναι ο δημιουργός και ιδιοκτήτης του miklix.com. Έχει πάνω από 20 χρόνια εμπειρίας ως επαγγελματίας προγραμματιστής υπολογιστών/προγραμματιστής λογισμικού και σήμερα εργάζεται με πλήρη απασχόληση σε μια μεγάλη ευρωπαϊκή εταιρεία πληροφορικής. Όταν δεν ασχολείται με το ιστολόγιο, αφιερώνει τον ελεύθερο χρόνο του σε ένα ευρύ φάσμα ενδιαφερόντων, χόμπι και δραστηριοτήτων, τα οποία μπορεί σε κάποιο βαθμό να αντικατοπτρίζονται στην ποικιλία των θεμάτων που καλύπτονται σε αυτόν τον ιστότοπο.