リスト画面からエクスポートしたExcelファイルに、データの過不足がある

Document created by Kosei_Oshita Employee on Jun 17, 2015Last modified by shunsuke_katakura on Mar 30, 2016
Version 2Show Document
  • View in full screen mode
文書番号JTEC000447
製品名Service Desk Manager
バージョン12.5, 12.6
OSWindows

 


 

◆ 質問

各種リスト画面にある[エクスポート]ボタンを押すことで、検索結果をExcelファイルとして保存することができますが、出力されたファイルを確認すると、一部のレコードが重複や欠落していることがあります。

 

◆ 回答

この問題は、次の2つの条件が重なると、発生する可能性があります。

 

  • NX.envで設定されたNX_EXPORT_FETCH_GROUP_SIZEの値よりも、エクスポートするレコード数が多い場合。
    尚、NX_EXPORT_FETCH_GROUP_SIZEの初期設定は、300です。
  • エクスポートするリストを、文字列を含む項目でソートしている場合

 

 

現時点では、修正モジュールを用意できておりませんが、回避策として2通りの方法があります。

 

回避策1. NX_EXPORT_FETCH_GROUP_SIZEの値を増やす

 

エクスポート対象のレコード数が、NX_EXPORT_FETCH_GROUP_SIZEよりも少ない場合には、問題は発生しません。 NX_EXPORT_FETCH_GROUP_SIZEは、大量のレコードを、指定された件数ごとに分割してエクスポートする設定となりますが、分割が発 生しないようにすることで、問題を回避します。

 

ただし、MDBを実装しているデータベースの仕様に基づき、クエリ長に制限が設けられていることがあるため、NX_EXPORT_FETCH_GROUP_SIZE に設定可能な値は、環境に依存します。

 

SDMがエクスポート可能なレコード数の上限は、NX_EXPORT_MAX_FETCH_ROWSで設定可能で、初期設定は、5000となっています が、必ずしも、NX_EXPORT_FETCH_GROUP_SIZE の値をNX_EXPORT_MAX_FETCH_ROWSの値まで、引き上げることができるわけではなく、検索時に指定された条件やカスタマイズの状況、 出力対象のテーブルや項目数など、環境やご利用形態に合わせて、調整する必要があります。

 

尚、エクスポートを実行した際、下記のメッセージが表示される場合は、上限を越えていますので、NX_EXPORT_FETCH_GROUP_SIZEの値を、より小さく設定してください。

036010110_001.jpg

NX.envファイルの編集内容を反映させるには、Service Deskのサービスを再起動する必要があります。

 

回避策2. std_list.jsをカスタマイズする

 

本来は、表示されているリストと同じソート順でエクスポートされますが、強制的にID順でエクスポートすることで、問題を回避します。 エクスポートするリストのソートは、必要に応じてExcelファイル上で行うことになります。
以下に、カスタマイズ手順を示します。

 

1. std_list.jsファイルをコピーします。

 

コピー元)NX_ROOT\bopcfg\www\wwwroot\scripts\std_list.js
コピー先)NX_ROOT\site\mods\www\wwwroot\scripts\std_list.js

 

2. コピーしたstd_list.jsの下記の箇所を編集します。

 

編集前)
if(typeof argListOrderBy=="string"&&argListOrderBy.length>0)
sort=argListOrderBy;
else if(typeof argCurSortKey=="string"&&argCurSortKey.length>0)
sort=argCurSortKey;
else if(typeof argListSortCol=="string"&&argCurSortKey.length>0)
sort=argListSortCol;

編集後)
sort="id";
// if(typeof argListOrderBy=="string"&&argListOrderBy.length>0)
// sort=argListOrderBy;
// else if(typeof argCurSortKey=="string"&&argCurSortKey.length>0)
// sort=argCurSortKey;
// else if(typeof argListSortCol=="string"&&argCurSortKey.length>0)
// sort=argListSortCol;

 

3. キャッシュをクリアします。

 

SDMサーバ側で、下記のコマンドを実行します。
> pdm_webcache -b
その後、クライアント側で、ブラウザのキャッシュをクリアします。

 

一般的なカスタマイズと同様、今後、変更したファイルを置き換えるパッチを適用する際には、パッチ適用後、再度カスタマイズを行う必要がありますので、ご留意ください。

Attachments

    Outcomes