管理フォームの詳細 (1Cv8)。 フォーム属性から値への関数とフォームデータから値への関数の違い アプリケーションオブジェクトデータをフォームデータに変換する方法

印刷 (Ctrl+P)

アプリケーション オブジェクトをフォーム データに変換したり、逆に変換したりするには、一連のグローバル メソッドがあります。

  • ValueInFormData()、
  • FormDataInValue()、
  • CopyFormData()。

アプリケーション オブジェクトを操作するメソッドは、サーバー プロシージャでのみ使用できます。 アプリケーション オブジェクトをパラメーターとして必要としないため、フォーム データ間で値をコピーする方法はサーバーとクライアントで使用できます。

フォームデータをアプリケーションオブジェクトに変換するときは、それらの互換性を考慮する必要があります。

  • 値入力フォームデータ() - アプリケーション タイプのオブジェクトをフォーム データに変換します。
  • データフォーム値() - フォームデータをアプリケーションタイプのオブジェクトに変換します。
  • フォームデータのコピー() - 互換性のある構造を持つフォーム データをコピーします。 コピーが成功した場合は True を返し、オブジェクト構造に互換性がない場合は False を返します。

フォーム データをアプリケーション オブジェクトに変換するとき、またはその逆に変換するときにオブジェクト キャッシュが使用されますが、キャッシュ内のオブジェクトのバージョンが最新であるかどうかもチェックされます。

注記。主な詳細を含むフォームで標準アクション (フォームを開く、標準の書き込みコマンドの実行など) を実行すると、変換が自動的に実行されます。

独自のアルゴリズムでデータ変換を使用する方法の例を示してみましょう。

サーバー上(&O)
CreatedOnServer時の手順(失敗、標準処理)
ObjectProduct = Products.FindByName("コーヒーポット").GetObject(); ValueInFormData(ObjectItem, Object);
手順の終了
&OnClient
プロシージャ Write()
WriteOnServer();
手順の終了
サーバー上(&O)
プロシージャ WriteOnServer()
ObjectProduct = FormDataValue(Object, Type("DirectoryObject.Products"));
ObjectItem.Write();
手順の終了

ClientApplicationForm オブジェクトには、サーバーで使用できるメソッドもあります。

  • ValueInFormAttributes() - アプリケーション タイプ オブジェクトを指定されたフォーム属性に変換します。
  • 小道具フォーム値() - フォーム データ属性をアプリケーション タイプ オブジェクトに変換します。

これらのメソッドにはフォーム属性のタイプなどの情報があるため、通常はこれらのメソッドを使用する方が便利です。 さらに、Form AttributesValue() メソッドは、メッセージの生成時に使用されるフォーム データとオブジェクト間の対応関係を設定します。

また、値テーブルまたは値ツリー タイプのオブジェクトをフォーム データに変換するとき (ValueInFormData() メソッドと ValueInFormAttributes() メソッドの両方を使用)、次の機能を考慮する必要があることにも注意してください。データは、フォーム変換されるオブジェクト内に存在する必要があります。

注意! データに関連付けられていない属性列は、フォーム データとインフォベース オブジェクトの間の値の変換、またはその逆の値の変換には関与しません。 オブジェクト データに存在しない列は、フォーム データに変換されるときにクリアされます。

オブジェクトがプラットフォームによってフォーム データに転送されるとき、またはメソッドが呼び出されるとき 値入力フォームデータ(), ValueInFormProps() の場合、オブジェクト データのみが転送されます。 オブジェクトの内部状態はフォームデータには転送されません。 たとえば、次のメソッドを使用してオブジェクトに設定される新しい参照の値 SetLinkNew()、オブジェクトをフォーム データに変換したり、元に戻したりするプロセスで失われます。

メソッドの最初のパラメータとして 小道具フォーム値() そして フォームデータ値() 次のタイプのフォーム詳細のみが表示されます。

  • データフォーム構造、
  • データフォームコレクション、
  • データフォーム構造とコレクション、
  • データフォームツリー。

