1Cでのカスタマむズ

䞀般的なカスタマむズに぀いお



゜フトりェアのカスタマむズの必芁性、぀たり 特定のナヌザヌのニヌズぞの倉曎は、おそらく゜フトりェア自䜓ず同時に珟れたした。 すべおの人を満足させるプログラムを䜜成するこずは困難であるため、プログラムの補造元を関䞎させずに倉曎の可胜性を眮くこずは良い考えです。 特に、ビゞネスアプリケヌションに関しおは、 同じ領域であっおも、ビゞネスプロセスは組織によっお異なる堎合がありたす。



画像



゜ヌスコヌドの倉曎



さたざたなカスタマむズ戊略がありたす。 アプリケヌションが゜ヌスコヌドで提䟛される堎合、最も明癜なアプロヌチは、ニヌズに合わせお゜ヌスコヌドを曞き盎すこずです。 そしお、この堎合の最も明らかな問題は、アプリケヌションの新しいバヌゞョンぞの移行です。 クラむアント偎のバヌゞョンの゜ヌスコヌドずプロバむダヌの新しいバヌゞョンをマヌゞする必芁がありたす。 たた、特にクラむアント偎のコヌドが高床にカスタマむズされおいる堎合、これは重芁なタスクです。



プラグむン



この点でより安党な戊略はプラグむンです。 ゜ヌスアプリケヌションは、プラグむンにむンタヌフェむスの固定セットを提䟛し、アプリケヌションに自身を登録する機胜も提䟛したす。 アプリケヌションの新しいバヌゞョンのリリヌスに䌎い、以前のバヌゞョン甚に䜜成されたプラグむンは、新しいバヌゞョンでも匕き続き機胜したすむンタヌフェむスが倉曎されおいない堎合。 ゜フトりェアプロバむダヌがアプリケヌションの動䜜を倉曎した堎合、新しいバヌゞョンのプラグむンの動䜜は前のバヌゞョンの動䜜ず異なる堎合がありたす。 プラグむンの抂念は、オフィスおよびビゞネス゜フトりェア、開発環境Visual Studio、Eclipseなど、グラフィックおよびサりンド゚ディタヌなど、さたざたな゜フトりェアクラスで䜿甚されたす。



サブスクリプション



別のカスタマむズテクノロゞは、アプリケヌション内のむベントをサブスクラむブし、これらのむベント䞭に既知の蚀語たたは独自の蚀語でカスタムコヌドを実行する機胜です。 むベントには、りィンドりを開く、画像を読み蟌むグラフィック゚ディタヌの堎合、泚文凊理ビゞネスシステムの堎合など、さたざたな皮類がありたす。



このアプロヌチの皮類の1぀は、Visual Basic for Application VBA などの蚀語でナヌザヌスクリプトを実行する機胜をメむンプログラムに埋め蟌むこずです。 カスタムコヌドは、特に、アプリケヌションむベントに応じお実行される堎合がありたす。 同じVBAが非垞に匷力で柔軟なカスタマむズ手段であるこずが蚌明されたした。 Microsoft Office、AutoCAD、SolidWorks、CorelDRAW、WordPerfect、ESRI ArcGIS、その他の補品に組み蟌たれおいたす。



1C゜リュヌションのカスタマむズ開始



1C゚ンタヌプラむズプラットフォヌムは、さたざたなカスタマむズ戊略を実装しおいたす。 1Cアプリケヌション゜リュヌションは゜ヌスコヌドで提䟛されるため、圓然、最も明らかなシナリオの1぀は゜ヌスコヌドの倉曎です。



1Cアプリケヌションの゜ヌスコヌドの倉曎



クラむアントが1C゜リュヌションの゜ヌスコヌドをニヌズに合わせお倉曎する堎合、アプリケヌションプロバむダヌもアむドル状態ではなく、新しいバヌゞョンをリリヌスし、機胜を远加しおバグを修正するこずを芚えおおく必芁がありたす。 新しいバヌゞョンのアプリケヌションをむンストヌルするずきに、クラむアントのニヌズに加えられた倉曎が倱われないように、倉曎された前のバヌゞョンのアプリケヌションず新しいバヌゞョンを䜕らかの方法でマヌゞする必芁がありたす。



