印刷したフォームはどこに保管されますか?

最も単純な印刷形式を次のように書くことを考えてみましょう。 1秒 8.1 - 8.2構成例を使用する 企業会計 2.0。 ドキュメントの外部印刷フォームを作成する必要があるとします。ドキュメントの基本データと表形式の部分を表示します。 : 命名法、価格、数量、金額。

結果の例は からダウンロードできます。

コンフィギュレーターで 1C エンタープライズ 8外部処理を作成する ( ファイル -> 新規 -> 外部処理)、名前を設定し、外部印刷フォームに必要な詳細を作成します。 オブジェクトリファレンスタイプ付き DocumentLink.商品およびサービスの販売.

印刷フォームのレイアウトを作成する

新しいものを追加 レイアウト、レイアウトの種類はそのままにします スプレッドシートドキュメント。 レイアウト上に 3 つの領域を作成します。 ヘッダー、データそして 地下。 これを行うには、必要な行数を選択し、メニューをクリックします。 テーブル -> 名前 -> 名前の割り当て (Ctrl+Shift+N).

この後、領域へのテキストとパラメータの配置を開始します。 ヘッダーに入れておきます 印刷フォームの名前、文書番号そして 組織、また、テーブルヘッダーの境界線を描画し、列の名前を書き込みます。 セルのプロパティでパラメータを作成するときは、[レイアウト]タブでプロパティを設定する必要があります。 充填意味的には パラメータ.

エリア内 データ表形式セクションに行を表示するためのパラメーターを作成しましょう( 名称、価格など)、およびその地域では 地下数量と金額による合計の場合。

プログラミング

印刷フォームオブジェクトモジュールに行きましょう アクション -> オブジェクトモジュールを開く.

ここで、印刷フォームに必須のエクスポート関数を作成しましょう。 シール().

機能プリント () 輸出エンドファンクション

関数内で変数を作成します。 スプレッドシートドキュメント 、印刷されたフォームが出力されます。 レイアウトそして レイアウトエリア.

TabDoc = 新しい TabularDocument; レイアウト = GetLayout("レイアウト" ); HeaderArea = Layout.GetArea("ヘッダー" ); AreaData = Layout.GetArea("データ" ); AreaFooter = Layout.GetArea("フッター" );

パラメータを埋めてみましょう 帽子そしてそれを持って行きます スプレッドシートドキュメント.

HeaderArea.Parameters.HeaderText = +LinkToObject.Number; HeaderArea.Parameters.Organization = LinkToObject.Organization; TabDoc.Output(ヘッダー領域);

テーブルの行を取得するには リクエストを使用します。

リクエスト = 新しいリクエスト; Request.SetParameter("リンク", ObjectLink); Query.Text = "SELECT | 商品およびサービスの販売 商品、名称、 | 商品およびサービスの販売商品、金額、 | 商品およびサービスの販売 商品、価格、 | 商品およびサービスの販売 商品.数量|から | ドキュメント. 商品およびサービスの販売. 商品 商品およびサービスの販売方法 商品|どこで | 商品およびサービス商品の販売。リンク = &Link";

詳細をリクエストパラメータに渡します オブジェクトリファレンス、条件で示す どこ、印刷フォームを取得する元の文書からのデータのみが必要であるということです。 サンプル クエリを取得するには、まずクエリを実行し、次に行を選択します。

選択 = Query.Run().Select();

