Accedi con Microsoft
Accedi o crea un account.
Salve,
Seleziona un altro account.
Hai più account
Scegli l'account con cui vuoi accedere.

Articoli pubblicati forniscono rapidamente informazioni direttamente dall'interno dell'organizzazione di supporto Microsoft. Le informazioni contenute nel presente documento viene create in risposta agli argomenti emergenti o univoci oppure supplemento altre informazioni di Base.

Sintomi

Quando si fa nella finestra di dialogo Riepilogo schede cicli di lavorazione in Microsoft Dynamics AX 2009 e quindi scegliere il programma di installazione per aggiungere la colonna di configurazione nella scheda Panoramica , non verrà visualizzata la configurazione di una distinta base (BOM) correttamente nella finestra di dialogo Riepilogo schede cicli di lavorazione .

Causa

Questo problema si verifica perché Microsoft Dynamics AX non supporta che si aggiunge un'origine dati collegata ritardata a un controllo griglia.

Risoluzione

Informazioni sull'hotfix

Un hotfix supportato è ora disponibile da Microsoft. Tuttavia, è destinato esclusivamente alla risoluzione del problema descritto in questo articolo. Applicarlo solo ai sistemi in cui si verificano questo problema specifico. Questo hotfix potrebbe essere sottoposto ad ulteriori test. Pertanto, se il problema non causa gravi difficoltà, consiglia di attendere il prossimo service pack di Microsoft Dynamics AX 2009 o versione successiva contenente questo hotfix. Nota: In casi particolari, le spese normalmente addebitate per le chiamate potrebbero essere annullate qualora un aggiornamento del supporto tecnico di Microsoft Dynamics e prodotti correlati di supporto determina che uno specifico aggiornamento risolverà il problema. I costi di supporto normale verranno applicati per eventuali ulteriori domande e problemi che non dovessero rientrare nello specifico aggiornamento in questione.L'aggiornamento in questione verrà incluso in Service Pack 2 per Microsoft Dynamics AX 2009.

Informazioni sull'installazione

Prima di installare questo hotfix, verificare che gli utenti del client Microsoft Dynamics AX sono disconnessi dal sistema. Dovrebbe essere il solo l'utente client connesso quando si implementa questo hotfix. Per implementare questo hotfix, è necessario disporre di una licenza di sviluppatore.Nota È consigliabile che l'account utente nella finestra Login Windows o Login Database sia un membro del gruppo Administrators utente in Microsoft Dynamics AX.

