2016年4月6日水曜日

[AX2012R*][TFS]AX2012R2でTFSを使う場合の注意 というかバグがある

検証:AX2012R2 CU8

Class\SysVersioinCtontrolWorkItemProviderTFSのclassDeclarationの#define.AssignedToMeQueryは内容がバグっているので修正しないとチェックイン画面の作業項目タブにTFSのタスクが表示されない。

このマクロの中の文字列のうち [System].[Work Item Type]を[System.WorkItemType] と変更するだけ。

直さないとgetItemsAssignedToMe()の下記でエラーが発生するがtry catchがされていないので何も起こっていないようにしかみえない。
workItems = workItemStoreProxy.ExecuteWorkItemQuery(#AssignedToMeQuery);

2015年12月7日月曜日

[AX2012][Dev]ビルトインのVCSの比較結果がおかしい

VCS上のバージョンとCus等のレイヤーにあるソースを比較した際に、変更していない要素(method、fieldなど)が差分として表示される。

VCS上は、変更のあった要素だけをxpoファイルで保有していて、それが変更していない要素が差分として表示される原因になっている模様。

CUSやUSRといったレイヤで標準のAOTオブジェクトを変更すると変更した要素のみがそのレイヤのオブジェクトして生成されるが、VCS上のソースとの比較はそのレイヤのAOTオブジェクトの全要素とVCS上のバージョンとなり、変更していない箇所も比較対象となって差分として表示されてします。

とりあえず、バージョン管理追加後の最初のチェックインの時には変更していない要素も含め、VCSに登録してほしいもんだ。

これはTeam Foundation ServerをVCSに使った場合も同じ。

[SQL Server]SQL Server各バージョン,Service Packのサポート期間





Tech TIPS: 一目で分かる、SQL Server 2005~2014とService Packのサポート終了時期

SQL Server 2012 SP1のサポートも終了していたか。。

2015年11月19日木曜日

[AX2012R*][BatchJob]Batch Jobのアクセス権について

Batch Jobのアクセス権は、
The job executes by using the permissions of the user who submitted the job.

Batch Processing Classes [AX 2012]

とある通り、Batch Jobを作成したユーザーの権限で実行される。
個人的にははビルトインのAdminで作成することを推奨。
あとから作成ユーザーが削除されたり、無効化されたりすると実行中から終わらなくなる。

2015年10月13日火曜日

[AX2012][Dev][URLメモ]X++でTableオブジェクトを作るコード

X++でTableオブジェクトを作るコード
下記ブログに記載されている。

Create table in AX through X++ | MS Dynamics AX - Technical

ExcelマクロでTableオブジェクト作るマクロ作ってたりする案件もあったが、定義書フォーマットを食わせてAX上で直接作ってしまえばいいのではないかと思ったりもする。

2015年8月21日金曜日

[AX2012][Dev] クラスから既存のFormの操作を実行する方法

カスタムクラスからFormを表示しないで、既存のFormの操作を実行する方法

この処理は主にフォームで入力してデータを作成する流れをトレースしてデータを作成したい場合に有効(だと思う)。

大まかな流れ
  1. Args クラスを使って対象Formを呼び出すのに必要なパラメーターを設定する
  2. FormRun クラスをnewする際に1で用意したargsを渡す。
  3. インスタンス化したFormRunでデータの作成に必要なFormのメソッドを実行していく。

具体例

Args        xargs;
FormRun  xFRun;

xargs = new Args( fromStr(formName) );
xargs.parmEnumType( enumNum(enumName) );
xargs.parmEnum(xargs.ParmEnum() );

xFRun = new FormRun(xargs);
xFRun.init();

xFRun.dataSource().create();

xFrun.dataSource().object( fieldNum(TableName, FieldName) ).setValue(value);
xFrun.dataSource().object( fieldNum(TableName, FieldName) ).modified();

ちなみにForm操作中にロックの掛かる仕訳帳明細行系画面は、操作中はロックされるので、
操作のあとxFRun.close()でformRunオブジェクトを閉じて、ロックを解除するのを忘れずに。

2015年4月30日木曜日

【SQL Server 】【SQL】select statementをDirty readで実行する

AXでdebug中にトランザクション内のレコードをSSMSで読もうとしても普通のSelect statementだと取得できないので、NOLOCKヒントを使う。

select
....
from tableA with(NOLOCK)

これでコミットされていないレコードが読める。