構成拡張 - サポートを削除せずに標準構成に機能を追加する方法 (20 分のビデオ)。 互換モードの変更または無効化 拡張機能は何に使用されますか?

作業コストとさまざまなリリースからの翻訳のオプション

翻訳 8.1 → 8.2.13 翻訳 8.2.13 → 8.2.16 翻訳 8.2.16 → 8.3.10
価格、こする。 * 54,000 ₽ 12,000₽ 76,800ルーブル

プラットフォームのさまざまなバージョンでのすべての変更のリストは、次のリンクから入手できます。
プラットフォーム 8.2 の場合:
http://downloads.v8.1c.ru/content/Platform/8_2_19_106/1cv8upd.htm

8.3 への翻訳作業を開始する前に、以下が必要です。

制御されたブロッキング モードを確認します。 「自動」を使用した場合、8.3 への移行時に管理ロック モードに切り替えるために追加コストが必要になる場合があります。
8.2.16 以降で互換モードを使用している場合は、テーブルが再構築されているかどうかを確認する必要があります。
使用されるクライアントの種類 (シン、シック、Web クライアント) を決定します。
Linux を実行するマシンがあるかどうかを確認する

設定 8.1 → 8.2.13 の変換

作業費: 54,000摩擦。

構成 8.2.13 → 8.2.16 の変換 (再構築を含む)

主な変更点:
定数およびアキュムレーションレジスタの設定を保存するモードが変更されました。 各オブジェクトには独自のデータベース テーブルがあります
管理されたロック メカニズムの実装が見直されました。
テクノロジー ログ イベント「TLOCK」の場合、「Txt」プロパティはバージョン 8.2.13 との互換モードでのみ書き込まれます。
シン クライアント、シック クライアント、サーバー、および外部接続の 1C:Enterprise モードの動作速度に対するデバッグ モードの影響が軽減されました。
「Field1」と「Field2」に参照型の値が含まれる場合、「ValueType(Field1) = ValueType(Field2)」という形式のクエリの実行が最適化されました。
複合タイプの属性を表示する管理フォーム フィールドの場合、複合タイプに異なるクイック選択設定を持つ参照タイプが含まれている場合に、クイック選択リストを開くことが高速化されました。
新しい独立した非周期的な情報レジスタの場合、次元インデックスはクラスタ化されます。

構成変更が必要な変更:

互換モードが無効の場合、周期情報登録マネージャーメソッド「Get()」の「Period」パラメータが必要です。 バージョン 8.2.13 およびバージョン 8.1 との互換モードでは、動作は変わりません (パラメーターを指定せずにメソッドを使用できますが、結果は未定義です)。
「DataLockElement」オブジェクトの「SetValue()」メソッドと「UseFromDataSource()」メソッドを同時に使用すると例外がスローされます。 バージョン 8.2.13 との互換モードでは、動作は変わりません (「UseFromDataSource()」メソッドで設定された値が優先されます)。
シリアル化をサポートしないデータ値の保存はサポートされていません。 互換モードでは動作は変わりません。
データベースがファイルベースの場合は、情報ベースを変換する必要があります。 変換が開始されると、この情報ベースを以前のバージョンの 1C:Enterprise 8 プラットフォームで使用することはできなくなります。 設定リポジトリを使用して開発が実行される場合は、情報ベースを変換する前にリポジトリのコピーを作成する必要があります。

重要。 互換モードの変更の効果を得るには、コンフィギュレータを通じて再構築を行う必要があります。「管理 → テストと修正 → インフォベーステーブルの再構築」。

まず、テストベースで再構築を実行し、この操作の実行時間を測定する必要があります。
8.2.19 より古い 1C サーバーのバージョン (バージョン 8.3 など) を使用している場合、再構築の実行時に次のエラーが発生する可能性があります。

この場合、次のことを行う必要があります。
別の 1C サーバー バージョン 8.2.19 をインストールし、調査中のデータベースをその上にデプロイします
1C サーバー バージョン 8.2.19 のコンフィギュレーターでデータベースを開き、互換性モードを「使用しない」に変更します。
情報ベーステーブルを再構築する
再構築が完了したら、情報ベースを元の 1C サーバー バージョン 8.3 に移動します。