これらのメソッドの使用例を示します。

サーバー上(&O)
プロシージャ RecalculateOnServer()
// Object 属性をアプリケーション オブジェクトに変換します。 Document = Form AttributesValue("オブジェクト");
// ドキュメントモジュールで定義されたメソッドを使用して再計算を実行します。 Document.Recalculate();
// アプリケーション オブジェクトを prop に変換します。 Value→FormAttributes(Document, "Object");
手順の終了

以下に、マネージド フォームを操作するときに使用される主な 1C オブジェクトを示します。 1C 構成を作成する際のこれらのオブジェクトの従来の使用法を示す簡単なコード例が示されています。

この形

フォームモジュール、プロシージャ内で使用されますクライアント上およびサーバー上&&。

フォーム要素と詳細の両方にアクセスできます。

フォーム要素にはオブジェクトを通じてアクセスします。要素は次のようになります。

ThisForm.Elements.VersionNumber.Header = "v."+ProgramVersion;

フォーム上に存在する属性へのアクセスは次のように行われます。

ThisForm.AdText="こんにちは、同志!";

フォーム要素と詳細への簡単なアクセス

原則として、フォームモジュールにキーワードを指定する必要はありません。この形 。 簡素化された方法でフォーム要素と詳細にアクセスできます。

// フォーム要素

Elements.VersionNumber.Title = "v."+ProgramVersion;

// フォームの詳細

広告テキスト = "こんにちは、同志!";

フォームの詳細を取得する機能 (重要!)

フォーム属性が単純型の場合 -文字列、数値、日付 ...その後、名前だけで属性の値を取得 (設定) できます。

テキスト=製品名; // 製品名はフォーム属性です

ただし、この方法では「複雑な」タイプの詳細を取得することは不可能です。値の表、価値観のツリー 。 このタイプの属性を名前で取得しようとすると、そのタイプのオブジェクトが返されます。データフォームコレクション.

「複合」タイプの属性の値を取得するには、関数を使用する必要があります。FormAttributesValue():

CurrentTable=FormAttributesValue("SelectedConstructionObjects");

「複合」属性の値を設定するには、次の関数を使用できます。ValueInFormAttributes(<Значение>, <ИмяРеквизита>) 、両方のパラメータが必要です。

機能 FormAttributesValue()そして ValueInFormAttributes()サーバー上でのみ利用可能です。

オブジェクト

厳密に言えば、フォーム内にそのようなキーワードはありません。 単純に、フォーム (要素フォームなど) が作成されると、1C はフォーム上に次の名前の属性を自動的に作成します。オブジェクト 。 この属性を通じて、フォーム上で編集されている現在のオブジェクトのプロパティを利用できます。

または、より完全な表記:

このオブジェクト

オブジェクト自体が含まれます。 オブジェクト モジュールまたはフォーム モジュール内のオブジェクトを取得することを目的としています。

使用法: 読み取り専用。

可用性: サーバー、シック クライアント、外部接続。

フォームの詳細

フォームの詳細のセットは、フォーム内で表示、編集、または保存されるデータの構成を記述します。 同時に、フォームの詳細自体にはデータを表示および編集する機能はありません。 フォームの詳細に関連付けられたフォーム要素 (この章の「フォーム要素」セクションを参照) は、表示と編集に使用されます。 すべてのフォームの詳細のセットをフォーム データと呼びます。

重要!通常のフォームとは異なり、管理フォーム内のすべてのデータは詳細の形式で記述する必要があることに注意してください。 フォーム要素のデータ ソースとしてフォーム モジュール変数を使用することはできません。

割り当てることが可能です 基本的なフォームの詳細、つまり、フォームの標準機能 (フォーム拡張機能) を決定する属性です。 フォームにはメイン属性を 1 つだけ持つことができることに注意してください。