圓然、1Cでこの問題に倧きな泚意を払い、その解決を促進するための配信およびサポヌトメカニズムを開発したした 。 仕組みを説明する前に、1C゜リュヌションの内郚構造に関するいく぀かの詳现を説明したす。



1Cアプリケヌション゜リュヌション構成の゜ヌスコヌドずメタデヌタは、アプリケヌション自䜓のデヌタ投皿、ディレクトリずドキュメントのデヌタなどを含む同じデヌタベヌスに保存されたす。 プログラムはデヌタずずもに保存されたす。 1Cの甚語で構成されたデヌタベヌスおよびアプリケヌションデヌタは、情報デヌタベヌス略しお情報ベヌスず呌ばれたす。



開発プロセス䞭に、構成プロバむダヌは、クラむアントが倉曎できる構成オブゞェクトディレクトリ、ドキュメントなどず倉曎できない構成オブゞェクトを決定したす。



画像



サプラむダ固有の配信蚭定



クラむアントは、このメカニズムを䜿甚しお、ベンダヌの組み蟌み構成のオブゞェクトをサポヌトするためのルヌルを決定するこずもできたす。たずえば、このオブゞェクトのさらなる倉曎を担圓する堎合、特定のオブゞェクトのサプラむダヌのサポヌトを拒吊できたす。 たたは、逆に、偶発的な倉曎を防ぐために、サプラむダが蚱可しおいる堎合でも独自の構成のオブゞェクトの線集を犁止できたす。



画像



クラむアント偎のサポヌトを構成する



クラむアントが䞀般的な構成で䜕かを倉曎し始めるず、情報ベヌスに2぀の構成が䜜成されたす。



  1. 元のベンダヌ構成。
  2. クラむアント偎で珟圚の構成が倉曎されたした。


そしお今、サプラむダヌは新しいバヌゞョンをリリヌスしおいたす。 完党なアプリケヌションずしお配信するこずも、オブゞェクトを倉曎したサヌビスパックずしお提䟛するこずもできたす。 新しいバヌゞョンに切り替えるず、クラむアント偎に3぀の構成があり、これに基づいお、いわゆる3方向構成のマヌゞが実行されたす。



  1. サプラむダヌからの叀い構成。
  2. クラむアントの珟圚の構成サプラむダヌからの叀い構成に加えお、クラむアントがクラむアントに行った倉曎。
  3. サプラむダヌからの新しい構成。


堎合によっおは、サプラむダによっお倉曎されたオブゞェクトを自動的に曎新できるこずは明らかです。





クラむアント偎ずサプラむダからの新しいバヌゞョンの䞡方でオブゞェクトが倉曎された堎合、手動による介入が必芁です。 コヌドモゞュヌルだけでなく、モデルメタデヌタ、フォヌム、レポヌトなどに察しおも比范および結合するための匷力なメカニズムがありたすが、このメカニズムを䜿甚しおも、構成の結合は簡単な䜜業ではありたせん。



倖郚報告および凊理



新しいバヌゞョンぞの切り替えの芳点から比范的安党な別のカスタマむズメカニズムは、 倖郚レポヌトおよび凊理のメカニズムです。 名前が瀺すように、倖郚レポヌトず倖郚凊理の䞡方のタむプのオブゞェクトは、アプリケヌション゜リュヌションの倖郚にあり、別々のファむルに保存され、実行時にアプリケヌション゜リュヌションにロヌドされたす。 したがっお、新しいバヌゞョンに切り替えるプロセスは、それらにたったく圱響したせん。 ただし、新しいバヌゞョンでオブゞェクトの詳现が削陀たたは名前倉曎され、凊理たたはレポヌトがそれらを参照する堎合、新しいバヌゞョンではレポヌトたたは凊理は倉曎なしでは機胜したせん。



倖郚のレポヌトず凊理は基本的にプラグむンです。 これらは、「カスタム」レポヌトおよびデヌタに察する特定の操䜜他のシステムからの情報のむンポヌトなどに適しおいたすが、もちろん、すべおのカスタマむズシナリオがカバヌされおいるわけではありたせん。 クラむアントがドキュメントの凊理䞭に実行する必芁がある特定のコヌドを远加する必芁がある堎合、ここでは倖郚凊理が䞍可欠です。ドキュメントモゞュヌルの゜ヌスコヌドを線集する必芁がありたす。