8.2.13 互換モードから 8.2.16 モード (8.2.16、8.2.19 プラットフォームを使用する場合は非互換モード、8.3 プラットフォームを使用する場合は 8.2.16 互換モード) に設定を転送するコストは次のとおりです。 12,000こする。

労働契約書テンプレートをダウンロードできます。

設定 8.2.16 → 8.3.10 の変換

構成の変換作業には、次の構成の変更が含まれます。

1. プロパティ名の競合を排除します。 1C:Enterprise 8.3 で登場した新しいプロパティに一致するように変数名を変更します。
2. 競合する画像名を削除します。 画像ライブラリの名前と一致する名前に画像の名前を変更します。
3. 固定構造のプロパティを変更する際のコードの改良。 固定構造のプロパティの表示を固定構造の再作成に置き換えるか、その使用を同様の「構造」タイプに置き換えます。
4. 一時ストレージ内のシリアル化不可能な値の配置を 1C:Enterprise 8.3 でサポートされているコードに置き換えます。
5. マネージド フォームの詳細に対する "Show" メソッドの呼び出しの使用を、"CurrentElement"、"CurrentPage" プロパティ、および "Activate" メソッドの使用に置き換えます。
6. 80 文字を超えるメタデータ オブジェクト名を 80 文字以下のメタデータ オブジェクトの名前に置き換えます。
7. バージョン 8.3 への移行方法に従って、メソッドとプロパティの名前を変更します。
8. 動的リストでの選択、条件付き書式設定、グループ化および順序を操作するためのメカニズムの改善。
9. キーワード「GENERAL RESULTS」を使用したクエリのコードを改良し、
「クエリ結果のバイパス。グループ化による」。以前の作業ロジックを保持するため。
10. COM オブジェクト クラス名の変更。 名前「V82.COMConnector」を「V83.COMConnector」に、「V82.Application」を「V83.Application」に置き換えます。
11. リストからの選択モードにおける入力フィールドの「リストからの選択の開始」イベントのプログラム コードでの拒否
12. 「ドロップダウン リスト ボタン」プロパティを設定することにより、プログラム コードで入力フィールドの「ChoiceList ボタン」プロパティからの拒否。
13. グローバル コンテキスト メソッド「SafeMode()」によって返される値のタイプの変更を考慮したコードの変更
14. 定数のクエリ結果の変更を考慮するようにコードを変更します (定数テーブルの「Value」フィールドにアクセスするとき、定数が「Value Storage」、「UniqueIdentifier」、または「Value Storage」タイプの値を格納する場合) 「外部データソーステーブル参照」。
15. 「MainRole」構成プロパティを「MainRoles」に置き換えます。
16. 「InternetProxy」オブジェクトの「User」および「Password」プロパティを拒否し、「Set()」、「User()」、「Password()」メソッドに置き換えます。
17. バージョン 8.3 への移行方法に従って、「リストに表示」コマンドをサポートするようにコードを改良しました。
18. SystemInformation.OSVersion プロパティの戻り値が変更された場合に、システム動作の以前のロジックを維持するためのコードの改良。
19. システム列挙型 OptionOpenWindow の使用を拒否する場合に、システムの以前のロジックを維持するためのコードの改良。バージョン 8.3 では使用できなくなりました。
20. モーダルウィンドウの使用の拒否を考慮したコードの改良。
21. Web クライアントをサポートするコードの改善。つまり、「閉じる前」でのサーバー呼び出しとウィンドウのオープンの拒否、「閉じるとき」でのサーバー呼び出しの拒否。
22. 不足しているロールに関数をパラメータとして渡すときに、RoleAvailable() 関数を正しく使用できるようにコードを改善しました。
23. マネージド アプリケーションの場合: バージョン 8.3.8 以降、マネージド アプリケーションのイベント ハンドラー BeforeSystemShutdown、WhenSystemShutdown、および終了モードのマネージド フォームのイベント ハンドラー BeforeClosing、WhenClosing、 ウィンドウを開いたり、サーバー呼び出しを行うことは禁止されています。 サーバー呼び出しなしでフォームを正しく閉じることができるように、構成を改善する必要があります。
24. 変数名の競合: フォーム モジュールでは変数名 FormParameters を使用できません。 したがって、FormParameters という名前の変数を使用するすべてのマネージド フォーム モジュールを、これらの変数の名前を変更して変更する必要があります。