フォーム拡張子– これらは、フォームの主要要素であるオブジェクトの特徴である、ManagedForm オブジェクトの追加のプロパティ、メソッド、およびフォーム パラメーターです。

フォーム開発プロセス中に、View プロパティと Edit プロパティを使用して、ロールに関して特定のフォームの詳細を表示および編集する機能を明示的に設定できます (詳細については、「エディター」の「ロールベースのフォーム設定」セクションを参照してください) 」の章)。 さらに、フォーム自体で特定の属性を使用できるかどうかは、機能オプションを使用して構成できます (機能オプションの詳細については、「構成インターフェイス管理」の章を参照してください)。

フォーム属性プロパティ セーブデータ詳細を対話的に変更すると、フォーム データの編集がブロックされ、フォーム変更フラグが自動的に設定されます。

管理フォームで使用できるデータ型

マネージド フォームは、操作するデータの種類においても通常のフォームとは異なります。 通常の形式が 1C:Enterprise が提供するほとんどの型 (DirectoryObject、DocumentObject などの型を含む) で動作する場合、管理形式では次の種類のカテゴリを区別できます。

  • フォーム内で直接使用されるタイプは、シン クライアントおよび Web クライアント側に存在するタイプ (たとえば、Number、DirectoryLink.Products、GraphicScheme、TabularDocument) です。
  • 特別なデータ型 (マネージド フォーム データ型) に変換される型。 このようなタイプは、フォームの詳細のリストに括弧内に表示されます (例: (DirectoryObject.Products))。
  • 動的リスト (詳細については、この章の「動的リスト」セクションを参照してください)。

アプリケーションオブジェクトをフォームデータに変換する

一部のアプリケーション タイプ (DirectoryObject など) は、シン クライアント側と Web クライアント側に存在しません (詳細については、「マネージド アプリケーションの概念」の章を参照してください)。 したがって、このようなアプリケーションの種類をフォームで表現するために、プラットフォームはマネージド フォームで動作するように設計された特別なデータ型を導入しました。 マネージド アプリケーションのこの機能により、アプリケーション オブジェクトをフォーム データに変換する (またはその逆) ことが必要になります。

次のデータ型が使用されます。

  • Form DataStructure – 任意のタイプのプロパティのセットが含まれます。 プロパティは、他の構造体、コレクション、またはコレクションを含む構造体にすることができます。 このタイプは、たとえば DirectoryObject の形式で表されます。
  • FormDataCollection は、配列に似た、型指定された値のリストです。 コレクション要素にはインデックスまたは識別子によってアクセスします。 IDによるアクセスは場合によってはご利用いただけない場合がございます。 これは、このコレクションによって表されるアプリケーション オブジェクトのタイプが原因です。 識別子には任意の整数を指定できます。 このタイプは、たとえば、表形式のパーツの形式で表されます。
  • フォーム DataStructureWithCollection は、構造体とコレクションとして同時に表現されるオブジェクトです。 これらのエンティティのいずれかと同様に扱うことができます。 このタイプは、たとえばフォーム内のレコードのセットを表します。
  • Form DataTree – 階層データを保存するために設計されたオブジェクト。

アプリケーション オブジェクトは、1 つ以上のフォーム データ要素によって表されます。 一般に、フォーム データの階層と構成は、管理フォームのアプリケーション オブジェクトの複雑さと相互接続によって異なります。

たとえば、表形式の部分を含むドキュメントは、FormDataStructure タイプのオブジェクト (ドキュメント自体) によって表され、そのオブジェクトに FormDataCollection タイプのオブジェクト (ドキュメントの表形式の部分) が従属します。

重要!構成を開発するときは、アプリケーション オブジェクトはサーバーでのみ使用できるのに対し、フォーム データ オブジェクトはサーバーとクライアントの両方で使用できることに留意することが重要です。

