Konfiguracija BOM ni pravilno prikazana v pogovornem oknu »Dnevnik kartice«, ko dodate stolpec »Konfiguracija« na zavihek »Pregled« v programu Microsoft Dynamics AX 2009

Velja za
Dynamics AX 2009 Service Pack 1 Microsoft Dynamics AX 2009

Hitro objavljeni članki zagotavljajo informacije neposredno iz Microsoftove organizacije za podporo. Informacije, ki jih vsebuje ta dokument, so ustvarjene kot odziv na nastajajoče ali edinstvene teme ali pa so namenjene dopolnitvi drugih informacij iz zbirke znanja.

Znaki

Ko z desno tipko miške kliknete pogovorno okno Dnevnik kartice usmerjanja v programu Microsoft Dynamics AX 2009 in nato kliknete Nastavitev , da dodate stolpec Konfiguracija na zavihek Pregled , konfiguracija popisnika surovin ni pravilno prikazana v pogovornem oknu Dnevnik kartice načrtovanja .

Vzrok

Do te težave pride, ker Microsoft Dynamics AX ne podpira dodajanja povezanega vira podatkov z zakasnitvijo v kontrolnik mreže.

Rešitev

Informacije o sprotnih popravkih

Podprt sprotni popravek je zdaj na voljo pri Microsoftu. Vendar pa je namenjen le odpravljanju težave, ki je opisana v tem članku. Uporabite ga samo za sisteme, ki imajo to težavo. Ta sprotni popravek bo morda dodatno preučen. Če vas ta težava ne prizadene, priporočamo, da počakate na naslednji servisni paket za Microsoft Dynamics AX 2009 ali naslednjo različico, ki vsebuje ta sprotni popravek.

Opomba V posebnih primerih se lahko stroški, ki običajno nastanejo za klice podpore, prekličejo, če strokovnjak za tehnično podporo za Microsoft Dynamics in sorodne izdelke ugotovi, da bo določena posodobitev odpravila vašo težavo. Običajni stroški podpore bodo veljali za dodatna vprašanja o podpori in težave, ki ne izpolnjujejo pogojev za določeno zadevno posodobitev.

Ta sprotni popravek bo predvidoma vključen v servisni paket SP2 za Microsoft Dynamics AX 2009.

Informacije o namestitvi

Preden namestite ta sprotni popravek, preverite, ali so uporabniki odjemalca Microsoft Dynamics AX odjavljeni iz sistema. Pri uvedbi tega sprotnega popravka bi morali biti edini uporabnik odjemalca, ki je prijavljen.

Če želite izvesti ta sprotni popravek, morate imeti licenco za razvijalce.

Opomba Priporočamo, da je uporabniški račun v oknu »Prijave v sistem Windows« ali v oknu »Prijave v zbirko podatkov« član skupine »Skrbniški uporabniki« v storitvi Microsoft Dynamics AX.

Spremembe kode

Microsoft ponuja primere programiranja samo za ponazoritev, brez izrecnega ali implicitnega jamstva. To vključuje, vendar ni omejeno na, implicitna jamstva primernosti za prodajo ali primernost za določen namen. V tem članku je predvideno, da ste seznanjeni s programskim jezikom, ki je prikazan, in z orodji, ki se uporabljajo za ustvarjanje in odpravljanje napak v postopkih. Microsoftovi inženirji za podporo vam lahko pomagajo razložiti funkcionalnost določenega postopka. Vendar pa teh primerov ne bodo spremenili, da bi zagotovili dodatno funkcionalnost ali oblikovali postopke, ki bodo ustrezali vašim specifičnim zahtevam. Popravke kode vedno preskusite v nadzorovanem okolju, preden jih uporabite v proizvodnih računalnikih.

