1c XMLファイルを開く方法。 XML ファイルを生成します。 サードパーティ製アプリケーションへの簡単なアップロード。 「請求書」文書の作成

組織では、1C:Enterprise プラットフォーム上のソリューションだけでなく、他のソフトウェア システム (Galaktika、Parus、SAP など) でも会計を維持できます。 このため、2 つのアプリケーションを統合するという課題が生じます。

たとえば、一部のアプリケーション (「X」と呼びます) は、構成ドキュメントのリストを読み取る必要があります。 このような問題を解決する実際的な利点については説明しません。このような状況で最も便利で普遍的な方法は、ドキュメントのリストを XML 形式でアップロードすることであるということだけを述べておきます。

この形式を使用した Exchange は、ほとんどのアプリケーションがこの形式で動作できるため、汎用的です。 1C:Enterprise から構成ドキュメントのリストを XML ファイルにアップロードする方法を見てみましょう。

XML にアップロードする

それでは、本題に移りましょう。 ドキュメントのメタデータのリストを調べて、XML ファイル内にリストを生成する必要があります。 次のスクリーンショットは、XML ファイルを生成するアルゴリズムを示しています。

関数 CreateXML() エクスポート // 一時ファイルの名前を取得しますパス = GetTemporaryFileName() ; // 「XML レコード」クラスを初期化します。エントリ = 新しい EntryXML; // 書き込み用に一時ファイルを開きます- 8 " ) ; // XML ファイルの宣言を書きます記録。 WriteDeclarationXML() ; // 記録。 WriteElementStart(" ドキュメント構成" ) ; // 最初の要素 // ファイルの作成日を含む最初の要素の属性記録。 WriteAttribute(" 生成されました ", Format(CurrentDate(), " DF = yyyy-MM- ddThh:mm:ss; DLF=DT" ) ) ; // 設定ドキュメントごとに要素を書き込みます。 本文中に文書名を記載させていただきます。メタデータからの各ドキュメント。 ドキュメントサイクル記録。 WriteElementStart("ドキュメント"); 記録。 WriteText(Doc.Name) ; 記録。 WriteEndElement() ; エンドサイクル ; // 最初の要素の書き込みを終了します記録。 WriteEndElement() ; 記録。 近い(); // ファイルを閉じます // ファイルのバイナリ データを取得し、一時ストレージに置きます BinaryData = 新しい BinaryData(パス) ; アドレス = PlaceInTemporaryStorage(BinaryData, New UniqueIdentifier) ; 差出人住所; // ファイルのアドレスをストレージに返しますエンドファンクション

作成された各要素は正しく完了する必要があります。 「WriteStartofElement()」を実行した後、「WriteEndElement()」メソッドを実行する必要があります。そうしないと、XML ファイルの構造が正しくなくなります。

XML ファイルを作成するための一般的なテンプレートは次の順序になります。

// 1.「XMLレコード」クラスを初期化するエントリ = 新しい EntryXML; // 2. 記録用の一時ファイルを開きます記録。 OpenFile(パス, " UTF - 8 " ) ; // 3. XMLファイルの宣言を記述する記録。 WriteDeclarationXML() ; // // 4. ++ XMLファイルの内容を書き込む記録。 WriteElementStart("XMLElement"); 記録。 WriteEndElement() ; // -- XML ファイルの内容を書き込みます // 5. ファイルを閉じます記録。 近い();

これら 5 つの手順により、ほぼすべての XML ファイルが作成されます。

この例では、生成されたファイルはバイナリ データに変換され、CreateXML 関数が呼び出される場所に返されます。 このファイルはファイル システムに書き込むことができます。

上のスクリーンショットで、アップロードされたファイルの例を確認できます。

サードパーティ製アプリケーション

例として、サードパーティ アプリケーションでの XML ファイルの読み取りを示すために、.NET Framework でアプリケーションを作成しました。

プログラムは作成されたファイルを読み取り、ドキュメントをリスト形式で表示します。

自分で試してみることもできます。このアプリケーションは記事の最後にあるリンクからダウンロードできます。

多用途性

XML 形式は、1C:Enterprise プラットフォーム上のアプリケーション ソリューション間のデータ交換のほとんどの構成で使用されます。 もう 1 つの一般的に使用される通信方法は、COM 接続を介するものです。 XML を使用すると、ほぼすべてのアプリケーションと交換できるため、汎用と呼ばれるに値します。

