Pretvorite real u niz sa svim decimalama u Dynamics AX 2012
Objavljeno: 16. veljače 2025. u 10:46:39 UTC
Zadnje ažuriranje: 12. siječnja 2026. u 08:52:44 UTC
U ovom članku objašnjavam kako pretvoriti broj s pomičnim zarezom u niz znakova uz očuvanje svih decimala u Dynamics AX 2012, uključujući primjer X++ koda.
Convert a Real to String with All Decimals in Dynamics AX 2012
Informacije u ovom postu temelje se na Dynamics AX 2012 R3. Mogu, ali i ne moraju biti važeće za druge verzije.
S vremena na vrijeme trebam pretvoriti realni broj u niz znakova. Obično je dovoljno samo ga proslijediti funkciji strFmt(), ali ta funkcija uvijek zaokružuje na dvije decimale, što nije uvijek ono što želim.
Tu je i funkcija num2str() koja dobro radi, ali zahtijeva da unaprijed znate koliko decimala i znakova želite.
Što ako samo želite da se broj pretvori u niz znakova i decimala? Iz nekog razloga, ovo je nešto što me uvijek tjera na guglanje jer je iznenađujuće nejasno za napraviti i radim to tako rijetko da se obično ne mogu sjetiti točno kako - u većini programskih jezika očekivao bih da biste mogli jednostavno spojiti realni broj s praznim nizom, ali X++ to ne podržava.
U svakom slučaju, daleko najlakši način koji sam pronašao za to je korištenje .NET poziva. Ovdje također postoji više opcija, sa i bez opcija za napredno formatiranje, ali ako samo želite stvarno jednostavnu pretvorbu stvarnog broja u niz znakova, ovo će biti dovoljno:
Ako se ovaj kod izvršava na AOS-u (na primjer u batch zadatku), prvo ne zaboravite potvrditi potrebna dopuštenja za pristup kodu. U tom slučaju trebat će vam InteropPermission tipa ClrInterop za pozivanje .NET koda, pa bi cijeli primjer koda izgledao ovako:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Imajte na umu da ova jednostavna funkcija System::Convert koristi trenutnu lokalizaciju sustava s obzirom na znak decimalne točke. To možda neće biti problem za vas, ali za mene koji živim u području gdje se zarez koristi umjesto točke kao decimalni razdjelnik, možda će biti potrebna daljnja obrada ako se niz, na primjer, treba koristiti u datoteci koju drugi sustavi moraju moći čitati.
Dodatno čitanje
Ako vam se svidio ovaj post, možda će vam se svidjeti i ovi prijedlozi:
- Pozivanje AIF Document Services izravno iz X++ u Dynamics AX 2012
- Pogreška "Nije definirana klasa metapodataka za podatkovni ugovorni objekt" u programu Dynamics AX 2012
- Identificiranje klase dokumenta i upita za AIF uslugu u sustavu Dynamics AX 2012