Če želite uporabiti ta sprotni popravek, sledite tem korakom:

  1. Spremenite kodo v metodi datasourceWritePre v razredu ProdJournalFormTransRoute, kot sledi:
    Obstoječa koda

    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();
    }
    
    

    Nadomestna koda

    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();
    }
    
    
  2. Spremenite kodo v metodi fieldModifiedProdReportFinishedPost v razredu ProdJournalFormTransRoute, kot sledi:
    Obstoječa koda

    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();
    }
    
    

    Nadomestna koda

    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();
    }
    
    
  3. Spremenite kodo v metodi enableFieldsActive v obrazcu ProdJournalTransRoute, kot sledi:
    Obstoječa koda

    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());
    }
    
    

    Nadomestna koda

    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);
                }
            }
        }
    
    }
    
    
  4. Spremenite vrednost lastnosti predmeta vira podatkov InventDim v obrazcu ProdJournalTransRoute, kot sledi:

    • Spremenite vrednost lastnosti LinkType v InnerJoin.
    • Spremenite vrednost lastnosti »DelayActive « na Ne.
  5. V predmet »\Forms\ProdJournalTransRoute\DataSources\InventDim\Methods\ validateWrite« dodajte to kodo.

    public boolean validateWrite()
    {
        boolean ret;
        ;
        if (inventDim.inventDimId == InventDim::inventDimIdBlank())
            return true;
        ret = super();
    
        return ret;
    }
    
    
  6. Spremenite kodo v predmetu »\Forms\ProdJournalTransRoute\DataSources\InventDim\Methods\ write« na naslednji način:
    Obstoječa koda

    void write()
    {
        ;
        prodJournalRoute_ds.write();
    }
    
    

    Nadomestna koda

    void write()
    {
        ;
        prodJournalRoute_ds.write();
    
        // Add the following line.
        element.enableFieldsActive();
    
    }
    
    
  7. Spremenite kodo v razdelku »\Forms\ProdJournalTransRoute\DataSources\ProdJournalRoute\Methods\active«, kot sledi:
    Obstoječa koda

    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;
    }
    
    

    Nadomestna koda

    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;
    }
    
    
  8. Spremenite kodo v metodi enableFieldsActive v obrazcu ProdJournalTransJob na naslednji način:
    Obstoječa koda

    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());
    }
    
    

    Nadomestna koda

    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);
                }
            }
        }
    
    }
    
    
  9. Spremenite vrednost lastnosti predmeta InventDim Data Source v obrazcu ProdJournalTransJob na naslednji način:

    • Spremenite vrednost lastnosti LinkType v InnerJoin.
    • Spremenite vrednost lastnosti »DelayActive « na Ne.
  10. V predmet »\Forms\ProdJournalTransJob\DataSources\InventDim\Methods\ validateWrite« dodajte naslednjo kodo.

    public boolean validateWrite()
    {
        boolean ret;
        ;
        if (inventDim.inventDimId == InventDim::inventDimIdBlank())
            return true;
        ret = super();
    
        return ret;
    }
    
    
  11. Spremenite kodo v predmetu »\Forms\ProdJournalTransJob\DataSources\InventDim\Methods\ write«, kot sledi:
    Obstoječa koda

    void write()
    {
        ;
        prodJournalRoute_ds.write();
    }
    
    

    Nadomestna koda

    void write()
    {
        ;
        prodJournalRoute_ds.write();
    
        // Add the following line.
        element.enableFieldsActive();
    
    }
    
    
  12. Kodo v razdelku »\Forms\ProdJournalTransJob\DataSources\ProdJournalRoute\Methods\active« spremenite na naslednji način:
    Obstoječa koda

    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;
    }
    
    

    Nadomestna koda

    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;
    }
    
    
  13. Spremenite kodo v metodi vstavljanja v tabeli »ProdJournalRoute«, kot sledi:
    Obstoječa koda

    void insert()
    {
        ttsbegin;
    
        if (! this.LineNum)
            this.LineNum = ProdJournalRoute::lastLineNum(this.JournalId) + 1;
    
        if (this.OprFinished)
            this.JobFinished = NoYes::Yes;
    
        this.updateRouteConstantRelease();
    
        super();
    
        ttscommit;
    }
    
    

    Nadomestna koda

    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;
    }
    
    
  14. Spremenite kodo v metodi initValue v tabeli ProdJournalRoute, kot sledi:
    Obstoječa koda

    void initValue()
    {
        super();
    
        this.TransDate= systemdateget();
    
    }
    
    

    Nadomestna koda

    void initValue()
    {
        super();
    
        this.TransDate= systemdateget();
    
        // Add the following line.
        this.ProdInventDimId = InventDim::inventDimIdBlank();
    
    }
    
    

Pogoji

Za uporabo tega sprotnega popravka niso potrebni nobeni pogoji.

Zahteve glede ponovnega zagona

Ko uporabite ta sprotni popravek, vam ni treba znova zagnati računalnika.

Stanje

Microsoft je potrdil, da gre za težavo v Microsoftovih izdelkih, ki so navedeni v razdelku »Velja za«.

MICROSOFT IN/ALI NJEGOVI DOBAVITELJI NE DAJEJO NOBENIH ZAGOTOVIL ALI JAMSTEV GLEDE PRIMERNOSTI, ZANESLJIVOSTI ALI TOČNOSTI INFORMACIJ, KI SO VSEBOVANE V DOKUMENTIH IN POVEZANIH GRAFIKAH, OBJAVLJENIH NA TEM SPLETNEM MESTU (»GRADIVO«), ZA KAKRŠEN KOLI NAMEN.

GRADIVO LAHKO VSEBUJE TEHNIČNE NETOČNOSTI ALI TIPOGRAFSKE NAPAKE IN JIH JE MOGOČE KADAR KOLI PREGLEDATI BREZ PREDHODNEGA OBVESTILA. V NAJVEČJEM OBSEGU, KI GA DOVOLJUJE UPOŠTEVNA ZAKONODAJA, MICROSOFT IN/ALI NJEGOVI DOBAVITELJI ZAVRAČAJO IN IZKLJUČUJEJO VSA ZAGOTOVILA, JAMSTVA IN POGOJE, IZRECNE, IMPLICITNE ALI ZAKONSKE, VKLJUČNO Z ZAGOTOVILI, JAMSTVI ALI POGOJI LASTNIŠTVA, NEKRŠITVE, ZADOVOLJIVEGA STANJA ALI KAKOVOSTI, PRIMERNOSTI ZA PRODAJO IN PRIMERNOSTI ZA DOLOČEN NAMEN V ZVEZI Z GRADIVI, VENDAR NE OMEJENO NANJE.