次にループでエリアパラメータを入力します。 データ文書サンプルの各行を次のように表示します。 スプレッドシートドキュメント。 ループ内の合計値も計算します そして 金額。 各パラメータを個別に入力するのではなく、次の手順を使用します。 PropertyValues((<Приемник>, <Источник>) から グローバルコンテキスト、プロパティ値をコピーします <Источника> プロパティへ <Приемника> 。 マッチングはプロパティ名によって行われます。 これについて詳しくは、 構文アシスタント 1C Enterprise 8.

合計合計 = 0 ; 合計数量 = 0 ; While Selection.Next() ループ FillPropertyValues(AreaData.Parameters,Selection); TotalSum = TotalSum + Sample.Sum; 合計数量 = 合計数量 + サンプル数量; TabDoc.Output(AreaData); エンドサイクル ;

領域を塗りつぶして表示する 地下.

AreaFooter.Parameters.TotalQuantity = 合計数量; AreaFooter.Parameters.TotalSum = TotalSum; TabDoc.Output(AreaFooter);

完成したスプレッドシートドキュメントを関数から返す シール().

TabDoc を返します。

標準構成のいずれかを使用している場合は、スプレッドシート ドキュメントを返した後、 1C印刷されたフォームが画面に表示されます。 出力にスプレッドシート ドキュメント方式を使用することもできます。 見せる().

5. 印刷されたフォームをドキュメントに接続する

標準構成 1C 8外部印刷フォームを登録するためのディレクトリがあります 外部処理。 接続するには、エンタープライズ モードのメニューに移動します サービス -> 追加のレポートと処理 -> 追加の外部印刷フォーム.

新しいディレクトリ要素を追加し、印刷されたフォームをディスクからロードし、ドキュメント タイプを選択します。

今、文書の中で 商品およびサービスの販売新しい印刷可能ファイルが表示されます。

印刷フォームの自動登録

印刷フォームを接続するときにドキュメントの種類を手動で選択する必要がないようにするには、次のように設定できます。 自動登録。 これを行うには、新しいレイアウトを追加して呼び出します。 設定_自動登録(これが唯一の方法です) そして最初のセルに次のように書きます。 ドキュメンテーション。<Наименование документа> (または ディレクトリ。<Наименование справочника> ).

ここで、印刷フォームを接続するときに、次を使用するように求められます。 自動登録パラメータ.

この記事では、1C 8 の知識がほとんどない初心者が印刷フォームを作成する方法を詳しく説明します。 たとえば、最も一般的な 1C 8 構成の 1 つを考えてみましょう。 会計2.0。 印刷フォームの作成 1C の書き込み段階:

  • 外部印刷フォームファイルの作成。
  • 印刷フォームのレイアウトの作成。
  • 印刷されたフォームデータを画面に表示するためのプログラムコードを作成します。
  • 印刷フォームの自動登録用パラメータの作成。
  • 外部印刷フォームをベースに接続する 1C エンタープライズ.

印刷フォームの作成 1C. 問題の定式化

構成では必須です 会計2.0ドキュメントの印刷フォームを作成する 商品およびサービスの受け取り。 印刷されたフォームのヘッダーに、次のデータを表示します。

  • 組織;
  • 取引相手;
  • 取引相手の合意。
  • 領収書の日付。

表形式セクションのデータを表として表示します 書類。 テーブルには次の列が含まれている必要があります。

  • 命名法;
  • 量;
  • 価格;
  • 和;
  • また、現在の日付の商品の価格 (文書からの価格の種類別)。

外部処理ファイル

問題の解決に進みましょう。 まず、1C 8 モードを開いてみましょう コンフィギュレーター。 すべての開発は 1C 8 プラットフォーム上で実行されるこのモードで、外部処理ファイルを作成する必要があります。 これを行うには、メニューをクリックします ファイル -> 新規…または新しいファイルのアイコンから。

開いたウィンドウで項目を選択します 外部処理.

次はフィールドで 名前外部処理の名前を入力する必要があります。 この例では、単に「PrintForm」と呼びます。同義語フィールドは自動的に入力されます。 現場ではご注意ください 名前、外部処理を行う場合、名前はスペースや句読点を使用せずに記述する必要があります。

外部処理属性を追加しましょう 「オブジェクトにリンク」して選択します彼の代わりにタイプする DocumentLink.商品およびサービスの受領。 これを行うには、1C 外部処理メタデータ ツリーで項目を選択します。 必要条件そしてボタンを押してください 追加(緑色のプラスが付いたボタン)。 属性プロパティ ウィンドウが画面の右側のフィールドに開きます。 名前かきましょう - オブジェクトへの参照。 で分野 タイプ 3 つの点のボタンを押します。

タイプツリーのブランチを展開してみましょう ドキュメントリンクをクリックし、そこにある「商品およびサービスの受領」という要素を見つけて、その横にあるチェックボックスをオンにして、 わかりました。

外部処理ファイルを保存しましょう HDD、これにはメニューを使用します ファイル -> 保存、ピクトグラム 保存(青いフロッピー ディスク)、またはキーボード ショートカット Ctrl+S。 保存したファイルの名前を「PrintForm」としましょう。

印刷フォームのレイアウトを作成する

1C 印刷フォームのレイアウトを作成してみましょう。 レイアウトは印刷フォームの出力のテンプレートとして機能するため、印刷フォームの見栄えを良くしたい場合は、レイアウトに注意を払う必要があります。

外部処理メタデータ ツリーに新しいレイアウトを追加しましょう。レイアウト デザイナー ウィンドウでは何も変更せず、ボタンをクリックします。 準備ができて.

開いた新しいレイアウトで、印刷フォームを表示するために必要ないくつかの領域を作成します。 必要なレイアウト領域はすべて水平であるため、新しい領域を作成するには、必要なレイアウト行数を選択し、メニューに移動します。 テーブル -> 名前 -> 名前の割り当てまたはキーボードショートカットを使用します Ctrl + Shift + N、次に、ボックスに地域の名前を入力します。 レイアウト領域を作成するときは、行数を間違うことを恐れず、いつでも追加または削除できます。 1C レイアウト行を削除するには、目的の行を選択し、コンテキスト メニューで項目を選択します。 消去。 レイアウトに新しい行を追加するには、レイアウトの任意の行を選択し、コンテキスト メニューで項目を選択します。 拡大する.

レイアウトヘッダーの追加

まずはエリアを作成しましょう キャップを選択すると、印刷されたフォームのヘッダーのデータが表示されます。 この領域には 7 つのレイアウト行が必要です。 それらを選択し、上で書いたように、キーの組み合わせを押してみましょう。 Ctrl + Shift + N、フィールドで 名前「帽子」と書いてボタンを押す わかりました.

レイアウト領域に必要なデータを埋めてみましょう。 通常、印刷フォームはタイトルなしでは完成しないため、レイアウト ヘッダーにもタイトルを作成しましょう。 タイトルには、印刷されたフォームの名前に加えて、印刷されたドキュメントの番号も表示されるため、レイアウト内のタイトルのテキストをパラメータとして設定します。 レイアウト パラメータは、組み込みの 1C 8 言語を使用してさまざまなデータを出力できる、特別に指定されたレイアウト セルです。 タイトルは印刷フォームの幅全体に表示する必要があるため、標準フォームに印刷するのに十分なレイアウト セルの数を決定しましょう。 横向き葉。

通常は 13 または 14 個のレイアウト セルで十分です。領域の最初の行でそれらを選択します。 キャップ 1 つのセルに結合します ( コンテキストメニュー -> マージ)。 この後、結果として得られる大きなセルをダブルクリックし、パラメータの名前を書き込みます(この場合は「TitleText」)。 入力したテキストを本格的なパラメータにするには、セルを右クリックし、コンテキスト メニューで項目を選択します。 プロパティ。 ブックマークに レイアウトフィールドを見つけてみましょう 充填そして値を選択します パラメータ。 1C レイアウトのパラメータは括弧で示されています。<>».

印刷フォームの見出しは他のテキストの中で目立つようにする必要があるため、セルを再度選択し、レイアウト書式設定パネルのアイコンを使用してテキストの配置を設定します。 中央揃えフォントサイズは14です。

タイトルテキストの後のエリアに表示されます キャップ組織、取引相手、取引相手の契約、商品の受領日に関する情報。 このデータもすべてドキュメントから取得されるため、パラメーターを使用して形式化します。 また、各パラメータの前に、組織がどこにあるのか、取引先がどこにあるのかなどをユーザーが簡単に理解できるように、説明文を記述する必要があります。 これらのアクションはすべてタイトルの作成と似ているので、詳細には触れず、最終的に何が起こるかだけを説明します。

この図は、レイアウト パラメーターが通常のテキストとどのように異なるかを示しています。

レイアウトテーブルヘッダーの追加

このレイアウト領域で最後に作成する必要があるのは、表部分のデータが表示される表ヘッダーです。 。 テーブルに必要な列については、「問題ステートメント」セクションで説明されています。 また、セルの組み合わせとテキスト(列名)の書き込みを使用して表のヘッダーを作成します。 ツールを使用してテーブルヘッダーの境界線を選択します フレーム、これはレイアウト書式設定パネルにあります。

レイアウトへのテーブルの追加

レイアウト内に別のエリアを作成しましょう - データ。 表形式パーツのデータテーブルが表示されます 品。この領域では、レイアウトは 1 行だけで済みます。 表形式パーツの全行を印刷形式で表示するには、入力して出力します。 この地域必要な回数。 エリア内の柱 データテーブルヘッダーの列と一致する必要があるため、記入するのは難しくありません。 唯一の違いはエリアです データテキストだけでなくパラメータも必要です。 また、デフォルトでは、数値パラメータは右側にフォーマットされ、テキスト パラメータは左側にフォーマットされることにも注意してください。 列を選択するには、ツールも使用する必要があります。 フレーム.

レイアウトへのフッターの追加

最後に必要なレイアウト領域は、 地下。 数量と金額ごとに合計が表示されます。 作成はエリアの作成に似ています データですが、さらに結果を太字で強調表示する必要があります。

最終結果は次のようなレイアウトになるはずです。

印刷フォームの作成 1C. プログラミング

プログラミングを始めましょう - これは印刷フォームを作成する上で最も重要な段階です。 まず、外部印刷フォームオブジェクトモジュールに行きましょう。ここでプログラムを作成します。 これを行うには、メインの外部処理ウィンドウで、 アクション -> オブジェクトモジュールを開きます。

外部印刷フォームオブジェクトモジュールにエクスポート関数を作成する必要があります シール()。

関数 Print() エクスポート EndFunction

この機能は、通常のアプリケーションを使用する構成の外部印刷フォームに必要であることに注意してください。 印刷フォームを表示するために必要な後続のプログラム コードはすべて、この関数内に記述されます。

基本的な変数の初期化

変数を作成しましょう タブドキュメントこれにはスプレッドシート ドキュメントが含まれます。これはまさに、レイアウトの塗りつぶされた領域を表示する印刷フォームです。

TabDoc = 新しい TabularDocument;

変数へ レイアウト作成した印刷フォームのレイアウトを取得します。 これを行うには、組み込み関数を使用します GetLayout(<ИмяМакета>).

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

レイアウトのすべての領域を変数に変換します。 これを行うには、レイアウトメソッドを使用します GetArea(<ИмяОбласти>) .

HeaderArea = Layout.GetArea("ヘッダー"); AreaData = Layout.GetArea("データ"); AreaFooter = Layout.GetArea("フッター");

印刷されたフォームのヘッダーをスプレッドシート文書に出力する

必要な変数はすべて初期化されます。 スプレッドシート ドキュメントのレイアウト領域の入力と表示を開始しましょう。 まず最初に、印刷可能なフォームのタイトルを入力しましょう。このためには、パラメータを渡す必要があります。 タイトルテキスト、レイアウトで作成した、必要なテキストです。 レイアウト領域のパラメータ値を入力するには、 - と呼ばれる特別なコレクションがあります。 オプション。そこから「。」を経て 任意のパラメータを取得できます。 ヘッダーテキストには、「印刷フォーム」というテキストと文書番号を転送します。

ヘッダー Area.Parameters.TitleText = "印刷フォーム"+LinkToObject.Number;

ヘッダーの残りのパラメータも同様の方法で入力し、詳細から必要な値をすべて取得します。 オブジェクトリファレンス、印刷するドキュメントへのリンクが含まれています。

HeaderArea.Parameters.Organization = LinkToObject.Organization; HeaderArea.Parameters.Account = LinkToObject.Account; HeaderArea.Parameters.ReceiptDate = ObjectLink.Date; ヘッダー Area.Parameters.Counterparty Contract = LinkToObject.Counterparty Contract;

ヘッダーのすべてのパラメータが入力されています。作成したスプレッドシート文書にそれを表示します。このために、メソッドを使用します。 出力(<Область>) .

TabDoc.Output(ヘッダー領域);

印刷されたハンディキャップのリクエストを書く

領域の塗りつぶしと描画を開始しましょう データ。 1C 印刷フォームの作成にはクエリの作成も必要です。表形式のデータを取得するためにクエリが必要です。 そして価格 命名法現在の日付には使用します リクエスト。 1C 8 クエリ言語は SQL に似ており、むしろその SELECT 演算子の機能を実質的にコピーしていますが、クエリ全体はロシア語で書かれています。 したがって、SQL に少なくとも漠然と慣れていれば、1C 8 クエリ言語を簡単に理解できるでしょう。

この印刷された形式では、リクエストは非常に単純であり、多くの人はクエリ言語がなくてもできると言うでしょうが、クエリ言語の知識とそれを適切に使用する能力は 1C プログラマーの主なスキルの 1 つです。 クエリを使用すると、より少ないリソースを使用して複雑なデータ サンプルを取得でき、クエリ テキストは、クエリを使用せずに (または最小限の使用で) 作成されたプログラム コードよりもはるかに理解しやすくなります。 さらに、1C 8 には、必要なテーブルから対話的にクエリを組み立てることができる非常に優れたクエリ デザイナーが備わっています。

リクエストを含む変数を作成しましょう。

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

リクエスト コンストラクターを使用してリクエスト テキストを作成します。 まず、次のように書きましょう:

Request.Text = "";

引用符の間にマウス カーソルを置き、マウスの右ボタンを押します。 開いたコンテキスト メニューで項目を選択します リクエストコンストラクター、 1C 印刷フォームを作成するのに非常に役立ちます。 この後、クエリ デザイナー ウィンドウが開きます。このウィンドウには多くのタブが含まれていますが、このクエリに必要なのは「テーブルとフィールド」、「リレーション」、「条件」、「結合 / エイリアス」の 4 つだけです。

このクエリには 2 つのテーブルが必要です: テーブル部分 書類 商品およびサービスの受け取りおよび登録日の最新情報のスナップショット アイテムの価格.

デザイナーウィンドウの左側に列があります。 データベース。 これにはすべてのメタデータ オブジェクトのツリーが含まれています。必要なものを見つけてみましょう。 これを行うには、スレッドを開いてみましょう ドキュメンテーションそして文書を見つけてください 商品およびサービスの受け取り、それを開いて表形式の部分を見つけてみましょう 、クエリ デザイナーの列にドラッグします。 テーブル。 ドラッグする方法は 3 つあります。ドラッグする方法、テーブルをダブルクリックする方法、テーブルを選択して「>」ボタンをクリックする方法です。 スレッドを開いてみましょう 情報レジスターそこでテーブルを見つけてください 価格命名法.ショートカット最新、列にドラッグすることもできます。 テーブル。 この 2 つのテーブルはクエリには十分です。

結果のテーブルから必要なフィールドを選択しましょう。 これを行うには、列で テーブルテーブルを開けましょう そしてフィールドを見つけます: 名称、金額、価格、数量そしてそれらをコンストラクターの 3 番目の列にドラッグします - 田畑。 表を展開してみましょう 、フィールドを探しましょう 価格また、それを次の場所にドラッグします 田畑.

リクエストのテーブルとフィールドの構造が準備できたので、条件に進みましょう。 表形式のデータが必要です すべての領収書から取得されたわけではなく、当社が印刷した領収書のみから取得されました。 これを行うには、テーブルに条件を課します。 商品の受け取りサービス商品。 クエリデザイナーの「条件」タブに移動しましょう。 コラム内 田畑前に選択したテーブルが見つかりました。条件としてフィールドが必要です。 リンクテーブルから 商品およびサービスの受け取り 商品、これを「Conditions」ウィンドウにドラッグしてみましょう。

1C クエリでは、リクエストにデータを転送するために必要なパラメーターを使用できます。 たとえば、ドキュメントの選択を特定のドキュメントに制限したい場合は、パラメータを使用してこのドキュメントへのリンクをリクエストに渡し、このパラメータを条件で使用できます。 これはまさに私たちがリクエストで行うことです。

窓のあと 条件フィールドを追加しました リンクの場合、クエリ デザイナー自体が同じ名前のパラメーターを作成し、それを「=」記号の後に配置します。 必要に応じて、このパラメータの名前を変更できます。 リクエスト テキストでは、パラメーターに「&」記号が付いていますが、この場合、条件の 2 番目の部分にパラメーターが含まれていると想定されているため、これは必要ありません。これを覚えておくだけで済みます。 1C リクエスト パラメータに値を渡す方法については、以下で説明します。

リクエストでは製品価格の完全なテーブルではなく、仮想テーブル (この場合は後者のスライス) を使用しているため、この仮想テーブルの形成条件を設定する必要があります。この場合、これは締め日と価格の種類の条件 (厳密に定義された価格の種類がある価格は、当社が印刷する領収書に指定されている価格です)。

仮想テーブルのパラメータを入力するには、タブに移動します。 テーブルとフィールド列内のクエリ コンストラクター テーブルテーブルを選択してください 価格命名法切断最新そしてボタンを押してください 仮想テーブルのオプション, 上部にあります。 開いた窓の中で、フィールドの中で 期間値下げが行われる日付を渡すパラメータを設定する必要があります。 この場合、これは現在の日付 (つまり、今日) になるため、パラメーターを「&CurrentDate」と呼びます。 条件フィールドに価格タイプの条件を書き込み、それを「&TypePrice」というパラメータにも渡します。 結果の条件は次のようになります (ここで、 種類価格- 見当測定 アイテムの価格):

価格タイプ = &価格タイプ

仮想テーブルパラメータが入力されたら、ボタンをクリックします。 わかりました.

選択を必要なドキュメントのみに限定したので、クエリ テーブル間の接続を作成しましょう。 これを行わないと、PriceNomenclatureSliceLast テーブルの価格がレシートの品目に関連付けられなくなります。 タブに行きましょう 接続クエリデザイナー。 フィールドを越えてつながりを作ろう 命名法私たちの2つのテーブルの間。 これを行うには、ボタンを押します 追加、フィールドで 表1テーブルを選択する 商品の受け取りサービス商品、およびフィールド「表 2 - 価格名称スライスラスト」。 通信条件でフィールドを選択します 命名法両方のテーブルから。

クエリ選択では、タブ部分からすべての行を取得する必要があることにも注意してください。 および価格は、文書価格タイプの現在の日付で入手可能な場合にのみ表示されます。 したがって、表形式のデータは、 は必須ですが、価格の内訳データは入手できません。 したがって、これらのテーブル間の関係では、いわゆる LEFT JOIN を使用する必要があり、左側の (または必須の) テーブルは次のようになります。 商品の受け取りサービス商品、および右側 (またはオプション) PriceNomenclatureSliceLast。 クエリ テーブルの左結合が上で説明したように機能するには、チェックボックスをオンにする必要があります。 全て畑の後 表1。


リクエストはほぼ準備が整いました。残っているのはフィールド エイリアスで少し作業することだけです。 ブックマークに行きましょう ユニオン/エイリアスフィールドのエイリアスを設定します 価格命名スライス最新.価格。 ニックネーム名は - になります。 今日の価格、クエリ選択フィールドの名前と印刷されたフォーム レイアウトのパラメーターの名前が一致するために必要です。

クエリ デザイナーでの作業は完了です。[OK] をクリックします。 デザイナー ウィンドウが閉じると、リクエスト テキストが含まれる行が次のように入力されていることがわかります。

Request.Text = "SELECT | GoodsServicesProducts.Nomenclature の受領、 | GoodsServicesGoods.Amount の受領、 | GoodsServicesProducts.Price の受領、 | GoodsServicesProducts.Quantity の受領、| PriceNomenclature 最新の価格 AS PriceToday のスライス | FROM | Document. GoodsServices.Goods AS ReceiptTo varsServicesProducts LEFT CONNECTION RegisterInformation.PricesNomenclature.SliceLast (| &CurrentDate, PriceType = &PriceType) HOW Nomenclature PriceSliceLast | ON GoodsServicesProducts.Nomenclature | = PriceNomenclatureSliceLast.Nomenclature |WHERE | Receipt of GoodsServicesProducts.Link = &Link";

リクエストの実行

必要なパラメータをリクエストに渡しましょう。これには request メソッドを使用します。 SetParameter(<ИмяПараметра>,<Значение>). 現在の日付を取得するには、組み込み関数を使用します 現在の日付()、コンピュータの日付と時刻を返します。

クエリを実行して、必要なデータを含むサンプルを取得しましょう。 これを行うには、まず request メソッドを使用します。 走る()、そしてメソッド 選ぶ().

選択 = Query.Run().Select();

印刷されたフォームテーブルに記入する

その結果、変数では、 サンプルクエリ結果の選択が含まれており、メソッドを使用してナビゲートできます。 次()そして、全体を通過するにはループが必要です さよなら。 デザインは以下のようになります。

While Select.Next() ループ EndLoop;

このループ内でレイアウト領域を埋めて表示します。 データ。 ただし、その前に、数値型の 2 つの変数を初期化しましょう。 その中で、エリア内に表示する必要がある量と金額ごとに合計を収集します。 地下.

合計合計 = 0; 合計数量 = 0;

ループ内で領域を塗りつぶします データ現在の選択要素から変数へのデータ 合計金額そして 総量合計値と数量値を追加し、最後に、すでにおなじみの方法を使用してスプレッドシート文書に面積を表示します。 出力()。 リクエストのフィールドの名前はエリアパラメータの名前と完全に一致しているため、 データ次に、埋め込むために、組み込みプロシージャ FillPropertyValues(<Приемник>, <Источник>)、プロパティ値をコピーします<Источника>プロパティへ<Приемника>.

While Selection.Next() ループ FillPropertyValues(AreaData.Parameters,Selection); TotalSum = TotalSum + Sample.Sum; 合計数量 = 合計数量 + サンプル数量; TabDoc.Output(AreaData); エンドサイクル;

印刷フォームのフッターをスプレッドシート文書に出力する

レイアウトの最後の領域を埋めて表示することが残っています - 地下。 充填用のデータはすでに準備されており、充填と引き出しは同じスキームに従って実行されます。

AreaFooter.Parameters.TotalQuantity = 合計数量; AreaFooter.Parameters.TotalSum = TotalSum; TabDoc.Output(AreaFooter);

スプレッドシート ドキュメントへの入力は完了しました。あとは、それを画面に表示して、ユーザーが印刷されたフォームを表示し、必要に応じて印刷できるようにするだけです。 しかし、典型的な 1C 8 構成では、特別なモジュールのプロシージャが外部印刷フォームの出力を担当します。 したがって、関数から返せば十分です シール()完成したスプレッドシート文書。

TabDoc を返します。

この時点で、プログラミング段階は完了し、1c 印刷フォームの作成はほぼ完了します。 関数の全文 シール()ここでは説明しませんが、記事の下部からダウンロードできる印刷可能なフォーム ファイルで確認できます。

印刷フォームの作成 1C. 自動登録オプション

外部の印刷フォームをデータベースに接続する場合、システムは印刷フォームの対象となる文書または参考書を自動的に判断しないため、手動で選択する必要があります。 また、別の人が印刷されたフォームを作成し、それを接続することだけを担当している場合、選択は曖昧になる可能性があります。 このような問題を回避するには、すべての外部印刷フォームで自動登録パラメータを使用してレイアウトを作成する必要があります。 フォームが作成され、正しくフォーマットされている場合、システムは、印刷されたフォームがどの文書または参考書を対象としているかを自動的に判断します。

それは次のように行われます。

  • 外部処理では、新しいレイアウトを作成します。 これを「設定_自動登録」と呼びます(間違えないように注意してください)。
  • レイアウトの最初のセルに次のように書きます。 ドキュメンテーション。(または ディレクトリ。) と、印刷されたフォームを接続する必要があるドキュメントの名前。

外部印刷フォームをベースに接続する

  • 1C 8 モードで開始 会社;
  • メニューに移動 サービス -> 追加のレポートと処理 -> 追加の外部印刷フォーム;
  • ボタンをクリックしてください 追加;
  • 開いたウィンドウで、アイコンをクリックします 外部処理ファイルを置き換える;
  • 自動登録パラメータを作成した場合、当社はそれらを使用することに同意します。
  • 自動登録パラメータを作成していない場合は、表形式の部分で 版付属品追加 必要書類または参考書。
  • ボタンを押す わかりました。

この後、外部印刷フォームがメニューで使用できるようになります。 シール書類 商品およびサービスの受け取り。これで、1C 印刷フォームの作成は完了したと見なされます。

それは周知の事実ですが、今日ではますます多くの企業が 電子文書管理、「一枚の紙がなければ...」という古いことわざは、その妥当性を失うことはありません。 たまたま、何らかの理由で検査当局が主に紙の文書に関心を持っていることがあります。 したがって、財務管理のために 1C: Accounting または Enterprise プログラムを積極的に使用する場合は、そのプログラムを使用して作成された電子ドキュメントを印刷する方法を知っておくことが重要です。

1C の印刷フォームを使用すると、電子ドキュメントを印刷バージョンに変換できます。

このために、開発者は優れたツールである Print Designer を提供しました。 これを利用すると、いくつかの標準フォームだけでなく、必要なデータを指定できるドキュメントを作成できます。 これは、いかなる状況でも変更できない、厳密に規制された形式を持たない文書に特に当てはまります。 これには、特に、作業の完了行為、一部の請求書または支払いが含まれる場合があります。

このガイドでは、プリント デザイナーの機能を理解し、どのような種類の印刷フォームがあり、それらがどのように異なるのかを検討することを提案します。 作成した帳票を印刷する方法も例を挙げて説明します。

まず、一般的に 1C 8 の印刷フォームがどのようなものであるかを理解する必要があります。これは 1C のスプレッドシート テンプレート (Excel など) であり、いくつかの変数行が指定されており、文書作成時にプログラムからのデータが入力されます。

印刷フォームには次の 2 種類があります。

  • 内部(内蔵)。 これらはプログラム構成に保存されるため、後のアップデート中に問題が発生する可能性があるため、変更しないことをお勧めします。
  • 外部 - プログラム設定とは別に保存されます。 そして、彼らの助けを借りて、1C 8 プログラムの構成に影響を与えることなく、ほぼあらゆる複雑なドキュメントを作成して印刷の準備をすることができます。

すでに用意されているレイアウトを選択するにはどうすればよいですか? 完了した作業のレポートを作成するなど、受信または送信操作を実行した後、「印刷」ボタンをクリックして文書を印刷します。 リストには、実行された取引と会社に関する入力データがすでに入力されている印刷可能なフォームのリストが表示されます。 必要なドキュメントの種類をクリックするとプレビュー ウィンドウが開き、入力したデータが正しいことを確認できます。 印刷ボタンを押すと、ドキュメントがプリンターに印刷されます。

基本的な説明は終わりましたので、すべての印刷可能ファイルがどこに保存されているかを理解しましょう。 次の質問に移りましょう。

印刷したフォームはどこに保管されますか?

組み込みの印刷フォームは、コンフィギュレーター モードと通常のエンタープライズ モードの両方で表示できます。 最初のケースでは、プログラムの起動時にスタートウィンドウの対応するボタンをクリックする必要があります。 プログラムメニューが表示され、「レイアウト」項目を含む「製品とサービスの販売」ブランチを見つけます。 多くの場合、「請求書」と「行為」の 2 つの項目のみが含まれます。 リストはさらに広範囲にわたるため、他の人はどこにいるのでしょうか? 彼らは別の場所に隠れているだけです。 「一般」-「一般レイアウト」ブランチを開く必要があります。ほとんどすべてのレイアウトがそこに保存されています。

2番目のケースでは、メニューセクション「管理」-「フォーム、レポートおよび処理の印刷」-「印刷フォームのレイアウト」に移動する必要があります。 すべてのドキュメントのレイアウトが表示されます。 同じメニュー内で編集できることは注目に値します。

外部フォームについては、まずコンフィギュレータ モードで作成するか、既製のファイルをダウンロードして作成し、「管理」メニュー - 「印刷フォーム、レポートおよび処理」 - 「追加レポートと処理」に接続する必要があります。処理"。 これについては後ほど説明します。

内蔵のプリントデザイナーを使用して簡単なフォームを作成する

このような印刷形式は、プログラム構成の変更や更新時のさらなる困難を伴うため、詳細な編集の可能性を示唆するものではありません。 ただし、標準フォームに完全に満足している場合、または外部フォームの作成の複雑さを詳しく知りたい場合は、この方法が最適です。

  1. まず、コンフィギュレーター モードを起動し、必要なドキュメント (製品およびサービスの販売など) を見つけます。ドキュメントのプロパティで、[アクション] - [デザイナー] - [プリント デザイナー] に移動します。
  2. 作業オプションを尋ねるプロンプトが表示されたら、「標準フォーム」を選択します。
  3. 新しいレイアウトに「請求書の印刷」などの名前を付けます。
  4. ドキュメントのヘッダーに表示したい詳細を選択します。 さらに、表示される順序で選択する必要があります。 選択するには、左の列の項目をカーソルで強調表示し、画面中央の矢印を押すと、右の列に詳細が表示されます。
  5. 表セクションに表示する詳細をマークします。 詳細の選択は、前の段落と同じ原則に従います。
  6. 同様に文書下部の詳細を選択します。
  7. 作成の最終段階で、プレビューなしですぐに印刷するかどうか、表を保護する必要があるかどうかを選択し、OK ボタンでフォームの作成を確認します。

外部印刷フォームの作成

プリント デザイナーで作成されたフォームは、すべてのコードを手動で入力せず、提案された要素からのみ作成する場合のビジュアル ソフトウェア エディターと比較できます。 外部フォームとは、データを画面に表示する手順を記述したプログラムコードを手動で記述したファイルです。 これにより、任意のデータを任意の順序で指定して、印刷されたフォームを自由に編集できるようになります。

さらなる利点は、1C 8 プログラミングの複雑さを理解していない場合、または単純に理解したくない場合でも、この手順を専門家に任せることができることです。 彼らはあなたのために必要なフォームを準備し、それを既製のファイルとして提供します。ボタンを数回クリックするだけでアクティブ化できます。

それでは、手順自体について詳しく説明しましょう。 「売上(行為、請求書)」という文書の「請求書」レイアウトを作成する例を見てみましょう。

  1. 1C 8 プログラムをコンフィギュレーター モードで開きます。
  2. [ファイル] - [新規] - [外部処理] をクリックし、名前を付けます (スペースは含めないでください)。次に [アクション] - [オブジェクト モジュールを開く] をクリックします。
  3. 開いた入力フィールドに、次のコードを入力します( 黄色独自に変更できる値が強調表示されます):

関数 InformationOnExternalProcessing() エクスポート
登録パラメータ = 新しい構造。
ArrayDestinations = 新しい配列;
Assignments.Add("Document.Sales of Goods and Services"); の配列 // 外部印刷を行うドキュメントを指定します。 形状
登録パラメータ.Insert("View", "PrintForm"); //たぶん - PrintableForm、オブジェクトの入力、追加レポート、関連オブジェクトの作成...
登録パラメータ.Insert("宛先", 宛先の配列);
登録パラメータ.Insert("名前", "商品の販売注文"); // 外部処理のディレクトリに処理を登録する名前
登録パラメータ.Insert("セーフモード", FALSE);
登録パラメータ.Insert("バージョン", "1.0");
登録オプション.Insert("情報", "この印刷可能なフォームはサンプルとして作成されました");
コマンドテーブル = GetCommandTable();
AddCommand(CommandTable, "外部注文", "外部注文", "CallServerMethod", True, "MXL 印刷");
登録パラメータ.Insert("コマンド", CommandTable);
登録パラメータを返します。
EndFunction // 外部処理に関する情報()
関数 GetTableCommand()
コマンド = 新しい値テーブル;
Commands.Columns.Add("View", New TypeDescription("Row"));//印刷フォームの説明がユーザーにどのように見えるか
Commands.Columns.Add("識別子", New TypeDescription("文字列")); //フォームレイアウト名を出力します
Commands.Columns.Add("使用法", NewTypeDescription("行")); //サーバーメソッドを呼び出す
Commands.Columns.Add("ShowAlert", NewTypeDescription("Boolean"));
Commands.Columns.Add("修飾子", NewTypeDescription("行"));
リターンチーム;
エンドファンクション
プロシージャ AddCommand(CommandTable, View, Identifier,Usage, ShowAlert = False, Modifier = "")
NewCommand = CommandTable.Add();
NewCommand.View = ビュー;
NewCommand.Identifier = 識別子;
NewCommand.Use = 使用;
NewCommand.ShowAlert = ShowAlert;
NewCommand.Modifier = 修飾子;
手順の終了

  1. 印刷用のレイアウトをハード ドライブ上の任意のフォルダーにファイルとして保存し、適切な名前を付けます。

同じ文書に、プログラム メニューから印刷を開始する手順を挿入します (黄色で強調表示されたコマンドはその行と一致する必要があります)。

コマンドの追加(コマンド表、「外部オーダー」、「外部オーダー」):
プロシージャ Print(オブジェクトの配列、PrintForms、PrintObjects、出力パラメータのコレクション) Export
Print Management.Output TabularDocumentIntoCollection(
印刷用紙のコレクション、
「外部からの注文」
「外部からの注文」
GeneratePrintForm(ArrayofObjects, PrintObjects);
EndProcedure // Print()

  1. 左下隅にある外部フォームの名前をクリックし、「レイアウト」-「追加」-「スプレッドシート文書」を選択して、印刷フォームに記入するためのレイアウトを挿入し、名前を付けます。 その後、スプレッドシートに必要なデータを入力します。 例えば:
    • [実現日]から品番[実現番号]をオーダー→右クリック→プロパティ→レイアウト→塗りつぶし→テンプレート。
    • ドキュメントに表示する列を作成します。
    • 入力したセルを選択し、「表」→「名前」→「名前の割り当て」をクリックし、「ヘッダー」という名前を入力します。
    • テーブルヘッダーのある行をコピーして選択し、右クリック - [プロパティ] - [レイアウト] - [塗りつぶし] - [パラメーター] を選択します。
    • 行を選択し、「StringTCH」などの名前を付けます。
    • フッターを作成します。合計金額を表示するセルに「Total」と書き、TotalTotal という名前を付け、プロパティで「パラメーター」を選択します。
    • 責任者を指定し、姓を表示するセルのプロパティに「パラメータ」を指定します。
    • 一番下の行を選択し、範囲に「フッター」という名前を付けます。
  2. 次に、入力ウィンドウに、印刷フォームを生成する関数を入力します。

関数 GeneratePrintForm(LinkToDocument, PrintObjects)
TabularDocument = 新しい TabularDocument;
TabularDocument.印刷パラメータの名前 = “PRINT_PARAMETERS_VRTU への支払いの請求書”;
処理レイアウト = GetLayout("支払い請求書外部");
//ヘッダーを埋めます
AreaHeader = ProcessingLayout.GetArea("ヘッダー");
AreaHeader.Parameters.DocumentNumber = LinkToDocument.Number;
AreaHeader.Parameters.DocumentDate = LinkToDocument.Date;
AreaHeader.Parameters.OrganizationName = LinkToDocument.Organization.Name;
// ヘッダーをスプレッドシートドキュメントに出力します
TabularDocument.Output(HeaderArea);
//PM行を埋めます
RowArea = ProcessingLayout.GetArea("ROW");
ドキュメント リンクからの各現在の行。製品サイクル
FillPropertyValues(RowArea.Parameters, CurrentRow);
TabularDocument.Output(RowArea);
エンドサイクル;
//地下室を埋める
AreaFooter = ProcessingLayout.GetArea("フッター");
AreaFooter.Parameters.QuantityTotal = LinkToDocument.Products.Total("数量");
AreaFooter.Parameters.AmountTotal = LinkToDocument.Products.Total("金額");
AreaFooter.Parameters.ResponsibleName = LinkToDocument.Manager.Name;
// フッターをスプレッドシートドキュメントに出力します
TabularDocument.Output(AreaFooter);
TabularDocument.AutoScale = True;
TabularDocument を返します。
エンドファンクション

  1. 変更をドキュメントに保存します。
  2. 次に、作成したフォームをアクティブにする必要があります。 このために:
    • 「管理」-「印刷フォーム、レポートおよび処理」-「追加レポートおよび処理」に移動します。
    • 「作成」ボタンをクリックし、エクスプローラーで外部フォームファイルを選択し、「保存して閉じる」ボタンで入力を確認します。
  3. 確認するには、[販売] - [販売 (行為、請求書)] に移動し、[印刷] ボタンをクリックしてフォームを選択し、正しく記入されていることを確認します。
  4. 必要に応じて文書を印刷します。

結論

プリント デザイナーと外部フォーム作成ツールを使用して印刷可能なフォームを作成する例を見ていきました。 すべてがうまくいくことを願っています。 コメントに質問を残してください。

それで、それは一体何のために必要なのでしょうか? たとえば、印刷フォームのレイアウト内のいくつかの文字を文字通り変更したり、行を追加したり、何かを削除したりする必要があります。 構成をサポートから削除すると、更新のたびに問題が発生しますか? 何のために? 外部印刷版を使用する方が良いでしょう。

これを作成するには、インターネットで見つけた処理が必要です。この奇跡の「外部印刷フォームデザイナー」の作者に感謝します。 次の場所からダウンロードして議論できます。 forum.-infostart.-ru/-forum24/-topic74569/.

始めましょう。1C:Enterprise で処理が開始されます。 メインウィンドウは次のようになります。

たとえば、「現金領収書注文」という文書の印刷形式を変更する必要があります。これを行うには、「文書タイプ」フィールドでそれを選択します。 コンフィギュレータに移動し、「現金受領書」ドキュメントのモジュール全体をコピーします。 次に、次の図に示すように、それを「ソース テキスト」フィールドに貼り付けます。

次のステップは [ツリーの構築] ボタンです。 ここで必要なのは、プロシージャのリストから「印刷」プロシージャの名前を見つけて選択し、「メインを選択」ボタンをクリックすることだけです。 処理自体によって、印刷に必要なプロシージャと関数が決定され、さらに「必要/不要」ボタンが決まります。プロシージャの本文では「転記用テーブルの生成」機能を使用しているため、「印刷フォームの構造の取得」という 2 つのプロシージャを選択しました。 、次に「必要」ボタンでも選択します。

次のステップでは、次に示すように、印刷するレイアウトの名前を入力し、変更します。

早速開封して確認してみます! 処理フォームが開きます。フィールドでレジの印刷に必要なドキュメントを選択し、フォームボタン「実行」をクリックすると、外部印刷フォームの準備が整います。

処理フォームから、外部の印刷フォームを簡単に登録することもできます。 特別なボタンフォームに入力すると、ドキュメントから印刷できるようになります。 これで、印刷レイアウトを変更できるようになりました。 幸運を!

レイアウトデザイナーを使用すると、アプリケーション ソリューションのオブジェクトとアプリケーション ソリューション自体全体の両方で使用されるレイアウトを作成できます。 レイアウトには、作業中に情報を表示するために必要なさまざまなタイプのデータを含めることができます。

コンストラクターは、新しいレイアウトを作成するとき (たとえば、構成ウィンドウで新しいディレクトリ レイアウトを作成するとき)、システムによって自動的に呼び出されます。

デザイナーを使用すると、空のレイアウトと何らかの情報を含むレイアウトの両方を作成できます。 これは、次のような空のスプレッドシート ドキュメント レイアウトである可能性があります。 スプレッドシート文書やレポートの出力形式の生成に広く使用されています。 空のレイアウトである可能性があります テキストドキュメントまたはバイナリデータを含むレイアウト。

デザイナーは、ActiveDocument を含むレイアウトの作成もサポートしています (たとえば、 Word文書, エクセルシートまたは CorelDRAW 図面)。 さらに、デザイナーを使用すると、HTML ドキュメントや地理図を含むレイアウトを作成できます。 データ構成システムを使用するレポートの場合、デザイナーを使用すると、データ構成図とデータ構成デザイン レイアウトを含むレイアウトを作成できます。

デザイナーの作業の結果、完成したレイアウトが作成されます。 たとえば、これは空のスプレッドシート ドキュメント レイアウトである可能性があります。