1.仕訳データ(XJ_hhhh.txt)の作成 | |||
1. | 「勘定奉行」から仕訳データをエクスポートする | ||
ファイルは「rar」形式で出力される | |||
2. | ファイルを解凍し、カンマ区切りのテキストデータに戻す | ||
この時点では、各データの前後に""が付いている | |||
3. | ファイルをEXCELで開き、摘要欄のカンマを削除し、CSV形式で保存する | ||
CSV形式で保存することで、データに付いている""が削除される | |||
「,」を「nil」に置き換えることでカンマを削除できる | |||
利用する項目にカンマが含まれていないか確認する | |||
4. | 再度ファイルをEXCELで開き、会計日の列を選択後、形式をユーザ定義の「yyyymmdd」にする | ||
5. | 不要な行や列を削除、必要な列を追加し、CSV形式で保存し、拡張子を「txt」に変更する | ||
不要な列を削除後、先頭行の[項目名」を削除する | |||
なお、「項目名」は後で仕訳定義ファイル作成時の参考になるので、メモ帳などに複写しておく | |||
必要な列として「経過月」がある、この他に予備の列を追加しておいてもよい | |||
追加列はブランクのままでよい、「経過月」は「CalJM」スクリプトで自動計算が可能 | |||
6. | ファイル名を「XJ_hhhh.txt」に変更し、仕訳データを完成させる | ||
7. | 保存しておいた「項目名」を参考にして仕訳定義ファイル「DJ_hhhh.txt」を作成する | ||
「展開一番」で定義されている項目名以外にはユーザ定義の項目名を付ける | |||
例えば、借方勘定科目名には「J_U_DAName」など(「展開一番」では科目名は定義されていない) | |||
2.科目マスタ(YA_cc.txt)の作成 | |||
1. | 仕訳ファイルから科目Codeと科目名以外の列を削除する | ||
CSVエディタを利用して削除、貸借2列で計4列を残す | |||
2. | 貸方の2行を借方の下に移動し、科目名に含まれるスペースを削除し、別名で保存する | ||
スペースの削除は、エディタの置換機能を利用する | |||
3. | 重複データ(科目Codeと科目名が同じデータ)を削除する | ||
○ | EXCELを利用するときは以下のとおり | ||
データ→フィルター→フォルダオプションの設定→リスト範囲を指定(例、$A$1:$B$17844)し「重複レコードは無視する」にチェックを入れる→抽出された部分を複写し、別シートに貼り付ける→科目Code順にソート→CSV形式で保存して拡張子を「txt」にする | |||
○ | Rubyスクリプトで処理するときは以下のとおり | ||
Rubyには、配列内の重複するデータを削除する「uniq!」という便利なメソッドがある 重複するデータを取り除くスクリプトは以下のようになる __________________________________________ def メッソド名(fs,ft) sf=fs+".txt" tf=ft+".txt" z=Array.new i=0 s=open(sf) t=open(tf,"w") while x=s.gets do z[i]=x i=i+1 end z.uniq! z.sort! k=0 while z[k] do t.print z[k] k=k+1 end s.close t.close end __________________________________________ 引数の「fs」には2.で作成したファイル名を、「ft」には作成するファイル名を指定する 「ft」には、重複するデータを除いた科目Codeと科目名のリストが出力される |
|||
4. | 科目名が同じで科目Codeが異なるデータを抽出する(変更対象を特定する) | ||
この事例では、原価の費目と販管費の費目に同じ科目名を使用している(科目Codeは異なる) 「展開一番」では科目Codeが異なれば科目名が同じでも運用に支障は生じないが、紛らわしいので原価の費目には、例えば「通信費(製)」のように科目名の後ろに「(製)」を付けることにする |
|||
○ | EXCELを利用するときは以下のとおり | ||
科目名の列をソートし、該当するデータ(同じ科目名が並んでいるその科目名)を別シートに複写する | |||
この作業は、件数が少ないので手作業で行う | |||
○ | Rubyスクリプトで処理するときは以下のとおり | ||
3.で作成したファイルでは、データの並びが「科目Code,科目名」となっている、科目Codeは4バイトなので先頭から6バイト目を基準にこのデータを並び替えるスクリプトは以下のようになる __________________________________________ while x=s.gets do z[i]=x i=i+1 end z.sort!{|a,b| a[5,10] <=> b[5,10] } k=0 while z[k] do t.print z[k] k=k+1 end __________________________________________ メソッドの作成(def〜end)やファイルのオープン・クローズの処理部分は省略している、3.のスクリプトを参照のこと ここでのポイントは、sortメソッドの比較方法にブロック内のCodeを利用すること 作成されたファイルから、同じ科目名が並んでいる科目を特定する(件数が少ないので、手作業でメモを取る、プリントして印を付ける) |
|||
5. | 科目名を変更する | ||
4.で特定したデータのうち、原価の費目の科目名に「(製)」を追加する 件数が少ないので、手作業で修正するほうが効率的 Rubyスクリプトで処理しようとすれば、以下のようになる __________________________________________ while x=s.gets do y= x.split(/,/) i=y[0] if i=="6536" then y[1]="運賃(製)"+"\n" end ・・・(if〜endの繰り返し)・・・ j=y[0]+","+y[1] t.print j end __________________________________________ メソッドの作成(def〜end)やファイルのオープン・クローズの処理部分は省略している、3.のスクリプトを参照のこと |
|||
6. | 科目マスタを作成する | ||
仕訳から抽出できない科目(例えば、株主資本に属する科目など)は個別に追加する 科目Codeと科目名のリストに必要な属性を追加して科目マスタ「YA_cc.txt」を作成する 一般的な科目の属性を「科目Code,科目名」に付加し、後で必要部分を修正する方が効率的である Rubyスクリプトで処理しようとすれば、以下のようになる __________________________________________ AddString=",D,0,10" while x=s.gets do z0=x.chomp! z1=z0+AddString+"\n" t.print z1 end __________________________________________ メソッドの作成(def〜end)やファイルのオープン・クローズの処理部分は省略している、3.のスクリプトを参照のこと |
|||
Last Update 2013/08/17 | |