クラりドでのカスタマむズ



1cFreshクラりドテクノロゞヌの出珟により、カスタマむズのタスクは新しいレベルに達したした。 実際、さたざたな組織のアプリケヌション゜リュヌションの「クラりド」ナヌザヌは、1぀の情報ベヌス぀たり、アプリケヌションの1぀のむンスタンスで物理的に䜜業できたすが、同時に、デヌタ分離メカニズムのおかげで、組織のデヌタのみが衚瀺されたす。 ここで゜ヌスコヌドを倉曎するこずによるカスタマむズは受け入れられなくなりたす。各組織には独自のカスタマむズが必芁であり、情報ベヌスの「隣人」をカスタマむズする必芁はたったくありたせん。



カスタマむズ甚の「クラりド」では、倖郚レポヌトず凊理の䜿甚のみが適甚されたすが、前述のように、倖郚レポヌトず凊理はナヌザヌが必芁ずするすべおのシナリオをカバヌするわけではありたせん。



構成拡匵



そのため、次の芁件を満たすカスタマむズメカニズムを考案する必芁がありたした。



  1. カスタマむズされた゜リュヌションを新しいバヌゞョンに簡単に曎新し、構成を結合する手䜜業を回避できたす。
  2. 特定の条件たずえば、特定の組織のコンテキストで䜜業する堎合でカスタマむズを含めるこずができたす。
  3. 元の構成の新しいバヌゞョンに切り替えるずきに、カスタマむズのパフォヌマンスが倱われる可胜性を枛らしたした。
  4. 問題が発生した堎合に、アプリケヌションの正垞性を維持するためにカスタマむズを無効にする機胜がありたした。


このようなメカニズムは、クラりド゜リュヌションで䜿甚されるこずに加えお、カスタマむズが必芁な䞀般的な構成の導入時に新しいバヌゞョンに切り替えるず、非垞に䟿利になりたす。

私たちはそのようなメカニズムを思い぀き、その拡匵を呌び出したした。 ある意味で、このメカニズムは、プラグむンのむデオロギヌずサブスクリプションメカニズムずいう2぀のカスタマむズアプロヌチを組み合わせおいたす。



拡匵機胜は、構成の倉曎を構成自䜓ずは別に保持する方法です。 実際、拡匵機胜自䜓は、倉曎されたオブゞェクトを含む個別の構成です。 構成ず同様に、オブゞェクトのツリヌずしお衚されたす。 拡匵機胜を䜿甚するには、通垞の構成ず同じ䜜業方法が䜿甚されたす。



画像



拡匵機胜のメむン構成からオブゞェクトを䜿甚する堎合たずえば、メむン構成に存圚するドキュメントに新しいフォヌムを远加する堎合、最初に「拡匵機胜に远加」コマンドを䜿甚しお拡匵機胜にオブゞェクトを借甚する必芁がありたす。 オブゞェクトを拡匵機胜に远加した盎埌は、拡匵機胜オブゞェクトのツリヌで「空」になっおいたす。メむン構成にあるプロパティのみがありたす。 メむン構成から既存のフォヌムを借甚しお、たずえば、特定のアクションを実行する新しいボタンをフォヌムに远加するこずもできたす。 拡匵機胜のオブゞェクトに新しい詳现を远加するこずはただできたせんが、珟圚取り組んでいたす。



画像



借甚文曞の請求曞発行による基本構成および拡匵



この拡匵機胜には、むベントのサブスクラむブに䌌たものもありたす。たずえば、蚘録凊理など、拡匵可胜な構成のオブゞェクトのむベントを凊理する機胜です。 拡匵機胜でコヌドを呌び出す方法を指定できたす。



画像



ドキュメントを蚘録する暙準手順の前にコヌドを呌び出すこずができたす。たずえば、ドキュメントを担圓するフィヌルドが入力されおいるかどうかを確認し、入力されおいない堎合は、このフィヌルドに珟圚のナヌザヌを曞き蟌みたす。



&("")  _(, , )  (. = ..())  . = .(); ; 
      
      





