コンピューター ウィンドウズ インターネット

期間中のドキュメントの1sckd出力。 SCDに指定された頻度でレポートを作成します

こんにちは、ブログサイトの読者の皆様! 前回の記事では、これらの役割が何のためにあるのかを学びました。 そして今日、このシリーズの第2回では、 「Period」プロパティを使用してロールを設定する、およびこれらの役割を果たす例も検討してください。 残りは、「期間」の役割を持つフィールドに対して計算されます。 また、「次元」の役を演じるフィールドでも、またお話しします。 さあ、始めましょう!

新しいレポートを作成しましょう:

  1. Configuratorで、メニュー項目「ファイル」-「新規」-「外部レポート」を選択します。
  2. 「データ構成スキームを開く」ボタンをクリックします。 開いたダイアログで、「完了」ボタンを押します。
  3. 次に、「AccumulationRegisters」仮想テーブルを参照するものを作成しましょう。
  4. 押す 右クリックノード「データセット」にマウスを合わせ、「データセットの追加-クエリ」の行を選択します。
  5. それでは、「クエリビルダー」ボタンをクリックしてみましょう。 蓄積レジスタ "倉庫、残高および売上高の在庫"(USP構成)を選択します。
  6. 「仮想テーブルパラメータ」ダイアログを開いて、「自動」周波数が使用されること、つまり、複数の期間を指定できることを示しましょう。

次に、出力フィールドを設定しましょう。 「Registrar」、「PeriodMonth」、「Nomenclature」、「Quality」、および残高に関する情報のフィールドとします。 フィールドの追加は、必要なフィールド上でマウスの左ボタンをダブルクリックするか、「>」ボタンを使用して実行されます。 フィールドを追加したら、「OK」ボタンを押します。

一部のフィールドでは、「Period」プロパティを持つロールが自動的に構成されることに注意してください。

何が存在するかを考えてください 「期間」プロパティの役割設定..。 まず、期間のシリアル番号が表示されます。 番号付けは、1から始まり、低い期間から古い期間まで連続している必要があります。つまり、最初にたとえば行番号、次に「レジストラ」、次に2番目、日、週、月、四半期が表示されます。 、 年。

したがって、リクエストで発生するフィールドには番号を付ける必要があります。 「Registrar」と「PeriodMonth」の2つの期間フィールドがあることに注意してください。 最も低いフィールドは「Registrar」で1が割り当てられ、最も高いフィールドは「PeriodMonth」で2が割り当てられます。 次の記事で詳しく検討します。

レポートをカスタマイズしましょう:

  1. [リソース]タブに移動して、レポートのリソースを定義しましょう。
  2. 「>>」ボタンをクリックして、リソースのすべてのフィールドを選択します。
  3. 次に、[設定]タブに移動して、リスト形式で設定を作成しましょう。
  4. データ構成設定デザイナボタン(魔法の杖ボタン)をクリックします。
  5. レポートタイプ:「リスト」。 「次へ」ボタンを押してみましょう。
  6. 「>>」ボタンをクリックして、出力フィールドを設定しましょう。 「PeriodMonth」、「Nomenclature」、「Quality」、「Registrar」のように配置しましょう。
  7. 「次へ」ボタンを押して、グループ化を設定しましょう。 グループ化は、「PeriodMonth」、「Nomenclature」、「Quality」の順序で設定します。 「レジストラ」グループは詳細レコードとして表示されます。
  8. 「OK」ボタンを押してみましょう。

レポートを開きましょう。 このレポートを実行すると、残高を受け取るときにいくつかの特殊性が見られます。 レポートの結果をよく見ると、一度にいくつかのエラーに気付くでしょう。 特に、何らかの理由で、会社の活動期間の最初の段階で、初期のバランスがあります。

そして、このエラーは、レジストラによる残高の受け取りの特殊性に関連しています。 これらの残高を正しく表示するには、リクエストの出力フィールドにもう1つのフィールド、このフィールド「PeriodSecond」を追加する必要があります。 「PeriodSecond」フィールドを追加するには、Configuratorでレポートを開き、「Opendatacompositionscheme」ボタンをクリックします。 次に、[クエリビルダー]ボタンをクリックして、[PeriodSecond]を追加します。 この場合、「Registrar」フィールドは期間の最初のフィールドのままになり、「PeriodSecond」は2番目になり、「PeriodMonth」は3番目になります。

秒は何ですか? データ構成システムは、計算によって残差を計算し、レコーダ自体へのリンクの時間軸上のレコーダの位置を明確に決定するために、それは十分ではなく、秒、すなわち、の日付も必要です。このレコーダー、そして作曲システムは計算によって正しいバランスを計算することができます。 フィールドの正しい順序を示してレポートを再度生成すると、次のようになります。

現在、「台座」の命名法の最初に残骸はありません。 さらに、次の期間では、それは最終的なバランスと一致します。つまり、本当に正しい結果が得られます。 以下のリンクからサンプルレポートをダウンロードできます。 あなたはその記事が好きでしたか? 何を変更でき、何を追加できますか? コメントでお気軽に共有してください!

