データベースに外部処理を追加します。 データベースへの外部処理の追加 1c の外部レポート

コンサルティング中に、複雑な問題を解決する必要が生じた場合、私はクライアントに次のいずれかを使用して 1C プログラムでそれを実装することを提案します。 外部処理、 または 外部印刷版。 そして、人々は 1C Enterprise 8 プラットフォーム上のプログラムの可能性を単によく知らないという事実によく遭遇します。時には、そのような処理を構成の一部として開発および実装すると、プログラムを自動更新できない。 プログラムを更新するには多額のお金を支払わなければならないということ。

このような疑問を明確にし、外部処理や外部印刷フォームがどのような有益な機会を提供するかについて説明するために、この記事を書くことにしました。 この記事では、プロセス作成プロセスの技術的な側面については考慮しません。 これについては、おそらく別の出版物で説明されるでしょう。 ここでは仕組みの本質を解説し、外部処理や帳票印刷がユーザーにメリットをもたらすケースの具体例を挙げて説明します。

この記事では、追加の外部接続可能なオブジェクトに関する次のオプションについて説明します。

  • 表形式パーツの追加の外部処理。
  • 追加の外部印刷フォーム。
  • 追加の外部レポート。
  • 追加の外部処理。

追加の外部処理、レポート、印刷フォームとは何ですか?




まず、一般的なことについて話したいと思います これらの外部処理、レポート、印刷フォームとは何ですか?。 1C ZUP、1C Enterprise Accounting、またはその他の構成のいずれであっても、標準構成で作業する場合、1C 開発者によって提供されていない機能が必要になることがよくあります。 たとえば、必要になる場合があります 印刷されたフォーム、規制されていませんが、組織の内部ニーズに使用されます。 または、特定の方法で必要とされる プロセス(変更、調整)データベースで利用可能なデータ。 たとえば、文書内の特定の詳細を必要な期間だけ変更するなど、大量の情報を手動で行うのは不便です。

この場合、選択肢は 2 つあります。 初め、構成自体、プログラム自体を変更できます。 その後、それは典型的なものではなくなり、私が書いたかなり単純な方法を使用して更新することはできなくなります。 非標準構成の更新は、より長く、より深刻なプロセスであるため、このアプローチでは、プログラムの更新のために 1C スペシャリストに毎月料金を支払う必要がある可能性が高くなります。 2番オプションとして、外部処理または印刷フォーム (レポート) を開発するか、開発を依頼することができます。 これは基本的に外部モジュールであり、同様にコンフィギュレータの 1C プログラミング言語で開発されますが、標準構成に変更を加えません。 これは構成自体とは独立して存在します。 それらを保存するには、メイン メニュー項目「サービス」 -> 「追加のレポートと処理」という特別なディレクトリが使用されます。

表形式のパーツを埋めるための追加の外部処理

セミナー「1C ZUP 3.1のライフハック」
1C ZUP 3.1 における会計のための 15 のライフハックの分析:

1C ZUP 3.1 で給与計算をチェックするためのチェックリスト
ビデオ - 毎月の会計自己チェック:

1C ZUP 3.1 での給与計算
初心者向けの段階的な説明:

次に、利用可能な 4 つの外部モジュールがそれぞれどのような機能を提供するかを個別に見てみましょう。 まずは始めましょう 板状部品の外面加工。 ドキュメントの表形式の部分のこれらの処理は、標準構成の編集に頼ることなく、外部処理だけでプログラムを大幅に変更できる方法を最もよく示しているように思えます。

より明確にするために、私が使用した問題を解決するための私の実践からの具体的な例を示します。 板状部品の外面加工。 構成「1C 給与および人事管理」エディション 2.5 には、次の文書があります。 「休日・週末の支払い」(この文書には詳しく書かれています)。 この文書の標準形式では、従業員が「休日勤務」という表形式の部分を自動的に入力する機能が提供されます。

会計士は、勤務日が週末に予定されている従業員がこの文書に記入できるようにするよう求めました。 「週末も仕事」.

このファイルはディレクトリにアップロードされました 「板状部品の外面加工」(メニュー項目「サービス」 -> 「追加のレポートと処理」 -> 「表形式部品の追加の外部処理」)。 このディレクトリの要素を作成するとき、ダウンロードされた処理がどの文書に関連するのか (組織の休日および週末の支払い)、およびどの表部分 (「従業員」) に関連するのかが示されました。 この例では、ドキュメントには表形式の部分が 1 つありますが、他のドキュメントでは表形式の部分が複数ある場合があるため、処理がどの部分に関係するかを具体的に示す必要があります。

この処理をディレクトリに追加した結果、 「表形式の部品を埋めるための追加の外部処理」「休日および週末パートの支払い」文書自体に、この処理を開始できるドロップダウンリストを備えた「入力」ボタンが表示されます。 この例では、ドロップダウン リストに [日曜日を埋める] ボタンが表示されます。 これを押すと、処理に含まれるアルゴリズムが起動します。 この例では、表部分には、勤務日が休日だった従業員が入力されます。 このボタンは以前は存在しなかったことに注意してください (上のスクリーンショット)。