構成の新しいバヌゞョンでは、ドキュメントレコヌドの実装が倉曎される可胜性がありたすが、拡匵機胜のコヌドは、ドキュメントの蚘録およびゞョブの暙準コヌドの前に実行されたす。



実行時に、䞀般的な構成ず拡匵機胜耇数の堎合がありたすが「远加」され、新しいカスタマむズされた構成が䜜成され、゚ンドナヌザヌが操䜜したす。



画像



拡匵順序



拡匵機胜を開発するずき、耇数の拡匵機胜を構成に远加するずきにプラットフォヌムが拡匵機胜の実行の同じ順序を保蚌しないこずを芚えおおく必芁がありたす。 拡匵機胜が実行された順序を明瀺的に指定するこずを意図的に拒吊したした。 これは、私たちの意芋では、セットアップを耇雑にし、最終的には解決するよりも倚くの問題をもたらしたす。



構成にいく぀かの拡匵機胜を远加し、それぞれが「After」ディレクティブを䜿甚しお同じドキュメントを凊理するず、すべおのハンドラヌが実行されたすが、プラットフォヌムは実行順序が垞に同じであるこずを保蚌したせん。 これは、拡匵機胜を開発するずきに考慮する必芁がありたす。



同じむベントの耇数の拡匵機胜に「代わり」ディレクティブを䜿甚したハンドラヌがある堎合、実行されるハンドラヌは1぀だけであり、事前に指定するこずはできたせん。 これは、最倧1぀の拡匵機胜が同じオブゞェクト/むベントの「代わり」ハンドラヌを持぀ように、蚘憶および監芖する必芁がありたす。



拡匵機胜でのフォヌムのカスタマむズ



拡匵機胜の蚭定たずえば、ドキュメントフォヌムからオブゞェクトフォヌムを借甚できたす。 同時に、拡匵機胜のビゞュアルフォヌム゚ディタヌでは、フォヌムがメむン構成ず同じであるこずがわかりたす。 たた、フォヌムコヌド゚ディタヌでは、拡匵子は空になりたす。これたでのフォヌムのすべおのコヌドはメむン構成にのみ含たれおいたす。



新しいボタンをフォヌムたたは耇数に远加できたす。 耇数の拡匵機胜が同じフォヌムにボタンを远加した堎合、それらはすべお実行時に最終フォヌムに衚瀺されたす。



ただし、フォヌムから暙準芁玠を削陀するこずはお勧めしたせん。これにより、元の構成に存圚するコヌドが砎損する可胜性がありたすフォヌム芁玠を参照しおいる堎合。 そのようなニヌズがある堎合は、「可芖性」プロパティを䜿甚しお芁玠を非衚瀺にするこずをお勧めしたす。



1CEnterprise䞊のアプリケヌションは、単なるプログラミング蚀語のコヌドではないこずに泚意しおください。 アプリケヌションのほずんどは、宣蚀型モデルずしお説明されおいたす。 さらに、さたざたなタむプのモデルがさたざたなタスクフォヌム、レポヌト、暩利などに䜿甚されたす。 モデルのタむプごずに、拡匵機胜で独自のカスタマむズ方法を遞択したす。これにより、兞型的なケヌスに最も䟿利な倉曎が提䟛されたす。



拡匵機胜の利点



拡匵機胜には、配信およびサポヌトメカニズムずのむデオロギヌ的な違いがありたす。 配信ずサポヌトのメカニズムでは、開発者はサプラむダの構成を必芁に応じお修正したす。たるで自分の構成を埮調敎するだけで、曎新時に競合する倉曎を同期する方法を理解したす。 拡匵機胜では、開発者は远加された機胜に関しお拡匵機胜をすぐに最初に開発したす。 拡匵機胜はシステムによっお远加ずしお正確に保存され、システムは最も安党な曎新を凊理したす。



新しいバヌゞョンの構成ぞの簡単な移行



サプラむダが暙準構成の新しいバヌゞョンをリリヌスするず、暙準構成のサポヌトモヌドが倉曎されなかったため、自動曎新が実行されたす。サプラむダの完党なサポヌトのたたでした。 曎新されたアプリケヌション゜リュヌションを開始するず、プラットフォヌムは自動的に倉曎された暙準構成ず拡匵機胜を自動的に組み合わせたす。 たた、クラむアントは、自分のニヌズに合わせお修正された暙準゜リュヌションを匕き続き䜿甚したす。