記事の最後に、AnatolySotnikovからの無料のものをお勧めしたいと思います。 これは経験豊富なプログラマーによるコースです。 ACSでレポートを作成する方法を個別に示します。 注意深く耳を傾け、覚えておく必要があります。 あなたはそのような質問への答えを受け取ります:
  • 簡単なリストレポートを作成するにはどうすればよいですか?
  • [フィールド]タブの[フィールド]、[パス]、および[タイトル]列は何のためのものですか?
  • レイアウトフィールドの制限は何ですか?
  • 役割を正しく構成するにはどうすればよいですか?
  • レイアウトフィールドの役割は何ですか?
  • クエリの[データ構成]タブはどこにありますか?
  • ACSでパラメータを設定する方法は?
  • さらに興味深い...
おそらく、必要な情報を探して自分でインターネットをサーフィンしようとすべきではありませんか? さらに、すべてが使用できる状態になっています。 始めましょう! 無料のビデオチュートリアルの内容に関するすべての詳細

クエリの[データ構成]タブに関するレッスンの1つは次のとおりです。



ACSでレポートを作成する場合、レポートフォームに期間の選択を表示する必要がある場合が多いため、日付を手動で入力する必要はありませんが、次のような標準期間のリストから選択します。 "、"月 "、"週 "など..。 日付型のパラメーターについては、「今年の始まり、月など」のみ指定できますが、「終了」は指定されません。

実際のところ、データ型のうち、「標準開始日」タイプのみが使用可能ですが、「標準終了日」も必要です。

これを回避する方法があります。

  1. 新しいパラメータを作成し、「Period」という名前を付けます
  2. このパラメータのタイプを「標準期間」に設定しましょう。
  3. リクエストで使用される「StartPeriod」および「EndPeriod」パラメータの「Expression」フィールドで、式を設定します。 &Period.StartDate "および" &Period.EndDate "それぞれ。

しかし、少し微妙な点があります。 クエリで仮想テーブルを使用すると、ほとんどの場合、レポートが機能しなくなり、「ビュー処理エラー、タイプの不一致、パラメータ番号...」などのエラーメッセージが表示されます。

これを回避するには、仮想テーブルのすべてのパラメーターを削除する必要があります。

そして、それらを「データ構成」タブのテーブルに追加します。

レポートのクイック設定にパラメーターを表示するには、レポートパラメーターに対応するフラグを有効にします。

これで、レポートフォームでの期間の選択は次のようになります。

ACSで期間を設定するいくつかの機能。

データ構成システム(ACS)を使用して作成されるレポートのほとんどは、ユーザーがレポートを作成する期間を入力する必要があります。

原則として、ACSでは、期間の入力は、次の構造を使用してパラメータで編成されます。期間の入力方法は「クラシック」と見なされ、ITSに関する記事や1Cでの開発に関するその他の文献に記載されています。だから私たちはそれを基礎として取ります。 例として、特定の期間の商品およびサービスの販売に関するすべてのドキュメントを受け取る単純なクエリを考えてみましょう。

このレポートを使用する場合、ユーザーはパラメータを参照して期間を設定します。すべてが正しいようです...しかし、小さな問題があります。

重要なのは、圧倒的多数のユーザーが1Cが期間を「理解」するのとは異なる方法で期間を「理解」するということです。例:

ユーザーの観点からは、期間は設定されていません。つまり、期間は制限されていません。つまり、すべてのドキュメントを日付制限なしでレポートに含める必要があります。

1Cシステムの「観点から」では、パラメータ期間が設定され、...その境界は両方とも01.01.0001に等しく、日付が空のドキュメントのみがレポートに含まれます。これは、実際には次のことを意味します。単一のドキュメントが含まれないこと。

ユーザーの観点からは、2010年1月28日以降のすべてのドキュメントをレポートに含める必要があります。

「観点から」1C、期間28.01.2010-01.01.0001は例外を発生させます。

もちろん、ユーザーが期待するドキュメントがレポートに表示されない理由と、1Cの「観点」から期間がどのように表示されるかをユーザーに説明することもできますが、これはありがたいビジネスです。間違い。 良いプログラムプログラムはユーザーのために存在し、その逆ではないため、まず第一に、ユーザーにとって便利である必要があります。したがって、ユーザーが理解する期間を理解するために1Cを「教える」必要があります。

1)。 期間開始と期間終了は指定されていません->すべてのドキュメント。

2)。 期間の始まりのみが指定されている->期間の始まりから始まるすべてのドキュメント

3)。 さらに、期間の終了> =期間の開始であることを確認し、これが満たされない場合は、期間の終了が指定されていないと見なします。 2)。

上記に基づいて、EndDateパラメーターの式は次のようになります。

WHEN&Period.EndDate = DATETIME(1,1,1)

それから 日時(3999,12,31)

