Δημιουργία πεδίου αναζήτησης για μια οικονομική διάσταση στο Dynamics 365
Δημοσιεύθηκε: 16 Φεβρουαρίου 2025 στις 11:32:44 π.μ. UTC
Αυτό το άρθρο εξηγεί πώς να δημιουργήσετε ένα πεδίο αναζήτησης για μια οικονομική ιδιότητα στο Dynamics 365 for Operations, συμπεριλαμβανομένου ενός παραδείγματος κώδικα X++.
Creating a Lookup Field for a Financial Dimension in Dynamics 365
Οι πληροφορίες σε αυτήν την ανάρτηση βασίζονται στο Dynamics 365 for Operations, αλλά οι περισσότερες από αυτές θα λειτουργούν και για το Dynamics AX 2012 (δείτε παρακάτω).
Πρόσφατα μου ανατέθηκε η δημιουργία ενός νέου πεδίου στο οποίο θα ήταν δυνατός ο καθορισμός μιας ενιαίας οικονομικής διάστασης, σε αυτήν την περίπτωση Προϊόντος. Φυσικά, το νέο πεδίο θα πρέπει επίσης να μπορεί να αναζητήσει τις έγκυρες τιμές αυτής της διάστασης.
Αυτό είναι λίγο πιο περίπλοκο από μια κανονική αναζήτηση σε έναν πίνακα, αλλά αν ξέρετε πώς, στην πραγματικότητα δεν είναι πολύ κακό.
Ευτυχώς, η τυπική εφαρμογή παρέχει μια βολική φόρμα αναζήτησης (DimensionLookup) που μπορεί να χρησιμοποιηθεί για το σκοπό αυτό, αν απλώς της πείτε ποιο χαρακτηριστικό διάστασης να αναζητήσει.
Πρώτα, πρέπει να δημιουργήσετε το ίδιο το πεδίο φόρμας. Αυτό μπορεί να βασίζεται σε ένα πεδίο πίνακα ή σε μια μέθοδο επεξεργασίας, δεν έχει σημασία για την ίδια την αναζήτηση, αλλά με τον ένα ή τον άλλο τρόπο πρέπει να χρησιμοποιεί τον εκτεταμένο τύπο δεδομένων DimensionValue.
Στη συνέχεια, πρέπει να δημιουργήσετε έναν χειριστή συμβάντων OnLookup για το πεδίο. Για να δημιουργήσετε ένα πρόγραμμα χειρισμού συμβάντων, κάντε δεξί κλικ στο συμβάν OnLookup για το πεδίο και, στη συνέχεια, επιλέξτε "Αντιγραφή μεθόδου χειρισμού συμβάντων". Στη συνέχεια, μπορείτε να επικολλήσετε μια κενή μέθοδο χειριστή συμβάντων σε μια κλάση και να την επεξεργαστείτε από εκεί.
Σημείωση: Τα περισσότερα από αυτά θα λειτουργήσουν και για το Dynamics AX 2012, αλλά αντί να δημιουργήσετε έναν χειριστή συμβάντων, μπορείτε να παρακάμψετε τη μέθοδο αναζήτησης του πεδίου φόρμας.
Ο χειριστής συμβάντων πρέπει να μοιάζει κάπως έτσι (αντικαταστήστε το όνομα της φόρμας και το όνομα του πεδίου όπως απαιτείται):
FormControlEventHandler(formControlStr( MyForm,
MyProductDimField),
FormControlEventType::Lookup)
]
public static void MyProductDimField_OnLookup( FormControl _sender,
FormControlEventArgs _e)
{
FormStringControl control;
Args args;
FormRun formRun;
DimensionAttribute dimAttribute;
;
dimAttribute = DimensionAttribute::findByName('Product');
args = new Args();
args.record(dimAttribute);
args.caller(_sender);
args.name(formStr(DimensionLookup));
formRun = classFactory.formRunClass(args);formRun.init();
control = _sender as FormStringControl;
control.performFormLookup(formRun);
}