このメカニズムにより、構成自体を変更することなく、非常に幅広い問題を解決できます。 したがって、私はこの機会をよく利用してクライアントのタスクを実行します。

オプションの外部印刷版

セミナー「1C ZUP 3.1のライフハック」
1C ZUP 3.1 における会計のための 15 のライフハックの分析:

1C ZUP 3.1 で給与計算をチェックするためのチェックリスト
ビデオ - 毎月の会計自己チェック:

1C ZUP 3.1 での給与計算
初心者向けの段階的な説明:

このオプションは前のオプションと非常によく似ています。 おそらく、ほぼすべての文書、さらには参考書の一部の要素に印刷された形式があることを見たことがあるでしょう。 これらは、通常、ディレクトリ要素またはドキュメントのフォームの右下隅に配置されます。 標準的な印刷フォームでは不十分な場合があります。 たとえば、組織には独自の形式の雇用契約がある場合があります。 標準的な印刷フォーム「雇用契約」は、「従業員」ディレクトリ フォームに含まれていることを思い出してください。

これらの印刷形式のディレクトリに独自のものを追加できます。 この目的のために、拡張子「.epf」を持つ外部印刷フォームが作成されます。 次に、ディレクトリ要素が作成されます 「外部印刷版の追加」(メニュー項目「ツール」 -> 「追加のレポートと処理」)、拡張子「.epf」を持つファイルがこのディレクトリ要素に追加されます。 どの文書や参考書に対して処理を追加するのかを示すことも必要です。

その結果、「従業員」ディレクトリの要素の印刷フォームの一部として、以前は存在しなかった別のフォーム「雇用契約 (Alpha LLC)」が表示されます。 そして、その外観とデータの入力は、「.epf」ファイルのプログラマによって決定されます。

文書や参考書に必要な印刷フォームを追加するこの機能も非常に頻繁に需要があり、私の意見では、1C Enterprise プラットフォーム上のプログラムのかなり便利な機能です。

追加の外部レポート

この場合、開発できるのは、 外部レポート。 「.erf」形式のファイルです。 レポートの外観、使用する構成データ、およびユーザーから要求するデータ (期間、従業員別または部門別の選択など) を決定するのはこのファイルです。 このファイルは、1C プログラミング言語の 1C コンフィギュレータで作成されます。

外部レポートは、「追加の外部レポート」リファレンス ブック (メニュー項目「ツール」 -> 「追加のレポートと処理」) を使用して構成の一部として保存できます。 これらは特定の文書や参考書に関連するものではないため、この情報は必須ではありません。

このストレージ オプションを使用すると、レポートは同じディレクトリから (ダブルクリックにより) 起動されます。

メニュー項目「ファイル」→「開く」を使用して外部レポートを起動することもできます。 このオプションは、外部レポートをプログラムの一部としてではなく、単にコンピューターのフォルダーに保存する方が便利な場合に使用できます。

追加の外部治療

外部治療外部レポートとほぼ同じ意味を持ちます。 ただし、インフォベース データを使いやすい形式で表示するために使用されるレポートとは異なり、処理はインフォベース データを変更、編集、または変換するように設計されています。 外部処理を使用して解決できる問題の範囲は非常に広いです。

例えば, 給与明細のアップロード処理。 ZUP には標準処理が存在しますが (詳細をお読みください)、特定の銀行には適していない場合があり、情報を必要な形式に変換してダウンロードする外部処理が開発されています。

連れて行きます もう一つの例非常にシンプルですが、非常に人気のある治療法です。 1C ZUP で、年度中に「個人所得税の予算への振替」文書を管理しない場合、その年の 2 つの個人所得税を生成するときに、各従業員の「振替」フィールドはゼロになります。通常は事実が間違っています。 「個人所得税の予算への振替」という文書を年間全体で入力することは、文書自体の詳細を考慮すると非常に面倒な場合があります。 ただし、外部処理を実行することもできます。この処理では、生成された 2-NDFL で、「計算済み」フィールドの値に基づいて、各従業員の「リスト済み」フィールドに単純に入力されます。 会計士は通常、このオプションを非常に好みます。

外部処理にはまったく同じ 2 つのストレージ オプションと起動オプションがあります。いずれかのディレクトリを使用します。 「追加の外部処理」(メニュー項目「ツール」 -> 「追加のレポートと処理」)、またはメインメニュー項目「ファイル」 -> 「開く」。

それが今日のすべてです!

新しい出版物について誰よりも早く知るには、ブログの更新情報を購読してください。

