{}const=>[]async()letfn</>var
開発1C

1C の拡張機能を正しく書く方法:初心者向け完全ガイド

1Cを更新しましたが、すべてが壊れてしまいましたか?もう苦しまないでください!拡張機能があなたの開発を救います。 松葉杖やタンバリンのダンスなしで、人間的に1Cを変更したい人のための完全なガイド。

К

Kodik

著者

1分で読める

🎯 この記事で学べること:

  • 拡張機能が必要な理由とその仕組み

  • 正しい拡張子の構造

  • モジュールとイベントサブスクリプションの操作

  • 初心者がよく犯す間違いとその回避方法

  • 最適化とテストに関する実用的なヒント

1Cの拡張機能は、ソースコードを変更せずに構成を変更できる強力なツールです。1Cの開発者としてのキャリアを始めたばかりの場合、拡張機能を作成するための正しいアプローチを理解することで、何ヶ月も頭を悩ませたり、やり直したりする必要がなくなります。正しい方法を見てみましょう。

🔥 10万人以上の学生が参加中

理論を読むのに疲れた?
コーディングの時間だ!

Kodik — 実践でプログラミングを学ぶアプリ。AIメンター、インタラクティブなレッスン、実際のプロジェクト。

🤖 AI 24時間
🎓 修了証
💰 無料
🚀 始める
今日参加

なぜ拡張機能が必要なのですか?

想像してみてください。たとえば、「貿易管理」などの標準的な1C構成で作業しています。顧客は、ドキュメントに新しいフィールドを追加するか、実行ロジックを変更するように求めています。以前は、開発者は基本構成を編集するだけでしたが、更新するとすべての変更が失われるか、手動で移行する必要がありました。

拡張機能がこの問題を解決します。拡張機能は、コードに触れることなく、メイン構成のアドオンとして機能します。標準を更新しましたか?拡張機能は引き続き機能します。美しい!

拡張機能の基本原則

最初のルール: 拡張機能は基本的な機能を損なうべきではありません。当たり前のように聞こえますが、多くの開発者はこれを忘れています。コードが既存のロジックの上で動作することを常に念頭に置いてください。

2 つ目の重要な点は、拡張機能には制限があるということです。構成からオブジェクトを削除することはできません。新しいオブジェクトを追加したり、既存のオブジェクトを特定の方法で変更したりすることができます。これはバグではなく、機能です。プラットフォームはシステムの完全性を保護します。

拡張機能の構造

拡張機能は、コンフィギュレータの[コンフィギュレーション]→[コンフィギュレーションの拡張機能]メニューから作成されます。作成後、よく知っているオブジェクトツリーが表示されますが、重要な違いがあります。ここでは追加と拡張のみが可能で、削除はできません。

典型的な拡張構造には、ビジネスロジックの一般的なモジュール、インターフェースのフォーム、特定のタスクの処理が含まれます。新しいディレクトリ、ドキュメント、レジスタなど、タスクを解決するために必要なものをすべて追加できます。

正しい詳細の追加

たとえば、「商品の受領」ドキュメントに「サプライヤー契約番号」フィールドを追加する必要があるとします。拡張機能でこのドキュメントを見つけ、プロパティを追加します。重要:拡張機能に属することを示すプレフィックスを持つ意味のある名前を付けます。たとえば、「追加_サプライヤー契約番号」などです。

詳細の名前の例:
❌悪い:契約番号
✅ 良い:追加_サプライヤー契約番号

詳細を追加した後、フォームに配置する必要があります。ドキュメントのフォームを拡張し、新しい要素を追加し、詳細と関連付けます。プラットフォームは、拡張フォームと基本フォームを自動的に統合します。

モジュールの操作

ここからがマジックの始まりです。イベントにロジックを追加して、オブジェクトのモジュールを拡張できます。典型的な例は、ドキュメントの「記録時」イベントの処理です。

基本構成には、このイベントのハンドラーがすでに含まれています。拡張機能では、独自のハンドラーを作成し、プラットフォームは最初に基本ハンドラー、次に独自のハンドラーの両方を実行します。これにより、ソースコードを変更せずに、チェック、追加計算、通知の送信などを追加できます。

重要なポイント: 拡張機能は基本構成のすべてを表示しますが、基本構成は拡張機能を認識しません。したがって、基本コードでロジックを使用する必要がある場合は、イベントサブスクリプションメカニズムを使用する必要があります。

イベントの購読

サブスクリプションは、コードを変更せずに他のコードにロジックを組み込むための優れた方法です。イベントのサブスクリプションハンドラーを作成します。たとえば、目的のドキュメントの「BeforeRecord」など。そこにコードを書き込みます。システムは、適切なタイミングでハンドラーを自動的に呼び出します。

サブスクリプションはプラットフォームレベルで動作するため、フォーム、外部処理、Webサービスなど、レコードの作成元に関係なく、常に機能します。これにより、ロジックが回避されないことが保証されます。