管理フォームのクライアント部分とサーバー部分の間でのデータの受け渡し

実際、フォーム データは、フォームが均一に動作し、サーバーとクライアントの両方に存在するさまざまなアプリケーション オブジェクトからのデータを統一的に表現したものであると言えます。 つまり、フォームにはアプリケーション オブジェクト データの何らかの「投影」が独自のデータ型の形式で含まれており、必要に応じてそれらの間で変換を実行します。 ただし、構成開発者が独自のデータ処理アルゴリズムを実装する場合は、データ変換 (特殊型からアプリケーション型へ、またはその逆) を個別に実行する必要があります。

専用のエディターでフォームの詳細を編集する場合 (詳細については、「エディター」の章の「フォームの詳細」セクションを参照)、フォームの実行中にクライアントとサーバー間のデータ転送に影響を与える可能性があります。 これには、詳細エディターの列が使用されます。 常に使用する。 このプロパティの効果は、次の 3 種類の属性によって異なります。

  • 動的リストに従属する属性の場合 (動的リスト列):
    • プロパティが有効 – 属性は常にデータベースから読み取られ、フォーム データに含まれます。
    • プロパティが無効になっている - 属性またはその下位属性に関連付けられている現在表示されているフォーム要素がある場合にのみ、属性はデータベースから読み取られてフォーム データに組み込まれます。
  • 動きコレクションに従属する小道具の場合:
    • プロパティが有効になっている – ドキュメントの動きがデータベースから読み取られ、フォーム データに存在します。
    • プロパティが無効になっている - ドキュメントの移動はデータベースから読み取られず、フォーム データには含まれません (ドキュメントの移動を参照するフォーム要素がない場合)。
  • その他のフォームの詳細:
    • プロパティが有効になっている – 属性またはその下位属性に関連付けられたフォーム要素が少なくとも 1 つあるかどうかに関係なく、属性はフォーム データ内に存在します。
    • プロパティが無効になっている - 属性またはその下位属性に関連付けられたフォーム要素がある場合にのみ、属性はフォーム データに存在します。 動的リスト属性とは異なり、ここでは属性に関連付けられた要素の可視性は関係ありません。

注記。 親属性に設定されたプロパティは、すべての下位属性に影響を与えることに注意してください。 たとえば、ドキュメントの表形式部分で Use プロパティが常にクリアされている場合、システムは、(プロパティの実際の状態にかかわらず) このプロパティがすべての下位詳細でもクリアされているとみなします。

アプリケーションオブジェクトデータをフォームデータに変換するメソッド

アプリケーション オブジェクトをフォーム データに変換したり、逆に変換したりするには、一連のグローバル メソッドがあります。

  • ValueInFormData()、
  • FormDataInValue()、
  • CopyFormData()。

重要!アプリケーション オブジェクトを操作するメソッドは、サーバー プロシージャでのみ使用できます。 アプリケーション オブジェクトをパラメーターとして必要としないため、フォーム データ間で値をコピーする方法はサーバーとクライアントで使用できます。

フォームデータをアプリケーションオブジェクトに変換するときは、それらの互換性を考慮する必要があります。

  • ValueInFormData() – アプリケーション タイプ オブジェクトをフォーム データに変換します。
  • FormDataInValue() – フォーム データをアプリケーション タイプのオブジェクトに変換します。
  • CopyFormData() – 互換性のある構造を持つフォーム データをコピーします。 コピーが成功した場合は True を返し、オブジェクト構造に互換性がない場合は False を返します。

注記。 主な詳細を含むフォームの標準アクション (フォームを開く、標準の書き込みコマンドの実行など) を実行すると、変換が自動的に実行されます。

独自のアルゴリズムでデータ変換を使用する方法の例を示してみましょう。

CreateOnServer 時の &OnServerProcedure(失敗、標準処理)

ObjectProduct = Directorys.Products.FindByName("コーヒーポット").GetObject(); ValueInFormData(ObjectItem, Object);