これらの作業の価格は暫定的なもので、ほとんどの構成に有効です。 ご契約時には工事開始前に構成を確認し、 確認後、料金・作業条件を確認させていただきます。 大幅に書き換えられるなど、構成が大きく異なる可能性があるため、確認が必要です。

作業費: 76,800摩擦。

労働契約書テンプレートをダウンロードできます。

構成を 8.3.10 との互換モードに転送するコストは、次のとおりです。 増加した、 もし:
構成では管理フォームを使用する
モダリティの使用を放棄する必要がある
Linux OSの構成の機能を維持する必要がある

1C 用のテレフォニー パネルの新しいリリースをリリースしました。

  • バージョン 1.2.24.10 のために 普通アプリケーション
  • バージョン 1.4.26.17 のために 管理されたアプリケーション

マネージド アプリケーションのリリース バージョンでは、テレフォニー パネルを埋め込むことが可能になりました。 最小限の変更を使用した基本構成 拡張機構構成。

拡張機能を使用する利点

拡張機能は通常の構成と非常に似ています。 これを使用するには、通常の構成と同じ作業テクニックが使用されます。 拡張機能は主に、プログラムへの変更を容易にするために作成されます。 特定のモジュールに「コードの一部」を挿入したり、新しいメタデータ オブジェクトを追加したりする必要はなくなり、構成に拡張機能を追加するだけで済みます。

拡張機能を使用する大きな利点は、 自動アップデート主な構成。 現在、一般的な構成のサポート設定を変更する必要はありません。

1C用テレフォニーパネル組み込みの特長

このような機能は、バージョン以降のプラットフォームの拡張機能で利用できるようになりました。 8.3.9.1818 。 したがって、これを利用するために、バージョン以降、拡張機能の互換モードを無効にしました。 8.3.9 まだサポートされていません。 したがって、メイン構成の互換モードを無効にする必要があります。無効にしないと、次のエラーが表示されます。 構成拡張の互換モードは、メイン構成の互換モードよりも優れています".

2) メイン設定にロールを追加します MIKO_ソフトフォン、当社はすべての権利を撤回します。

新しいメタデータ オブジェクト (この場合はロール) を追加するときは、ディレクトリを更新する必要があります。 メタデータオブジェクト識別子。 このロールを拡張機能に追加すると、標準構成ではこれが無視されました。つまり、MetadataObjectIdentifiers ディレクトリを更新するときに、ロールがそのディレクトリに表示されませんでした。 このため、テレフォニー パネル設定プロファイル メカニズムが正しく機能せず、次のエラーが表示されました。 MIKO_Softphone ロールのメタデータ オブジェクト識別子が見つかりませんでした".

さらに、この状況はすべての構成で発生したわけではありませんが、 「貿易管理、11.2.3.218」そして 「複雑な自動化、2.0.3.222」ロールが拡張機能自体に追加されたとき、ロールに問題はありませんでした。 ソリューションにある程度の汎用性を提供し、サポートされているほとんどの構成で問題なく動作することを保証するために、役割を追加することにしました。 MIKO_ソフトフォンメイン構成に追加して拡張機能で借用し、このロールの設定を拡張機能で実装します。

非常に重要な機能は、拡張機能をインストールした後で古い手順に従ってパネルを埋め込みたい場合は、拡張機能を無効にして MIKO_softphone ロールを削除する必要があるということです。 拡張機能を再度使用する場合は、最初にロールを追加してから拡張機能を追加する必要があります。