拡張機能の一般的なモジュール

再利用可能なコードを一般的な拡張モジュールに移動します。複数の場所で何らかの機能が必要な場合は、コードを複製せずに、拡張機能のプレフィックスを持つ一般的なモジュールを作成します。

たとえば、「GetContractData ()」関数を使用して「Add_WorkWithContracts」モジュールを作成します。このモジュールは拡張機能のどこからでも呼び出すことができ、コードはクリーンでサポートされます。

フォームの操作

フォームの拡張は繊細な芸術です。要素を追加したり、プロパティを変更したり、コマンドハンドラを追加したりできます。ただし、拡張機能のフォームは基本のフォームに重ねられ、基本のフォームと同じ名前の要素を作成すると、競合が発生することに注意してください。

実用的なアドバイス: 意味のある一意の要素名を使用してください。「ボタン1」の代わりに、「追加_ボタンをサプライヤーに送信」と呼びます。確かに長くなりますが、半年後には自分に感謝するでしょう。

拡張機能のテスト

実装する前に、必ず実稼働ベースのコピーで拡張機能をテストしてください。新しい機能だけでなく、基本の機能が壊れていないことも確認してください。拡張機能を無効にしてみてください。以前と同じように動作する必要があります。

特にパフォーマンスに注意してください。拡張機能は基本コードの後に実行され、人気のあるドキュメントのレコードハンドラーに重いクエリを追加した場合、ユーザーはそれを感じるでしょう。

バージョン管理とドキュメント

拡張機能の変更履歴を保持します。1年後に「何かを修正する」ように求められたとき、何が、なぜ行われたかについてのメモに感謝するでしょう。

コード内で非標準的なソリューションにコメントします。「会計サブシステムとの競合を避けるために、このようになっています」という行は、将来の調査に費やす時間を節約します。

初心者がよくする間違い

ミス #1: 拡張機能の構成の半分を書き換えようとしています。拡張機能は、代替構成ではなく、特定のタスクを解決する必要があります。

2番目に一般的な間違いは、プラットフォームの制限を無視することです。拡張機能が何かをすることを許可しない場合は、松葉杖でシステムをだますのではなく、別のアプローチを探す必要があります。

3番目のミスは、エラー処理がないことです。あなたのコードは他の人のコードの上で動作し、何か問題が発生した場合は、システム全体を落とすのではなく、正しく処理する必要があります。

実用的なアドバイス

  • プレフィックスを使用する すべての拡張オブジェクトに対して。これにより、名前の競合が回避され、コードに関連するものがすぐに表示されます。

  • 拡張機能に過負荷をかけないでください。 1つの巨大な「すべての場合に対応する」拡張機能よりも、いくつかの小さなターゲット拡張機能を作成することをお勧めします。

  • 他の人の拡張機能を調べる。 標準的な構成で作業している場合は、他の開発者が作成した拡張機能を確認してください。これは、経験とソリューションの貯金箱です。

生産性

拡張コードは基本構成の実行に追加されることに注意してください。クエリを最適化し、不要なループを避け、可能な限りデータをキャッシュします。特に大量に処理される文書では、1ミリ秒ごとにカウントされます。

ロジックが常に必要ではない場合は、ハンドラーの先頭に条件チェックを追加します。不要なコードだとすぐにわかる場合、なぜ重いコードを実行するのですか?

構成の更新

これは、どのような拡張機能にとっても真実の瞬間です。標準構成を更新した後、すべてが機能していることを確認します。基本構成が変更された可能性があり、拡張機能を適応させる必要があります。

重要! 更新する前に、必ずバックアップを取り、別のデータベースでテストしてください。これは基本的なことですが、多くの人が無視し、その後、緊急モードで作業を復元します。

安全性

アクセス権を忘れないでください。新しいレポートや処理を追加した場合は、ロールを正しく設定してください。すべての人にすべての権限を付与しないでください。これは安全性が低いだけでなく、ユーザーインターフェイスに混乱をもたらします。


1C 拡張機能を使用することは、練習を重ねることで身につくスキルです。簡単なタスクから始めて、徐々に複雑にし、プラットフォームのドキュメントを学びます。重要なのは、拡張機能の哲学を理解することです。つまり、壊すのではなく、補完することです。

1Cの拡張機能などについては、 コディケ — 開発者向けの教育プラットフォーム。構造化されたコース、実践的な課題、そして学習のあらゆる段階でのサポートを提供します。

そして、私たちは素晴らしい テレグラムチャンネル 経験豊富な開発者が経験を共有し、初心者が複雑な問題を理解するのを助けるフレンドリーなコミュニティ。

🎯先延ばしをやめよう

記事は気に入った?
実践の時間だ!

Kodikでは読むだけでなく、すぐにコードを書く。理論 + 実践 = 本当のスキル。

即座に実践
🧠AIがコードを説明
🏆修了証

登録不要 • カード不要