ダウンロード用のファイル:

XMLファイルリーダーアプリケーション。

XML ファイルの生成を処理しています。

データベース間での情報の転送は、データベースのサポートと管理のタスクの 1 つです。 効果的に実装するために、処理は自動化された 1C コンプレックスで作成されます。 これらは日常的な作業を大幅に容易にし、情報のアップロードおよびダウンロードのプロセスを高速化すると同時に、その正確性に対する制御を実装します。 1c から XML にアップロードすると、構成された構成オブジェクトの内容を含むファイルを作成し、同一の構成にデータをアップロードする必要がある場合にそれを使用できます。

アップロードを作成するためのツール

データベースに含まれる情報をエクスポートするには、主に XML 形式が使用されます。 1C では、多くの処理メソッド (UploadLoadDataxml82 epf など) が開発されており、これを利用してデータをファイルに出力およびロードすることができます。 この場合、ユーザーは、ファイルに保存されている情報をネイティブ データベースにロードしたり、別の場所に転送したりできる特定の構造のファイルを受け取る必要があります。 アップロードを作成するときは、次のルールに従う必要があります。

  • 完全に回復し、転送された情報の正確性を検証する手順が完了するまで、作成されたファイルを保存します。
  • 処理をバックアップ ツールとして使用する場合は、データ コピー用に別のサブフォルダーを作成し、すぐに取得できるようにそのログを保存します。

ITS Web サイトまたはディスクにある 1C ユーザー サポート プログラムで提供されるこのツールは、情報をエクスポートおよびインポートするための優れたツールです。 コンピュータ ユーザーは、データベース全体とその個々のオブジェクトの両方をアップロードでき、実際のエクスポートに加えて、データ内の重大なエラーを取り除くのに役立つ情報を確認するためにさまざまな操作が実行されます。xml への 1c アップロードの処理は、次の 2 つのモードで機能します。

  • 荷降ろし中。 ユーザー定義のページング可能オブジェクトを含むファイルを作成します。
  • 読み込み中。 以前にエクスポートされたファイルを読み取り、そのファイルに含まれる情報を情報ベースに書き込みます。

Processingでは、オブジェクトに無効な文字が含まれているかどうかをチェックでき、制限付きの情報をエクスポートする機能も含まれています。

アップロードは、1C データベース間で情報を交換する場合にのみ使用できます。 その助けを借りて、1C や Parus システムなどのさまざまな複合施設を確実に統合できます。 XML 形式の汎用性により、ほぼすべての情報銀行の情報を転送するためのプログラムを作成できます。 XML データの処理、アップロード、ダウンロードは、情報を交換するための最も重要なツールです。

データをアップロードするプロセスXML

通常モードで 1c から xml にアップロードする方法を見てみましょう。 処理用の UploadLoadDataxml.epf をダウンロードして開いた後、次の手順を実行する必要があります。

  • エクスポートするオブジェクトを選択します。
  • たとえば期間ごとに必要なフィルターを設定します。
  • ディスク サブシステム上の情報を含むファイルの場所を特定します。
  • オブジェクトのアンロードを開始します。

アップロード ファイル形式のヘッダー部分は、交換計画に従ってアップロードするときに使用されるファイル形式とは異なることに注意する必要があります。

XML

XML は、ソース データベースと同じ構成で受信データベースに 1c ロードされます。 XML 1c を 1c にロードする前に、受信データベースで処理を開く必要があります。 次に、以前にアップロードしたファイルへのパスを指定し、「データのロード」ボタンをクリックしてデータをダウンロードする必要があります。

必要に応じて、分散インフォベースに交換モードでデータをロードし、オブジェクトのロード時に発生するエラーを無視するためにチェックボックスがアクティブになります。

この後、データベースをチェックし、すべての要素が失われないように、すべての要素が正しくロードされていることを確認する必要があります。たとえば、オブジェクトのロード後にイベント ハンドラーでエラーが発生した場合などです。

企業が業務で何らかのソフトウェア パッケージを常に使用している場合、当然のことながら、継続的なサポートと管理の問題が常に発生します。 データの交換、保存、復元のタスクを避ける方法はありません。 これはこのトピックにとって重要な手順であるため、XML 形式で 1C からデータをロードまたはアンロードする方法を見てみましょう。

