ビジネスでは金銭や物品を管理するために、さまざまな表が広く使用されています。 ほとんどすべてのドキュメントは表です。
1 つのテーブルには、倉庫から出荷される商品がリストされています。 別の表は、これらの商品に対する支払い義務を示しています。
したがって、1C では、テーブルの操作が重要な位置を占めます。
1C の表は「表部品」とも呼ばれます。 ディレクトリ、文書などにそれらがあります。
クエリを実行すると、2 つの異なる方法でアクセスできるテーブルが返されます。
最初の - より高速な - 選択、そこからの行の取得は、順番にのみ可能です。 2 つ目は、クエリ結果を値のテーブルにアップロードし、それにランダムにアクセスすることです。
//オプション 1 – クエリ結果への順次アクセス
//テーブルを取得する
選択 = Query.Run().Select();
// クエリ結果のすべての行を順番に調べます
While Select.Next() ループ
レポート(選択内容.名前);
エンドサイクル;
//オプション 2 – 値のテーブルへのアップロード
Request = New Request("SELECT Name FROM Directory.Nomenclature");
//テーブルを取得する
テーブル = Query.Run().Unload()。
//さらに、すべての行を反復処理することもできます
テーブルの各行のサイクル
レポート(文字列.名前);
エンドサイクル;
//または文字列に任意にアクセスする
Row = Table.Find("シャベル", "名前");
重要な特徴は、クエリ結果から取得されるテーブルでは、すべての列が厳密に型指定されることです。 これは、Nomenclature ディレクトリから Name フィールドをリクエストすると、許容される長さが N 文字以下の String 型の列を受け取ることを意味します。
フォーム上のテーブル (シッククライアント)
ユーザーは、テーブルをフォーム上に配置すると、テーブルを操作します。
フォームの操作の基本原則については、 のレッスンと のレッスンで説明しました。
それでは、フォーム上にテーブルを配置しましょう。 これを行うには、コントロール パネルからテーブルをドラッグします。 同様に、メニューから「フォーム/コントロールの挿入」を選択できます。
データは構成に保存できます。その場合、フォームを編集している構成オブジェクトの既存の (以前に追加された) 表形式の部分を選択する必要があります。
「データ」プロパティの「...」ボタンをクリックします。 表形式パーツのリストを表示するには、「オブジェクト」ブランチを展開する必要があります。
表形式の部分を選択すると、1C 自体がフォーム上の表に列を追加します。 このようなテーブルにユーザーが入力した行は、参考書/ドキュメントとともに自動的に保存されます。
同じデータ プロパティで、任意の名前を入力し、値テーブル タイプを選択できます。
これは、任意の値のテーブルが選択されたことを意味します。 列は自動的に追加されず、自動的に保存されませんが、必要に応じて何でも行うことができます。
テーブルを右クリックすると列を追加できます。 列のプロパティでは、その名前 (1C コードでの参照用)、フォーム上の列見出し、表形式部分の属性との接続 (後者 - 任意の表が選択されていない場合は、表部分)。
フォーム上のテーブルのプロパティで、ユーザーが行を追加/削除できるかどうかを指定できます。 より高度なフォームは、「表示のみ」チェックボックスです。 これらのプロパティは、編集ではなく情報の表示を目的としたテーブルを整理するために使用すると便利です。
テーブルを管理するには、フォーム上にコマンド パネルを表示する必要があります。 メニュー項目「フォーム」/「コントロールの挿入」/「コマンド バー」を選択します。
コマンド バーのプロパティで、[自動入力] チェックボックスを選択すると、パネル上のボタンが自動的に表示されます。
フォーム上のテーブル (シン/マネージド クライアント)
管理フォームでは、これらのアクションは少し異なって見えます。 フォーム上に表形式パーツを配置する必要がある場合は、「オブジェクト」ブランチを展開し、表形式パーツの 1 つを左側にドラッグします。 それだけです!
値のテーブルを配置する必要がある場合は、新しいフォーム属性を追加し、そのプロパティでタイプ (値のテーブル) を指定します。
列を追加するには、このフォーム属性を右クリックしてメニューを使用し、「属性列の追加」を選択します。
次に、表も左にドラッグします。
テーブルにコマンド バーを含めるには、テーブルのプロパティで、[使用法 - コマンド バーの位置] セクションの値を選択します。
テーブルを Excel にアップロードする
フォーム上にある 1C テーブルは、印刷したり Excel にアップロードしたりできます。
これを行うには、テーブル内の空のスペースを右クリックし、「リスト」を選択します。
管理対象 (シン) クライアントでは、メニュー項目 [すべてのアクション/表示リスト] を使用して同様のアクションを実行できます。
家 初心者開発者向け プログラミングを学ぶドキュメントの表部分からデータを取得するにはどうすればよいですか?
たとえば、表形式のセクションで指定されたすべての項目項目を取得する必要がある状況を考えてみましょう。 品書類 商品およびサービスの販売.
これを行うには、次のテキストを含むリクエストを使用できます。
各種選択 商品およびサービスの販売 商品。命名法 AS 文書からの命名法。 商品およびサービスの販売。 商品 AS 商品およびサービスの販売 商品。
出典として、文書の表部分、つまり表を示します。 文書、商品およびサービスの販売、商品。 出力フィールドをフィールドとして宣言します。 命名法、ソーステーブルの一部です。 さらに、同じ製品項目が当然のことながら文書内に複数回存在する可能性があるため、次のように使用します。 様々なクエリ出力テーブル内の個別の行のみを取得します。
たとえば、次のような処理を作成してみましょう 製品リスト、ドキュメントが選択されている場所 商品およびサービスの販売をクリックし、対応するボタンをクリックすると、この文書の表部分に含まれる用語の繰り返しのない項目のリストがメッセージ ウィンドウに表示されます。
項目の選択を特定のドキュメントの表部分の項目のみに制限するには、パラメーターを使用します。 リンクリクエストの条件 ( どこ...):
SELECT VARIOUS 商品およびサービスの販売 Goods. 命名法 AS 命名法 FROM Document. 商品およびサービスの販売. Goods HOW 商品およびサービスの販売 Goods WHERE 商品およびサービスの販売 Goods. Link = &Link
1C の多くのオブジェクトには表形式のパーツが存在します。
- ディレクトリ
- ドキュメンテーション
- レポートと処理
- 勘定科目表
- 特徴的なタイププラン
- 計算式プラン
- ビジネスプロセスとタスク
表形式のパーツを使用すると、1 つのオブジェクトに属する構造化情報を無制限に保存できます。
表形式のパーツを操作するためのテクニックをいくつか見てみましょう。
表形式部分をバイパスする方法
テーブル部分を移動するには、ループを使用できます。 それぞれについて
サイクルの表部分の各行について
Report(String.TabularPart 属性) ;
エンドサイクル ;
変数への反復ごとに ライン表形式セクションの次の行が送信されます。 行詳細の値は次の式で取得できます。 行.属性名.
表形式パーツの選択された行を取得してバイパスする方法
オブジェクトの表形式の部分から情報を表示するには、フォーム要素を使用します。 テーブルフィールド。 テーブルフィールドで複数の行を選択できるようにするには、値を設定する必要があります。 複数彼の所有物で 選択モード.
選択した行のリストを取得するには、次のコードを使用します。
ループは、選択した行を反復処理するために使用されます。 それぞれについて:
SelectedRows = FormElements。 テーブルフィールド名。 選択された行;
選択した行の各行についてループ
// 内容をループします
エンドサイクル ;
表形式パーツ (テーブル フィールド) の行をプログラムで選択し、選択を解除する方法
テーブルフィールドの行をプログラムで選択解除するには:
フォーム要素。 テーブルフィールド名。 選択された行。 クリア() ;
テーブルフィールドのすべての行をプログラムで選択するには:
各 CurrentRow From TabularPart ループ
フォーム要素。 テーブルフィールド名。 選択された行。 追加(現在の行) ;
エンドサイクル ;
テーブル部分のクリア方法
表形式のパート。 クリア() ;
テーブルセクションの現在の行を取得する方法
現在の行は、ユーザーが現在カーソルを持っているタイムラインです。 これを取得するには、表形式パーツに関連付けられているフォーム上のコントロール要素にアクセスする必要があります。
通常の形式の場合、コードは次のようになります。
フォーム要素。 テーブルフィールド名。 現在のデータ;
管理フォームの場合:
要素。 テーブルフィールド名。 現在のデータ;
テーブルセクションに新しい行を追加する方法
表部分の末尾に新しい行を追加します。
NewRow = テーブルパート。 追加() ;
表セクションの任意の場所に新しい行を追加します (後続の行は移動されます)。
NewRow = テーブルパート。 挿入(インデックス)
//インデックス - 追加された行の番号。 行番号はゼロから始まります。
改行。 Props1 = "値" ;
テーブル行の詳細をプログラムで入力する方法
ユーザーが追加したテーブル セクション行の詳細をプログラムで入力する必要がある場合は、テーブル セクション イベント ハンドラーを使用する必要があります。 編集を始めるとき.
ハンドラーによって作成されたプロシージャには、次の 3 つのパラメーターがあります。
- 要素- 制御要素が含まれています 表形式フィールド.
- 改行- ブール値。 値が含まれています 真実、新しいテーブル行が追加された場合、および 嘘、ユーザーが既存の行の編集を開始した場合。
- コピー- ブール値。 値が含まれています 真実、ユーザーがその行をコピーした場合、そして 嘘他の場合には。
例を見てみましょう。 表形式のセクションの詳細を入力する必要があるとします。 アカウントアカウント, 新しい行が追加された場合。 既存の明細を編集する場合、会計アカウントを変更する必要はありません。
プロシージャ TabularPartAtStartEditing(Element, NewRow, Copy)
// ユーザーが既存の行を編集した場合、何も行いません
NewRow でない場合は、
戻る;
EndIf ;
//新規回線の場合は会計アカウントを設定
TechString = アイテム。 現在のデータ; // 表形式パーツの現在の行を取得します
テックストリング。 会計 = 勘定科目表。 自立型。 必須アカウント;
手順の終了