टीएसडी पर आवेदन और 1 सी के साथ संचार: एंटरप्राइज़ 8.3 HTTP-Service के माध्यम से। भाग 3 (बारकोड प्राप्त करना

1. विनिमय विधि का विकल्प। एपीआई विवरण।

2. 1 सी के किनारे पर एपीआई का कार्यान्वयन।

3. ब्रॉडकास्टर। हमें ATOL Smart.Lite के उदाहरण पर बारकोड डेटा प्राप्त होता है


4. OnKeyUp। कीबोर्ड इम्यूलेशन के साथ स्कैनर से बारकोड प्राप्त करें

इस भाग में, मैं विवरणों पर ध्यान देना चाहूंगा। मेरे द्वारा सामने आए सभी ट्यूटोरियल्स में, फ़ंक्शंस का वर्णन किया गया है और लगभग इसे कहाँ जोड़ा जाना है।


हमारे एप्लिकेशन को संदेश प्रसारित करने के लिए सुनता है और उन्हें एक पॉप-अप विंडो में प्रदर्शित करता है। Empty Activity साथ एक परियोजना बनाएं।

Package name " com.domain.barcodeTest " पाठ्यपुस्तकों का एक समूह है। अब प्रोजेक्ट में हम एक package बनाएंगे। खुद के लिए, मैंने इसे बर्तन कहा, क्योंकि मुझे नहीं पता कि इसे और कहां ले जाना है। यह नेटवर्क के साथ, डेटाबेस के साथ भी काम नहीं करता है। यह एक मॉडल की तरह नहीं दिखता है।
इसलिए, इस तरह।

छवि

छवि पर प्रकाश डाला गया कि पैकेज कहाँ बनाया जाए। utils अंदर utils एक वर्ग (Kotlin File/Class ) बनाएँ। हम चुनते हैं कि यह एक वर्ग है, और हम इसे CustomBroadcastReceiver कहते हैं। पूर्ण फ़ाइल कोड:

CustomBroadcastReceiver.kt
 package com.domain.barcodeTest.utils import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.widget.Toast class CustomBroadcastReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { //          val type = intent.getStringExtra("EXTRA_BARCODE_DECODING_SYMBOLE") val barcode = intent.getStringExtra("EXTRA_BARCODE_DECODING_DATA") //  .      . val sb = StringBuilder() sb.append("Type: $type, Barcode:$barcode\n") //    .    . Toast.makeText(context, sb.toString(), Toast.LENGTH_SHORT).show() // "data class",         . //      ,    . val bc = Barcode(type, barcode) } } } 


हमने प्रसारण संदेश प्राप्त करने के लिए अपनी कक्षा बनाई, ब्रॉडकास्टर से सब कुछ विरासत में मिला। इसमें, हमने संदेश प्राप्त करने के लिए फ़ंक्शन के व्यवहार को फिर से परिभाषित किया ( onReceive )। शीर्ष स्तर पर " com.domain.barcodeTest " हम एक और पैकेज models बनाएंगे, और इसमें हम एक क्लास " Barcode " बनाएंगे। पूर्ण फ़ाइल कोड:

barcode.kt
 package org.innova_it.mws.models data class Barcode( val type: String?, val value: String? ) 


इस प्रकार, हमने बारकोड क्लास बनाया और इसके लिए एक कंस्ट्रक्टर बनाया। सभी समान, कोटलिन अच्छा है। अब हम स्वतंत्र रूप से CustomBroadcastReceiver वर्ग में इसका उपयोग कर सकते हैं, त्रुटि गायब होनी चाहिए। नतीजतन, हमारे पास निम्नलिखित संरचना है।

छवि

संकुल में हम समान वस्तुओं को संग्रहीत करते हैं। यदि 1 सी में अनुवाद किया जाता है, तो मॉडल पैकेज में हम 1 सी डेटा का विवरण संग्रहीत करते हैं। निर्देशिकाएँ, विवरण और अधीनस्थ वस्तुओं के साथ दस्तावेज़। हम डेटाबेस तालिकाओं के विवरण और नेटवर्क पर डेटा प्राप्त करने के लिए प्रारूप भी संग्रहीत करते हैं। आगे देख रहे हैं। यहाँ नामकरण के लिए पिछले भाग से मॉडल का एक विशिष्ट उदाहरण है। यह हमारी वर्तमान परियोजना पर लागू नहीं होता है। लेकिन एक उदाहरण के साथ समझना आसान है।

मॉडल / माल
 data class PayLoadWares( val quantity: Int, val wares: List<Ware> ) //      sqlLite(Room) //@SerializedName -  Retrofit      json @Entity(tableName = "wares_table") data class Ware( @PrimaryKey @NonNull @SerializedName("code") @Expose val code: String, @SerializedName("article") @Expose val article: String, @NonNull @SerializedName("name") @Expose val name: String, @SerializedName("fullName") @Expose val fullName: String, @NonNull @SerializedName("unit") @Expose val unit: String ) data class WareResponse( val result : Result, val payload: PayLoadWares ) 


यदि आप 1 सी संरचना के रूप में परियोजना की कल्पना करते हैं, तो प्रत्येक पैकेज में कक्षाएं शामिल होंगी: WaresModel (माल की निर्देशिका का मॉडल, WaresManager (माल की निर्देशिका का प्रबंधक), WaresObject (निर्देशिका का उद्देश्य), WaresUI (फ़ॉर्म का मॉड्यूल), WaresActivity (फॉर्म)। 1 सी के विपरीत, हम मॉडल में सभी निर्देशिकाओं के लिए सामान्य गुणों, विधियों का वर्णन कर सकते हैं, और फिर उनसे विरासत में प्राप्त कर सकते हैं। 1 सी में, प्लेटफ़ॉर्म ऐसा करता है और हमें इसके बारे में नहीं सोचना है।
1 सी में इंटरफेस का वर्णन कैसे करें, मुझे यह भी पता नहीं है। यह पूर्ण ज्ञान से पहले सिखाया जाना चाहिए। इसके बिना आगे यह असंभव होगा।

आइए हमारे आवेदन पर वापस जाएं। अगली चीज़ जो हमें करने की ज़रूरत है वह है उन घटनाओं के लिए आवेदन पर हस्ताक्षर करना जो हमें चाहिए। AndroidManifest.xml का उपयोग किए बिना, हम इसे गतिशील रूप से साइन इन करेंगे।

ऐसा करने के लिए, हमें एक वैरिएबल जोड़ना होगा और MainActivity में दो प्रक्रियाओं को ओवरराइड MainActivity

चर जोड़ें

 class MainActivity : AppCompatActivity() { //   MainActivity   .      "CustomBroadcastReceiver",    "BroadcastReceiver" private val customBroadcastReceiver = CustomBroadcastReceiver() ... 

घटनाओं की सदस्यता लें। MainActivity में दो तरीकों के व्यवहार को फिर से परिभाषित करें

 override fun onResume() { super.onResume() registerReceiver( customBroadcastReceiver, IntentFilter ("com.xcheng.scanner.action.BARCODE_DECODING_BROADCAST") ) } override fun onStop() { super.onStop() unregisterReceiver(customBroadcastReceiver) } 

मुझे लगता है कि यहां सब कुछ काफी पारदर्शी है। हम एक फिल्टर के साथ संदेश प्राप्त करने के लिए एक आवेदन पर हस्ताक्षर करते हैं। 1 सी भाषा में जब एक संदेश (onReceive) , जहां स्रोत "com.xcheng.scanner.action.BARCODE_DECODING_BROADCAST" । यह कैसे ATOL Smart.Lite कॉल पर स्कैनर के साथ काम करने के लिए आंतरिक उपयोगिता है। और हमारे पास जो डेटा है

  • "EXTRA_BARCODE_DECODING_SYMBOLE" - "EXTRA_BARCODE_DECODING_SYMBOLE" प्रकार
  • "EXTRA_BARCODE_DECODING_DATA" - डेटा ही

और वास्तव में संदेश को संसाधित किया जा रहा है। हम रन कंपाइल करते हैं। हम जांच करते हैं। एक सवाल है? टिप्पणियों में पूछें। वह सब है। अब हम Android के लिए डेवलपर हैं। :)

यह भाग वांछित परिणाम प्राप्त करने के लिए उपयुक्त है। लेकिन इसके बाद, आपको जावा की मूल बातें जानने और जानने की जरूरत है। और तभी कोटलिन की मूल बातें।

PS यहाँ मैं Android डेवलपर्स से संपर्क करना चाहूंगा। मेरी अजीब स्थिति है। मैं OnCreate () में एक आवेदन पर हस्ताक्षर करता था, और onStop () में सदस्यता समाप्त करता था। लेकिन एप्लिकेशन ऑनपॉज़ () में जाने के बाद, और जब ओन्यूम्यूम () फिर से शुरू हो रहा था, तो एक त्रुटि के साथ एक संदेश प्राप्त करते समय एप्लिकेशन क्रैश हो गया। इस व्यवहार का क्या कारण हो सकता है?

Source: https://habr.com/ru/post/hi473574/


All Articles