ერთი აპლიკაციის ამბავი: მობილური „1C: ჩვენი კომპანიის მართვა. მობილური აპლიკაციის „1C-რეიტინგის“ საწყისი პარამეტრები: მობილური მიმტანი დარეკავს ვებ სერვერის ოპერაციას

  • სახელმძღვანელო

გამარჯობა ძვირფასო.

ამ სტატიაში მინდა წარმოგიდგინოთ ახალი პროდუქტი „FBA Toolkit“, რომელიც მნიშვნელოვნად ამარტივებს კორპორატიული მობილური აპლიკაციის შემუშავების პროცესს 1C + Android-ზე.
"FBA Toolkit" არის:
- "მშობლიური" Android აპლიკაციის შემუშავება მშობლიურ IDE-ში Java-ში;
- 1C: საწარმო 8.1 (8.2), როგორც მონაცემთა წყარო, კორპორატიული საინფორმაციო სისტემა.

უპირველეს ყოვლისა, ჩარჩო გამოადგებათ 1C პროგრამისტებს, რომლებსაც სურთ შექმნან ბიზნეს აპლიკაციები Android-ისთვის, მაგრამ უჭირთ მათთვის ახალი პლატფორმის დაუფლება. განვითარების დასაწყებად საკმარისი იქნება ჯავის საბაზისო ცოდნა. შემდეგი, მე გაჩვენებთ, თუ როგორ უნდა შექმნათ კლიენტ-სერვერის აპლიკაციის სამუშაო პროტოტიპი მხოლოდ რამდენიმე საათში.

სამუშაო ადგილის მომზადება თავად განვითარების პროცესის დაწყებამდე აუცილებელია დეველოპერის სამუშაო ადგილის მომზადება. საჭირო:

1. დააინსტალირეთ და დააკონფიგურირეთ:
- Java SDK + Eclipse + Android SDK;
- ვებ სერვერი (IIS ან Apache);
- 1C: Enterprise 8.1 (8.2)

2. Eclipse-სთვის, იმპორტით ორი ბიბლიოთეკის პროექტი: ActionBarSherlock და ru_profu1c_fba SVN საცავიდან.

3. დააინსტალირეთ „FBA“ კონფიგურაციის დისტრიბუცია და დააკავშირეთ იგი თქვენს 1C-ზე დაფუძნებულ აპლიკაციურ გადაწყვეტასთან.

მთელი წინასწარი კონფიგურაციის პროცესი დეტალურად არის აღწერილი სტატიებში:
დეველოპერის სამუშაო ადგილის მომზადება
"FBA" კონფიგურაციის განაწილების ინსტალაცია
"FBA" კონფიგურაციის გაერთიანება აპლიკაციის გადაწყვეტასთან და ვებ სერვერზე გამოქვეყნება

დაყენებას დიდი დრო არ უნდა დასჭირდეს და, სავარაუდოდ, თქვენ უკვე გაქვთ დაინსტალირებული რამდენიმე საჭირო პროგრამა.

