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)

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

2015年4月27日月曜日

【AX2012】【開発】トランザクションIDの取得

AXでTableに自動的に設定されているTransactionId(createdTransactionId, modifiedTransactionId)の取得方法のメモ

 xApplication.curTransactionId()で取得できる。

コードは、ttsBegin, ttsCommit の間でグローバル変数 appl.curTransactionId()で取得できる。

xApplication class[AX2012] msdn


2015年3月17日火曜日

【AX2012R2】AOTのウインドウを操作するミーボードショートカットキー

AOTのウインドウを操作するミーボードショートカットキーが下記のリンク先のブログで紹介されています。

http://blogs.msdn.com/b/david_kidder/archive/2012/05/04/ax-window-management-tips.aspx

個人的にはIDEとしてのAOTが使いづら過ぎて、特にウインドウの切り替えがやりづらいとおもっていました。これで幾分ましになりました。

【AX2012R2】VCSに追加されていないAOTオブジェクトを検出する方法の紹介

VCSに追加されていないAOTオブジェクトを検出する方法が下記にサンプルコードとともに紹介されています。
内容は十分なもので、細かいところは自分で変えればいいと思います。

http://blog.slcconsulting.us/2013/05/objects-not-in-version-control-ax-2012/


2015年2月26日木曜日

[Remote Desktop Services]RD接続して期限切れのパスワードを変更可能にするための設定

対象:Remote Desktop Servicesを実行しているWindows Server

やること
・グループポリシーエディタを開いて、管理用テンプレート>リモートデスクトップサービス>リモートデスクトップセッションホスト>セキュリティ
「リモート接続にネットワーク レベル認証を使用したユーザー認証を必要とする」を無効にする。

こうするとRD接続でOSのログインまで到達するのでパスワード変更ができるようになる。

RemoteAppでもOK.


参考:https://support.microsoft.com/kb/2858371/ja?wa=wsignin1.0