Cepat diterbitkan artikel ini menyediakan informasi langsung dari dalam organisasi dukungan Microsoft. Informasi yang terkandung di dalamnya dibuat dalam menanggapi topik yang muncul atau unik, atau ditujukan untuk melengkapi informasi Pangkalan Pengetahuan yang lain.
Gejala
Ketika Anda klik kanan di kotak dialog rute kartu jurnal di Microsoft Dynamics AX 2009 dan kemudian klik Setup untuk menambahkan kolom konfigurasi tab Ikhtisar , konfigurasi daftar bahan (Good) tidak ditampilkan dengan benar di kotak dialog rute kartu jurnal .
Penyebab
Masalah ini terjadi karena Microsoft Dynamics AX tidak mendukung menambahkan sumber data tertunda tertaut ke control kisi.
Pemecahan Masalah
Informasi Hotfix
Sekarang tersedia hotfix yang didukung dari Microsoft. Namun, hanya ditujukan untuk memperbaiki masalah yang dijelaskan di artikel ini. Terapkan hanya ke sistem yang mengalami masalah khusus ini. Perbaikan terbaru ini dapat menerima pengujian tambahan. Oleh karena itu, jika Anda tidak terlalu dipengaruhi oleh masalah ini, kami sarankan Anda menunggu paket layanan Microsoft Dynamics AX 2009 atau versi berikutnya yang berisi perbaikan terbaru ini. Catatan Dalam kasus tertentu, biaya yang biasanya diadakan untuk panggilan mungkin dibatalkan apabila profesional dukungan teknis untuk Microsoft Dynamics dan produk-produk terkait dukungan menentukan bahwa pembaruan khusus akan memecahkan masalah Anda. Biaya dukungan biasa akan berlaku untuk pertanyaan dan masalah yang tidak termasuk pada pembaruan tertentu yang dimaksud dukungan tambahan.Hotfix ini dijadwalkan untuk disertakan dengan Paket Layanan 2 untuk Microsoft Dynamics AX 2009.
Informasi penginstalan
Sebelum Anda menginstal perbaikan terbaru ini, verifikasi bahwa pengguna klien Microsoft Dynamics AX log off sistem. Anda harus klien hanya pengguna yang masuk saat Anda menerapkan perbaikan terbaru ini. Untuk menerapkan hotfix ini, Anda harus memiliki lisensi pengembang.Catatan Kami menyarankan bahwa akun pengguna di jendela login Windows atau jendela login Database menjadi anggota grup administrator pengguna di Microsoft Dynamics AX.
Perubahan kode
Microsoft memberikan contoh pemrograman hanya untuk tujuan ilustrasi, tanpa jaminan tertulis maupun tersirat. Ini termasuk, namun tidak terbatas pada, jaminan tersirat mengenai kelayakan untuk diperdagangkan atau kesesuaian untuk tujuan tertentu. Artikel ini menganggap bahwa Anda sudah terbiasa dengan bahasa pemrogaman yang ditunjukkan dan dengan alat yang digunakan untuk membuat dan memperbaiki prosedur. Teknisi Microsoft dapat membantu menjelaskan fungsionalitas prosedur tertentu. Meskipun demikian, mereka tidak akan mengubah contoh tersebut untuk menyediakan fungsionalitas tambahan atau membuat prosedur untuk memenuhi syarat khusus Anda. Selalu menguji kode perbaikan di lingkungan yang dikontrol sebelum menerapkan perbaikan untuk komputer produksi.Untuk menerapkan hotfix ini, ikuti langkah-langkah berikut:
-
Ubah kode di metode datasourceWritePre kelas ProdJournalFormTransRoute sebagai berikut:kode yang ada
void datasourceWritePre(){ ; if (prodJournalRoute.ProdPickList && prodJournalRoute.OprPriority && !prodJournalRoute.ProdPickListJournalId) prodJournalRoute.ProdPickList = NoYes::No; if (prodJournalRoute.ProdReportFinished) prodJournalRoute.ProdInventDimId = InventDim::findOrCreate(inventDim).InventDimId; else // Modify the following line. prodJournalRoute.ProdInventDimId = ''; prodJournalRoute.ProdInventDimId = ''; super();}
Penggantian kode
void datasourceWritePre(){ ; if (prodJournalRoute.ProdPickList && prodJournalRoute.OprPriority && !prodJournalRoute.ProdPickListJournalId) prodJournalRoute.ProdPickList = NoYes::No; if (prodJournalRoute.ProdReportFinished) prodJournalRoute.ProdInventDimId = InventDim::findOrCreate(inventDim).InventDimId; else // The following line is modified. prodJournalRoute.ProdInventDimId = InventDim::inventDimIdBlank(); prodJournalRoute.ProdInventDimId = ''; super();}
-
Ubah kode di metode fieldModifiedProdReportFinishedPost kelas ProdJournalFormTransRoute sebagai berikut:kode yang ada
void fieldModifiedProdReportFinishedPost(){ InventDim emptyInventDim; ; if (prodJournalRoute.ProdReportFinished) { if (! prodJournalRoute.ProdInventDimId) inventDim_ds.create(); inventDim.data(InventDim::find(ProdTable::find(prodJournalRoute.ProdId).InventDimId)); } else inventDim.data(emptyInventDim); inventDim_ds.setCurrent();}
Penggantian kode
void fieldModifiedProdReportFinishedPost(){ // Add the following line. InventDim emptyInventDim = InventDim::find(InventDim::inventDimIdBlank()); InventDim emptyInventDim; ; if (prodJournalRoute.ProdReportFinished) { if (! prodJournalRoute.ProdInventDimId) inventDim_ds.create(); inventDim.data(InventDim::find(ProdTable::find(prodJournalRoute.ProdId).InventDimId)); } else inventDim.data(emptyInventDim); inventDim_ds.setCurrent();}
-
Ubah kode di metode enableFieldsActive dalam bentuk ProdJournalTransRoute sebagai berikut:kode yang ada
void enableFieldsActive(){ prodJournalRoute_ds.object(fieldnum(ProdJournalRoute,EmplId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRoute_ds.object(fieldnum(ProdJournalRoute,CategoryHoursId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRoute_ds.object(fieldnum(ProdJournalRoute,CategoryQtyId)).mandatory(prodJournalRoute.isProjMethodConsumed()); projectHour.visible(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjHour_ds.object(fieldnum(ProdJournalRouteProj,ProjId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjHour_ds.object(fieldnum(ProdJournalRouteProj,ProjLinePropertyId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjHour_ds.object(fieldnum(ProdJournalRouteProj,ProjSalesCurrencyId)).mandatory(prodJournalRoute.isProjMethodConsumed()); projectQuantity.visible(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjQuantity_ds.object(fieldnum(ProdJournalRouteProj,ProjId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjQuantity_ds.object(fieldnum(ProdJournalRouteProj,ProjLinePropertyId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjQuantity_ds.object(fieldnum(ProdJournalRouteProj,ProjSalesCurrencyId)).mandatory(prodJournalRoute.isProjMethodConsumed());}
Penggantian kode
void enableFieldsActive(){ // Add the following lines. int i; container enabledDimFields = InventDim::dimEnabledFieldList(); container dimFields = InventDim::dimFieldList(); ; prodJournalRoute_ds.object(fieldnum(ProdJournalRoute,EmplId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRoute_ds.object(fieldnum(ProdJournalRoute,CategoryHoursId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRoute_ds.object(fieldnum(ProdJournalRoute,CategoryQtyId)).mandatory(prodJournalRoute.isProjMethodConsumed()); projectHour.visible(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjHour_ds.object(fieldnum(ProdJournalRouteProj,ProjId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjHour_ds.object(fieldnum(ProdJournalRouteProj,ProjLinePropertyId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjHour_ds.object(fieldnum(ProdJournalRouteProj,ProjSalesCurrencyId)).mandatory(prodJournalRoute.isProjMethodConsumed()); projectQuantity.visible(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjQuantity_ds.object(fieldnum(ProdJournalRouteProj,ProjId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjQuantity_ds.object(fieldnum(ProdJournalRouteProj,ProjLinePropertyId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjQuantity_ds.object(fieldnum(ProdJournalRouteProj,ProjSalesCurrencyId)).mandatory(prodJournalRoute.isProjMethodConsumed()); // Add the following lines. for(i = 0; i < conlen(dimFields) ; i++) { if (inventDim_DS.object(conpeek(dimFields, i))) { if (prodJournalRoute.ProdInventDimId == InventDim::inventDimIdBlank()) { inventDim_DS.object(conpeek(dimFields,i)).enabled(false); } else { inventDim_DS.object(conpeek(dimFields,i)).enabled(confind(enabledDimeFields,i) != 0); } } }}
-
Ubah nilai properti untuk objek sumber Data InventDim dalam bentuk ProdJournalTransRoute sebagai berikut:
-
Ubah nilai properti LinkType ke InnerJoin.
-
Ubah nilai properti DelayActivetidak.
-
-
Tambahkan kode berikut dalam objek "\Forms\ProdJournalTransRoute\DataSources\InventDim\Methods\ validateWrite".
public boolean validateWrite(){ boolean ret; ; if (inventDim.inventDimId == InventDim::inventDimIdBlank()) return true; ret = super(); return ret;}
-
Ubah kode di objek "\Forms\ProdJournalTransRoute\DataSources\InventDim\Methods\ tulis" sebagai berikut:kode yang ada
void write(){ ; prodJournalRoute_ds.write();}
Penggantian kode
void write(){ ; prodJournalRoute_ds.write(); // Add the following line. element.enableFieldsActive();}
-
Ubah kode di "\Forms\ProdJournalTransRoute\DataSources\ProdJournalRoute\Methods\active" sebagai berikut:kode yang ada
int active(){ int ret; ret = super(); journalFormTrans.datasourceActivePost(); if (prodJournalRoute.isProjMethodConsumed()) { skipWrite = true; prodJournalRouteProjHour_ds.executeQuery(); prodJournalRouteProjQuantity_ds.executeQuery(); skipWrite = false; } element.enableFieldsActive(); return ret;}
Penggantian kode
int active(){ int ret; // Add the following lines. ; journalFormTrans.updateDesign(InventDimFormDesignUpdate::Init); ret = super(); journalFormTrans.datasourceActivePost(); if (prodJournalRoute.isProjMethodConsumed()) { skipWrite = true; prodJournalRouteProjHour_ds.executeQuery(); prodJournalRouteProjQuantity_ds.executeQuery(); skipWrite = false; } element.enableFieldsActive(); return ret;}
-
Ubah kode di metode enableFieldsActive dalam bentuk ProdJournalTransJob sebagai berikut:kode yang ada
void enableFieldsActive(){ prodJournalRoute_ds.object(fieldnum(ProdJournalRoute,EmplId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRoute_ds.object(fieldnum(ProdJournalRoute,CategoryHoursId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRoute_ds.object(fieldnum(ProdJournalRoute,CategoryQtyId)).mandatory(prodJournalRoute.isProjMethodConsumed()); projectHour.visible(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjHour_ds.object(fieldnum(ProdJournalRouteProj,ProjId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjHour_ds.object(fieldnum(ProdJournalRouteProj,ProjLinePropertyId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjHour_ds.object(fieldnum(ProdJournalRouteProj,ProjSalesCurrencyId)).mandatory(prodJournalRoute.isProjMethodConsumed()); projectQuantity.visible(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjQuantity_ds.object(fieldnum(ProdJournalRouteProj,ProjId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjQuantity_ds.object(fieldnum(ProdJournalRouteProj,ProjLinePropertyId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjQuantity_ds.object(fieldnum(ProdJournalRouteProj,ProjSalesCurrencyId)).mandatory(prodJournalRoute.isProjMethodConsumed());}
Penggantian kode
void enableFieldsActive(){ // Add the following lines. int i; container enabledDimFields = InventDim::dimEnabledFieldList(); container dimFields = InventDim::dimFieldList(); ; prodJournalRoute_ds.object(fieldnum(ProdJournalRoute,EmplId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRoute_ds.object(fieldnum(ProdJournalRoute,CategoryHoursId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRoute_ds.object(fieldnum(ProdJournalRoute,CategoryQtyId)).mandatory(prodJournalRoute.isProjMethodConsumed()); projectHour.visible(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjHour_ds.object(fieldnum(ProdJournalRouteProj,ProjId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjHour_ds.object(fieldnum(ProdJournalRouteProj,ProjLinePropertyId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjHour_ds.object(fieldnum(ProdJournalRouteProj,ProjSalesCurrencyId)).mandatory(prodJournalRoute.isProjMethodConsumed()); projectQuantity.visible(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjQuantity_ds.object(fieldnum(ProdJournalRouteProj,ProjId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjQuantity_ds.object(fieldnum(ProdJournalRouteProj,ProjLinePropertyId)).mandatory(prodJournalRoute.isProjMethodConsumed()); prodJournalRouteProjQuantity_ds.object(fieldnum(ProdJournalRouteProj,ProjSalesCurrencyId)).mandatory(prodJournalRoute.isProjMethodConsumed()); // Add the following lines. for(i = 0; i < conlen(dimFields) ; i++) { if (inventDim_DS.object(conpeek(dimFields, i))) { if (prodJournalRoute.ProdInventDimId == InventDim::inventDimIdBlank()) { inventDim_DS.object(conpeek(dimFields,i)).enabled(false); } else { inventDim_DS.object(conpeek(dimFields,i)).enabled(confind(enabledDimeFields,i) != 0); } } }}
-
Ubah nilai properti untuk objek sumber Data InventDim dalam bentuk ProdJournalTransJob sebagai berikut:
-
Ubah nilai properti LinkType ke InnerJoin.
-
Ubah nilai properti DelayActivetidak.
-
-
Tambahkan kode berikut dalam objek "\Forms\ProdJournalTransJob\DataSources\InventDim\Methods\ validateWrite".
public boolean validateWrite(){ boolean ret; ; if (inventDim.inventDimId == InventDim::inventDimIdBlank()) return true; ret = super(); return ret;}
-
Ubah kode di objek "\Forms\ProdJournalTransJob\DataSources\InventDim\Methods\ tulis" sebagai berikut:kode yang ada
void write(){ ; prodJournalRoute_ds.write();}
Penggantian kode
void write(){ ; prodJournalRoute_ds.write(); // Add the following line. element.enableFieldsActive();}
-
Ubah kode di "\Forms\ProdJournalTransJob\DataSources\ProdJournalRoute\Methods\active" sebagai berikut:kode yang ada
int active(){ int ret; ret = super(); journalFormTrans.datasourceActivePost(); if (prodJournalRoute.isProjMethodConsumed()) { skipWrite = true; prodJournalRouteProjHour_ds.executeQuery(); prodJournalRouteProjQuantity_ds.executeQuery(); skipWrite = false; } element.enableFieldsActive(); return ret;}
Penggantian kode
int active(){ int ret; // Add the following lines. ; journalFormTrans.updateDesign(InventDimFormDesignUpdate::Init); ret = super(); journalFormTrans.datasourceActivePost(); if (prodJournalRoute.isProjMethodConsumed()) { skipWrite = true; prodJournalRouteProjHour_ds.executeQuery(); prodJournalRouteProjQuantity_ds.executeQuery(); skipWrite = false; } element.enableFieldsActive(); return ret;}
-
Ubah kode di metode sisipan di dalam tabel ProdJournalRoute sebagai berikut:kode yang ada
void insert(){ ttsbegin; if (! this.LineNum) this.LineNum = ProdJournalRoute::lastLineNum(this.JournalId) + 1; if (this.OprFinished) this.JobFinished = NoYes::Yes; this.updateRouteConstantRelease(); super(); ttscommit;}
Penggantian kode
void insert(){ ttsbegin; if (! this.LineNum) this.LineNum = ProdJournalRoute::lastLineNum(this.JournalId) + 1; if (this.OprFinished) this.JobFinished = NoYes::Yes; // Add the following lines. if(!this.ProdInventDimId) this.ProdInventDimId = InventDim::inventDimIdBlank(); this.updateRouteConstantRelease(); super(); ttscommit;}
-
Ubah kode di metode initValue dalam tabel ProdJournalRoute sebagai berikut:kode yang ada
void initValue(){ super(); this.TransDate= systemdateget();}
Penggantian kode
void initValue(){ super(); this.TransDate= systemdateget(); // Add the following line. this.ProdInventDimId = InventDim::inventDimIdBlank();}
Prasyarat
Tidak ada prasyarat yang diperlukan untuk menerapkan hotfix ini.
Persyaratan mulai ulang
Anda tidak harus menghidupkan ulang komputer setelah menerapkan hotfix ini.
Status
Microsoft telah mengonfirmasi bahwa ini adalah masalah pada produk Microsoft yang tercantum di bagian "Berlaku untuk".
MICROSOFT DAN/ATAU PEMASOKNYA TIDAK MEMBUAT PERNYATAAN ATAU JAMINAN TENTANG KESESUAIAN, KEANDALAN, ATAU AKURASI DARI INFORMASI YANG TERKANDUNG DALAM DOKUMEN DAN GRAFIS TERKAIT YANG DITERBITKAN DI SITUS WEB INI ("BAHAN") UNTUK TUJUAN APA PUN. MATERI YANG MUNGKIN BERISI KETIDAKSESUAIAN TEKNIS ATAU KESALAHAN KETIK DAN DAPAT DIREVISI SETIAP SAAT TANPA PEMBERITAHUAN. SEJAUH YANG DIPERBOLEHKAN OLEH HUKUM YANG BERLAKU, MICROSOFT DAN/ATAU PEMASOKNYA TIDAK BERTANGGUNG JAWAB DAN MENGECUALIKAN SEMUA REPRESENTASI, JAMINAN, DAN KETENTUAN BAIK TERSURAT, TERSIRAT ATAU MENURUT UNDANG-UNDANG, TERMASUK NAMUN TIDAK TERBATAS PADA REKOMENDASI, JAMINAN, ATAU KONDISI JUDUL, KONDISI NON-PELANGGARAN, MEMUASKAN ATAU KUALITAS, DAPAT DIPERJUALBELIKAN DAN KESESUAIAN UNTUK TUJUAN TERTENTU, DALAM KAITANNYA DENGAN MATERI.