20分で取締役会向けのレポートを作成します

Ultima Businesswareプラットフォームの機能についての話を続けます 。 今日は、特別なレポートを作成するためのツールについてです。 このツールは、上級管理者向けの通常の形式のレポートを迅速に受信する必要性への対応として、本当に生まれました。 そして、彼の助けを借りて行われた最初の報告は、P&Lとバランスでした。



この記事をよりよく理解するために、システムデバイスに関する私の記事と、当社のWebサイトからの小さな紹介文書を読むことは非常に役立ちます。

念のため、必要な最小値を簡単に繰り返します。

いわゆる合計の測定可能な指標に関するデータを保存します。 ある意味では、これはOLAPのキューブに類似しています。 または、1Cで友達に登録します。 合計にはディメンションと変数があります。 合計は、ドキュメントによって生成されるトランザクションによって意味が変わります。 すべてのトランザクションが保存され、いつでも合計のステータスを計算できます。 トランザクションには、各変数のディメンションとデルタが含まれます。

合計の説明に基づいて、システムは任意のレポートを作成できます。 データは測定(または関連ディレクトリ)によってグループ化でき、各変数は4つのコンポーネントに分解されます:着信および発信残高(期間の開始および終了時の変数の値)および借方と貸方(正と負のデルタの合計)。



たとえば、システムには、顧客、製品、倉庫、および数量と量の変数のディメンションを持つ合計実装があります。

したがって、どの顧客に、どの倉庫からどのくらいの商品を販売し、どの価格で(正確に、どのコストで、どの利益で)販売したかがわかります。 2番目の重要な結果は、コスト項目と変動額の測定によるコストです。 最も単純な場合、これらの2つの合計は、損益計算書(P&L)を作成するのに十分です。



損益計算書は、IFRSで非常に具体的な見解を持っています。 したがって、データを合計から特定のビューに変換する手段が必要です。 もちろん、これは印刷されたフォームを使用して簡単に行えますが、このレポートの記事を拡大できるようにしたかったのです。 そして、このために結果の分析のフォームがすでにあります! これは、合計で実行する変換と、さまざまな合計の変数と測定値を組み合わせる方法を記述する必要があることを意味します。 SQLはそのような関係代数を完全に処理しますが、システムのユーザーにそのようなレポートを構成する機会を与えたいと考えました。 このメカニズムを仮想合計と呼びました。



したがって、ここに損益計算書の例を示します。

// dimensions and variables dim AgentID (Agent): ru() dim CostItemID (CostItem): ru( ) dim OfficeID (Office): ru() dim FrcID (FRC): ru() var Amount: ru() // calculated groups group Income: ru() var Amount total Expense: -Amount.Sub total Sale: -Amount.Sub end group Outcome: ru() var Amount total Expense: Amount.Add end group Profit: ru() no details var Amount group Income: Amount group Outcome: -Amount end
      
      





はい、このレポートは合成言語で記述されています。 実践が示しているように、これはテキスト形式で行う方が、コンストラクター(当社が発明した)よりも便利です。

したがって、新しい合計を説明しているため、この合計のディメンションと変数が最初にリストされます。

次元はそれぞれ次元の名前であり、括弧内に参照が示され、そこからこの次元の値が取得され、最後にローカライズされます。

変数は同じように記述されますが、ここでは1つ-量です。



原始損益計算書は次の形式である必要があります

合計:

収入:

消費:

したがって、収益グループには、販売(実装)および費用(コスト)の結果の金額変数の借方コンポーネントが含まれます。

費用グループには、すべてのプラスの費用が含まれます。

最後に、Profitグループは、2つのグループExpense(反対符号)とIncomeの(合計)で構成されます。

その結果、システムはレポートを設定するための次のようなフォームを生成します。



結果は次のとおりです。



ただし、この結果に測定値を追加しました。これらの数値を構成するドキュメントを見てみましょう。



同様に、レポートをコスト項目とその他の測定値に分割できます。



構文を簡素化するために、私は多数の規則を採用する必要がありました。 たとえば、デフォルトでは、ディメンションは単に名前の一致によってマッピングされます。

より複雑な例を考えてみましょう。 通貨が変換される結果があり、それに応じて、変換操作からの損失が累積されます。 私たちは(トップマネージャーとして)この損失を変換損失のコスト項目と見なします。 ただし、変換の結果として、結果のディメンションの1つはありません。 関係ありません。次から設定できます。

 group Outcome: ru() var Amount total Expense: Amount.Add total Convertation: Amount value CostItemID: 192 value OfficeID: none value FrcID: none value AgentID: none end
      
      





この方法で費用項目を修正すると、費用項目の対応する行での変換操作による損失を確認できます。



この構文により、フィルターを課すことができます。 たとえば、「仕入先のバランス」グループを作成できます。このグループには、仕入先フォルダにある取引先のみが含まれます。 フィルターはfilterキーワードで指定され、次に測定とフィルター条件が指定されます。



ただし、この単純なクエリ言語のフレームワークでは表現できない条件が存在する場合があり、その後、述語によって拡張できます。 この場合の述語は、仮想結果記述言語に統合できる開発者が作成したSQLステートメントです。 たとえば、取引先の残高を含む合計に基づいてグループを作成します。このグループでは、商品ローンと繰延支払いを考慮に入れて、未払いの注文がある人だけがアクセスできます。



この記事では、言語のメカニズムと構文全体を詳細に説明するつもりはありません(このドキュメントがあります)。 ただし、システムの機能と開発の容易さに光を当てたいと思います。 説明されているメカニズムにより、サードパーティのデータ分析ツールを省くことができ、実装予算が大幅に削減されます。 しかし、主なことは、アナリストや企業管理者からのデータへの迅速かつ詳細なアクセスです。 これは本当の競争上の利点です!



All Articles