兞型的な構成のバヌゞョンを曎新した埌、たずえば、拡匵に含たれるオブゞェクトたたはオブゞェクトの詳现が新しいバヌゞョンで名前が倉曎された堎合など、拡匵を新しいバヌゞョンに適合させる必芁がある堎合がありたす。 これに぀いおは、「゚ラヌの早期譊告」セクションで詳しく説明したす。



画像



倉曎は別です



拡匵機胜の最初の明癜な利点は、クラむアントに察しお行われたすべおのカスタマむズが通垞の構成ずは別個であり、倉曎された構成を暙準の構成ず比范しお、倉曎内容を正確に理解する必芁がないこずです。



拡匵機胜のメむン構成からオブゞェクトを䜿甚するには、メむン構成から拡匵機胜にオブゞェクトを借甚する必芁があるこずは既に述べたした。 したがっお、拡匵機胜では、メむン構成からのオブゞェクトぞの参照のようなものが衚瀺されたす。



構成内のどの借甚オブゞェクトが実際に倉曎され、読み取り専甚モヌドで借甚されおいるのかたずえば、レポヌトで䜿甚するためを理解する方法がありたす。 拡匵オブゞェクトのツリヌには、「拡匵機胜に倉曎および远加」フィルタヌボタン甚のボタンがあり、クリックするず、この拡匵機胜で倉曎された借甚オブゞェクトず、この拡匵機胜で䜜成された新しいオブゞェクトのみがツリヌに残りたす。



画像



゚ラヌの早期譊告



レポヌトで䜿甚するために、拡匵機胜のメむン構成からContractsディレクトリを借甚したずしたす。 䞀方、暙準構成の新しいバヌゞョンがリリヌスされ、Contractsディレクトリの名前がContractsに倉曎されたした。 圓然、新しいバヌゞョンぞの移行埌、拡匵機胜のレポヌトは機胜したせん。 叀いカスタマむズテクノロゞヌ倖郚レポヌトを䜿甚した堎合、゚ラヌはレポヌトの実行時にのみ発生したす。 拡匵機胜の堎合、暙準構成のバヌゞョンを曎新した埌、蚭蚈時に拡匵機胜の正確性を怜蚌し、ナヌザヌが䜜業を開始する前にすべおの問題を修正する機䌚がありたす。



これは、倚くの拡匵機胜が同じ情報ベヌスで䜿甚され、構成バヌゞョンが䞭倮で曎新される実装に特に圓おはたりたすたずえば、同じ構成を䜿甚しおいるが異なるデヌタ領域で䜜業する異なる組織が異なるセットを䜿甚できるクラりド実装など拡匵機胜。 管理者は、テストベヌスで暙準構成バヌゞョンを曎新し、新しいバヌゞョンに関するすべおのナヌザヌ拡匵機胜の正確性を怜蚌できたす。 問題が発生した堎合、圌は拡匵機胜の所有者にそれらに぀いお通知し、すべおの拡匵機胜が新しいバヌゞョンの構成に合わせられた堎合にのみ、䜜業ベヌスの新しいバヌゞョンの暙準構成ぞの移行が行われたす。



次は



拡匵機胜の開発は、1C゚ンタヌプラむズプラットフォヌムのカスタマむズツヌル開発の䞻芁な分野の1぀であるず考えおいたす。 もずもずクラりドサヌビスのカスタマむズを容易にするために考案された拡匵機胜は、カスタマむズず非クラりド展開の状況を容易にするように蚭蚈されたした。



これたでのずころ、拡匵機胜では、必芁なものをすべおカスタマむズするこずはできたせん。 たずえば、新しいアプリケヌションオブゞェクトリファレンスブック、ドキュメントなどを䜜成するこずはただ䞍可胜であり、既存のアプリケヌションオブゞェクトに新しい詳现を远加するこずはできたせん。 私たちはこれに取り組んでおりおよび他の機胜も、1CEnterpriseプラットフォヌムのほがすべおの新しいバヌゞョンで、拡匵機胜に新しい機胜を远加しおいたす。






All Articles