手順の終了

&OnClient プロシージャ Write()

WriteOnServer();

手順の終了

&OnServer プロシージャ WriteOnServer()

ObjectProduct = FormDataValue(Object, Type("DirectoryObject.Products")); ObjectItem.Write();

手順の終了

ManagedForm オブジェクトには、サーバー上で使用できるメソッドもあります。

  • ValueВFormAttribute() – アプリケーション タイプ オブジェクトを指定されたフォーム属性に変換します。
  • FormAttributeVValue() – フォーム データ属性をアプリケーション タイプのオブジェクトに変換します。

通常、これらのメソッドを使用すると、フォームの詳細の種類に関する情報などが含まれるため、より便利です。 さらに、Form AttributesValue() メソッドは、メッセージの生成時に使用されるフォーム データとオブジェクト間の対応関係を設定します。 詳細については、「サービス ナビゲーション機能」の章を参照してください。

これらのメソッドの使用例を示します。

&OnServer プロシージャ RecalculateOnServer()

// Object 属性をアプリケーション オブジェクトに変換します。 Document = Form AttributesValue("オブジェクト"); // ドキュメントモジュールで定義されたメソッドを使用して再計算を実行します。 Document.Recalculate(); // アプリケーション オブジェクトを prop に変換します。 Value→FormAttributes(Document, “Object”);

手順の終了

ソフトウェアインターフェース

フォームデータツリー

  • ID による検索
  • アイテムの取得

説明:

管理されたフォーム データのツリーをモデル化するように設計されています。

このオブジェクトは、XDTO との間でシリアル化できます。 このオブジェクトに対応する XDTO 型は名前空間で定義されます。 XDTO 型名:

アイテムの取得

構文:

GetItems()

戻り値:

タイプ: ツリー要素のフォーム DataCollection。

説明:

最上位のツリー要素のコレクションを取得します。

可用性: クライアント、サーバー、シンクライアント、Web クライアント。

ID による検索

構文:

FindById(<Идентификатор>)

オプション:

<Идентификатор>(必須)

タイプ: 数値。 ツリー要素の識別子。

戻り値:

タイプ:FormDataTreeElement。

説明:

ID によってコレクション要素を取得します。

可用性: クライアント、サーバー、シンクライアント、Web クライアント。

フォームデータツリー項目

プロパティ:

<Имя свойства> (<Имя свойства>)

  • GetId (GetId)
  • 親を取得
  • アイテムの取得
  • 財産

説明:

フォームデータツリー要素。

フォームデータツリー項目コレクション

コレクション要素: DataFormTreeElement

オブジェクトの場合、演算子 For each... From... Loop を使用してコレクションを走査することができます。 走査によりコレクションの要素が選択されます。 [...] 演算子を使用してコレクション要素にアクセスできます。 要素のインデックスは引数として渡されます。

  • 入れる
  • 追加
  • インデックス (IndexOf)
  • カウント
  • クリア
  • 得る
  • 動く
  • 消去

説明:

木の要素のコレクション。

可用性: クライアント、サーバー、シンクライアント、Web クライアント。

以下も参照してください。

  • FormDataTreeElement、GetElements メソッド
  • DataFormTree、メソッド GetItems

バリューツリーの操作の特徴

ツリーの更新

問題があります 落ちるツリーを更新するときのプラットフォーム。

ツリー内のいずれかのノードが展開され、下位ノードが選択されている場合、関数でツリーを更新するときに、 値入力フォームデータプラットフォームが落ちます。

解決策: 更新する前にツリーをクリアする必要があります。

例えば:

& サーバー上プロシージャ ClearTree(elements) 要素の各要素に対して Loop ClearTree(element.GetElements()); エンドサイクル; 要素.Clear(); 手順の終了