いつ&期間。終了日<&Период.ДатаНачала

それから 日時(3999,12,31)日時(3999,12,31,23,59,59)

&Period.End Date

期間の選択の私達の構造の最終的な見解はで示されます

注:パラメーターを設定するためのこのメカニズムは、古いプラットフォーム1C 8.1および8.2(およびそれらの制御下で動作する構成)を対象としています。古いバージョンの1Cプラットフォームには、入力されていないパラメーターを制御するための組み込みメカニズムがあり、に頼る必要はありません。この記事で説明するメカニズムは、1Cプラットフォームの一部のバージョンに加えて、エラーや誤った操作が発生する可能性があります。

それでは、始めましょう。

簡単にするために、例を理解するために、1つの単純な循環累積レジスターに基づいて構築します。

私の場合、これは「仕掛品会計」の累積レジスターです。

たとえば、そのパラメータを厳密に示します(ACSにパラメータをソフトに課すことではありません)。

注意してください、仮想テーブルの周期性は「レコード」です。

ただし、前述のように、周期性の観点から期間が必要なので、次の方法で「期間」フィールドを計算することを提案します(完全に美しいわけではありませんが、より良いオプションはありません)。

スクリーンショットからわかるように、パラメーターがリクエストに渡されます。これは、ユーザーがフォームに指定します。列挙値 "Frequency"-この列挙は、ほとんどすべての標準ソリューションに存在します。

[パラメータ]タブで使用可能なタイプを示します。

この設定では、すべてが美しく、目に心地よいものになるように生理をフォーマットします)

フォーマット自体は次のとおりです。

月:DF = "MMMM yyyy" g。 ""

日:DF = dd.MM.yyyy

週:DF = "" "dd.MM.yyyy"からの週

四半期:DF = "k"四半期 "yyyy" g。 ""

年:DF = "yyyy" g。 ""

Decade:DF = "" Decade with "dd.MM.yyyy"

学期:DF = "" "dd.MM.yyyy"の学期

それで全部です。 出力には、すばらしい画像があります。

この記事では、データ構成システム(ACS)を使用する場合の期間の設定の詳細、通常のユーザーと1Cシステムの期間の概念の違いによって発生する問題、および次の方法について説明します。それらを解決します。
データ構成システム(ACS)を使用して作成されるレポートのほとんどは、ユーザーがレポートを作成する期間を入力する必要があります。 原則として、ACSでは、期間のエントリは、次の構造を参照して、パラメータを介して編成されます。 図1この期間の入力方法は「クラシック」と見なされ、ITSに関する記事や1Cでの開発に関する他の文献に記載されているため、これを基礎とします。 例として、特定の期間の商品およびサービスの販売に関するすべてのドキュメントを受け取る単純なクエリを考えてみましょう。 図2このレポートを使用する場合、ユーザーはパラメータを参照して期間を設定します。 図3すべてが正しいようです...しかし、小さな問題があります:

重要なのは、圧倒的多数のユーザーが1Cが期間を「理解」するのとは異なる方法で期間を「理解」するということです。例:
1)。 検討 図3
ユーザーの観点からは、期間は設定されていません。つまり、期間は制限されていません。つまり、すべてのドキュメントが日付制限なしでレポートに含まれている必要があります。
1Cシステムの「観点から」では、パラメータ期間が設定され、...その境界は両方とも01.01.0001に等しく、日付が空のドキュメントのみがレポートに含まれます。これは、実際には次のことを意味します。単一のドキュメントが含まれないこと。
2)。 検討 図4
ユーザーの観点からは、2010年1月28日以降のすべてのドキュメントをレポートに含める必要があります。
「観点から」1C、期間28.01.2010-01.01.0001は例外を発生させます。

もちろん、ユーザーが期待するドキュメントがレポートに表示されない理由と、1Cの「観点」から期間がどのように表示されるかをユーザーに説明することもできますが、これはありがたいビジネスです。間違い。 プログラムはユーザーのために存在し、その逆ではないため、まず第一に、優れたプログラムはユーザーにとって便利である必要があります。したがって、ユーザーが理解する期間を理解するために1Cを「教える」必要があります。
1)。 期間開始と期間終了は指定されていません->すべてのドキュメント。
2)。 期間の始まりのみが指定されている->期間の始まりから始まるすべてのドキュメント
3)。 さらに、期間の終了> =期間の開始であることを確認し、これが満たされない場合は、期間の終了が指定されていないと見なします。 2)。
上記に基づいて、EndDateパラメーターの式は次のようになります。

SELECT WHEN&Period。EndDate = DATE TIME(1,1,1)THEN DATE TIME(3999,12,31,23,59,59)ELSE SELECT WHEN&Period。EndDate<&Период.ДатаНачала ТОГДА ДАТАВРЕМЯ(3999,12,31,23,59,59) ИНАЧЕ &Период.ДатаОкончания КОНЕЦ КОНЕЦ

期間の選択の私達の構造の最終的な見解はで示されます 図5