これらは、アップロード時に、クライアントに必要なデータが記録された XML ファイルを受信できるように構築されています。 同時に、記録と同時に、転送された記録の正確性が監視され、重大なエラーがないか監視されます。

したがって、ある情報ベースから XML ファイルへのアップロード (レコードのインポート) とその後の XML から別の情報ベースへのロードは、データベース間での XML 形式のデータの交換を表します。

この手順は、特に大量の情報を扱う場合に、手作業を大幅に節約します。

インポート (結果のファイル) は、予期しない状況 (紛失または破損した場合) のリカバリ用のアーカイブとしても使用できます。

このような処理ツールは数多く開発されており、インターネット上で入手できます。 それらの使用に対する責任はクライアントの肩 (および頭) にあります。

しかし、Odeneski の公式ユーザーのために、開発者はユニバーサル プロセッサ「XML データのアップロード/ロード」を作成しました。

重要。 1C で XML にエクスポートし、さらに 1C から XML にロードすることは、同一の構成であれば許容されます。そうしないと破損します。

ユニバーサルハンドラー

ユニバーサル デベロッパーを使用するための重要なポイント:

  • レコードの転送が完了し、その正確性がチェックされるまで、インポート ファイルを保存します。
  • バックアップ コピーとして使用する場合は、検索を分類するためにその記録を保持する必要があります。

動作には、情報保存時のファイル作成とインポート時の読み書きの2つのモードがあります。

さらに、ユーザーはデータのエクスポート時とロード時に追加の制限を設定できます。

レコードの抽出

データは、データベース全体にわたってアップロードすることも、オブジェクトごとに選択的にアップロードすることもできます。

ハンドラーをダウンロード、インストールして開くと、次のことが起こります。


これらの選択は、起動後に開くダイアログ ボックスで行われます。 これを行うには、取得するメタデータ オブジェクトを表示するリストのボックスをオンにします。

  1. 必要なフィルターが構成されています (日付ごとなど)。
  2. ディスク容量が選択されています。
  3. 操作自体が開始されます。

受信者へのレコードのアップロード

受信側データベースにデータを受け入れるための最初のステップは、データベース内のプロセッサ プログラムを開くことです。

ソース ファイルへのパスを指定し、(必要に応じて) プロシージャ設定フラグを有効にしたら、[データのロード] ボタンをクリックしてプロセスを開始できます。

これで、1C から XML 形式でデータをロードまたはアンロードして、データを保存し、データベース間で交換する方法がわかりました。

- 有名な Web ページ。これも弱いチェックを備えた XML の類似品です。

XML リーダー/ライター オブジェクト、FastInfoset、HTML は、マークアップ タグの組み込み処理によりテキスト ファイルの読み取り機能を拡張します。

これらは、DOMBuilder/DOMRecord オブジェクト (以下を参照) のデータ ソースとしても使用されます。

XML 1C ファイルにはテキスト情報が含まれており、テキスト ファイルです。 1C XML Reader および 1C Write XML オブジェクトは、1C ファイル内の XML タグの操作を容易にする「アドオン」です。

ReadingFastInfoset 1C および WritingFastInfoset 1C、ReadingHTML 1C および WritingHTML 1C オブジェクトは、ReadingXML 1C および WritingXML 1C と完全に似ており、他の形式でも同様に機能します。

例で使用される XML 1C ファイル

ディレクトリ>

ディレクトリ>

テキスト値Props>
ディレクトリ>
構成>

例 1. 「XML 1C の読み取り」を使用して 1C XML ファイルを値ツリーに読み取る

//ReadingXML 1C を使用して XML 1C ファイルを読み取り用に開きます
ファイル = 新しい ReadXML();
File.OpenFile("D:\ConfigurationStructure.xml");

//値ツリーを準備する
//各 XML ブランチには名前、属性、値を含めることができます
dzXML = NewValueTree();
dzXML.Columns.Add("名前");
dzXML.Columns.Add("値");
dzXML.Columns.Add("属性");