&サーバー上プロシージャ Fill Concept Tree() dConcepts = srProperties.Build Concept Tree(OnDate, Meta.CurrentIB()); ClearTree(ConceptTree.GetItems()); ValueInFormData(dConcepts, ConceptTree); 手順の終了

&OnClient プロシージャ OnDateOnChange(Element) Fill ConceptTree(); 手順の終了

処理では、選択したオブジェクトのすべての詳細が表示され、それらを編集したり、同じタイプの 2 つのオブジェクトを比較したりすることができます。 あらゆる構成をサポートしており、標準的な構成は自動的にインストールされます。

現在のバージョン: 通常フォームの場合は 1.09、マネージド フォームの場合は 1.12。

ダウンロード処理(1C 8.2、1C 8.3(通常形式)用、epfファイル、47KB)

ダウンロード処理 (1C 8.2、1C 8.3 (管理フォーム)、epf ファイル、22 KB の場合)

1C 8.1 の最新バージョン: 1.05

ダウンロード処理(1C 8.1用、epfファイル、48KB)

処理が開かない場合の対処方法

処理は、たとえば次のような場合に非常に役立ちます。

    なじみのないデータベースを理解する必要がある

    構成リリースが更新され、新しいフィールドがドキュメントに追加されました (非表示ですが、フォームにはフィールドがありません)。 同時に、新しいドキュメントの場合は作成時にインストールされますが、古いドキュメントは自然に忘れられます。 ユーザーにとって何を表すかは、2 つの完全に同一のドキュメントが異なる投稿を提供するという事実によって表されます:)

    フィールドの内容がフォーム上で割り当てられたスペースに収まらないだけで、全体を表示する必要があるだけです (表形式のパーツは特にこれに悩まされます。開発者は列の幅を制限することを非常に好みます。さらに、変更を許可しないでください)

    関連情報 (たとえば、請求書に指定されている税関申告書を開く) に移動する必要がありますが、このフィールドにアクセスできるようにするのを忘れていました (つまり、ドット付きのボタン、虫眼鏡、F4 のいずれも使用できません) (また、次のようなことが起こります)入力フィールドの代わりに、選択フィールド、碑文、またはフォームにはまったく存在しないフィールドが作成されます 🙁)

    同じタイプの 2 つのオブジェクトを比較する必要があります

特徴的な機能は、

    印刷形式として標準設定に接続する機能 (つまり、純粋なユーザー モードで、コンフィギュレータは必要ありません)

    「データ交換 - ダウンロード」モードでオブジェクトを記録する機能、つまり "そのまま"

インストール(通常のインターフェース)