要約しましょう

基本構成を変更する機能を組み込み、構成に最小限の変更を加えただけでも、テレフォニー パネルの組み込みプロセスが容易になりました。 これで、マネージド アプリケーションのモジュールに変更を加えたり、構成に処理やサブシステムを追加したり、ロールを構成したりする必要はなくなります。 拡張機能がこれらすべてを行ってくれます。 私たちは、1C のテレフォニー パネルを組み込むプロセスを引き続き改善していきます。

拡張メカニズムを使用して 1C 用のテレフォニー パネルを組み込む手順が記載されています。

フィードバック フォームからご質問ください。

© 2019.MIKO LLC 全著作権所有。

プラットフォームの新しいリリース 8.3.11 がリリースされました。これにより、拡張機能を通じてメタデータ オブジェクトを追加および変更できるようになります。 構成をサポートから削除せずに、本当に改善を実装できるのでしょうか? 何の結果も伴わずにクライアントに山ほどの金を約束する価値はあるでしょうか?

まず第一に、拡張機能には制限があることを認識する必要があります。

作成されるオブジェクトの制限

現時点では、次のものを作成できます。

  • ディレクトリ
  • ドキュメンテーション
  • 情報レジスタ
  • 交換プラン

以下に詳細を追加できます。

  • ディレクトリ
  • ドキュメンテーション

最終的にはどうなるでしょうか? すべてのタイプのメタデータ オブジェクトを追加できるわけではありません。 最も一般的で人気がありますが、それでもすべてではありません。 さらに、新しいディメンションとリソースを情報レジスタに追加することはできません。 完全に新しいレジスタのみ作成できます。

拡張機能の機能は、拡張機能が適用される構成の互換モードによって異なります。

互換モード 8.3.8- オブジェクトとそのモジュールの形式を変更し、独自のレポートと処理を追加することのみが可能です。

互換モード 8.3.10- 一般モジュール、オブジェクトおよびマネージャーモジュール、ロールを変更し、任意のモジュールに対して「Before」、「After」、「Instead」ディレクティブを使用できます。

互換モード「使用しない」- 新しいオブジェクトの追加を含む、拡張機能のすべての機能を使用できます。

現時点では、標準の UT 11.3 には互換モード 8.3.8 があります。 UT 11.4 では、互換性モードは 8.3.10 です。つまり、たとえば UT では、メタデータ オブジェクトの作成を含むほとんどの拡張機能が利用できません。

これでは、なぜルートのサポートを解除し、互換モードを「使用しない」に設定して、拡張機能を静かに使用すればよいのでしょうか?という疑問が生じるように思えます。 互換モードを変更すると、フォームとクエリ結果の動作が変わる場合があります。 システム全体の動作。 最初にテストすることなく互換モードを変更しないことを強くお勧めします。 しかし、アプリケーション ソリューション全体を完全にテスト (または使用されているドキュメントを少なくとも部分的にテスト) することが可能であることは明らかです。 したがって、このオプションは使用しないでください。

拡張機能を標準構成に接続し、標準オブジェクトを借用する場合、拡張機能はメイン構成の互換性モード、借用したオブジェクトのタイプとその詳細を制御します。 監視されているプロパティが一致しない場合、拡張機能は無効になり、原因が解消されるまで機能しません。 つまり、メジャー アップデートでは、制御されているプロパティの少なくとも 1 つが変更され、拡張機能の機能が失われる可能性が高くなります。


さらに、変更が大きく、標準構成の多くの手順や機能が置き換えられる場合は、それらを注意深く監視し、必要に応じて、以前に行われた変更を保存したまま標準構成に合わせる必要があります。


上記の場合でも、プログラマーの助けが必要であり、場合によっては変更にかなりの時間がかかります (ただし、サポートから削除された構成を更新する場合よりも時間がかかりません)。

