1C:Enterprise 8プラットフォームでのWebサービスのラピッドプロトタイピング

良い一日、親愛なるhabralum!



おそらく、プラットフォーム1C:Enterprise 81C:Enterprise 8 )で、会計士向けのアプリケーションに加えて、 クレイジーな職人がゲームを作っていることをご存知でしょう。 ただし、ゲーム開発については説明しませんが、これにはある程度Webサービスを使用できます。



1C:Enterprise 8プラットフォームはサブジェクト指向ですが、 COMOLEXMLHTMLSOAP、およびその他のいくつかのテクノロジーが存在するため、ビジネスオートメーションに直接関係しないタスクにも使用できます。 個人的には、アプリケーションの開発、デバッグ、および展開が非常に高速であることに惹かれています。 プロトタイピング用のプラットフォームを選択するとき、これらの特性は私にとって重要です。



簡単に、Webサービスを実装し、そのデータベースを開発し、Webサーバーで公開できる1C:Enterprise 8プラットフォームでの速度を簡単な例で示します。 上記の例は、わずかに変更された形式で、大規模で実際のプロジェクトで使用されており、そのプロトタイプは1Cで実装することが決定されました。 このプロジェクトはまだ開発中ですが、私はこのプラットフォームで最終的な実装を行う傾向が強くなっています。



例の問題文



たとえば、リモートファイルストレージを提供する小さなWebサービスを開発します。 Webサービスの機能のうち、ファイルをサーバーに配置して受信するだけです。 Webサービスにアクセスするには、HTTP認証を使用します。



特にキリル文字を嫌う人のために、すべてのコード(およびプラットフォームの名前)は英語で表示されます。



それでは始めましょう。



データベース開発



1Cプラットフォームで開発するための新しいアプリケーションを追加したいと考えています。 一般に、( 1 )を追加する場合、その名前と場所を示す必要があります。 アプリケーションを直接開発するには、 Designerモードに切り替える必要があります( 2 )。







データベースにファイルボルトを作成するには、数回クリックするだけです。 これを行うには、 FileStorageカタログ(ディレクトリ)をアプリケーションに追加します







Value Storageのタイプを持つValueStorageの単一の属性を定義します。







これで、ファイルを保存するためのデータベース構造が実装されました。 ファイル自体のバイナリデータのみを保存します。この例の名前を保存する必要はありません。 それでも必要な場合は、これも非常に簡単に解決されます-ファイル名を保存するためのもう1つの属性を追加します。



Webサービスの実装



それでは、Webサービス自体の開発を始めましょう。



新しいWebサービスをアプリケーションに追加します。 FileStorageServiceという名前を付けます。







必ず名前空間を定義してください。







さらに、2つのメソッドPutFileファイルタイプbase64binary)の戻り値文字列タイプとGetFileIdタイプの文字列)戻り値タイプbase64binaryを追加します。 Webサービスモジュールでは、それらのコードを数行書きます。



Function PutFile(File)



If File.Size() = 0 Then

Raise "INVALID_BINARY_DATA";

EndIf;



// .

NewFile = Catalogs.FileStorage.CreateItem();

NewFile.ValueStorage = New ValueStorage(File);

NewFile.Write();



Return NewFile.Code;



EndFunction



Function GetFile(Id)



// .

File = Catalogs.FileStorage.FindByCode(Number(Id));



If NOT ValueIsFilled(File) Then

Raise "INVALID_FILE_CODE";

EndIf;



Return File.ValueStorage.Get();



EndFunction









ファイルを受信して​​サーバーに配置するために必要なすべての機能が実装されています。 HTTP認証のためにユーザーを取得し、Webサービスを公開するだけです。



Web公開



開発の初期段階では、アプリケーションにユーザーがいないため、名前とパスワードを入力せずにインフォベースにアクセスできます。 これを修正するには、ユーザーをインフォベースに追加する必要があります。 また、これらのユーザーはHTTP認証に使用されます。 最初に行うことは、完全な権限を持つロールを追加することです。







次に、このロールを、作成された最初のユーザー(管理->ユーザー->追加)-管理者に割り当てます。











その後、一般ユーザーをリストに追加します。







ユーザーを追加したら、Webサービスを公開します。 IISApache )で公開(管理-> Webサーバーでの公開...)が可能です。 プラットフォームは、これに必要なすべてのアクションを自動的に実行します。 [ 公開 ]ボタンをクリックするだけです。







それだけです。すでに公開されているWebサービスを使用できます。



このテキストを読むには、実装にかかった時間よりもはるかに時間がかかるように思えます。 1C:Enterprise 8プラットフォームでのWebサービスのプロトタイピングが迅速かつ簡単であることを学ぶことが、ハブラの皆さん、おもしろいと思いました。 一部の開発環境では、通常の「Hello world」の実装ははるかに困難です。



All Articles