レポートは、プロジェクトのライフサイクル全体を通して行う最も重要なことの 1 つです。 ご存知のように、私はさまざまな表現(2D、3D、4D)で持っているデータの完全なセットを活用して、より直感的な方法で情報を表現するという非常に大きな支持者です。 これにより、さまざまな関係者との情報伝達が大幅に迅速に行えます。 これらの没入型レポートの多くは、3Dモデルと現代の視覚化を使用して、重要な情報を非常に明確かつ簡潔に伝えるためにブログを書きました。 しかし、従来の2Dレポートを生成し続ける必要性を十分に理解し、尊重しています。
私が訪問したすべての企業は、情報を伝え、報告するためにユニークな方法を使用してきました。 共通のテーマの 1 つは、ほとんどの場合、Excel を使用して展開するということです。 まず、Excel テンプレートを作成し、ライブ プロジェクトのデータを手動または半手動のワークフローに入力します。 このブログ記事では、会社の標準 Excel テンプレートを使用して、ユーザーまたは組織内のだれもが最新のレポートを生成する方法について説明します。 これにより、Excel レポートとその親しみやすさを組織全体で引き続き活用できます。 また、3 分未満の労力で、誰でも (もはやエンジニアリング機能を使用しない) これらのレポートを生成することもできます。
概要
YouTube にアクセスできない方は こちら
エンタープライズプラットフォーム 2016 R2 では、特定の Excel テンプレート ソース タブに、ShipConstructor MIM から事実上すべての情報を読み込む機能を追加しました。 これにより、Excel の機能を使用して、現在会社で使用している非常に豊富で従来のレポートを作成できます。
上の画像を参照すると、[ ソース ] タブは PublisherLT によって自動的に設定される情報です。 その他のすべてのタブには、ソースタブに含まれるデータによって情報が制御されるレポートがあります。 つまり、[ソース] タブのデータが更新されると、レポートに変更内容が自動的に反映され、更新されます。
生成できるレポートの数や使用できる Excel テンプレートには制限がありません。 現在のユーザーが使用しているベスト プラクティスは、ジョブ機能ごとに特定のテンプレートを持つ方法です。 たとえば、体重エンジニア、詳細プランナー、購入者、プロジェクトマネージャ、各種マネージャー、エンジニアリングマネージャー、VP、QC /QA、溶接エンジニアなどは、独自のExcelテンプレートを持つことになります。 これらのレポートの一部には間違いなく重複がありますが、最も良く機能している目標は、Excel テンプレートを特定の職務に集中させることです。
多くの Excel テンプレートを使用する利点は、変更および変更を許可するユーザーの責任が明確に示される点です。 テンプレートはネットワーク上のどこにでも存在でき、個人や 1 つの部署でテンプレートを管理できます。 PublisherLT を使用してレポートを生成する場合、常に最新バージョンのテンプレートが使用され、テンプレートをチームに簡単かつ中断のない状態でプッシュできます。
セットアップのワークフロー
まず、プロジェクトを設定して Excel テンプレートを生成します。 添付パッケージには、レポートを迅速に生成するために、いくつかのExcelテンプレートやその他のファイルが含まれています。 私が提供したテンプレートと EnterprisePlatform の操作では、会社の標準をサポートするように変更する必要があります。ただし、Excel テンプレートを使用したレポートの生成に慣れる必要があります。
私のパッケージには、4つのExcelテンプレートレポートが含まれています。
- 部品レポート
- プロファイル切断レポート
- アセンブリレポート
- 溶接レポート
プロジェクトの設定方法がわからないため、すべてのプロジェクトが動作するわけではありません。 たとえば、WeldManagement を使用しない場合や、プロファイルのネストを行う場合、これらのレポートから結果を取得することはできません。
プロジェクトの設定方法とレポートの生成ビデオ
YouTube にアクセスできない方は こちら
プロジェクトの設定方法
- この記事に含まれるパッケージを解凍(以下)
- プロジェクトのルート フォルダーにエンタープライズ プラットフォーム フォルダーをコピーします。
- 操作.xml を c にコピーします。
- 変更された operations.xml ファイルがある場合は 、「PublisherLT 操作 」セクションの手順に従う必要があります。
- シップコンストラクター プロジェクトでマネージャーを開く
- シップコンストラクター 2016 R2 BOM.xml をインポート
それはあなたのプロジェクトを設定するためにかなりです.:)
レポートの生成方法
- パブリッシャー LT を開く
- プロジェクトに接続する
- レポートを生成するフォルダを設定する
- ロード管理の選択 r
- 読み込み条件 XML の選択
- 添付パッケージ内のファイルエンタープライズプラットフォーム\オートメーション\レポート\AllPartsInProject.xml を選択します。
- ロード マネージャの選択
- 読み込み条件 XML の選択
- 添付パッケージ内のエンタープライズ プラットフォーム\オートメーション\レポート\AllPrimaryAssemblyies.xml ファイルを選択します
- ロード マネージャの選択
- 読み込み条件 XML の選択
- 添付パッケージ内のエンタープライズプラットフォーム\オートメーション\レポート\AllWeldsInProject.xml ファイルを選択します。
- インポートの選択
- 添付パッケージ内のエンタープライズ プラットフォーム\オートメーション\レポート\GenerateReports_Workpackage.xml ファイルを選択します
- [実行]をクリックします。
その他の注意事項
生成するレポートは PowerPivot を使用します。 PowerPivot をお持ちでない場合は、作成したレポートの大半を表示できません。
独自のレポートを最初から作成できます。しかし、私が提供したものをベースとして使用したい場合は、次のことをお勧めします。
- 上記の手順に従ってプロジェクトを設定します。
- プロジェクトの BOM に変更を加えます。 必要な属性を追加または削除できます。
- 上記の手順に従ってレポートを生成します。
- これは、プロジェクト情報と BOM に対して行った変更が含まれるようにするためです。 これにより、新しいテンプレートを作成する際に簡単に作業できます。
- 生成されたレポートを開きます。
- Excel レポートに変更を加えます。
- タブを削除します。
- 新しいタブを作成します。
- ただ、ソースタブを変更したり削除したりしないでください。
- 新しいテンプレートを、前のテンプレートとまったく同じ名前で EnterprisePlatform\Report\ フォルダーに保存します。
パブリッシャーLTオペレーション
独自の操作で operations.xml ファイルを変更 していない 場合は、添付パッケージで提供されたファイルを c:\users\Username\AppData\Roaming\SSI\EnterprisePlatform 2016 R2\にコピーするだけです。
operations.xml ファイルを変更した場合は、以下の 2 つのテキストセットを挿入して operations.xml ファイルを編集する必要があります。
1. < グローバル/グローバル間のコードの下 > < のコピー>
<define name="PrimaryPHList">{Primary}</define> <!-- ${PrimaryPHList} -->
<define name="PrimaryPH">PRIMARY</define> <!-- ${PrimaryPH} -->
<define name="WFWeldBOMFull">Waveform Weld Full</define> <!-- ${WFWeldBOMFull} -->
<define name="WFAssemblyBOMFull">Waveform Assembly Full</define> <!-- ${WFAssemblyBOMFull} -->
<define name="WFPartBOMFull">Waveform Part Full</define> <!-- ${WFPartBOMFull} -->
<define name="WFProfileCuttingBOM">Waveform Profile Cutting</define> <!-- ${WFProfileCuttingBOM} -->
2. < 一般的なグループ操作 > < / > 一般グループ操作間のコードの下にコピー
<!--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-->
<!--Weld Properties to TSV, CSV or XML-->
<!--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-->
<operation id="Waveform Weld Report" appliesto="welds">
<define name="operation.timeout">
<invoke function="GetOperationTimeout">
<property name="list.ids" />
<int>2</int>
<property name="default.startup.timeout" />
</invoke>
</define>
<define name="WeldReportFolder"><pathcombine><property name="rootdir"/><string>WeldReport</string></pathcombine></define>
<makedir>${WeldReportFolder}</makedir>
<!-- Weld Information -->
<define name="WeldTSVFilename">Welds.tsv</define>
<define name="WeldFullFilename"><pathcombine><property name="WeldReportFolder" /><property name="WeldTSVFilename" /></pathcombine></define>
<scon timeoutinsec="${operation.timeout}">EPEXPORTWELDPROPERTIES ${list.ids} "${WFWeldBOMFull}" "" "${WeldReportFolder}" ${WeldTSVFilename}</scon>
<!-- Assembly Information -->
<define name="AssemblyFilename">Assembly.tsv</define>
<define name="AssemblyFullFilename"><pathcombine><property name="WeldReportFolder" /><property name="AssemblyFilename" /></pathcombine></define>
<scon timeoutinsec="${operation.timeout}">EPEXPORTASSEMBLYPROPERTIESFROMPH "${PrimaryPH}" "${WFAssemblyBOMFull}" "" "${WeldReportFolder}" ${AssemblyFilename}</scon>
<!-- Combine -->
<define name="joinKeyColumn">AssemblyGUID</define>
<define name="baseKeyColumn">AssemblyGUID</define>
<define name="WeldTSVReportFilename">WeldReport.tsv</define>
<define name="WeldReportTSVFullFilename"><pathcombine><property name="WeldReportFolder" /><property name="WeldTSVReportFilename" /></pathcombine></define>
<scon timeoutinsec="${operation.timeout}">EPJOINDATA "${WeldFullFilename}" "${AssemblyFullFilename}" "${baseKeyColumn}" "${joinKeyColumn}" "${WeldReportFolder}" ${WeldTSVReportFilename}</scon>
<!-- Copy Weld Template -->
<define name="WeldTemplate"><pathcombine><property name="projectdirectory"/><string>EnterprisePlatform</string><string>Reports</string><string>WeldReports</string><string>WeldReportTemplate.xlsx</string></pathcombine></define>
<define name="WeldReport">WeldReport.xlsx</define>
<define name="WeldReportFullName"><pathcombine><property name="WeldReportFolder" /><property name="WeldReport" /></pathcombine></define>
<if>
<test><fileexists>${WeldTemplate}</fileexists></test>
<iftrue>
<copyfile sourcefile="${WeldTemplate}" destinationfolder="${WeldReportFolder}" newfilename="${WeldReport}" overwrite="true"/>
<log>copyfile sourcefile: "${WeldTemplate}" destinationfolder:"${WeldReportFolder}" newfilename:"${WeldReport}"</log>
</iftrue>
<iffalse>
<log>DID NOT COPY TEMPLATE copyfile sourcefile: "${WeldTemplate}" destinationfolder:"${WeldReportFolder}" newfilename:"${WeldReport}"</log>
</iffalse>
</if>
<excelimporttotable workbook="${WeldReportFullName}" sheetname="Source">${WeldReportTSVFullFilename}</excelimporttotable>
<associate inputitems="${list.ids}">${WeldReportFullName}</associate>
</operation>
<!--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-->
<!--Part Properties to TSV, CSV or XML-->
<!-- Need to change Product Hierarchy Name to one that exists in project. Default: PRIMARY -->
<!--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-->
<operation id="Waveform Part Report" appliesto="parts">
<define name="operation.timeout">
<invoke function="GetOperationTimeout">
<property name="list.ids" />
<int>2</int>
<property name="default.startup.timeout" />
</invoke>
</define>
<define name="PartReportFolder"><pathcombine><property name="rootdir"/><string>PartReport</string></pathcombine></define>
<makedir>${PartReportFolder}</makedir>
<!-- Generate Part Property information -->
<define name="productHierarchies">${PrimaryPHList}</define>
<define name="PartTSVReport">PartReport.tsv</define>
<define name="PartTSVReportFullName"><pathcombine><property name="PartReportFolder" /><property name="PartTSVReport" /></pathcombine></define>
<scon timeoutinsec="${operation.timeout}">EPEXPORTPARTPROPERTIES ${list.ids} "${WFPartBOMFull}" "" "${productHierarchies}" "${PartReportFolder}" "${PartTSVReport}"</scon>
<!-- Generate Part Creation and deletion information -->
<define name="PartCreationDeletionTSVReport">PartCreationDeletionReport.tsv</define>
<define name="PartCreationDeletionTSVReportFullname"><pathcombine><property name="PartReportFolder" /><property name="PartCreationDeletionTSVReport" /></pathcombine></define>
<sqlcommand outputfile="${PartCreationDeletionTSVReportFullname}">exec EP_spPartCreationDeletionInfo</sqlcommand>
<!-- Copy Part Template -->
<define name="PartTemplate"><pathcombine><property name="projectdirectory"/><string>EnterprisePlatform</string><string>Reports</string><string>PartReports</string><string>PartReportTemplate.xlsx</string></pathcombine></define>
<define name="PartReport">PartReport.xlsx</define>
<define name="PartReportFullName"><pathcombine><property name="PartReportFolder" /><property name="PartReport" /></pathcombine></define>
<if>
<test><fileexists>${PartTemplate}</fileexists></test>
<iftrue>
<copyfile sourcefile="${PartTemplate}" destinationfolder="${PartReportFolder}" newfilename="${PartReport}" overwrite="true"/>
<log>copyfile sourcefile: "${PartTemplate}" destinationfolder:"${PartReportFolder}" newfilename:"${PartReport}"</log>
</iftrue>
<iffalse>
<log>DID NOT COPY TEMPLATE copyfile sourcefile: "${PartTemplate}" destinationfolder:"${PartReportFolder}" newfilename:"${PartReport}"</log>
</iffalse>
</if>
<!-- Populate Excel Template -->
<excelimporttotable workbook="${PartReportFullName}" sheetname="Source">${PartTSVReportFullName}</excelimporttotable>
<excelimporttotable workbook="${PartReportFullName}" sheetname="DeleteCreate">${PartCreationDeletionTSVReportFullname}</excelimporttotable>
<associate inputitems="${list.ids}">${PartReportFullName}</associate>
</operation>
<!--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-->
<!--Assemby Properties to TSV, CSV or XML-->
<!--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-->
<operation id="Waveform Assembly Report" appliesto="assemblies">
<define name="operation.timeout">
<invoke function="GetOperationTimeout">
<property name="list.ids" />
<int>2</int>
<property name="default.startup.timeout" />
</invoke>
</define>
<define name="AssemblyReportFolder"><pathcombine><property name="rootdir"/><string>AssemblyReport</string></pathcombine></define>
<makedir>${AssemblyReportFolder}</makedir>
<!-- Generate Assembly Property information -->
<define name="AssemblyTSVReport">AssemblyReport.tsv</define>
<define name="AssemblyTSVReportFullname"><pathcombine><property name="AssemblyReportFolder" /><property name="AssemblyTSVReport" /></pathcombine></define>
<scon timeoutinsec="${operation.timeout}">EPEXPORTASSEMBLYPROPERTIES ${list.ids} "${WFAssemblyBOMFull}" "" "${AssemblyReportFolder}" "${AssemblyTSVReport}"</scon>
<!-- Copy Assembly Template -->
<define name="AssemblyTemplate"><pathcombine><property name="projectdirectory"/><string>EnterprisePlatform</string><string>Reports</string><string>AssemblyReports</string><string>AssemblyReportTemplate.xlsx</string></pathcombine></define>
<define name="AssemblyReport">AssemblyReport.xlsx</define>
<define name="AssemblyReportFullname"><pathcombine><property name="AssemblyReportFolder" /><property name="AssemblyReport" /></pathcombine></define>
<if>
<test><fileexists>${AssemblyTemplate}</fileexists></test>
<iftrue>
<copyfile sourcefile="${AssemblyTemplate}" destinationfolder="${AssemblyReportFolder}" newfilename="${AssemblyReport}" overwrite="true"/>
<log>copyfile sourcefile: "${AssemblyTemplate}" destinationfolder:"${AssemblyReportFolder}" newfilename:"${AssemblyReport}"</log>
</iftrue>
<iffalse>
<log>DID NOT COPY TEMPLATE copyfile sourcefile: "${AssemblyTemplate}" destinationfolder:"${AssemblyReportFolder}" newfilename:"${AssemblyReport}"</log>
</iffalse>
</if>
<!-- Populate Excel Template -->
<excelimporttotable workbook="${AssemblyReportFullname}" sheetname="Source">${AssemblyTSVReportFullname}</excelimporttotable>
<associate inputitems="${list.ids}">${AssemblyReportFullname}</associate>
</operation>
<!--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-->
<!--Profile Cutting Report to TSV, CSV or XML-->
<!--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-->
<operation id="Waveform Profile Cutting Report" appliesto="parts">
<define name="operation.timeout">
<invoke function="GetOperationTimeout">
<property name="list.ids" />
<int>2</int>
<property name="default.startup.timeout" />
</invoke>
</define>
<define name="ProfileCuttingReportFolder"><pathcombine><property name="rootdir"/><string>ProfileCuttingReport</string></pathcombine></define>
<makedir>${ProfileCuttingReportFolder}</makedir>
<!-- Copy Profile Cutting Template -->
<define name="ProfileCuttingTemplate"><pathcombine><property name="projectdirectory"/><string>EnterprisePlatform</string><string>Reports</string><string>ProfileCuttingReports</string><string>ProfileCuttingReportTemplate.xlsx</string></pathcombine></define>
<define name="ProfileCuttingReport">ProfileCuttingReport.xlsx</define>
<define name="ProfileCuttingReportFullname"><pathcombine><property name="ProfileCuttingReportFolder" /><property name="ProfileCuttingReport" /></pathcombine></define>
<!-- Generate Profile Cutting Property information -->
<define name="ProfileCuttingTSVReport">ProfileCuttingReport.tsv</define>
<define name="ProfileCuttingTSVReportFullname"><pathcombine><property name="ProfileCuttingReportFolder" /><property name="ProfileCuttingTSVReport" /></pathcombine></define>
<scon timeoutinsec="${operation.timeout}">EPEXPORTPARTPROPERTIES ${list.ids} "${WFProfileCuttingBOM}" "" "${PrimaryPHList}" "${ProfileCuttingReportFolder}" "${ProfileCuttingTSVReport}"</scon>
<if>
<test><fileexists>${ProfileCuttingTemplate}</fileexists></test>
<iftrue>
<copyfile sourcefile="${ProfileCuttingTemplate}" destinationfolder="${ProfileCuttingReportFolder}" newfilename="${ProfileCuttingReport}" overwrite="true"/>
<log>copyfile sourcefile: "${ProfileCuttingTemplate}" destinationfolder:"${ProfileCuttingReportFolder}" newfilename:"${ProfileCuttingReport}"</log>
</iftrue>
<iffalse>
<log>DID NOT COPY TEMPLATE copyfile sourcefile: "${ProfileCuttingTemplate}" destinationfolder:"${ProfileCuttingReportFolder}" newfilename:"${ProfileCuttingReport}"</log>
</iffalse>
</if>
<!-- Populate Excel Template -->
<excelimporttotable workbook="${ProfileCuttingReportFullname}" sheetname="Source">${ProfileCuttingTSVReportFullname}</excelimporttotable>
<associate inputitems="${list.ids}">${ProfileCuttingReportFullname}</associate>
</operation>
パッケージ
パッケージは 、こちらからダウンロードできます。