結論

  • プラットフォームの新しいリリースでは、拡張機能を使用する新しい機会が提供され、メタデータ オブジェクトを追加できるようになりましたが、それにもかかわらず、機能には特定の制限があります。
  • 拡張機能が適用される構成の互換モードは、拡張機能の機能を大幅に制限するため、互換モードの変更はお勧めできません。
  • 管理されているプロパティが変更される可能性が高いため、大規模な更新には依然として開発者の注意が必要です。

この記事では、「構成拡張機能」とは何か、拡張機能を追加または無効にする方法について検討することを提案します。 バージョン1C以降 1977 年 8.3.6 月、新しいメカニズムである構成拡張がプラットフォームに導入されました。 まず、ちょっとした理論です。

1C では、拡張機能はメイン ベンダーの構成と自動的に結合される並列構成のようなものです。 さらに、拡張機能では、独自のオブジェクトを追加したり、メイン設定のオブジェクトを借用したりすることができます。

拡張機能は何のためにあるのでしょうか?

まず、プログラムの変更を容易にするために拡張機能が作成されます。 つまり、ユーザーが機能の追加を要求した場合、拡張機能が登場する前は、プログラマーはその構成を完全サポートから削除し、標準構成を変更する必要がありました。

完全サポートから除外されると、次のような多くの不都合が生じます。

  • 自動更新の可能性がなくなり、少なくとも更新にかかる時間が増加します。
  • プログラムを担当する高度な資格を持つ専門家が必要です。
  • 標準構成の標準オブジェクトに変更が加えられた場合、更新中に変更が消える可能性があります。つまり、サプライヤーの標準オブジェクトに再び置き換えられる可能性があります。

拡張機能を使用する場合、変更を加える場合、プログラマは標準構成には触れません。 すべての変更は拡張機能を使用して行われますが、これも (上で書いたように) 構成でもあります。 こうすることで、メイン構成は引き続き完全にサポートされます。

メイン構成を更新した後、拡張機能によって以前に変更されたオブジェクトが新しいリリースで変更された場合、その変更は引き続き拡張機能から取得されます。 つまり、拡張機能はメイン設定よりも高い優先順位を持ちます。

ビデオ - 45 分で 1C の拡張機能

1C の 267 ビデオ レッスンを無料で入手:

1Cに拡張子を追加する例

拡張機能が何であるかを示すには、1C コンフィギュレーターでの拡張機能の作成例を挙げるのがよいでしょう。

コンフィギュレーターで、「構成」メニューに移動し、「構成拡張機能」を選択します。 ウィンドウが開き、拡張機能 (存在する場合) のリストが表示されます。 「追加」ボタンをクリックして、新しい拡張機能を追加します。 これで、拡張機能の構成を開くことができます。

ご覧のとおり、拡張構成はメイン構成とまったく同じ構造になっています。 ただ最初は完全にきれいで、物体はありません。

先日、自作方法について記事を書きました。 彼女の例を使用して、拡張機能を使用してこれを組み込みたいと思います。

処理中に、「Organizations」ディレクトリへのリンクを含むフィールドがあります。 だからこそこのガイドが必要なのです。 ただし、特にプラットフォームではこれが許可されていないため、新しい「Organizations」ディレクトリは作成しません。 拡張構成にメイン構成のオブジェクトと同じ名前のオブジェクトを含めることはできません。

したがって、メイン構成から参考書籍を借用します。

ここで、「処理」を右クリックし、「外部処理、レポートの挿入...」を選択します。これにより、拡張機能の構成に新しい処理を追加します。 私の処理を使用する場合は、メイン設定に同じ名前の処理がすでに存在するため、すぐに名前を変更してください。

さて、最後の仕上げです。 自分の処理を管理メニューに反映させたい。 これを行うために、メイン構成から同じ名前のサブシステムを借用します。 処理の中で、それがこのサブシステムに属していることを示すことを忘れないでください。

これが私が思いついた構造です:

何が得られたか見てみましょう。 データベース構成を更新し、1C: エンタープライズ モードでプログラムを起動し、「管理」メニューに移動します。 はい、ほとんど忘れていました。拡張機能の構成を閉じる必要があります。閉じないと、プログラムは起動しません。