プロジェクト集計 40 |
![]() |
|
プロジェクト集計については、個別問題の「プロジェクト管理」を最初にお読み下さい スクリプトは、「#---」で挟まれた部分です(「#」以降は、Rubyではコメントとして処理されます) スクリプト先頭の番号(1:など)は、説明のためのもので、実際には記述しません 最初に、プロジェクト別に費用を集計する方法「1.プロジェクト集計」を説明します 仕訳にプロジェクト番号を付していることが前提となります、プロジェクト番号を入力するのタグは、二科目仕訳のときは「J_DP」「J_CP」、一科目仕訳のときは「J_XP」です プロジェクト集計では複数のプロジェクトを一括して処理する場合があります、プロジェクト集計のために「展開一番」スクリプトを順次実行するだけでなく、その一連のスクリプトを繰返し実行する場合の例として、「2.プロジェクト一括集計」「3.プロジェクト別科目別一覧表」を紹介します プロジェクトを一括して処理するためには「プロジェクトリスト」ファイルを使用します 「プロジェクトリスト」のファイル名−「LPJ_hhhh」(hhhh:法人番号)−は既定で、プロジェクトCodeを「from」「to」の形式で記述します、「プロジェクトリスト」ファイルは個別ファイルのフォルダに置きます プロジェクトリストの記載例 #--------------------------- 100,100 110,110 100,199 (以下、略) #--------------------------- プロジェクトを一括処理するとき、この(ユーザスクリプトの)例では、プロジェクトの集計期間は、基本マスタの「開始会計日」「終了会計日」から取得するようにしているので、当該項目に適切な値(会計日)をセットして運用することに留意してください 「展開一番」スクリプトを繰り返し処理するユーザスクリプトの書き方の基本は、「ユーザスクリプト」「ユーザスクリプトの作成」に説明してあります、参考にしてください |
||
1.プロジェクト集計 |
||
#--------------------- 1:「展開一番」のスクリプトを利用するためのおまじない |
||
2.プロジェクト一括集計 |
||
#------------------------------- _1:def p_Prj_LK() _2:require "t1" _3:require "t1_GC" _4:GetProfileData() _5:kf=$pathX+"XK_"+$hhhh+".txt" _6:k=open(kf) _7:while x=k.gets do _8:y=x.split(/,/) _9:if y[0]=="K_fDate" then 10:$fDate=y[1].chomp 11:end 12:if y[0]=="K_tDate" then 13:$tDate=y[1].chomp 14:end 15:end 16:k.close 17:Sel9MA1XJ2WXJ_SetV("m","J_Date",$fDate,$tDate) 18:listPrj=$pathX+"LPJ_"+$hhhh+".txt" 19:lprj=open(listPrj) 20:while x=lprj.gets do 21:y=x.split(/,/) 22:$CodeS=y[0] 23:$CodeE=y[1].chomp 24:Sum7JAmt1WXJ2ZLT("J_P",$CodeS,$CodeE) 25:end 26:lprj.close 27:end 28:p_Prj_LK() #------------------------------- 1:から27:までがプログラム(ユーザ定義のメソッド)であり、def以下のp_Prj_LKがその名前になります 28:でこれを実行(詳細はユーザスクリプトの実行−間接法を参照のこと) 2:と3:は「展開一番」を利用するためのおまじない 4:でプロファイルのデータを取得し、5:と6:で基本マスタをオープンする 7:から15:で基本マスタからK_fDate・K_tDateタグの値を読み出し、グローバル変数$fDate・$tDateにその値を格納する 16:で基本マスタをクローズし 17:でグローバル変数$fDate・$tDateを利用し、集計期間の仕訳を仕訳ファイルから切り出す 18:と19:でプロジェクトリストを開き 20:から25:で、プロジェクトリストの値(プロジェクトCode)がなくなるまで、プロジェクト集計のスクリプトを繰り返し実行する 20:でプロジェクトリストの行データを読み込み、21:でこれをカンマをキーにフィールド単位に分割し 22:で最初のフィールドの値をグローバル変数$CodeSに代入、23:で二番目のフィールドの値をグローバル変数$CodeEに代入する、なお「chomp」は、二番目のフィールドの値(文字列)に付いている改行Codeを削除するメソッド 24:でグローバル変数をパラメタに代入し、Sum7JAmt1WXJ2ZLTスクリプトを実行する 26:でプロジェクトリストをクローズする |
||
3.プロジェクト別科目別一覧表 |
||
#----------------------------------------------------------- _1:def p_Prj_TB() _2:$ACCodeS=6201 _3:$ACCodeE=7999 _4:require "t1" _5:require "t1_GC" _6:GetProfileData() _7:kf=$pathX+"XK_"+$hhhh+".txt" _8:k=open(kf) _9:while x=k.gets do 10:y=x.split(/,/) 11:if y[0]=="K_fDate" then 12:$fDate=y[1].chomp 13:end 14:if y[0]=="K_tDate" then 15:$tDate=y[1].chomp 16:end 17:end 18:k.close 19:listPrj=$pathX+"LPJ_"+$hhhh+".txt" 20:lprj=open(listPrj) 21:i=1 22:MkF1YA2ZWS(20) 23:while x=lprj.gets do 24:y=x.split(/,/) 25:$CodeS=y[0] 26:$CodeE=y[1].chomp 27:MkF1YA2ZTB() 28:Sel9MA1XJ2WXJ_SetV("m","J_Date",$fDate,$tDate) 29:Sel12WXJ("J_P",$CodeS,$CodeE) 30:MkF1WXJ2WSumDC() 31:Pst1WSumDC2ZTB(1,0) 32:Cal7Bal12ZTB(6) 33:Bal7CgF12ZTB() 34:Pst1ZTB2ZWS($ACCodeS,$ACCodeE,9,i) 35:i=i+1 36:end 37:end 38:p_Prj_TB() #----------------------------------------------------------- 1:から37:までがプログラム(ユーザ定義のメソッド)であり、def以下のp_Prj_TBがその名前になる 38:でこれを実行(詳細はユーザスクリプトの実行−間接法を参照のこと) 2:と3:は後述 4:〜6:は「展開一番」を利用するためのおまじない 7:〜18:は基本マスタからプロジェクト集計期間を取り出す処理、「2.プロジェクト一括処理」と同じなので説明は省略 19:で「プロジェクトリスト」ファイル名を作成し、20:でこれをオープンする 21:で変数i(列ポインタ)に1を代入 22:で空のワークシートファイルを作成する、ここでは金額欄として20列を指定(20のプロジェクトを処理する予定)している 23:から36:までで繰り返し処理を行う 23:で「プロジェクトリスト」の行を読み込み、24:でこれをカンマをキーにフィールド単位に分割し、25:と26:でその値(プロジェクトCode)をグローバル変数に代入する 27:で科目マスタから空の試算表ファイルを作成し 28:で、仕訳ファイルから12:と15で取得した集計期間の仕訳を抽出し、29:でさらにその中から25:と26:で取得したプロジェクトの仕訳を抽出する 30:から33:で上記抽出仕訳の発生額を集計し、試算表ファイルの期間発生額欄に転記し、繰越残高を計算する 34:で試算表ファイルから、2:と3:で指定した科目(Code)範囲の繰越残高の金額をワークシートのi列に転記する 35:で次の処理のために列ポインタiを1つ増加させる 36:で23:に戻り、「プロジェクトリスト」のデータがなくなるまで上記の処理を繰り返す ワークシートファイルに、プロジェクト別に科目別発生額が記録されるので、後は、アウトプット処理で、整形します |
||
Last Update 2022/03/22 |
||