//XML 文字列には複数の属性を含めることができるため、それらを値テーブルに書き込みます
//各属性には名前と値があります
tAttributes = 新しい ValueTable();
tAttributes.Columns.Add("名前");
tAttributes.Columns.Add("値");

//ネストされたレベルは、いつネストされたブランチを追加する必要があるのか​​、いつ上のレベルに戻る必要があるのか​​を理解するのに役立ちます
ネストレベル = 0;
// 現在の行はツリー行であり、ネストが増えると変化します
現在の行 = 未定義;
//XML 1C ファイルの読み取りは 1 行ずつではなく、構造に従って行われ、ファイルが終了すると読み取りは FALSE を返します。
While File.Read() ループ

// 3 種類のノードに興味があります - 要素の先頭、テキスト (要素の値)、要素の末尾 (トップレベルに戻るため)
File.NodeType = XMLNodeType.ElementStart の場合

ネスト レベル = ネスト レベル + 1;

//これが最初の行の場合は、ツリーの一番上に追加し、名前のみを保存します
CurrentRow = 未定義の場合
CurrentRow = dXML.Rows.Add();
現在の行.名前 = ファイル.名;
続く;
さもないと
//入れ子になった行
CurrentRow = CurrentRow.Rows.Add();
現在の行.名前 = ファイル.名; //名前を保存します

//この XML 要素には属性がありますか?
File.NumberAttributes() > 0 の場合
//「はい」の場合、準備された空のテーブルをコピーして属性を保存します
tAttributesNode = tAttributes.Copy();
//この要素の属性の数を循環します
アカウント = 0 (File.Number of Attributes()-1 サイクル) の場合
//各属性の名前と値を覚えておいてください
行 = tNodeAttributes.Add();
Line.Name = File.AttributeName(Sch);
Row.Value = File.AttributeValue(Ac);
エンドサイクル;
// 要素の属性テーブルを現在の行に保存します
CurrentRow.Attributes = tNodeAttributes;
endIf;
endIf;

ElseIf File.NodeType = XMLNodeType.EndElement then
// 要素の先頭でネスト レベルを上げ、要素の最後でネスト レベルを下げます
ネスト レベル = ネスト レベル - 1;
// 現在の行を 1 つ上のレベルに戻します
CurrentRow = CurrentRow.Parent;

ElseIf File.NodeType = XMLNodeType.Text then
//要素に値がある場合は、それを保存するだけです
CurrentRow.Value = ファイル.Value;

endIf;

エンドサイクル;

File.Close();

例 2. 1C Record XML オブジェクトを使用した 1C XML ファイルの記録

// ファイルを作成します Record XML 1C
ファイル = NewWriteXML();
File.OpenFile("D:\ConfigurationStructure.xml", "UTF-8");
File.WriteElementStart("構成");

// メタデータを使用してすべてのディレクトリを走査します (詳細については、「メタデータの操作」を参照してください)
Metadata.Directories サイクルからのディレクトリごと

//WriteStartofElement - 新しい [従属] ブランチを開きます
File.WriteElementStart("ディレクトリ");
//WriteAttribute - 以前に開かれたブランチに属性を書き込みます
File.WriteAttribute("名前", Directory.Name);
File.WriteAttribute("Synonym", Directory.Synonym);

//メタデータを使用して、ディレクトリの詳細をすべて調べます
Directory.Props サイクルの各 Props について




エンドサイクル;

//メタデータを使用してディレクトリのすべての表部分を走査します
ディレクトリからの各 PM について サイクルの表形式の部分
File.WriteElementStart("TabularPart");
File.WriteAttribute("名前", PM.Name);
File.WriteAttribute("シノニム", PM.Synonym);

PM.Props サイクルの各 Props について
File.WriteElementStart("小道具");
File.WriteAttribute("名前", Attributes.Name);
File.WriteAttribute("シノニム", Attributes.Synonym);
File.WriteEndElement();
エンドサイクル;

File.WriteEndElement();
エンドサイクル;

//WriteEndElement - WriteBeginElement を使用して以前に開いたブランチを「閉じる」
File.WriteEndElement();
エンドサイクル;

File.WriteEndElement();
File.Close();

トピックの続き:
デバイス

ほとんどすべての会計士は、業務上、1C の文書を削除する必要に直面することがあります。 1C でドキュメントを適切に削除する方法がわからない場合...