Modifiche al codice

Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia espressa o implicita. Ciò include, ma non limitato a, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presuppone che si abbia familiarità con il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire la procedura di debug. Tecnici del supporto Microsoft consentono di spiegare la funzionalità di una particolare procedura. Tuttavia, essi non modificherà questi esempi per fornire funzionalità aggiuntive o creare procedure atte a soddisfare specifiche esigenze.Sempre il codice di test consente di correggere in un ambiente controllato prima di applicare le correzioni per i computer di produzione.Per applicare questo hotfix, attenersi alla seguente procedura:

  1. Modificare il codice nel metodo datasourceWritePre nella classe ProdJournalFormTransRoute come segue:codice esistente

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

    Codice di sostituzione

    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. Modificare il codice nel metodo fieldModifiedProdReportFinishedPost nella classe ProdJournalFormTransRoute come segue:codice esistente

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

    Codice di sostituzione

    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. Modificare il codice nel metodo enableFieldsActive nel modulo ProdJournalTransRoute come segue:codice esistente

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

    Codice di sostituzione

    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. Modificare il valore della proprietà dell'oggetto origine dati InventDim nel modulo ProdJournalTransRoute come segue:

    • Modificare il valore della proprietà LinkType in InnerJoin.

    • Modificare il valore della proprietà DelayActive su No.

  5. Aggiungere il seguente codice nell'oggetto "validateWrite \Forms\ProdJournalTransRoute\DataSources\InventDim\Methods\".

    public boolean validateWrite(){    boolean ret;    ;    if (inventDim.inventDimId == InventDim::inventDimIdBlank())        return true;    ret = super();        return ret;}
  6. Modificare il codice dell'oggetto "scrittura di \Forms\ProdJournalTransRoute\DataSources\InventDim\Methods\" come segue:codice esistente

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

    Codice di sostituzione

    void write(){    ;    prodJournalRoute_ds.write();    // Add the following line.    element.enableFieldsActive();}
  7. Modificare il codice di "\Forms\ProdJournalTransRoute\DataSources\ProdJournalRoute\Methods\active" come segue:codice esistente

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

    Codice di sostituzione

    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. Modificare il codice nel metodo enableFieldsActive nel modulo ProdJournalTransJob come segue:codice esistente

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

    Codice di sostituzione

    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. Modificare il valore della proprietà dell'oggetto origine dati InventDim nel modulo ProdJournalTransJob come segue:

    • Modificare il valore della proprietà LinkType in InnerJoin.

    • Modificare il valore della proprietà DelayActive su No.

  10. Aggiungere il seguente codice nell'oggetto "validateWrite \Forms\ProdJournalTransJob\DataSources\InventDim\Methods\".

    public boolean validateWrite(){    boolean ret;    ;    if (inventDim.inventDimId == InventDim::inventDimIdBlank())        return true;    ret = super();        return ret;}
  11. Modificare il codice dell'oggetto "scrittura di \Forms\ProdJournalTransJob\DataSources\InventDim\Methods\" come segue:codice esistente

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

    Codice di sostituzione

    void write(){    ;    prodJournalRoute_ds.write();    // Add the following line.    element.enableFieldsActive();}
  12. Modificare il codice di "\Forms\ProdJournalTransJob\DataSources\ProdJournalRoute\Methods\active" come segue:codice esistente

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

    Codice di sostituzione

    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. Modificare il codice nel metodo insert nella tabella ProdJournalRoute come segue:codice esistente

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

    Codice di sostituzione

    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. Modificare il codice nel metodo initValue nella tabella ProdJournalRoute come segue:codice esistente

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

    Codice di sostituzione

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

Requisiti

Per applicare questo hotfix è richiesto alcun prerequisito.

Richiesta di riavvio

Non è necessario riavviare il computer dopo avere applicato questo hotfix.

Stato

Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".

MICROSOFT E/O DEI SUOI FORNITORI NON RENDERE RILASCIA DICHIARAZIONI E GARANZIE RELATIVE ALL'IDONEITÀ, L'AFFIDABILITÀ O L'ESATTEZZA DELLE INFORMAZIONI CONTENUTE NEI DOCUMENTI E LE IMMAGINI RELATIVE PUBBLICATI SU QUESTO SITO WEB ("MATERIALI") PER QUALSIASI SCOPO. I MATERIALI POSSONO CONTENERE INESATTEZZE TECNICHE O ERRORI TIPOGRAFICI E POSSONO ESSERE MODIFICATI IN QUALSIASI MOMENTO SENZA PREAVVISO. NELLA MISURA MASSIMA CONSENTITA DALLA LEGGE APPLICABILE, MICROSOFT E/O SUOI FORNITORI NON RICONOSCONO ED ESCLUDERE TUTTE LE RAPPRESENTAZIONI, GARANZIE E CONDIZIONI SE, ESPLICITA O IMPLICITA, INCLUSE MA NON LIMITATI A RAPPRESENTAZIONI, GARANZIE, O CONDIZIONI DI TITOLO, CONDIZIONE SODDISFACENTE, DI NON VIOLAZIONE O QUALITÀ, COMMERCIABILITÀ E IDONEITÀ PER UNO SCOPO PARTICOLARE, PER QUANTO RIGUARDA I MATERIALI.

Serve aiuto?

Vuoi altre opzioni?

Esplorare i vantaggi dell'abbonamento e i corsi di formazione, scoprire come proteggere il dispositivo e molto altro ancora.

Le community aiutano a porre e a rispondere alle domande, a fornire feedback e ad ascoltare gli esperti con approfondite conoscenze.

Queste informazioni sono risultate utili?

Come valuti la qualità della lingua?
Cosa ha influito sulla tua esperienza?
Premendo Inviare, il tuo feedback verrà usato per migliorare i prodotti e i servizi Microsoft. L'amministratore IT potrà raccogliere questi dati. Informativa sulla privacy.

Grazie per il feedback!

×