0

ax 2012 rtm から ax 2012 r2 へのインプレース アップグレードを完了しました

しかし、現在、注文書を確認しようとすると、以下の例外が発生します

コード実行エラー: 変数の割り当てで引数の型が正しくありません。

スタックトレース

(S)\Classes\FormLetterContract\unpack - line 8

(S)\Classes\PurchFormLetterContract\unpack - line 13

(S)\Classes\SysOperationDataContractInfo\unpackDataContractObject - line 21

(S)\Classes\SysOperationController\unpackDataContractInfoObjects - line 34

(S)\Classes\SysOperationController\unpack - line 70

(S)\Classes\SysOperationServiceController\unpack - line 15

(S)\Classes\PurchFormLetter\unpack - line 10

(S)\Classes\PurchFormLetter_PurchOrder\unpack - line 73

(S)\Classes\xSysLastValue\getLast - line 29

(S)\Classes\SysOperationController\loadFromSysLastValue - line 29

(S)\Classes\SysOperationController\getDataContractInfoObjects - line 10

(S)\Classes\SysOperationController\getDataContractInfoObject - line 17

(S)\Classes\SysOperationController\getDataContractObject - line 18

(S)\Classes\FormLetterServiceController\init - line 3

(S)\Classes\PurchFormLetter_PurchOrder\init - line 3

(S)\Classes\PurchFormLetter_PurchOrder\newPurchOrder - line 7

(S)\Classes\PurchFormLetter\construct - line 11

(S)\Classes\PurchFormLetter\mainOnServer - line 46

(C)\Classes\PurchFormLetter\main - line 50

(C)\Classes\FormFunctionButtonControl\Clicked

私はそれをデバッグしようとしましたが、[バージョン、#ParmListFormLetter] = _packedClass; で例外が発生するこの時点に到達しました。FormLetterContract で

xppil をクリアしようとしました。完全なコンパイルと CIL の生成と同期辞書を実行しましたが、エラーがまだ表示されます。スタック トレースでクラスのカスタマイズもチェックしましたが、それらはすべて sys レイヤーであり、カスタマイズされていません。

public boolean  unpack(container  _packedClass)
{
    Integer  version = conPeek(_packedClass,1);

    switch (version)
    {
        case #CurrentVersion:
            [version, #ParmListFormLetter] = _packedClass;
            break;
        default :
            return false;
    }

    return true;
}

これについて何かアドバイスをいただけないでしょうか

4

1 に答える 1

0

あなたが提示したコードを見るだけで、2012 RTM からのこれらのクラスの変更についての知識がなければ、次のことを行います。

  1. #ParmListFormLetter マクロで指定されたパラメーター リスト (FormLetterContract クラス宣言にある) が、_packedClass を介して入ってくるパラメーター リストと一致することを確認してください。異なる場合は、CurrentVersion マクロで指定されたバージョン番号を変更する必要があります。次に、コード内のスイッチの既定のケースの違いに対するカスタム ハンドラーを記述します。

  2. FormLetterContract を前方にコンパイルしてみてください。AOT からクラス ノードを右クリックし、[アドイン] > [前方コンパイル] に移動します。これにより、継承関連のタイプの問題が解決されます。あなたが説明したエラーを経験したのは、コンパイルフォワードだけで解決できました。

于 2014-08-12T20:41:19.853 に答える