1C:Enterprise 8.2 プラットフォームの外部処理、レポート、および印刷フォームを接続するために、マネージド アプリケーションで動作するための新しい標準 (標準ライブラリ サブシステム 8.2 の標準) が開発されました。 以前は存在しなかった「チップ」が登場しました。つまり、次のとおりです。

    処理の種類が拡張されました: オブジェクトの塗りつぶし、関連オブジェクトの作成。 ドキュメントに、ベースに入力するための独自のボタンだけでなく、ドキュメント全体に記入するための独自のボタンを追加できるようになりました。

    1 つの処理には、複数の操作 (コマンド) のリストを含めることができます。 1 つの処理を実行できますが、納品書の印刷と領収書の印刷、保証書の印刷など、複数のメニュー項目が同時に実行されます。 (著者注: 以前の古い標準では、そのようなことを行うには、(必要でない場合でも) すべてを一度に実行する必要があり、選択に必要なボタンを備えたフォームを閉じたり、独自のフォームを描画したりする必要はありませんでした)必要な操作)

    1 つだけではなく、一度に複数のオブジェクトに基づいて入力したり、オブジェクトに基づいて入力したりできます。

    (サーバー上で) サーバーコマンドを実行するスケジュールを設定できます。

    モードを「安全」または「安全でない」に設定できます。 制限された権利を考慮して処理を実行するか、制限された権利を無視します (完全な権利の場合と同様)

    使用モードを設定できます: 使用しない、デバッグ、使用します。 「使用しない」 - 運用中ではありません。「デバッグ」 - 管理者のみに表示されます。「運用中」です。

    オブジェクト形式とリスト形式で使用可能

    処理またはレポートをすべてのオブジェクトに一度にバインドできます。

    特定の外部処理コマンドへのクイック アクセスを構成できます。

    追加の処理とレポートをインターフェイスのどのセクションに表示するかを指定できます。

では、標準構成には何を接続できるのでしょうか?

プラットフォームの観点からは、以下を接続できます。

  • 外部処理(拡張子が「epf」のファイル)。
  • 外部レポート (拡張子「erf」を持つファイル)。

アプリケーション領域 (構成) の観点から、フォーム* を使用して外部処理とレポートを接続できます。

  • 追加加工
    • ほんの少しの追加処理です。 カスタマイズ可能です
  • 追加報告
    • 追加レポートだけ
  • オブジェクトの塗りつぶし
    • オブジェクト (ドキュメント) を記入するための独自のボタン。以前は表形式の部分を記入するためのボタンしかありませんでした。
  • 印刷可能なフォーム
    • 追加の印刷可能なフォーム (「追加の印刷可能なフォーム」ボタンが追加されます)
  • 報告
    • オブジェクト (ディレクトリおよびドキュメント) に添付されたレポート。
  • リンクされたオブジェクトの作成
    • 独自の入力に基づいて (「関連オブジェクトの作成...」ボタンが「入力に基づいて」メニュー項目に追加されます)

※編集部「中小企業の経営者編」の例を使用。 1.2インチ

すべてがどのように機能するかを見てみましょう。 外部の処理とレポートを接続するには、外部の処理とレポートとの対話用のインターフェイスを記述した標準があり、すべてのタイプに一般的な要件があり、処理またはレポートのタイプごとに固有の要件があります。

あらゆる種類の処理とレポートの一般的な要件から始めましょう。 プラグインの外部処理またはレポートを作成するには、オブジェクト モジュールでエクスポート関数 InformationOnExternalProcessing() を宣言する必要があります。この関数は、動作を記述する構造体を埋める必要があります。 この関数の例:

関数 InformationOnExternalProcessing() エクスポート
RegistrationData = 新しい構造;
Registration Data.Insert("名前", "外部処理8.2の使用例");
RegistrationData.Insert("セーフモード", True);
RegistrationData.Insert("バージョン", "1.0");

//追加処理
//追加レポート
//オブジェクトを埋める
//報告
//プリントフォーム
//関連オブジェクトの作成
RegistrationData.Insert("表示", "追加処理");