აპლიკაციის აღწერა ჩვენ შევქმნით მობილურ აპლიკაციას „ანგარიში მენეჯერთან“, რომელიც შექმნილია იმისათვის, რომ რეგულარულად აცნობოს მენეჯერს საწარმოში არსებული მდგომარეობის შესახებ. აპლიკაცია შედგება 3 ეკრანისგან:
  • "შესვლა" - მომხმარებლის ავტორიზაცია პროგრამის დაწყებისას.
  • "ანგარიშების სია" არის ჩვენი აპლიკაციის მთავარი ეკრანი. ნაჩვენებია ხელმისაწვდომი ანგარიშების სია 1C მონაცემთა ბაზიდან მონაცემების ნახვისა და განახლების შესაძლებლობით.
  • ”პროგრამის პარამეტრები” - აქ მომხმარებელი ადგენს ავტორიზაციის პარამეტრებს და 1C სერვერის მისამართს, აკონფიგურირებს გრაფიკს 1C სერვერთან ავტომატური გაცვლისთვის.
  • აპლიკაცია განახორციელებს 2 ვარიანტს 1C სერვერიდან მონაცემების მისაღებად:

  • ანგარიში „საქონელი საწყობებში“. ის გენერირდება სერვერზე და შედგენილია როგორც HTML დოკუმენტი, ის უბრალოდ ნაჩვენებია მობილურ აპლიკაციაში. უმარტივესი ვარიანტია, რომ ანგარიშის ფორმა ფიქსირდება და მისი შეცვლა შეუძლებელია.
  • ანგარიში „ფინანსური მაჩვენებლები“. აქ მოხსენების წყაროს მონაცემები მიიღება ცხრილის სახით, რომელიც შემდეგ გამოიყენება ანგარიშის შესაქმნელად. ამ ვარიანტის უპირატესობები: ანგარიშის გამოტანის უფასო ფორმა, მათ შორის. გრაფიკების და დიაგრამების სახით; შესაძლებელია სელექციების დაყენება და დახარისხება.
  • მობილური აპლიკაციის შაბლონის შექმნა 1C-ში მობილური აპლიკაციის შემუშავება იწყება 1C-ში, რაც გასაკვირი არ არის. აქ თქვენ განსაზღვრავთ მეტამონაცემების შემადგენლობას, აკონფიგურირებთ გაცვლის სქემას და აღადგენთ თქვენი მომავალი მობილური აპლიკაციის შაბლონს.

    შექმენით ახალი ელემენტი „მობილური აპლიკაციების“ დირექტორიაში სახელწოდებით „ანგარიში მენეჯერთან“ და იდენტიფიკატორი SAMPLE_REPORT_HEAD.

    აირჩიეთ "გარე მონაცემები" ჯგუფი "მეტამონაცემების" სიაში და დააჭირეთ ღილაკს "დამატება" ხელსაწყოთა პანელზე. შეავსეთ ახალი ცხრილის პარამეტრები, როგორც ეს ნაჩვენებია ფიგურაში:

    „ინდიკატორი“ - ანგარიშის ინდიკატორის ტესტის წარმოდგენა, ხაზი (250)
    "მნიშვნელობა" - ინდიკატორის რიცხვითი მნიშვნელობა, ნომერი (15.2)
    სვეტების სახელები და თავად ცხრილი აქ, როგორც წესი, მითითებულია რუსულ ენაზე, ისინი გამოყენებული იქნება ცხრილის მონაცემებით ჩაშენებული 1C ენის გამოყენებით. დააჭირეთ OK, ცხრილი დაემატება მეტამონაცემების ხეს, მობილური აპლიკაციისთვის სახელები ავტომატურად ითარგმნება ლათინურად.

    ამრიგად, ჩვენ მოვამზადეთ ფასეულობების ცხრილის სტრუქტურა (1C თვალსაზრისით), რომელშიც გადავიტანთ მონაცემებს "ფინანსური ინდიკატორების" ანგარიშისთვის. მეორე ანგარიშისთვის „საქონელი საწყობებში“, მონაცემები გადაიცემა გარე ფაილის სახით.

    "გაცვლის სქემის" ჩანართზე, შეამოწმეთ, რომ დროშა "ატვირთვა" არის მონიშნული. დროშა „ჩატვირთვა“ არ არის მნიშვნელოვანი, რადგან ჩვენ არ ვაპირებთ ამ ცხრილში მიღებული ცვლილებების დამუშავებას მობილური აპლიკაციიდან 1C-ში.

    შეინახეთ ცვლილებები. დააწკაპუნეთ ღილაკზე „მობილური აპლიკაციის შაბლონი“ ხელსაწყოთა ზოლზე, დააყენეთ თქვენი მობილური აპლიკაციის პარამეტრები

    „თარგების დირექტორია“ - გზა იმ დირექტორიაში, რომელშიც შეინახება გენერირებული მობილური აპლიკაციის შაბლონის ფაილები.

    "ძირითადი" ჩანართზე მიუთითეთ პაკეტის სახელი, ეს უნდა იყოს უნიკალური იდენტიფიკატორი. თუ თქვენ გაქვთ ვებსაიტი, გამოიყენეთ იგი პრეფიქსის შესაქმნელად. ამ მაგალითში მე დავაზუსტე ru.profi1c.samples.report.head

    „ვებ სერვისის“ ჩანართზე, IP მისამართი ნაგულისხმევად არის 10.0.2.2, ეს არის თქვენი კომპიუტერის მისამართი, როცა წვდებით Android-ის ემულატორიდან. „ვებ სერვისის სახელი“ და „აპლიკაციის ქვედირექტორია“ ველებში შეიყვანეთ მონაცემები, რომლებიც მითითებული იყო ვებ სერვისის გამოქვეყნებისას.

    გთხოვთ გაითვალისწინოთ, რომ 1C 8.2-ისთვის, დიდი ალბათობით, გექნებათ აპლიკაციის ქვედირექტორია დამატებითი /ws ქვედირექტორიით, ანუ demoFba/ws, იხილეთ მეტი დეტალებისთვის.
    დააწკაპუნეთ შექმნაზე, შეიქმნება Android პროექტის შაბლონი.

    წყაროს მონაცემების მომზადება ანგარიშებისთვის 1C-ში გახსენით fba Event Subscription მოდული 1C კონფიგურატორში და დაამატეთ შემდეგი კოდი გარე ცხრილის გაგზავნამდე პროცედურას:

    If AbbrLP(MobileApp.Code) = "SAMPLE_REPORT_HEAD" მაშინ If TableName = "შეატყობინეთ მენეჯერს" მაშინ // მოხსენების ფიქტიური მონაცემები ListTemp = fbaTotal.FromLineWithSeparators("ნაღდი ფული, გადასახდელი ანგარიშები, დებიტორული ანგარიშების მთლიანი დებიტორული დავალიანება, საქონლის ბალანსის მოცულობა, გაყიდვების"); RNG = NewRandomNumberGenerator(123456789); თითოეული ListElement From ListTemp Cycle NewRow = ExternalTable.Add(); NewRow.Indicator = ListElement.Value; NewRow.Value = RNG.RandomNumber(0.999999) + Sin(RNG.RandomNumber(0.999)); საბოლოო ციკლი; დაასრულე თუ; Დაასრულე თუ
    ამ მაგალითში ცხრილი ივსება ფიქტიური მონაცემებით რეალურ აპლიკაციაში, აქ შეგიძლიათ გადაიტანოთ მოხსენების ინდიკატორების თვითნებური რაოდენობა.
    ჩვენ დავახარისხეთ მონაცემები პირველი მოხსენებისთვის, რჩება მხოლოდ მისი მომზადება მეორესთვის. იმავე fbaEvent გამოწერის მოდულში, დაამატეთ შემდეგი კოდი გაგზავნის ორობითი მონაცემების მომზადებაში:

    DD = განუსაზღვრელი; თუ AbbrLP(MobileApp.Code) = "SAMPLE_REPORT_HEAD" მაშინ If Identifier = "REPORT_PRODUCTS_IN_STOK" მაშინ FileName = GetTemporaryFileName("html"); ანგარიში = Reports.ProductsInWarehouses.Create(); თუ Report.SaveReportInHTML(FileName) მაშინ DD = New BinaryData(FileName); DeleteFiles (ფაილის სახელი); დაასრულე თუ;
    დაასრულე თუ; დაასრულე თუ; დაბრუნება DD;

    როგორ იქმნება html ფაილი ამ შემთხვევაში ჩვენთვის არ არის მნიშვნელოვანი. თქვენ შეგიძლიათ გამოიყენოთ სტანდარტული 1C მექანიზმი ელცხრილის დოკუმენტის HTML სახით შესანახად ან HTML ხელით გენერირება. თქვენ შეგიძლიათ ნახოთ შედეგის მაგალითი „FBA დემო“ კონფიგურაციაში, „პროდუქტები საწყობებში“ ანგარიშში.

    ეს ყველაფერი 1C-ზე, მოდით გადავიდეთ მობილური აპლიკაციის შემუშავებაზე Android-ზე.

    Android აპლიკაციის დაპროექტება ჩვენ იმპორტირებს Android პროექტის შაბლონს, რომელიც შექმნილია 1C-ში Eclipse სამუშაო სივრცეში.

    გაუშვით Eclipse და შემოიტანეთ პროექტი: File > Import... Android ჯგუფში აირჩიეთ პუნქტი „Exists Android Code Into Workspace“, დააწკაპუნეთ Next, მიუთითეთ გზა Android-ის პროექტის შაბლონის დირექტორიაში და დააწკაპუნეთ Finish, ახალი პროექტი იქნება. დაემატა სამუშაო სივრცეს. თუ რაიმე სირთულე წარმოიქმნება, ნახეთ, პროცესი აღწერილია სურათებში.

    1. შექმენით „ფინანსური მაჩვენებლების“ ანგარიში, რომლის მონაცემთა წყაროა 1C-დან მიღებული მნიშვნელობების ცხრილი. ამისათვის დაამატეთ ახალი კლასი ToChiefReport.java, აქ არის სრული წყარო კოდი:

    ჩვენება

    /** * ანგარიშის აგების მაგალითი ადგილობრივი sqlite მონაცემთა ბაზის მონაცემების გამოყენებით. * მონაცემთა წყარო არის გარე ცხრილი „ანგარიში მენეჯერთან“ * */ საჯარო კლასი ToChiefReport აფართოებს SimpleMapHtmlReport ( @Override public int getResIdIcon() ( return R.drawable.report_01; ) @Override public int getResIdTitle() ( დაბრუნება R. string.report_name_to_chief; ) super.build (კონტექსტი, builderResult ) private void makeReport(Context context) აგდებს SQLException ( DBHelper helper = new DBHelper(context); // Header of report and table setHeader2 ("Financial indicators");setTableHeader("Name"); ", "თანხა, რუბლამდე."); // ცხრილის რიგები იქნება დამატებული თანმიმდევრობით Map mapData = new LinkedHashMap(); // მონაცემების შერჩევა ადგილობრივი sqlite მონაცემთა ბაზიდან, გარე ცხრილიდან // "მოხსენება მენეჯერთან ” ExTableRaportRukovoditelyuDao dao = დამხმარე .getDao(ExTableRaportRukovoditelyu.class); სიის რიგები = dao.select(); for (ExTableRaportRukovoditelyu row: rows) ( mapData.put(row.pokazatel, row.znachenie); ) setTableData(mapData); ))
    კოდექსზე კომენტარს გავაკეთებ. აბსტრაქტული კლასი SimpleMapHtmlReport, საიდანაც იგი მემკვიდრეობით არის მიღებული, განკუთვნილია მარტივი HTML ანგარიშის შესაქმნელად ორი სვეტის ცხრილით.
    პირველი 2 მეთოდი getResIdIcon() და getResIdTitle() აბრუნებს ჩვენი მოხსენების ხატულას და სათაურს სიაში გამოსატანად. „build“ მოვლენის დამმუშავებელში ეწოდება makeReport მეთოდს, რომელიც არის ანგარიშის შედგენის ჩვენი განხორციელება.
    ანგარიშის შექმნისას ჯერ მოხსენება და ცხრილის სათაური დაყენებულია, შემდეგ ლოკალური sqlite ცხრილიდან ყველა ჩანაწერი იკითხება ანგარიშის ცხრილის რიგებად. და ბოლოს, setTableData() მეთოდში დავაყენეთ მონაცემები ანგარიშის ცხრილისთვის. აუ რა ძნელია აშკარა რაღაცეებზე კომენტარის გაკეთება.


    2.შექმენით მეორე ანგარიში, აქ ყველაფერი კიდევ უფრო მარტივია:

    ჩვენება

    /** * შედგენილი ანგარიშის მაგალითი, უბრალოდ გამოაქვს Html ფაილი. ამ მაგალითში * მონაცემთა ფაილი შეიქმნა 1C-ში და გადაეცა მობილურ კლიენტს გაცვლის დროს * */ public class ProductsInStokReport აფართოებს SimpleCompiledHtmlReport ( // სახელი, რომლითაც ინახება მიღებული ფაილი 1C-დან (იხილეთ გაცვლის პროცედურა // MyExchangeTask ) საჯარო სტატიკური საბოლოო სტრიქონი REPORT_FILE_NAME = "products_in_stok.html" საჯარო ProductsInStokReport(ფაილი ფაილი) ( super(ფაილი); ) @Override public int getResIdIcon() ( return R.drawable.report_02; დაბრუნება R.string.report_name_products_in_stok;


    3. გავაფართოვოთ წინასწარ განსაზღვრული გაცვლის პროცედურა 1C სერვერთან, ე.ი. მოდით დავამატოთ მას კიდევ ერთი ნაბიჯი - მონაცემების მოპოვება ჩვენი მეორე ანგარიშისთვის კომპილირებული ფაილის სახით. მოდით დავამატოთ MyExchangeTask კლასი, ExchangeTask-ის შთამომავალი:

    ჩვენება

    /** * სტანდარტული გაცვლის პროცედურა დამატებულია საბაჟო წესებით. * დამატებით მიიღება ერთი კომპილირებული ფაილი - ანგარიში. * */ საჯარო კლასი MyExchangeTask აფართოებს ExchangeTask-ს ( // მოხსენების ID, როგორც ეს განსაზღვრულია 1C კერძო სტატიკური საბოლოო სტრიქონში ID_REPORT_PRODUCTS_IN_STOK = "REPORT_PRODUCTS_IN_STOK"; საჯარო MyExchangeTask(ExchangeVariant exchangeVariant, WSHelperd geVariant, Helper, dbOpenHelper ) @Override დაცული ლოგიკური doExecute() აყენებს გამონაკლისს ( // შეასრულეთ გაცვლის ნაბიჯები წინასწარ განსაზღვრული წესების მიხედვით, ლოგიკური წარმატება = super.doExecute(); if (წარმატება) ( // მიიღე თვითნებური მონაცემები - ჩვენი მე-2 ანგარიში onStepInfo ("ანგარიშების მიღება... "); სტრიქონი fPath = appSettings.getCacheDir().getAbsolutePath() + "/" + ProductsInStokReport.REPORT_FILE_NAME; ფაილი f = wsHelper.getLargeData(ID_REPORT_PRODUCTS_IN_STOK, null, "", (fPath!= = წარმატება); ) დაბრუნების წარმატება ) )
    ანგარიშის მონაცემების მისაღებად გამოიყენება getLargeData ვებ სერვისის მეთოდი, რომელიც წარმატების შემთხვევაში ინახავს შედეგს ფაილში მითითებულ გზაზე. ყურადღება მიაქციეთ ID_REPORT_PRODUCTS_IN_STOK იდენტიფიკატორს, ის უნდა იყოს იგივე, რაც 1C-ში, Prepare Binary Data for Send მეთოდში.


    4. აჩვენეთ ანგარიშების სია ძირითად ფორმაზე. გახსენით res\activity_main.xml ფაილი და დაამატეთ listView, რომელიც აჩვენებს ანგარიშების სიას:

    MainActtiviy.java-ში ვამატებთ:

    ა) ლოკალური ცვლადი სიისთვის
    პირადი ListView სია;
    ბ) ინიციალიზაციის მეთოდი
    private void init() (list = (ListView) findViewById(android.R.id.list); // შექმენით ადაპტერი ანგარიშების სიის საჩვენებლად ReportListAdapter ადაპტერი = new ReportListAdapter(this,createReportList()); list.setAdapter( ადაპტერი list.setOnItemClickListener(new OnItemClickListener() ( @Override public void onItemClick(AdapterView prind, View view, int position, long id) ( // აჩვენე მოხსენება დიალოგში, როცა დააწკაპუნებ მასზე IReport report = (IReport) list.getItemAtPosition(პოზიცია) report.onShow(MainActivity.this);
    და გამოძახება onCreate()-ში ფორმის განლაგების დაყენების შემდეგ
    setContentView(R.layout.activity_main); მასში();
    გ) ანგარიშების სიის ინიციალიზაციის მეთოდი
    /* * მოამზადეთ ანგარიშების სია */ private List createReportList() ( List lst = new ArrayList(); // შექმენით პირველი ანგარიში, დროებითი დირექტორია, სადაც ფაილი ინახება, აღებულია // IReport პარამეტრების ანგარიში = new ProductsInStokReport (new File(getAppSettings() .getCacheDir(), ProductsInStokReport.REPORT_FILE_NAME) lst.add(report // შექმენით და დაამატეთ სხვა ანგარიშები სიაში lst.add(new ToChiefReport());
    დ) ბირჟის დაწყების პროცედურა თქვენი წესების მიხედვით
    /* * გაცვლის დაწყება ჩემი წესების მიხედვით. გთხოვთ გაითვალისწინოთ, რომ განრიგში * (თუ დაინსტალირებულია) გაცვლა დარჩა სტანდარტული წესების მიხედვით */ private void startExchangeMyRules(ExchangeVariant ვარიანტი, ლოგიკური გაუქმება) (// დამხმარე ვებ სერვისის მეთოდების გამოძახებისთვის WSHelper wsHelper = ახალი WSHelper(getExchangeSettings() MyExchangeTask ამოცანა = ახალი MyExchangeTask(ვარიაცია, wsHelper, startExchange(ამოცანა, გაუქმება)
    და შეცვალეთ ზარი გაცვლის პროცედურაზე startExchange(ExchangeVariant.FULL, true) onOptionsItemSelected დამმუშავებელში startExchangeMyRules (ExchangeVariant.FULL, true).

    აპლიკაცია მზად არის, ავტორიზაციის ფორმები და პროგრამის პარამეტრები შეიქმნება ავტომატურად, ჩვენ მათ არ შევცვლით.
    მოდით შევამოწმოთ ის ემულატორზე. თუ არსად შეცდომა არ დაუშვით, აპლიკაცია ამოქმედდება. თუმცა, ავტორიზაციის ფანჯრის ნაცვლად, პარამეტრების ფანჯარა დაუყოვნებლივ გამოჩნდება, რადგან ავტორიზაციის მონაცემები (მომხმარებლის სახელი და პაროლი) არ არის მითითებული.

    გთხოვთ, შეიყვანოთ თქვენი მომხმარებლის სახელი: ivanov
    და პაროლი: 123456

    გაუშვით 1C მონაცემთა ბაზა და გახსენით "მობილური თანამშრომლების" დირექტორია. როგორც მობილური მოწყობილობა, მიუთითეთ წინასწარ განსაზღვრული ელემენტი "მოწყობილობის ემულატორი", დაამატეთ "მოხსენება მენეჯერისთვის" აპლიკაცია "მობილური აპლიკაციების" ცხრილის განყოფილებაში და დააყენეთ იდენტური მომხმარებლის სახელი და პაროლი.

    დაიწყეთ გაცვლის პროცედურა ემულატორზე (ღილაკი "ზემო" ისრით მარჯვენა პანელზე)

    გაცვლის შედეგი ნაჩვენებია შეტყობინებაში:

    დააწკაპუნეთ მასზე თქვენი განაცხადის გასაშვებად (ან შეცდომის დეტალების სანახავად, თუ გაცვლა წარუმატებელი იყო).

    მოდით შევამოწმოთ რა მოხდა. დააწკაპუნეთ ანგარიშზე სიაში:

    ჩვენება


    დიდი! ნაჩვენებია მოხსენებები, შეგიძლიათ შეცვალოთ მასშტაბი ღილაკის ან ჟესტების გამოყენებით.


    აპლიკაცია მზად არის, აღმოჩნდა საკმაოდ ფუნქციონალური და ადვილად გაფართოებადი. სხვა მოხსენებების დამატება არ იქნება რთული.
    თქვენ შეგიძლიათ გადაიტანოთ დოკუმენტები სხვადასხვა ფორმატში, როგორიცაა *.doc ან *.pdf და გამოიყენოთ გარე აპლიკაციები მათ სანახავად. იხილეთ წყაროს კოდის მაგალითი, არის კიდევ 3 მოხსენება:
    • დიაგრამა Google Chart Tools-ის გამოყენებით
    • ნაკვეთი jQuery Plot მოდულის გამოყენებით
    • PDF ანგარიშის გამოტანა გარე აპლიკაციით (PdfReport.java)
    მე არ აღვწერ მას დეტალურად და ამიტომ სტატია გრძელი აღმოჩნდა. თუ თქვენ გაქვთ რაიმე შეკითხვები, მე მზად ვარ გიპასუხოთ კომენტარებში. აქ არის გამომავალი:

    ჩვენება


    შეგიძლიათ ჩამოტვირთოთ სრული მაგალითის კოდი https://xp-dev.com/svn/fba_toolkit_public/samples/fbaSample4ReportHead/

    HTML-ის გამოყენება მოხსენებების შესაქმნელად საშუალებას გაძლევთ შექმნათ მრავალფეროვანი მოხსენებები, მათ შორის. და ინტერაქტიული ელემენტებით. მაგალითად, ჩვენს ერთ-ერთ პროექტში გამოიყენება შემდეგი ანგარიში:

    ჩვენება

    • "ვალი" ველისთვის გამოიყენება პირობითი ფერის სქემა ოდენობის მიხედვით;
    • გადაუხდელი ინვოისების სრული სია იხსნება მხოლოდ „ყველა“ მარკერის ნაგულისხმევად დაჭერით, ნაჩვენებია მხოლოდ ბოლო 4.

    და, რა თქმა უნდა, არაფრით არ შემოიფარგლებით, შეგიძლიათ გამოიყენოთ მესამე მხარის ბიბლიოთეკები მოხსენებებისა და სქემების საჩვენებლად, მაგალითად achartengine, ან შექმნათ თქვენი საკუთარი გრაფიკი/დიაგრამა (მაგალითები უამრავია, მათ შორის Android SDK-ში).

    სულ ეს არის, სხვა მაგალითები შეგიძლიათ იპოვოთ ვებგვერდზე http://profi1c.ru.
    უახლოეს მომავალში იგეგმება FBA ბიბლიოთეკის ინტერაქტიულ ელემენტებზე და ადაპტერებზე გაკვეთილების დამატება, ასევე ოფლაინ mapsforge რუკებთან მუშაობის ჩვენება.

    Fly in ointment FBA Toolkit პროდუქტის დისტრიბუცია იგეგმება კომერციულ საფუძველზე, ახლა ის არის „დემო ვერსიის“ სტატუსში. თქვენ თავისუფლად შეგიძლიათ გამოიყენოთ იგი ტესტირებისთვის და სწავლისთვის.
    შეზღუდვები:
    • პროგრამა წყვეტს მუშაობას დემო ლიცენზიის ვადის ამოწურვის შემდეგ, ე.ი. 31/12/13 შემდეგ;
    • დაწყებისას გამოჩნდება შეტყობინება:

    უახლოეს მომავალში (არაუმეტეს ერთი თვისა) იქნება კომერციული ვერსია ღირებულებისა და ლიცენზირების პროცედურის შესახებ;

    გმადლობთ, რომ ბოლომდე წაიკითხეთ. მე მზად ვარ ვუპასუხო თქვენს კითხვებს კომენტარებში როგორც 1C, ასევე Android-თან დაკავშირებით.

    ტეგები: ტეგების დამატება

    მობილური აპლიკაციის „1C: ჩვენი კომპანიის მართვა“ (შემოკლებით UNF) მაგალითის გამოყენებით, მსურს ვაჩვენო მობილური ბიზნეს აპლიკაციის ევოლუცია მისი წარმოშობიდან და პირველი ვერსიის გამოშვება დღემდე. აპლიკაციას ამჟამად აქვს 220000-ზე მეტი ჩამოტვირთვა; აპლიკაცია უფასოა, მაგრამ მას აქვს ფასიანი ვარიანტები (განხორციელებული აპს-შიდა შესყიდვებით).


    მობილური UNF-ის პირველი ვერსია გაკეთდა 1C:Enterprise მობილური პლატფორმის ერთ-ერთ პირველ ვერსიაზე 2012 წელს. იმ დროს უკვე არსებობდა კლიენტ-სერვერის კონფიგურაცია "1C: მცირე კომპანიის მენეჯმენტი" (მაშინ ასე ერქვა), პროგრამა მცირე კომპანიის საქმიანობის ავტომატიზაციისთვის - გაყიდვები, შესყიდვები, მომხმარებელთა და მომწოდებლების ბაზა, საწყობი. მენეჯმენტი, წარმოება და ა.შ.

    როგორც მობილური აპლიკაციების უმეტესობა, რომლებიც დაწერილია მრავალპლატფორმულ მობილურ პლატფორმაზე 1C:Enterprise, მობილური UNF ხელმისაწვდომია iOS, Android და Windows-ზე.

    დავალება შემდეგი იყო: შექმენით მობილური აპლიკაცია, რომელიც მხარს უჭერს "დიდი" UNF-ის სამუშაო სცენარების ნაწილს. აპლიკაციას უნდა შეეძლოს როგორც ავტონომიურად მუშაობა, ასევე მონაცემთა სინქრონიზაცია "დიდი" UNF-თან (შემდეგში დავწერ სიტყვას "დიდი" UNF-ის კლიენტ-სერვერის ვერსიასთან მიმართებაში ციტატების გარეშე, რათა არ გადაიტვირთოს ტექსტი. ). დიდ CNF-თან მუშაობის შემთხვევაში, მხარდაჭერილი უნდა იყოს „მობილური“ თანამშრომლების სცენარები - გაყიდვების წარმომადგენელი, სერვისის ინჟინერი, გამყიდველი.

    პირველი ვერსია შეიქმნა 1 კაც-თვეში. მობილური აპლიკაციის შექმნისას, ზოგიერთი მეტამონაცემების ობიექტი (ცნობარი, დოკუმენტი) განხორციელდა დიდი UNF-ის ობიექტების საფუძველზე. მაგრამ ზოგიერთი ფუნქციონალი უნდა დაპროგრამებულიყო ნულიდან, მაგალითად, მონაცემთა გაცვლის პროცესი დიდ UNF-თან. მართალია, მონაცემთა გაცვლასთან დაკავშირებით, ჩვენ რეალურად მოგვიწია მცირე პროგრამირების გაკეთება - გამოვიყენეთ სტანდარტული პლატფორმის მექანიზმები (კერძოდ, გაცვლის გეგმები), რაც მინიმუმამდე ამცირებს კოდირებას.

    მონაცემთა სინქრონიზაციასთან მუშაობის გამარტივების გარდა, 1C პლატფორმა მნიშვნელოვნად უწყობს ხელს სრულფასოვანი მობილური აპლიკაციის აგების მუშაობას, დეველოპერს აძლევს ისეთი ინტერფეისის კომპონენტებს, როგორიცაა სიები (ტაბულური და იერარქიული) მათი ძიების შესაძლებლობით, შეყვანის ველებით. ძიებით, ანგარიშების ცხრილებით, სქემების ფართო სპექტრით, WiFi და Bluetooth პრინტერებზე ბეჭდვის შესაძლებლობით და ა.შ.

    მობილური ვერსიის მახასიათებლები მობილური აპლიკაციის ფუნქციონირების არჩევის ორი ძირითადი სტრატეგია არსებობს. პირველი არის "ერთი აპლიკაცია - ერთი ფუნქცია". მაგალითად, საწყობში საქონლის მიღების მობილური აპლიკაცია, რომელსაც მხოლოდ ჩაშენებული კამერით შეუძლია პროდუქტის შტრიხკოდის სკანირება და მიღებული პროდუქტის შესახებ ინფორმაციის სერვერზე გაგზავნა. მეორე სტრატეგია არის მობილური აპლიკაციის შექმნა ფართო „ყველა ერთში“ ფუნქციონირებით. ორივე მიდგომა მოქმედებს; მობილური UNF-ის დაწერისას, ჩვენ ავირჩიეთ მეორე მიდგომა - ჩვენი აპლიკაცია მოიცავს ბევრ ამოცანას თავის საგანში და შეუძლია იმუშაოს სრულიად ავტონომიურად, ემსახურება მცირე ორგანიზაციის საჭიროებებს. ამ მიდგომის კიდევ ერთი უპირატესობა ის არის, რომ მომხმარებელს შეუძლია იმუშაოს რამდენიმე ურთიერთდაკავშირებულ ფუნქციასთან ერთი აპლიკაციიდან.

    მობილური UNF ფართოდ იყენებს მობილური მოწყობილობის ფუნქციონირებას, კერძოდ:

    • მოწყობილობის ჩაშენებული კამერა შეიძლება გამოყენებულ იქნას პროდუქტის გადასაღებად პროდუქტის ბარათის შევსებისას, შტრიხკოდების და QR კოდების წასაკითხად.
    • გადახდის ინვოისი შეიძლება კლიენტს გაუგზავნოს ელექტრონული ფოსტით ან SMS-ით
    • კონტრაგენტის არჩევა შესაძლებელია მობილური მოწყობილობის მისამართების წიგნიდან
    • თუ კონტრაგენტს აქვს ტელეფონის ნომერი, შეგიძლიათ დარეკოთ კონტრაგენტთან ან გაგზავნოთ SMS ერთი შეხებით, გაგზავნეთ წერილი, თუ მისამართი მითითებულია, აჩვენეთ იგი რუკაზე;
    • თქვენ შეგიძლიათ დაბეჭდოთ დოკუმენტები პრინტერებზე WiFi-სა და Bluetooth-ის საშუალებით
    არსებობს მობილური UNF მონაცემთა ბაზის სარეზერვო და აღდგენა Yandex.Disk-ზე და მონაცემთა ბაზის გაგზავნა ფოსტით.

    მობილური UNF-ის კონფიგურაცია საკმაოდ სპარტანულად გამოიყურება (იხილეთ ეკრანის სურათი ქვემოთ):

    • 8 საცნობარო წიგნი (დიდი UNF-ში არის 273 საცნობარო წიგნი)
    • 7 დოკუმენტი (დიდი UNF - 125)
    • 3 დოკუმენტური ჟურნალი (დიდი UNF - 24)
    • 3 საინფორმაციო რეესტრი (დიდ UNF-ში – 357)
    • 4 დაგროვების რეგისტრი (დიდ UNF-ში - 64)

    მობილური UNF-ის ძირითადი ობიექტები

    მაგრამ, მიუხედავად ასეთი მცირე რაოდენობის აპლიკაციის ობიექტებისა, პროდუქტი საკმაოდ ფუნქციონალური აღმოჩნდა.

    მობილური UNF-ის საინტერესო მახასიათებელია ის, რომ მას ხშირად იწყებენ ადამიანები, რომლებსაც აქამდე არასდროს სმენიათ 1C-ის შესახებ (დიახ, ასეთია ჩვენს ქვეყანაში), ვისაც სჭირდება მობილური აპლიკაცია მცირე ბიზნესის ჩანაწერების შესანახად ( მაგალითად, სახლის ხელნაკეთობა). მათ უბრალოდ იპოვეს ის Google Play-ში ან AppStore-ში ძიებით, წაიკითხეს მიმოხილვები და დაიწყეს მუშაობა.

    ოფლაინ ოპერაცია ეს სამუშაო სცენარი განკუთვნილია ძალიან მცირე ორგანიზაციებისთვის, როდესაც ყველა აღრიცხვა ხორციელდება ექსკლუზიურად მობილურ მოწყობილობაზე. ეს შეიძლება იყოს, მაგალითად, "სახლის" ბიზნესი - სახლში სამკაულების დამზადება და მისი გაყიდვა VKontakte გვერდზე. ან შესაძლოა პატარა მაღაზიაც კი - მე პირადად ვნახე შემთხვევა, როდესაც სათამაშოების მაღაზია, რომელიც სპეციალიზირებულია Lego კონსტრუქტორების გაყიდვაში, ინახავდა ჩანაწერებს ექსკლუზიურად UNF-ის მობილურ ვერსიაზე. იმის გათვალისწინებით, რომ მობილური UNF-ს შეუძლია დაბეჭდოს WiFi და Bluetooth პრინტერებზე, მისი გამოყენება შესაძლებელია საკმაოდ დიდი რაოდენობის პრობლემების გადასაჭრელად. მობილური UNF მხარს უჭერს შეკვეთების დამუშავებას, ინვოისების და ინვოისების შეყვანას, თანხის ქვითრებსა და ხარჯებს. მასში ძირითადად ხორციელდებოდა შეკვეთებით (შეკვეთების მიღება და შესრულება) და მასთან დაკავშირებული საქმიანობები (კონტრაგეტორების, საქონლისა და მომსახურების დირექტორიების შენახვა და ა.შ.).

    საქონლისა და მომსახურების, კონტრაქტორებისა და შეკვეთების დირექტორიები სინქრონიზებული იყო დიდ UNF-თან.


    მონაცემთა გაცვლა მობილურსა და დიდ UNF-ს შორის პირველ ვერსიებში

    მობილური მოწყობილობებიდან შემოსული შეკვეთები მთავრდებოდა დიდ UNF-ში და სინქრონიზაციისას ისინი მთავრდებოდა შეკვეთებზე პასუხისმგებელი პირების მობილურ მოწყობილობებზე. დოკუმენტები, როგორიცაა ფულადი ქვითრები, საქონლის გაყიდვები და ა.შ., შეტანილი მობილურ მოწყობილობებზე, მიდიოდა დიდ UNF-ში, მაგრამ არ იყო სინქრონიზებული მობილურ მოწყობილობებს შორის. სინქრონიზაციის რეჟიმში მობილურ აპლიკაციაში ყველა სამუშაო განხორციელდა ძირითადად შეკვეთების ირგვლივ - მათი სრული აღრიცხვა არ განხორციელებულა მობილურ მოწყობილობაზე, ამისათვის საჭირო იყო დიდი CNF-ის გამოყენება;

    ეს ასე იყო პირველ ვერსიებში, მაგრამ მოგვიანებით ჩვენ შევცვალეთ სიტუაცია და გავაფართოვეთ მობილური CNF-ის გამოყენების სცენარების სია, რათა მომხმარებელთათვის უფრო მოსახერხებელი ყოფილიყო მასთან მუშაობა.

    ცოტა მონაცემთა სინქრონიზაციის შესახებ მონაცემთა გაცვლა მობილურ და დიდ UNF-ს შორის ხდება ვებ სერვისების მეშვეობით; მობილური UNF უწოდებს ვებ სერვისებს, რომლებიც განლაგებულია UNF-ის დიდ მხარეს. მონაცემთა სტრუქტურები დიდ და მობილურ CNF-ში განსხვავებულია; არქიტექტურის შემუშავებისას განვიხილეთ მონაცემთა გაცვლის 2 ვარიანტი:
  • შექმენით მონაცემთა სტრუქტურა დიდ CNF-ში, რომელიც დუბლირებს მობილური CNF-ის მონაცემთა სტრუქტურას და გაცვალეთ მონაცემები მობილური CNF-ით ერთი-ერთზე. დიდი UNF-ში მონაცემების შეცვლისას, თქვენ უნდა გადაიტანოთ ახალი/შეცვლილი მონაცემები ამ დუბლიკატულ სტრუქტურაში და მობილურ UNF-თან მონაცემების გაცვლის შემდეგ, გადაიყვანოთ მობილური მოწყობილობიდან მიღებული და დუბლიკატში მდებარე მონაცემები დიდ UNF-ში. ფორმატი.
  • გაცვალეთ მონაცემები უშუალოდ დიდი UNF-ის სტრუქტურებთან, გადააკეთეთ მონაცემები „დაფრენისას“ გაცვლის წესების მიხედვით.
  • ჩვენ გადავწყვიტეთ მეორე ვარიანტით წავსულიყავით. პირველი ვარიანტი, მიუხედავად იმისა, რომ ჰპირდებოდა გარკვეულ უპირატესობებს, რომლებიც დაკავშირებულია თავად მონაცემთა გაცვლის სიმარტივასთან, კარგად ვერ გაუმკლავდა სიტუაციას, როდესაც მონაცემთა სტრუქტურა შეიცვალა (გაფართოვდა) მობილური UNF-ის ახალ ვერსიაში; იმისათვის, რომ მონაცემთა ერთი ერთზე გაცვლა განაგრძოს მუშაობა, საჭირო იქნება სერვერის განახლება, დიდი UNF. რაც, მრავალი მიზეზის გამო, მიუღებელი იყო.

    პლატფორმაში დანერგილი მონაცემთა გაცვლის მექანიზმები ახორციელებს მონაცემთა სინქრონიზაციისთვის პაკეტების შექმნის სამუშაოს უმეტეს ნაწილს, რაც საშუალებას გაძლევთ შეამციროთ კოდირება მინიმუმამდე. გაცვლის პროცესში გამოიყენება 1C:Enterprise პლატფორმის სტანდარტული მექანიზმი - მონაცემთა გაცვლის მექანიზმი; თითოეული მობილური UNF-ისთვის იქმნება მონაცემთა გაცვლის კვანძი დიდ და მობილურ UNF-ში, გამოიყენება ცვლილებების რეგისტრაციის სერვისი ბოლო სინქრონიზაციის შემდეგ შეცვლილი მონაცემების თვალყურის დევნებისთვის და ა.შ.

    მობილური აპლიკაცია იწყებს მონაცემთა გაცვლას, პლატფორმის მექანიზმების გამოყენებით, ქმნის გაცვლის პაკეტს (რომელიც შეიცავს მობილური აპლიკაციის იდენტიფიკატორს და მონაცემებს, რომლებიც განახლებულია მობილური UNF-ზე ბოლო სინქრონიზაციის შემდეგ) და აგზავნის მას დიდ UNF-ში. საწყისი პაკეტის ინფორმაციის საფუძველზე, დიდი CNF ამზადებს მობილური CNF-სთვის დიდ CNF-ში შეცვლილ მონაცემებს ბოლო სინქრონიზაციის შემდეგ და ათავსებს მათ პაკეტებში. პაკეტები XDTO ფორმატში არის 1C მეტამონაცემების ობიექტები XML-ში; თითოეული პაკეტის ზომა არ აღემატება 500 ობიექტს.

    მობილური UNF აგროვებს ამ მონაცემთა პაკეტს პაკეტის მიხედვით. ბოლო პაკეტის ჩამოტვირთვის შემდეგ მობილური UNF იწყებს მიღებული მონაცემების დამუშავებას - დოკუმენტების დამუშავება, ჩანაწერების დირექტორიები და ა.შ. კავშირის გაფუჭების შემთხვევაში, პაკეტების განახლება მხარდაჭერილია; ჩვენ თვითონ დავწერეთ CNF-ის განახლების მექანიზმი (ის არ არის პლატფორმაში), მაგრამ რადგან მობილური CNF მოწოდებულია წყაროს კოდით, დეველოპერებს შეუძლიათ დაათვალიერონ მექანიზმის განხორციელება და სესხება მათი აპლიკაციებისთვის.

    მობილური CNF-ის თავდაპირველი სინქრონიზაციისას დიდი CNF-ით, თქვენ არ შეგიძლიათ იმუშაოთ მობილურ CNF-ში - ჩნდება მოდალური ფანჯარა, რომელიც აჩვენებს პროცესის მიმდინარეობას. ყველა შემდგომი სინქრონიზაცია არის ფონური და არ ბლოკავს მობილური UNF-ის მუშაობას.

    მობილურ და დიდ UNF-ს შორის გაცვლილი ობიექტების სრული სია:

    • დირექტორიები:
      • ნომენკლატურა
      • კონტრაგენტები
      • მომხმარებელთა სია
    • დოკუმენტაცია:
      • მომხმარებლის შეკვეთები
      • ქვითარი სალაროში
      • ხარჯი სალაროდან
      • შესყიდვის ინვოისი
      • Გაყიდვების ინვოისი
      • წარმოება
    • რეგისტრები (მაგრამ არა ყველა ფასი, არამედ მხოლოდ ძირითადი):
      • ფასები მომწოდებლები
      • პროდუქციის ფასები
    • ინფორმაცია ორგანიზაციის შესახებ:
      • სახელი
      • საგადასახადო ინფორმაცია
    დიდ UNF-ში პროდუქტებს აქვთ სურათები - რეალური პროდუქტების სურათები. ტრაფიკის მინიმიზაციის მიზნით, ჩვენ არ ვტვირთავთ სურათებს მობილურ UNF-ში, ისინი იტვირთება მოთხოვნით - მაგალითად, როდესაც ვხსნით პროდუქტის ბარათს მობილურ UNF-ში.


    პროდუქტის ბარათი პროდუქტის გამოსახულებით

    აპლიკაციის ევოლუცია - გამოყენების შემთხვევების განვითარება ტიპიური სიტუაცია - ბიზნესი იზრდება და მობილური CNF-ის ფუნქციონირება ერთ მობილურ მოწყობილობაზე საკმარისი აღარ არის. კიდევ ერთი თანამშრომელი (ან თანამშრომლები) ჩნდება ბიზნესში და მათ ასევე სჭირდებათ შეკვეთებით მუშაობა.

    მობილური UNF-ის პირველ ვერსიებში მოძრავი სცენარი საკმაოდ მარტივი იყო - მობილურ UNF-ში შეყვანილი მონაცემები კოპირებული იყო დიდი UNF-ის მონაცემთა ბაზაში და მომხმარებელს ახლა კომპიუტერზე უნდა შეენახა ჩანაწერები. ამ შემთხვევაში მობილური UNF იმუშავებს შეკვეთებთან მუშაობის რეჟიმში და აღარ იქნება შესაძლებელი ჩანაწერების შენახვა (როგორც მობილური UNF-ის დამოუკიდებელ ვერსიაზე).

    ეს, რა თქმა უნდა, მთლად მოსახერხებელი არ იყო საბოლოო მომხმარებლისთვის - ის უკვე მიჩვეული იყო მობილური მოწყობილობიდან ჩანაწერების შენახვას, მაგრამ აქ იძულებული გახდა კომპიუტერის კლავიატურასთან დამჯდარიყო. ყველა არ იქნება კმაყოფილი ამით.

    აქედან გამომდინარე, ჩვენ გავაფართოვეთ მობილური UNF-ის ფუნქციონირების სცენარების სია. ამაში დაგვეხმარა ჩვენი ღრუბლოვანი სერვისის http://1cfresh.com გაჩენა, რომელიც დაფუძნებულია ღრუბლოვან ტექნოლოგიაზე 1cFresh. ახლა შესაძლებელია დიდი CNF ღრუბელში განთავსება. ჩვენ აღვწერეთ მობილური აპლიკაციის გამოყენების სამი სცენარი, როდესაც მომხმარებლის ბიზნესი იზრდება:

  • საკმაოდ მცირე ბიზნესია. აღრიცხვა ხორციელდება ერთ მობილურ მოწყობილობაზე.
  • ბიზნესი იზრდება - გამოჩნდნენ თანამშრომლები. შეგიძლიათ დააინსტალიროთ მობილური UNF თანამშრომლების მობილურ მოწყობილობებზე. ამავდროულად, თქვენ უნდა შეძლოთ მონაცემთა გაცვლა მობილურ მოწყობილობებს შორის მონაცემთა სინქრონიზაციისთვის; ამისათვის ჩვენ გადავწყვიტეთ არ გამოვიყენოთ ფაილების გაცვლა, არამედ გამოვიყენოთ სინქრონიზაციისთვის (და ამავე დროს სარეზერვო ასლისთვის) http://1cfresh.com ღრუბელში მდებარე დიდი UNF-ის ვერსია. როდესაც ჩართავთ ამ სკრიპტს, http://1cfresh.com ღრუბელში იქმნება დიდი CNF-ის მაგალითი, რომლის მონაცემთა ბაზა გამოყენებული იქნება მობილური მოწყობილობებს შორის მონაცემების სინქრონიზაციისთვის. ამ სცენარში ერთი მობილური მოწყობილობის გამოყენება უფასოა, ყოველი დამატებითი მოწყობილობისთვის ჩვენ ვახდენთ 75 რუბლს/თვეში, ამ სცენარში შეგიძლიათ გამოიყენოთ არაუმეტეს სამი მოწყობილობისა. ამავდროულად, მობილური მოწყობილობების მომხმარებლებს შეიძლება დაეკისროს წინასწარ განსაზღვრული როლები - გაყიდვების წარმომადგენელი, სერვისის ინჟინერი, გამყიდველი (შესაძლებელია როლების დეტალური კონფიგურაციაც); შესაბამისად შეიზღუდება მობილური აპლიკაციის ფუნქციონირება. თქვენ ასევე შეგიძლიათ იმუშაოთ ვებ კლიენტის ან თხელი კლიენტის მეშვეობით ღრუბელში განთავსებული დიდი CNF-ით, მაგრამ CNF ღრუბლის ფუნქციონირება შემცირდება მობილური CNF-ის ფუნქციონირებამდე. მაგრამ არ არის აუცილებელი უშუალოდ ღრუბელ UNF-ში მუშაობა - ყველა სამუშაო შეიძლება გაკეთდეს მხოლოდ მობილური მოწყობილობებიდან.
  • ბიზნესი გაიზარდა საშუალო ზომის ფირმის ზომამდე. ამ შემთხვევაში, აზრი აქვს ღრუბელში დიდი UNF-ის სრულფასოვანი ვერსიის დაქირავებას, რათა მიიღოთ (ვებ კლიენტის ან თხელი კლიენტის მეშვეობით) დამატებითი ფუნქციონალობა - CRM (გეგმები მოიცავს CRM-ის ჩართვას მობილურ UNF-ში, მაგრამ ახლა ის ხელმისაწვდომია მხოლოდ დიდ ვერსიაში), საწყობის მენეჯმენტი, ფასების გაფართოებული ფორმირება, ბანკებთან მუშაობის შესაძლებლობა და. ამ შემთხვევაში, დიდი CNF-ით მომუშავე მობილური მოწყობილობების რაოდენობა შეზღუდული არ არის (თითოეული მოწყობილობისთვის დაწესებულია დამატებითი გადასახადი ტარიფის მიხედვით, როგორც ერთი სამუშაო ადგილისთვის; 1 ლიცენზია CNF-ზე Fresh-ზე ან „ყუთში“ CNF იძლევა. 1 მობილური აპლიკაციის უფასო გამოყენების უფლება).
  • აპლიკაციის მონეტიზაციის გამოცდილება UNF მობილური აპლიკაცია, როგორც უკვე დავწერე, უფასოა. რამდენიმე ხნის წინ, ჩვენ გადავწყვიტეთ ჩვენი აპლიკაციის მონეტიზაცია (აპსში შესყიდვის ფუნქციის გამოყენებით დანერგილი 1C:Enterprise მობილური პლატფორმის 8.3.8 ვერსიაში), გავყიდეთ დამატებითი ფუნქციები - წარმოება და სინქრონიზაცია დამატებით მობილურ მოწყობილობებთან.


    წარმოების ფუნქცია არის ერთჯერადი შეძენა და დამატებით მობილურ მოწყობილობებთან სინქრონიზაციის შესაძლებლობა შეფუთულია როგორც გამოწერა, რომელიც უნდა განახლდეს ყოველთვიურად. საინტერესოა, რომ სავაჭრო ფუნქციების დამატებიდან სულ რაღაც 3 კვირაში, მობილური UNF იყო Google Play-ს ტოპ 15-ში ბიზნეს აპლიკაციების გაყიდვებში. დასკვნა Mobile UNF არის შედარებით მცირე (წყარო კოდის მოცულობის თვალსაზრისით), მაგრამ საკმაოდ პოპულარული პროდუქტი. ვიმედოვნებთ, რომ ამბავი მისი ევოლუციის შესახებ სასარგებლო იქნება მობილური საბოლოო მომხმარებლის პროდუქტების შემქმნელებისთვის, როგორც 1C ტექნოლოგიების, ასევე განვითარების სხვა ინსტრუმენტების გამოყენებით.

    სასარგებლო იქნება შეგახსენოთ, რომ 1C მობილურ პლატფორმაზე შეგიძლიათ შექმნათ აპლიკაციები, რომლებიც ურთიერთქმედებენ არა მხოლოდ 1C სერვერის ბექენდთან; 1C პლატფორმაზე მობილურ აპლიკაციებში მონაცემთა გაცვლისთვის გამოყენებული პროტოკოლები პლატფორმისგან დამოუკიდებელია (ვებ და HTTP სერვისები, XML და JSON მხარდაჭერა და ა.შ.). ასე რომ, თუ თქვენ გჭირდებათ სწრაფად და დინამიურად განავითაროთ მრავალპლატფორმული (Android, iOS, Windows) მობილური კლიენტი, თქვენი ბიზნეს აპლიკაციისთვის მუდმივი ინტერნეტის გარეშე მუშაობის უნარით, მაშინ 1C მობილური პლატფორმა შეიძლება იყოს საუკეთესო არჩევანი. შენთვის.

    შესავალი

    1C პლატფორმის ახალ ვერსიას (8.3.5) აქვს ბევრი ახალი ფუნქციონირება. სხვათა შორის, მათთვის, ვინც არ იცის, არის რესურსი, რომელზედაც 1C დეველოპერები აღწერენ პლატფორმაში განვითარებულ ინოვაციებს. ერთ-ერთი მათგანია მექანიზმი. ჩემი ყურადღება მიიპყრო და რაღაც გასართობად მომინდა განმეხორციელებინა. მაშინვე გამიჩნდა იდეა, რომ რაღაც ვებსაიტის მსგავსი გამეკეთებინა, მაგრამ ეს იდეა ინფოსტარტზეც არ იქნებოდა გაგებული, ამიტომ თავიდან მოვისროლე. თითქოს გადაყრილი იყო, მაგრამ იდეა გადაკეთდა რაღაც არც ისე მასშტაბურ, ისეთ რამედ, რასაც შეეძლო ცხოვრებაში რეალური აპლიკაციის პოვნა - მობილური ვებ აპლიკაცია.
    მე მჯერა, რომ დაბალი დატვირთვის და მარტივი მობილური ვებ აპლიკაცია შეზღუდული რაოდენობის მომხმარებლებისთვის, მაგალითად, თანამშრომლებისთვის, შეიძლება განხორციელდეს 1C-ში HTTP სერვისების გამოყენებით.

    მობილური ვებ აპლიკაცია "კონტაქტები"

    დავიწყებ შედეგით. მობილური ვებ აპლიკაცია "კონტაქტები" გამოიყურება მარტივი და სინამდვილეში ასეა. დასაწყისში, თქვენ ხედავთ მხოლოდ ველს კონტაქტის მოსაძებნად.

    მოდი ვეძებოთ ვინმე (იმისთვის, რომ ძებნა დაიწყოს, თქვენ უნდა შეიყვანოთ მინიმუმ 3 სიმბოლო). ვიღაც იპოვეს.

    მოდით დავურეკოთ ალექსის.

    მივწეროთ წერილი ტიმოფეის.

    სულ ეს არის მობილური ვებ აპლიკაცია.

    სხვათა შორის, ძალიან ადვილია მისი ადაპტირება ნებისმიერ კონფიგურაციასთან.

    ცოტა განხორციელების შესახებ

    გამოყენებული ინსტრუმენტები:
    - 1C პლატფორმის HTTP სერვისების მექანიზმი (დაწყებული 8.3.5 ვერსიიდან)
    - JavaScript ბიბლიოთეკა jQuery (http://jquery.com)
    - JavaScript ბიბლიოთეკა jQuery მობილური (http://jquerymobile.com)
    - 1C: JSON ()

    "ContactsMVP" HTTP სერვისი იღებს ყველა მოთხოვნას და გადასცემს მათ "ContactsMVP" დამუშავებაში. მობილური ვებ აპლიკაციის მთელი ლოგიკა კონცენტრირებულია "ContactsMVP"-ის დამუშავებაში.

    ასე გამოიყურება მოთხოვნის დამუშავება.

    ფუნქცია ProcessRequest(Request) Export If MatchesResource(Request, "/index.html") then Return GetResourceIndexHTML(); ElseIf MatchesResource(Request,"/application.js") შემდეგ დააბრუნეთ GetResourceApplicationJS(); ElseIf MatchesResource(Request,"/contacts.json") შემდეგ დააბრუნეთ GetResourceContactsJSON(Request); დაასრულე თუ; საბოლოო ფუნქცია

    და აი, მაგალითად, როგორ გამოიყურება index.html გვერდის დაბრუნება.

    ფუნქცია GetResourceIndexHTML() Response = New HTTPServiceResponse(200); ტექსტი = GetLayout("IndexHTML").GetText(); Answer.SetBodyFromString(ტექსტი); Response.Headings.Insert("Content-Type", "text/html"); დაბრუნების პასუხი; საბოლოო ფუნქცია

    არაფერი რთული. მექანიზმის უფრო დეტალურად შესწავლა შეგიძლიათ ContactsMVP.dt-ის ჩამოტვირთვით

    გამოცემის მახასიათებლები

    იყო მცირე სირთულეები HTTP სერვისის გამოქვეყნებისას, ასე რომ გაგიადვილოთ, გამოვყოფ რამდენიმე კომენტარს:
    - საკმაოდ დეტალური აღწერილობებია გამოცემის შესახებ - წაიკითხეთ მეტი ყურადღებით.
    - გამოქვეყნებამდე არ დაგავიწყდეთ კონფიგურატორის ადმინისტრატორად გაშვება.
    - HTTP სერვისის გაშვება მხოლოდ ფაილის ვერსიით იყო შესაძლებელი.
    - იმისათვის, რომ მობილური ვებ აპლიკაციამ იმუშაოს ავტორიზაციის მოთხოვნის გარეშე, თუ მონაცემთა ბაზაში არიან რეგისტრირებული მომხმარებლები, მაშინ გამოქვეყნების შემდეგ, default.vrd ფაილში, Usr და Pwd პარამეტრები უნდა დაემატოს კავშირის სტრიქონს (წერტილი. იბ).

    დასკვნა

    იმედი მაქვს, რომ სტატიის მასალა თქვენთვის სასარგებლო იქნება.

    Გმადლობთ ყურადღებისთვის.

    ეს პროტოტიპი შეიქმნა Moqups-ის გამოყენებით– მარტივი და მოსახერხებელი სერვისი განლაგებისა და კონცეფციების შესაქმნელად. ის საკმაოდ შესაფერისია მცირე Android აპლიკაციების სწრაფი პროტოტიპისთვის. უფრო სერიოზული პროექტების პროტოტიპებისთვის უმჯობესია გამოიყენოთ Photoshop და Android UI Design Kit!.

    განაცხადის აღწერა

    აპლიკაცია შედგება 3 ეკრანისგან:

    "აპლიკაციის მთავარი ეკრანი" - გაშვებისას გამოჩნდება დავალებების სია (ვადის გასვლის ვადა, დავალების დასახელება და მისი დასრულების მითითება). დავალების დასრულების შემდეგ, სიაში იგი დასრულებულად მოინიშნება.

    ღილაკზე „მონაცემთა გაცვლა“ დაწკაპუნებით თანამშრომელს შეუძლია დაუყოვნებლივ დაიწყოს სერვერიდან ახალი ამოცანების მიღების პროცედურა. სერვერთან მონაცემთა გაცვლა ასევე ავტომატურად ხდება დღეში ერთხელ, პარამეტრებში მითითებული გრაფიკის მიხედვით.

    "პროგრამის პარამეტრები" - აქ თქვენ აყენებთ ავტორიზაციის პარამეტრებს და 1C სერვერის მისამართს და ასევე აჩვენებს ამ მოწყობილობის უნიკალურ საიდენტიფიკაციო ნომერს. ავტომატური გაცვლის გრაფიკის დაყენება ასევე შესაძლებელია აქ.

    მობილური კლიენტსა და 1C სერვერს შორის გაცვლილი მონაცემების სტრუქტურა

    ბილიკი იქნება მნიშვნელობების ცხრილი (1C თვალსაზრისით), რომელიც შეიცავს 3 სვეტს:

    მობილური აპლიკაციის შაბლონის შექმნა 1C-ში

    გაუშვით 1C და აირჩიეთ "Mobile Applications" დირექტორია, დაამატეთ ახალი ელემენტი, სადაც:

      "იდენტიფიკატორი" ველში მიუთითეთ SAMPLE_APP_TASKS (ან იფიქრეთ სხვაზე), ეს არის უნიკალური აპლიკაციის იდენტიფიკატორი თქვენს კონფიგურაციაში. საჭიროა განაცხადის ცალსახად იდენტიფიცირება გაცვლის პროცესში, რადგან ერთსა და იმავე თანამშრომელს შეუძლია რამდენიმე აპლიკაციის გამოყენება ერთ მობილურ მოწყობილობაზე.

      "სახელი" ველში შეიყვანეთ თქვენი მობილური აპლიკაციის სახელი, მაგალითად Tasks.

    ჩაწერეთ დირექტორიას პუნქტი Write ღილაკის გამოყენებით, შემდეგ შექმენით ახალი ვერსია და მიუთითეთ ის, როგორც სამუშაო ვერსია თქვენი აპლიკაციისთვის.

    აირჩიეთ "გარე მონაცემები" ჯგუფი "მეტამონაცემების" სიაში და დააჭირეთ ღილაკს "დამატება" ხელსაწყოთა პანელზე. შეავსეთ ახალი ცხრილის პარამეტრები, როგორც ეს ნაჩვენებია ფიგურაში:

    სვეტების სახელები და თავად ცხრილი აქ, როგორც წესი, მითითებულია რუსულ ენაზე, ისინი გამოყენებული იქნება ცხრილის მონაცემებით ჩაშენებული 1C ენის გამოყენებით.

    მობილური აპლიკაციის თითოეულ მონაცემთა ცხრილს უნდა ჰქონდეს სტრიქონის ტიპის პირველადი გასაღები (PRIMARY KEY რელაციური მონაცემთა ბაზების თვალსაზრისით). ყველა ობიექტის ცხრილისთვის (დირექტორიები და დოკუმენტები) მთავარია ბმულის ტექსტური წარმოდგენა (უნიკალური იდენტიფიკატორი) და ივსება ავტომატურად.

    არაობიექტური ცხრილებისთვის, როგორიცაა „საინფორმაციო რეესტრი“ ან „გარე ცხრილი“, პროგრამამ უნდა მიუთითოს, თუ როგორ უნდა შეივსოს იგი. ერთ-ერთი ვარიანტია „ინდექსის“ დროშის დაყენება ცხრილის ერთი ან მეტი სვეტისთვის, რაც ჩვენს მაგალითში გაკეთდა სვეტებისთვის „გასასრულებელი თარიღი“ და „ამოცანა“. ეს ნიშნავს, რომ ცხრილს არ შეიძლება ჰქონდეს ორი იდენტური დავალება ერთი და იმავე თარიღისთვის.

    დააჭირეთ OK, ცხრილი დაემატება მეტამონაცემების ხეს, მობილური აპლიკაციისთვის სახელები ავტომატურად ითარგმნება ლათინურად.

    [FBA-ს ერთ-ერთი წესი: 1C-ში ჩვენ ვწერთ წყაროს კოდს რუსულად, ჯავაზე ლათინურად. რუსული ასოების არარსებობა იდენტიფიკატორებში, ცვლადის სახელებსა და კლასებში თავიდან აიცილებს ბევრ პრობლემას მობილური კლიენტის დიზაინის დროს]

    სახელების გადარქმევა ლათინურიდან ინგლისურად. პრინციპში შესაძლებელი იყო ლათინური ანბანის დატოვება, მაგრამ სახელები უკვე გადავწყვიტეთ (ზემოთ ცხრილში).

    შეინახეთ ცვლილებები და დააწკაპუნეთ ღილაკზე „მობილური აპლიკაციის შაბლონი“ ხელსაწყოთა ზოლში.

    „თარგების დირექტორია“ – მიუთითეთ გზა, სადაც შეინახება გენერირებული მობილური აპლიკაციის შაბლონის ფაილები.

    "ძირითადი" ჩანართზე მიუთითეთ პაკეტის სახელი, ეს უნდა იყოს უნიკალური იდენტიფიკატორი. თუ თქვენ გაქვთ ვებსაიტი, გამოიყენეთ იგი პრეფიქსის შესაქმნელად. ჩვენს მაგალითში ეს არის ru.profi1c.samples.tasks

    "ვებ სერვისის" ჩანართზე, სერვერის მისამართი მითითებულია სტანდარტულად, როგორც 10.0.2.2, ეს არის თქვენი კომპიუტერის მისამართი, როდესაც წვდებით Android ემულატორიდან.

    „ვებ სერვისის სახელი“ და „აპლიკაციის ქვედირექტორია“ ველებში შეიყვანეთ მონაცემები, რომლებიც მითითებული იყო ვებ სერვისის გამოქვეყნებისას.

    ჩანართზე „პროგრამის შესახებ“ შეავსეთ საკონტაქტო ინფორმაცია და დამატებითი ინფორმაცია თქვენი აპლიკაციის შესახებ.

    დააწკაპუნეთ შექმნაზე, შეიქმნება Android პროექტის შაბლონი. დახურეთ შაბლონის გენერირების ოსტატის ფანჯარა, შეინახეთ ცვლილებები და დახურეთ დირექტორია „მობილური აპლიკაციების“ პუნქტი