処理が開始されますので、画面の指示に従ってください。 (つまり、右上隅の「インストール」ボタンをクリックし、次のウィンドウでインストールを確認します。

インストール (「管理された」インターフェース)

注意: このインストール オプションは、標準の 1C 構成でのみ機能します。

1. 「管理」セクションの「追加のレポートと処理」に移動します。

2. 「追加」ボタンをクリックし、ファイル dannye-objecta-upr.epf を選択します。

3. 処理設定ウィンドウで、次のことを確認します。

    出版物: 中古

    次のチェックボックスがオンになっています: リスト フォームに使用、フォームにオブジェクトを使用

4. [OK]をクリックしてインストールを確認します。

処理の使用

ドキュメントフォームからのディレクトリ要素。 またはリストフォーム

    通常のインターフェース - 「印刷...」ボタンをクリックします。

    「管理対象」インターフェース - 入力ボタンをクリックします

メニューで「オブジェクト データ」を選択します - 処理フォームが開きます

詳細を表示するには (たとえば、文書に「契約」属性が含まれているため、変更することはできません。ただし、この契約のカードを開く必要があります)。

クライアント上の参照値から props を取得する方法

処理フォームで、属性値をクリックします。

詳細を変更するには、値の横にあるボックスをチェックします。 この後、値を変更できます。

変更を保存するには、必要なオプションのボタンをクリックして、「データ交換 - ダウンロード」モード、通常のレコードでレコードを保存します。 実施中(書類のみ)。

変更された詳細の一部を書き留める必要があり、一部を書き留めない場合は、書き留める必要がないという事実の横にあるボックスのチェックを外します。

処理には「プロパティ データ」があります。これは、リンク (取引相手のカードなど) を介して値を開いて、その中で処理を再度呼び出した場合と同じです。

オブジェクトの比較は次のように行うことができます。

処理する 2 つのオブジェクトを選択する

2. 1 つのオブジェクトから処理を呼び出し、次に (ウィンドウを閉じずに) 別のオブジェクトから処理を呼び出します。 比較するための提案が行われます。

3. (管理インターフェイスのみ)。 リスト内の 2 つのオブジェクトを一度に選択し (これを行うには、Ctrl ボタンを押したままにします)、処理を呼び出します。オブジェクトが比較されます。

スクリーンショット (通常のインターフェース)

スクリーンショット (「管理された」インターフェース)

処理を使用して問題の状況を分析する例。

バージョン 1.12 の変更点 (2017/10/17)

  • マネージドフォームを含むバージョンのバグが修正されました(オブジェクト自体に同じ名前のヘッダー属性がある場合、テーブルセクションの属性が更新されませんでした)

バージョン 1.10 の変更点 (2017/01/06)

  • 管理フォームのオプションについて、一部の標準構成 (会計、UNF) での動作が修正されました。

バージョン 1.09 の変更点 (2015/07/07)

  • 「親」、「所有者」フィールドの表示を追加
  • マネージド インターフェイス バージョンでは、モーダル ウィンドウを使用しない動作が提供されます。

バージョン 1.08 の変更点 (2014/04/03)

    通常インターフェイス用のバージョンでは、「Manufacturing Enterprise Management」(PEM) 1.3 構成で動作する場合の互換性が向上しました。

バージョン 1.07 の変更点 (2013/04/03)

    「管理」フォーム用の処理バージョンがあります(自動インストールおよび更新機能は通常フォーム用バージョンのみ利用可能です)

    バグ修正(処理ディストリビューションに権限が設定されました)

バージョン 1.06 での変更点 (2012/05/13)

    「オブジェクトバージョン」フィールドの表示

    バグ修正(処理中に読み取り専用権限を設定できなかった)

バージョン 1.05 の変更点 (2011/05/04)

    バグを修正しました(8.2 で作業している場合、投稿モードでドキュメントを記録できませんでした)

バージョン 1.04 の変更点 (2011/04/13)

    バグを修正しました(8.2 で作業している場合、マウスをダブルクリックしても詳細が表示されませんでした)

    これで、処理は参照タイプの詳細の表示に進むことができます。

    つまり、「商品およびサービスの販売」という文書の詳細ビューを開いたとします。 このドキュメントには、「DirectoryLink.Counterparty」タイプの「Counterparty」属性が含まれています。 この属性を右クリックすると、「属性データ」および「新しいウィンドウでの属性データ」という項目があるコンテキスト メニューが表示されます。 いずれかを選択すると、対応する取引先の詳細が表示されます。

バージョン 1.03 での変更点 (2010/10/15)

    ユーザーとその処理へのアクセス権を指定する機能が追加されました。

バージョン 1.02 での変更点 (2010/08/21)

    外部処理のディレクトリを「追加印刷帳票」と呼ぶ構成をサポートしています。

バージョン 1.01 での変更点 (2010/01/28)

    Object1 が空で Object2 が選択されたときに発生するエラーを修正しました (それを示してくれた rasswet に感謝します)。

    「詳細」チェックボックスはすぐに機能するため、「表示」をクリックする必要はありません。

    「値のタイプ」列の名前が「可能な値のタイプ」に変更され、コンフィギュレータでこの属性に定義された値のタイプが表示されます。 複合タイプを持つ属性の場合、これに加えて、表示されるオブジェクト内のこの属性の値のタイプが表示されます。

処理を構成に接続した場合、それを更新するには:

処理をダウンロードし、外部処理として開くと、クリックする内容と方法が表示されます (「インストール」ボタン、「データベース内の処理を更新」を選択、「実行」ボタンをクリック)

ファット クライアントの時代には、フォーム モジュールからオブジェクト モジュール プロシージャを呼び出すのは簡単でした。 モジュール プロシージャをエクスポート可能として定義し、それをフォーム モジュールで呼び出すだけで十分でした。


時代は変わり、1C プラットフォームは最適化および改善され、シック クライアントは忘れられ、すべての人にシン クライアントまたは Web クライアントが提供されます。 開発者は従来のフォームをマネージドフォームに移行し始めていますが、すべてがそれほど単純であるわけではありません。プログラムコードの実行がサーバーとクライアントの 2 つのコンテキストに分割されているため、いくつかの問題が発生します。 したがって、上記のコード例はシン クライアントでは機能しません。

新しいデータ型

また、管理されたフォームにより、新しいデータ型が登場しました。 フォームがあります:
詳細のタイプを記憶し、これらの詳細のデバッグにどのタイプがあるかを確認します。

新しいフォームのデータ型
この型はオブジェクト自体のデータを表示するために使用されると結論付けます。 データフォーム構造、値のツリーを表示するには - データシェイプツリー、表形式部分の場合 - データフォームコレクション等 つまり、クライアント上のフォーム モジュールでは、オブジェクト自体ではなく、その表現を操作します。 したがって、オブジェクトモジュールの表形式部分などで使用できるメソッドは、 利用不可フォームモジュール内。

新しいタイプとの戦い

1C プラットフォームの開発者は、次の 2 つの機能を提供しました。
  1. 小道具フォーム値- 指定されたフォーム属性をアプリケーション タイプのオブジェクトに変換します。
  2. データフォーム値- フォームデータをアプリケーションタイプのオブジェクトに変換します。
これらの関数の呼び出しはサーバー上でのみ可能です。 タスクに戻って、イベントのフォーム モジュールにシン クライアント用のコードを記述しましょう。 サーバー上で作成されたときこれはオブジェクト モジュールから関数を呼び出します。
サーバー上(&O)


SprObject1 = フォーム属性値("オブジェクト");
SpObject1.OutputMessage(Object.Attributes1);




手順の終了

これは、1 つの関数の助けと別の O_o の助けの両方で機能します。 変換コードを書いてみましょう データシェイプツリーアプリケーション タイプ オブジェクトに次のように変換します。
サーバー上(&O)
CreatedOnServer時の手順(失敗、標準処理)

値ツリー 1 = フォーム属性値("属性 1");
ValueTree2 = FormDataInValue(ThisForm.Attribute1, Type("ValueTree"));

手順の終了

ValueTree1 と ValueTree2 は同じタイプ (ValueTree) を持ちます。 では、これらの機能の違いは何でしょうか?

データフォーム値 - 関数 グローバルコンテクスト。 フォームでサポートされているオブジェクトのタイプをデータベース オブジェクトのタイプに変換します。 DataFormsStructure --> DirectoryObject.Directory1.

小道具フォーム値 - フォーム モジュール関数。つまり、フォームのコンテキストでサーバー上で呼び出されます (&OnServer)。 フォームのコンテキスト外でこの関数を呼び出そうとすると、プラットフォームは例外エラーを生成します。
コンテキストなしでサーバー上(&O)
プロシージャ TypeConversion()

// このコードは間違っています。フォーム コンテキストが利用できないため、エラーが発生します。
SprObject2 = FormDataValue(Object, Type("DirectoryObject.Directory1"));
SprObject2.OutputMessage(Object.Attributes1);

手順の終了

違いはそれだけです。