Registration Data.Insert("情報", "外部処理接続の新規格に従った処理 8.2.処理例 ""Hello Word" ");

///////////// コマンド /////////////////////////
tzCommand = 新しい値テーブル;
tzCommand.Columns.Add("識別子");
tzCommand.Columns.Add("ビュー");
tzCommand.Columns.Add("修飾子");
tzCommand.Columns.Add("アラートを表示");
tzCommand.Columns.Add("使用法");


stringCommands.Identifier = "1";
stringCommands.View = "コマンド ""Hello Word"" (OpenForm)";

stringCommands.Use = "OpenForm";

CommandString = tzCommand.Add();
stringCommands.Identifier = "2";
stringCommands.View = "コマンド""Hello Word""(CallClientMethod)";
stringCommands.ShowAlert = True;
stringCommand.Usage = "CallClientMethod";

CommandString = tzCommand.Add();
stringCommands.Identifier = "3";
stringCommands.View = "コマンド""Hello Word""(CallServerMethod)";
stringCommands.ShowAlert = True;
stringCommand.Use = "CallServerMethod";

RegistrationData.Insert("コマンド", tzCommands);

////////////// 目的 (どのオブジェクトで使用されるか) /////////////////////////
//フォームの印刷、入力、関連オブジェクトの入力用
//ArrayAssignments = 新しい配列;
//Assignments.Add("Document.*") の配列; // すべてのドキュメントが割り当てられます
//Assignments.Add("Document.Advance Report") の配列;
//Assignments.Add("Document.Buyer's Order") の配列
//Registration Data.Insert("Destination", Destination の配列);

登録データを返却します。

エンドファンクション

ご覧のとおり、この関数は次の要素 (パラメーター) を含む登録データ構造体に入力します。

    名前 – 治療の短縮名

    バージョン - 処理バージョンに関する情報

    セーフ モード – ユーザーの権利を考慮して処理を実行するかどうかを決定します。 False に設定すると、(完全な権利の場合と同様に) 権利制限を考慮せずに処理またはレポートが実行されます。 この機能は 8.2 で正確に登場し、外部処理とレポートを作成するときに 2 番目のパラメーターでモードを指定します。

    タイプ – 処理またはレポートのタイプ。 記事の冒頭に可能な値をリストしました。コードに設定できる値はコメントに示されています。

  • コマンド – 使用されるコマンドをリストした値の表。 値テーブルの列:
    • 識別子 – 任意の文字列 (コマンド識別子)
    • 表示 - コマンドの説明
    • 修飾子 - 文字列 (追加の印刷フォームに使用)
    • 通知を表示 – 実行の開始前と終了後に通知ウィンドウが表示されます (フォームのないクライアントおよびサーバー コマンドの場合)
    • 使用法 – 処理開始モード:
      • OpenForm – 処理フォームが開きます
      • CallClientMethod – フォームのクライアント エクスポート メソッドを呼び出します。
      • Call ServerMethod – 処理モジュールからエクスポート メソッドを呼び出します。

処理やレポートの種類、「使用」コマンドの起動モードに応じて、フォームモジュールまたはオブジェクトモジュールで定義されたメソッドが呼び出されます。 渡されるパラメータのリストも異なります。 呼び出しの例とあらゆる種類の処理の使用例を添付します。

トップメニューへ サービス->->.

外部処理ディレクトリ一覧フォームが表示されます。 トップメニューで ボタンを押します 追加.

新しいオブジェクトの追加フォームが表示されます。 「開く」ボタンをクリックし、希望の処理を行ったファイルを選択します。 目的のファイルを選択した後、必要に応じて処理名 (名前フィールド) を指定します。 この後、「OK」をクリックして変更を保存する必要があります。

この後、ディレクトリ項目を作成するウィンドウが閉じ、新しい処理がすでに含まれているリスト フォームに戻ります。

それだけです! 設定に処理を追加するプロセスが完了しました。 この処理を後で開くには、古いパスに沿って進みます。 サービス->追加のレポートと処理->追加の外部治療.

BP 3.0、ZUP 3.0、UT 11、ERP 2.0の場合。

1C:Enterprise 8の外部処理にはいくつかの種類があります。 今回はグループを修正する処理と特定のオブジェクトを塗りつぶす処理を付ける方法を説明します。

1つ目は、Excelから命名ディレクトリに記入する処理を追加します。

プログラムの適切なセクションに進みましょう。


追加のレポートと処理を使用するためのフラグを設定する必要があります。外部オブジェクトのリストへのハイパーリンクをたどってください。

リスト内でクリックします 作成する:


表示されるダイアログ ボックスで、処理するファイルを選択します。


プログラム内の新しい外部オブジェクトのカードが記入されました。残っているのはそれを構成することだけです 宿泊施設(処理が利用できるプログラムのセクション):


配置する任意のセクション (または複数) を選択します。


外部オブジェクト カードを書き込んで閉じます。


次に、インターフェースから処理を開いてみましょう。


リストは空です。クリックしてください リストをカスタマイズする:


処理を選択してください:


選択できるようになりました。 処理を開くには、をクリックする必要があります 実行する:


次に、特定のオブジェクトを塗りつぶす(変更する)処理を追加する方法を見てみましょう。 たとえば、ディレクトリまたはシステム ドキュメントの選択された要素にスキャンを添付する外部処理を考えてみましょう。 このような処理の追加の開始は、前のオプションと変わりません。 違いは、この場合、場所が自動的に入力されることです (プログラム セクションではなく、データベース オブジェクトの種類によって)。


必要に応じて、配置リストを調整できます ( 追加の配置を追加するのではなく、不要なものを削除します):


変更を受け入れるには、外部オブジェクト カードも書き出す必要があります。

処理を使用するには、(配置リストから) 特定のデータベース オブジェクトに移動し、 埋めるコマンド パネルで次のコマンドを選択します。

データ合成システムを使用せずに、1C 8 で外部レポートを作成することを考えてみましょう。 外部レポートを作成するには、Accounting 2.0 構成の初期データを使用します。「指定された期間の売上高がコンテキストで表示される会計アカウント 62 に関するレポートを作成します」 取引相手そして 取引相手の契約.

1. レポートを作成する

まず、外部レポート ファイルを作成しましょう。これを行うには、モードで 1s 8 に進みましょう。 コンフィギュレーター、メニューに行きましょう ファイル -> 新規、またはアイコンをクリックします 新しい文書.

リストから項目を選択します 外部レポート。 外部レポートを作成したら、名前を付けます (例: シンプルなレポート) を選択し、ディスクに保存します。 また、次の 2 つの詳細も追加します。 期間の始まりそして 期間の終わりタイプ 日付、レポートを生成するときにデータ サンプリングの時間間隔を制限する必要があります。

2. 外部レポートのレイアウトを作成する

1C 8 でレポートを生成するには、レイアウトが必要です。これは、必要なパラメータがすべて設定され、表が描画されたデータを表示するためのテンプレートです。 新しいレイアウトを追加しましょう。これを行うには、レポート メタデータ ツリーで項目を選択します。 レイアウトそしてボタンを押してください 追加、作成時にレイアウトのタイプを選択します スプレッドシート文書.

レイアウトには 4 つのエリアがあります。

  • ヘッダー - この領域には、レポートの名前、レポートが生成された期間、およびテーブルのヘッダーが表示されます。
  • 取引相手データ - この領域では、取引相手に関するデータを表に表示します。
  • データ取引相手契約 - この領域では、取引相手契約に関するデータを表に表示します。
  • フッター - この領域には、収入フィールドと支出フィールドのレポート全体の合計値が表示されます。

レイアウト領域の作成を始めましょう。 レイアウト内に領域を作成するには、必要な行数を選択し、 メニューテーブル -> 名前 -> 名前の割り当て(または Ctrl + Shift + N)。 地域へ キャップレポートの名前を書きましょう: ターンオーバー62カウント、ツールを使用して描画します 国境レポートヘッダー、およびパラメータも設定します 期間の始まりそして 期間の終わり。 パラメーターを使用すると、必要なデータをレポートに表示できます。これについては、開発の次の段階、つまりレポート コードを記述するときに処理します。 レイアウトでパラメータを作成するには、目的のセルを選択し、そのセルにパラメータの名前を(スペースは含まずに)書き、それを右クリックして、開いたメニューで項目を選択します。 プロパティ。 タブのセルのプロパティで レイアウトパディングを選択 パラメータ.

この後、セル内のパラメータ名が山括弧("で囲まれます)<>”)。 その結果、その地域は、 キャップ次のようになります:

エリア内 データカウンターパーティツールを使用して、取引相手の名前とアカウント 62 の収入と支出を表示するためのパラメーターを作成します。 国境エリアをテーブル行としてデザインしましょう。

エリア内 データカウンターパーティ契約契約名とアカウント 62 の収入と支出を表示するパラメーターを作成しましょう。枠線ツールを使用して領域をテーブル行としてデザインします。 パラメータの前に小さなインデントを加えましょう 取引相手との契約(これは、セルを分割および結合することで実行できます。セルを右クリック -> マージまたは 分割セル)、契約の明細が取引相手の明細よりも階層内で下位であることをレポートで確認できるようにするために必要です。

エリア内 地下収入と支出の合計のパラメータを作成してみましょう。

結果として、次のようなレイアウトが得られるはずです。

3. レポートフォームを作成する

データを表示するには、形成期間とボタンを設定します 形状私たちのレポートにはフォームが必要です。 フォームを作成するには、外部レポートのメタデータ ツリーで項目を見つけます。 フォームそしてボタンを押してください 追加。 フォーム デザイナーの最初のページでは、何も変更する必要はなく、ボタンをクリックするだけです。 さらに遠く.

デザイナーの次のページで、利用可能な両方の詳細を選択します( 期間の始まり, 期間の終わり) フォーム上に配置します。

結果として、次のフォームが得られます。

しかし、この形式では満足できないので、いくつか変更を加えてみましょう。

  • ボタンをドラッグしてみましょう 形状レポートの下部パネルから上部へ (これはユーザーにとってより便利です);
  • 形状を縦横に引き伸ばします。
  • フィールドを整理してみましょう 期間の始まりそして 期間の終わり水平方向。
  • スプレッドシート ドキュメント フィールド コントロール要素をフォームに追加しましょう (レポートがその中に表示されます)。名前を付けます。 タブドキュメント;
  • 期間選択ボタンを作成しましょう (クリックすると、目的の期間を簡単に選択できるダイアログが表示されます)。 まだプログラム コードは記述しないので、ピリオド フィールドの横にボタンを配置するだけです。

その結果、フォームは次のようになります。

4. プログラミング

レポートフォームを作成したら、プログラミングを始めましょう。 まず、期間選択ダイアログを表示するプロシージャを作成します(前の段階でボタンは作成済みです)。 ボタンを右クリックしてメニュー項目を選択します プロパティ、ボタンのプロパティでタブに移動します イベント、虫眼鏡アイコンのボタンを使用してプロシージャを作成します。 ボタン1を押すフォームモジュール内。

フォームの下部にあるタブを使用して、フォームとそのモジュールを切り替えることができます。

期間選択フォームを呼び出すには、標準的な手順を使用します。 会計2.0共通モジュールから ダイアログの操作 - HandlerPeriodSettingPress、レポートの詳細をパラメータとして渡す必要があります。 期間の始まりそして 期間の終わり.

手順 Button1Press(要素) Dialogs.PeriodSettingHandlerPressing(PeriodStart,PeriodEnd); の操作 手順の終了

次に、レポートを生成して表示するコードの作成に進みましょう。 フォームモジュールにはすでにプロシージャが含まれています ボタン生成押す、ボタンが押されたときに実行されます 形状ここにコードを記述します。 必要な変数を初期化することから始めましょう。 まず、変数を作成しましょう スプレッドシートのドキュメントフィールドここにデータを出力しますが、これは必須ではありません。ただ、その呼び出しの記録が短くなり、プログラム コードが読みやすくなります。

TabDoc = FormElements.TabDoc;

関数を使用して外部レポートのレイアウトを取得しましょう GetLayout(<ИмяМакета>) 、レイアウトの名前をパラメータとして渡します。そのようなレイアウトが存在する場合、関数はそれを見つけます。

レイアウト = GetLayout("レイアウト" );

レイアウトを受け取ったら、その領域ごとに変数を作成しましょう。これにはレイアウト メソッドを使用します。 GetArea(<ИмяОбласти>) .

AreaHeader = Layout.GetArea("ヘッダー" ); AreaDataAccount = Layout.GetArea( 「契約者データ」); AreaDataContract = Layout.GetArea("DataContract" ); AreaFooter = Layout.GetArea("フッター" );

スプレッドシートドキュメントのフィールドをクリアしましょう。 これは、新しいレポートが生成されるたびに古いデータが削除されるようにするために必要です。

TabDoc.Clear();

変数の初期化が完了したので、レイアウト領域を 1 つずつ埋めて表示していきます。 ヘッダーから始めましょう。 覚えていると思いますが、この領域に 2 つのパラメータを作成しました。 期間の始まりそして 期間の終わり、そこにレポート生成期間の値を渡します。このために、プロパティを使用します オプションレイアウト領域。

AreaHeader.Parameters.PeriodStart = 期間開始; AreaHeader.Parameters.EndPeriod = 終了期間;

この地域ではこれ以上のアクションは不要です キャップメーカーは必要ないので、そのフィールドをスプレッドシート ドキュメントに表示します。

TabDoc.Output(AreaHead);

次に、データベースにクエリを書き込み、それを使用してアカウントの売上高を取得します。 62 会計記録簿から 自立型。 リクエストを配置する変数を定義しましょう。

リクエスト = 新しいリクエスト;

リクエスト テキストを書き始める前に、必要なパラメータをリクエスト テキストに渡しましょう。 請求書のリクエストを書いているので 62 会計を行う場合、まずそのパラメータを作成します

Request.SetParameter("Account62", 勘定科目表。自己サポート。コードによる検索("62" ));

レポート生成期間をリクエストに渡すことも必要です。 生成期間に関する特別なレポートの詳細があり、それをパラメーターとして渡すことを忘れないでください。

Request.SetParameter("期間の開始", 期間の開始); Request.SetParameter("期間の終了", 期間の終了);

クエリ テキストの作成を開始しましょう。これはクエリ デザイナーを使用して行います。 多くのチュートリアルでは、手動とコンストラクターの両方でクエリを作成できる必要があると書かれていますが、実際にはそうではありません。 1C プログラマーが常に直面するタスクでは、コードを迅速かつ効率的に記述することが優先されますが、データベースにクエリを手動で記述する場合、これを達成することはほとんど不可能であり、すべてのクエリ構造を正しく再現するために多くの貴重な時間を費やすことになります。したがって、クエリを手動で作成することに時間を無駄にせず、クエリ コンストラクターを使用してください。 時間を節約し、手間をかけずに複雑なクエリを作成できるようになります。 リクエスト テキストの作成を開始するには、コードを記述します。

Request.Text = "" ;

その後、引用符の間にカーソルを置き、右クリックして選択します コンストラクタリクエスト。 クエリ デザイナー ウィンドウが開きます。

次に、必要な 1C 8 データベース テーブルを選択する必要があります。仮想テーブルが必要です。 革命会計記録簿 自立型。 デザイナーウィンドウの左側で見つけてみましょう

エリアに移動させましょう テーブルパラメータの入力を始めましょう。 すべての仮想クエリ テーブルには、メイン テーブル (この場合、メイン テーブルである会計登録簿) から必要なデータを選択できる特別なパラメータ セットがあります。 自立型)。 仮想テーブルパラメータウィンドウを開いてみましょう。

リクエストに渡した期間のパラメータを入力しましょう。 リクエストテキストでパラメータを使用するには、その名前の前にシンボルを記述する必要があります アンパサンド(&)

会計アカウントの条件を入力する必要があります。 会計。 これを行うには、仮想テーブルのパラメータ内の行を見つけます。 アカウントの状態そしてそこに書きます

階層内のアカウント (&Account62)

3 つの点のボタンをクリックして、条件コンストラクターを使用することもできます。

仮想テーブルにこれ以上条件を課す必要はないので、ボタンをクリックしましょう。 わかりました仮想テーブルパラメータウィンドウ内。 次に、テーブルから必要なフィールドを選択する必要があります。 独立採算、売上高(つまり: 取引先、取引先契約、収入と支出)。 選択したテーブルで使用可能なフィールドのリストを表示するには、名前の横にある「+」記号をクリックします。 その後、必要なフィールドをクエリ デザイナーの右端の領域 (フィールドと呼ばれる) にドラッグします。 勘定科目表を開くと、その勘定科目が表示されます。 62 分析 取引相手の場合、これは Subconto1 です。、そして、によって 取引相手契約 - Subconto2.

したがって、仮想テーブルのフィールドから選択します。 サブコント1そして サブコント2。 収入と支出は金額別に必要なので、フィールドも選択します 売上高Dtそして 売上高Kt

選択したフィールドのエイリアスを入力しましょう。これを行うには、タブに移動します。 ユニオン/エイリアス必要なフィールド名を設定します。

このレポートではデータが階層的に表示されるため (取引相手が最初のレベルにあり、そのすべての契約が 2 番目のレベルにあります)、合計を使用して階層内のデータの表示を構成します。 デザイナーのタブに移動しましょう 結果。 グループ化フィールドに順番にドラッグします 取引相手そして 取引相手との契約そして決勝では 到来そして 消費.

これでクエリ コンストラクターでの作業は完了です。ボタンをクリックします。 わかりましたリクエストのテキストがプログラム コードに表示されていることがわかります。

Query.Text = "SELECT | Self-supportingTurnover.Subconto1 AS カウンターパーティ、 | 自立型Turnover.Subconto2 ASカウンターパーティ契約、 | Self-supportingTurnover.AmountTurnoverDt AS 領収書、 | 自己サポート売上高.AmountTurnoverKt AS Expense|から | 会計台帳。自己会計。売上高 (&期初、&期末、階層内の口座 (&口座 62)、) AS 自己会計売上高|結果| AMOUNT(収益), | AMOUNT(経費) |PO | 取引相手、 | 取引相手契約」;

リクエストの作成が完了したら、各項目の入力を開始しましょう データカウンターパーティ, データ契約の相手方そして 地下。 これらすべての領域には、リクエストの実行時に受信したデータが入力されます。 クエリにはグループ化が含まれているため( 取引相手そして 取引相手との契約) 次のようにそこからデータを選択します。

SelectionCounterpart = Request.Execute().Select(BypassQueryResult.ByGrouping);

このようにして、すべての取引相手の合計を含むレコードを受け取ります。

ループを使用してサンプル データを走査する前に、レポートの全体的な結果を計算するための変数を初期化します。

合計受信 = 0; 総消費量 = 0;

レポート データを階層 (および「+」に沿った回転) で表示するには、スプレッドシート ドキュメントの行の自動グループ化の開始を設定しましょう。

TabDoc.StartAutoGroupingRows();

すべての準備が完了したので、クエリ結果のクロールを開始しましょう。 ループを使用して走査を実行します さよなら

Account.Next() を選択しながら EndCycle をサイクルします。

サイクルの開始時にパラメータをリセットします 到来そして 消費地域 データカウンターパーティ。 それはなんのためですか? 相手が次のような状況を想定してみましょう。 ヴァシャおじさん、収入は 10、支出は 5、次の取引相手の場合 ペティアおじさんこの場合、パラメータをリセットしないと収入も支出もありません。 到来そして 消費、その後、取引相手ごとに並ぶ ペティアおじさん収入が5、支出が10になります。

AreaDataAccount.Parameters.Receipt = 0; AreaDataAccount.Parameters.Expense = 0;

その後エリアを埋めていきます データカウンターパーティサンプル要素データ

FillPropertyValues(AreaAccountData.Parameters,SelectionAccount);

データを入力すると、エリアを表示できます。 スプレッドシート文書, 行の自動グループ化を使用しているため、グループ化の行のレベルを指定する必要があります (レポートには 2 つのレベルがあり、最初のレベルは取引相手用で、最初のレベルは契約用です)。

TabDoc.Output(AreaDataAccount,1);

次に、この取引相手について、その契約に従って選択を行います。

SelectionCounterparty 契約 = SelectionCounterparty.Select(BypassQueryResult.ByGroups);

ループを使用して走査を実行します さよなら.

一方、SelectionCounterparty Contract.Next() は EndCycle をループします。

カウンターパーティ契約のサイクルでパラメータをリセットしましょう 到来そして 消費、領域を塗りつぶします データ契約サンプルから抽出し、レコードの第 2 レベルのスプレッドシート ドキュメントに表示します。

AreaDataContract.Parameters.Receipt = 0; AreaDataContract.Parameters.Expense = 0; PropertyValues(AreaDataAgreement.Parameters,SelectionCounterpartyAgreement)に記入します。 TabDoc.Output(AreaDataContract,2);

このサイクルでも、収入と支出の合計値を計算するための変数に現在の値を追加します。

TotalReceipt = TotalReceipt + SelectionCounterpartyAgreement.Receipt; TotalExpense = TotalExpense + サンプル取引先契約書.Expense;

これでエリア内のデータの出力は完了です データカウンターパーティ, データ契約の相手方これが完了したら、あとはスプレッドシート ドキュメントの行の自動グループ化を完了するだけです。

TabDoc.FinishAutoGroupingRows();

エリアへのデータ出力を担当する全サイクル データカウンターパーティそして データ契約の相手方このように見える:

TabDoc.StartAutoGroupingRows(); SelectionAccount.Next() ループ AreaDataAccount.Parameters.Receipt = 0 ; AreaDataAccount.Parameters.Expense = 0 ; FillPropertyValues(AreaAccountData.Parameters,SelectionAccount); TabDoc.Output(AreaDataAccount,1); SelectionCounterparty 契約 = SelectionCounterparty.Select(BypassQueryResult.ByGroups); SelectionCounterpartyAgreement.Next() ループ AreaDataAgreement.Parameters.Receipt = 0 ; AreaDataContract.Parameters.Expense = 0 ; PropertyValues(AreaDataAgreement.Parameters,SelectionCounterpartyAgreement)に記入します。 TabDoc.Output(AreaDataContract,2); TotalReceipt = TotalReceipt + SelectionCounterpartyAgreement.Receipt; TotalExpense = TotalExpense + サンプル取引先契約書.Expense; エンドサイクル ; エンドサイクル ; TabDoc.FinishAutoGroupingRows();

最終データをエリアに表示することが残っています 地下そしてエリア自体を出力します スプレッドシート文書.

AreaBasement.Parameters.TotalIncoming = TotalIncoming; AreaBasement.Parameters.TotalConsumption = 総消費量; TabDoc.Output(AreaFooter);

これで、アクセス制御システムを使用せずに 1C 8 の外部レポートを作成するプロセスが完了しました。 1C:Enterprise 8 モードで生成し、ディレクトリに追加できるようになりました。 外部処理この記事で説明されているレポート ファイルは、からダウンロードできます。

マネージド アプリケーション用の外部印刷可能ファイルの作成に関するビデオをご覧ください。

注意!
ITS ディスクからのすべての処理は情報提供を目的としており、登録された ITS ユーザーのみを対象としています。

オブジェクトの選択と処理。 (ユニバーサル)

特定の条件を満たすドキュメントおよびディレクトリ内のオブジェクトを検索します。 検索結果を処理します。

情報ベースの畳み込み。 (ユニバーサル)

一般的な構成の情報セキュリティ ロールアップを実行します。

  • UPP3.1。
  • 血圧1.6。
  • UT10.3。

交換のための変更を登録します。 (ユニバーサル)

マネージド アプリケーション モードで、交換されたオブジェクトへの変更の登録を編集します。 さまざまなノード上の現在の登録を変更できます。 送受信メッセージ数を変更します。

ユーザーアクティビティログの変換。 (ユニバーサル)

ユーザーの操作ログを組み込み言語のプログラムに変換します。

データ内の全文検索。 (ユニバーサル)

データのインデックス作成と検索。

値の検索と置換。 (ユニバーサル)

情報セキュリティオブジェクト内の参照値を検索して置換します。

技術ログの設定。 (ユニバーサル)

プロセスログファイルを作成または編集します。 クラッシュ ダンプの作成を構成し、発生時にこのログに記録される情報とイベントを構成する機能があります。

ジョブコンソール。 (ユニバーサル)

バックグラウンドタスクと日常的なタスクを監視します。 削除し、新しいものを作成します。

外部処理の変換。 (ユニバーサル)

機密情報の変更。 (ユニバーサル)

特定の情報から情報セキュリティを選択的に変更または消去すること。

グループの詳細変更。 (ユニバーサル)

文書や参考書の詳細や表の部分を変更します。

ユーザーのアップロードとロード。 (ユニバーサル)

情報セキュリティ ユーザーを XML ファイルにアップロードしてロードします。

外部データベースへのデータのアップロード。 (ユニバーサル)

次の 2 つのモードで ADO を使用して、データ構造を外部 DBMS にアップロードします。

  • すべてアンロードする
  • 変更をアップロードします (作業側 IS の変更を受信側 IS と同期するために使用されます)。 このモードでは、交換計画メカニズムが使用されます。

以下のDBMSをサポートしています。

  • Microsoft SQL
  • IBM DB2
  • オラクル
  • PostgreSQL
  • MySQL

XML データのアップロードとロード。 (ユニバーサル)

データを完全または部分的にアップロードして情報セキュリティにロードします。 オブジェクト構成が類似した構成間でデータを転送するために使用されます。

スプレッドシート ドキュメントからデータをロードします。 (ユニバーサル)

データを表形式ドキュメントからディレクトリおよび表形式パーツにロードします。

通常のアプリケーション モードのシック クライアントで動作します。

コンソールをリクエストします。 (ユニバーサル)

レポート作成とクエリ作成に優れた支援を提供します。