Kisah satu aplikasi: seluler “1C: Mengelola perusahaan kami. Pengaturan awal aplikasi seluler “1C-Rating: Pelayan seluler Memanggil operasi server web

  • tutorial

Halo sayang.

Pada artikel ini saya ingin memperkenalkan Anda pada produk baru “FBA Toolkit”, yang secara signifikan menyederhanakan proses pengembangan aplikasi seluler korporat di 1C + Android.
“Perangkat FBA” adalah:
- pengembangan aplikasi Android “asli” dalam IDE asli di Java;
- 1C: Enterprise 8.1 (8.2) sebagai sumber data, sistem informasi perusahaan.

Pertama-tama, kerangka kerja ini akan berguna bagi pemrogram 1C yang ingin mengembangkan aplikasi bisnis untuk Android, tetapi mengalami kesulitan dalam menguasai platform baru untuk mereka. Untuk memulai pengembangan, pengetahuan dasar tentang Java saja sudah cukup. Selanjutnya, saya akan menunjukkan cara membuat prototipe aplikasi client-server yang berfungsi hanya dalam beberapa jam.

Mempersiapkan tempat kerja Sebelum memulai proses pengembangan itu sendiri, perlu dilakukan persiapan tempat kerja pengembang. Diperlukan:

1. Instal dan konfigurasikan:
- Java SDK + Eclipse + Android SDK;
- Server web (IIS atau Apache);
- 1C: Perusahaan 8.1 (8.2)

2. Untuk Eclipse, impor dua proyek perpustakaan: ActionBarSherlock dan ru_profu1c_fba dari repositori SVN.

3. Instal distribusi konfigurasi “FBA” dan gabungkan dengan solusi aplikasi berbasis 1C Anda.

Seluruh proses pra-konfigurasi dijelaskan secara rinci dalam artikel:
Mempersiapkan tempat kerja pengembang
Menginstal distribusi konfigurasi "FBA".
Menggabungkan konfigurasi “FBA” dengan solusi aplikasi dan mempublikasikannya di server web

Penyiapannya tidak akan memakan banyak waktu, dan kemungkinan besar, Anda sudah menginstal beberapa perangkat lunak yang diperlukan.

Deskripsi aplikasi Kami akan membuat aplikasi seluler "Laporkan ke Manajer", yang dirancang untuk secara teratur memberi tahu manajer tentang keadaan di perusahaan. Aplikasi ini akan terdiri dari 3 layar:
  • "Login" - otorisasi pengguna saat memulai program.
  • “Daftar laporan” adalah layar utama aplikasi kita. Daftar laporan yang tersedia ditampilkan dengan kemampuan untuk melihat dan memperbarui data dari database 1C.
  • "Pengaturan program" - di sini pengguna menetapkan parameter otorisasi dan alamat server 1C, mengonfigurasi jadwal pertukaran otomatis dengan server 1C.
  • Aplikasi akan mengimplementasikan 2 opsi untuk menerima data dari server 1C:

  • Laporkan “Barang di gudang”. Itu dihasilkan di server dan dikompilasi sebagai dokumen HTML; itu hanya ditampilkan di aplikasi seluler. Pilihan paling sederhana adalah formulir laporan sudah tetap dan tidak dapat diubah.
  • Laporkan "Indikator keuangan". Di sini sumber data laporan diperoleh dalam bentuk tabel, yang kemudian digunakan untuk menyusun laporan. Keuntungan dari opsi ini: bentuk keluaran laporan gratis, termasuk. dalam bentuk grafik dan diagram; dimungkinkan untuk menginstal pilihan dan penyortiran.
  • Membuat template aplikasi seluler di 1C Pengembangan aplikasi seluler dimulai di 1C, dan ini tidak mengejutkan. Di sini Anda menentukan komposisi metadata, mengonfigurasi skema pertukaran, dan membuat ulang templat aplikasi seluler masa depan Anda.

    Buat elemen baru di direktori “Aplikasi Seluler” dengan nama “Laporkan ke Manajer” dan pengenal SAMPLE_REPORT_HEAD.

    Pilih grup “Data Eksternal” di daftar “Metadata” dan klik tombol “Tambah” pada toolbar. Isikan parameter tabel baru seperti yang ditunjukkan pada gambar:

    "Indikator" - uji representasi indikator laporan, baris (250)
    "Nilai" - nilai numerik dari indikator, angka (15.2)
    Nama kolom dan tabel itu sendiri di sini, biasanya, ditentukan dalam bahasa Rusia, mereka akan digunakan untuk mengisi tabel dengan data menggunakan bahasa 1C bawaan. Klik OK, tabel akan ditambahkan ke pohon metadata, untuk aplikasi seluler nama-nama tersebut secara otomatis diterjemahkan ke dalam bahasa Latin.

    Oleh karena itu, kami telah menyiapkan struktur tabel nilai (dalam 1C) di mana kami akan mentransfer data untuk laporan “Indikator Keuangan”. Untuk laporan kedua “Barang di gudang”, data akan ditransfer sebagai file eksternal.

    Pada tab “Skema Pertukaran”, periksa apakah tanda “Unggah” dicentang. Bendera “Memuat” tidak penting, karena Kami tidak akan memproses perubahan yang diterima pada tabel ini dari aplikasi seluler di 1C.

    Simpan perubahan Anda. Klik tombol “Template Aplikasi Seluler” pada toolbar, atur parameter aplikasi seluler Anda

    "Direktori templat" - jalur ke direktori tempat file templat aplikasi seluler yang dihasilkan akan disimpan.

    Pada tab “Basic”, tentukan nama paket; ini harus berupa pengidentifikasi unik. Jika Anda memiliki situs web, gunakan situs tersebut untuk menghasilkan awalan. Dalam contoh ini saya menentukan ru.profi1c.samples.report.head

    Pada tab “Layanan Web”, alamat IP-nya adalah 10.0.2.2; secara default, ini adalah alamat komputer Anda saat diakses dari emulator Android. Di bidang “Nama layanan web” dan “Subdirektori aplikasi”, masukkan data yang ditentukan saat menerbitkan layanan web.

    Harap dicatat bahwa untuk 1C 8.2, kemungkinan besar, Anda akan memiliki subdirektori aplikasi dengan subdirektori /ws tambahan, yaitu demoFba/ws, lihat untuk lebih jelasnya.
    Klik Buat, template proyek Android akan dibuat.

    Mempersiapkan data sumber untuk laporan di 1C Buka modul Langganan Acara fba di konfigurator 1C dan tambahkan kode berikut ke prosedur Sebelum Mengirim Tabel Eksternal:

    If AbbrLP(Kode Aplikasi Seluler) = "SAMPLE_REPORT_HEAD" Then If TableName = "Laporkan ke Pengelola" Then // data laporan fiktif ListTemp = fbaTotal.FromLineWithSeparators("Kas, Hutang, Total Piutang, Saldo Barang, Hutang, volume penjualan"); RNG = NewRandomNumberGenerator(123456789); Untuk setiap ListElement Dari ListTemp Cycle NewRow = ExternalTable.Add(); NewRow.Indicator = ListElement.Value; NewRow.Value = RNG.RandomNumber(0,999999) + Sin(RNG.RandomNumber(0,999)); Siklus Akhir; berakhir jika; Berakhir jika
    Dalam contoh ini, tabel diisi dengan data fiktif; dalam aplikasi nyata, Anda dapat meneruskan sejumlah indikator laporan di sini.
    Kami sudah memilah data untuk laporan pertama, tinggal mempersiapkannya untuk laporan kedua. Dalam modul Langganan fbaEvent yang sama, tambahkan kode berikut ke prosedur Siapkan Data Biner untuk Pengiriman:

    DD = Tidak terdefinisi; Jika AbbrLP(MobileApp.Code) = "SAMPLE_REPORT_HEAD" Kemudian Jika Identifier = "REPORT_productS_IN_STOK" Maka FileName = GetTemporaryFileName("html"); Laporan = Laporan.ProdukDiGudang.Buat(); Jika Report.SaveReportInHTML(Nama File) Maka DD = New BinaryData(Nama File); HapusFile(NamaFile); berakhir jika; berakhir jika; berakhir jika; Kembalikan DD;
    Saya akan mengomentari kodenya. Ketika aplikasi seluler meminta data arbitrer (dalam bentuk file) dengan pengidentifikasi “REPORT_PRODUK_IN_STOK”, laporan dieksekusi dalam 1C dan hasilnya disimpan ke file sementara. File sementara ini kemudian dibaca sebagai data biner dan ditransfer ke aplikasi seluler. File sementara dihapus.

    Bagaimana file html dihasilkan dalam hal ini tidak penting bagi kami. Anda dapat menggunakan mekanisme 1C standar untuk menyimpan dokumen spreadsheet sebagai HTML atau membuat HTML secara manual. Anda dapat melihat contoh output di konfigurasi “Demo FBA”, laporan “Produk di gudang”.

    Itu saja dengan 1C, mari beralih ke pengembangan aplikasi seluler di Android.

    Merancang aplikasi Android Kami mengimpor template proyek Android yang dibuat dalam 1C ke dalam ruang kerja Eclipse.

    Luncurkan Eclipse dan impor proyek: File > Impor... Di grup Android, pilih item “Ada Kode Android Ke Ruang Kerja”, klik Berikutnya, tentukan jalur ke direktori templat proyek Android dan klik Selesai, proyek baru akan menjadi ditambahkan ke ruang kerja. Jika ada kesulitan, lihat, prosesnya dijelaskan dalam gambar.

    1. Buat laporan “Indikator Keuangan”, sumber datanya adalah tabel nilai yang diterima dari 1C. Untuk melakukannya, tambahkan kelas baru ToChiefReport.java, berikut kode sumber lengkapnya:

    Menunjukkan

    /** * Contoh pembuatan laporan menggunakan data dari database sqlite lokal. Sumber data * adalah tabel eksternal “Laporan ke Manajer” * */ public class ToChiefReport extends SimpleMapHtmlReport ( @Override public int getResIdIcon() ( return R.drawable.report_01; ) @Override public int getResIdTitle() ( return R. string.report_name_to_chief; ) @Override public void build(Konteks konteks, IReportBuilderResult builderResult) ( coba ( makeReport(context); ) catch (SQLException e) ( e.printStackTrace(); setHeader1("Ups, laporan tidak dibuat!"); ) super.build (konteks, builderResult); ) private void makeReport(Konteks konteks) menampilkan SQLException ( DBHelper helper = new DBHelper(context); // Judul laporan dan tabel setHeader2("Indikator keuangan"); setTableHeader("Nama ", "Jumlah, gosok ."); // Baris tabel akan sesuai urutan penambahannya Peta mapData = new LinkedHashMap(); // Memilih data dari database sqlite lokal, tabel eksternal // “Laporkan ke manajer ” ExTableRaportRukovoditelyuDao dao = pembantu .getDao(ExTableRaportRukovoditelyu.class); Daftar baris = dao.select(); for (baris ExTableRaportRukovoditelyu: baris) ( mapData.put(row.pokazatel, row.znachenie); ) setTableData(mapData); ) )
    Saya akan mengomentari kodenya. Kelas abstrak SimpleMapHtmlReport, yang diwarisinya, dimaksudkan untuk membuat laporan HTML sederhana dengan tabel dua kolom.
    2 metode pertama getResIdIcon() dan getResIdTitle() mengembalikan ikon dan judul laporan kita untuk ditampilkan dalam daftar. Dalam event handler “build”, metode makeReport dipanggil, yang merupakan implementasi kompilasi laporan kami.
    Saat membuat laporan, laporan dan judul tabel ditetapkan terlebih dahulu, kemudian semua catatan dari tabel sqlite lokal dibaca sebagai baris tabel laporan. Dan terakhir, dalam metode setTableData() kita mengatur data untuk tabel laporan. Ugh, betapa sulitnya mengomentari hal yang sudah jelas.


    2.Buat laporan kedua, semuanya lebih sederhana di sini:

    Menunjukkan

    /** * Contoh laporan yang dikompilasi, cukup output file Html. Dalam contoh ini * file data dibuat di 1C dan ditransfer ke klien seluler selama pertukaran * */ public class ProductsInStokReport extends SimpleCompiledHtmlReport ( // Nama di mana file yang diterima dari 1C disimpan (lihat prosedur pertukaran // MyExchangeTask ) public static final String REPORT_FILE_NAME = "products_in_stok.html"; public ProductsInStokReport(File file) ( super(file); ) @Override public int getResIdIcon() ( return R.drawable.report_02; ) @Override public int getResIdTitle() ( kembalikan R.string.report_name_products_in_stok ; ) )


    3. Mari kita perluas prosedur pertukaran yang telah ditentukan sebelumnya dengan server 1C, mis. Mari tambahkan satu langkah lagi - memperoleh data untuk laporan kedua kita dalam bentuk file yang dikompilasi. Mari tambahkan kelas MyExchangeTask, turunan dari ExchangeTask:

    Menunjukkan

    /** * Prosedur pertukaran standar dilengkapi dengan aturan adat. * Selain itu, satu file yang dikompilasi diperoleh - sebuah laporan. * */ kelas publik MyExchangeTask memperluas ExchangeTask ( // ID Laporan sebagaimana ditentukan dalam 1C private static final String ID_REPORT_products_IN_STOK = "REPORT_products_IN_STOK"; public MyExchangeTask(ExchangeVariant exchangeVariant, WSHelper wsrvHelper, DBOpenHelper dbOpenHelper) ( super(exchangeVariant, wsrvH elper, dbOpenHelper); ) @Override protected boolean doExecute() melempar Pengecualian ( // Jalankan langkah-langkah pertukaran sesuai dengan aturan yang telah ditentukan sebelumnya boolean sukses = super.doExecute(); if (sukses) ( // Terima data arbitrer - laporan ke-2 kami onStepInfo("Menerima laporan.. . "); String fPath = appSettings.getCacheDir().getAbsolutePath() + "/" + ProductsInStokReport.REPORT_FILE_NAME; File f = wsHelper.getLargeData(ID_REPORT_productS_IN_STOK, null, "", fPath); sukses = (f != null) ; ) kembali sukses; ) )
    Untuk mendapatkan data laporan, digunakan metode layanan web getLargeData, yang jika berhasil, menyimpan hasilnya ke file di jalur yang ditentukan. Perhatikan identifier ID_REPORT_PRODUK_IN_STOK, harus sama seperti di 1C pada metode Siapkan Data Biner untuk Pengiriman.


    4. Menampilkan daftar laporan pada form utama. Buka file res\activity_main.xml dan tambahkan listView yang akan menampilkan daftar laporan:

    Di MainActtiviy.java kami menambahkan:

    A) variabel lokal untuk daftar
    daftar ListView pribadi;
    b) metode inisialisasi
    private void init() ( list = (ListView) findViewById(android.R.id.list); // Membuat adaptor untuk menampilkan daftar laporan ReportListAdapter adapter = new ReportListAdapter(this,createReportList()); list.setAdapter( adaptor); list.setOnItemClickListener(new OnItemClickListener() ( @Override public void onItemClick(AdapterView parent, View view, int position, long id) ( // Tampilkan laporan di dialog ketika Anda mengkliknya IReport report = (IReport) daftar.getItemAtPosition(posisi) ; laporan.onShow(MainActivity.ini); ) )); )
    dan memanggilnya di onCreate() setelah mengatur tata letak formulir
    setContentView(R.layout.activity_main); init();
    c) metode untuk menginisialisasi daftar laporan
    /* * Menyiapkan daftar laporan */ private List createReportList() ( List lst = new ArrayList(); // Buat laporan pertama, direktori sementara tempat file disimpan diambil // IReport settings report = new ProductsInStokReport (File baru(getAppSettings() .getCacheDir(), ProductsInStokReport.REPORT_FILE_NAME)); lst.add(report); // Membuat dan menambahkan laporan lain ke daftar lst.add(new ToChiefReport()); )
    d) prosedur peluncuran pertukaran sesuai dengan aturan Anda
    /* * Memulai pertukaran sesuai aturan saya. Harap dicatat bahwa dalam penjadwal * (jika diinstal) pertukaran tetap sesuai dengan aturan standar */ private void startExchangeMyRules(ExchangeVariant varian,boolean cancelable) ( // helper untuk memanggil metode layanan web WSHelper wsHelper = new WSHelper(getExchangeSettings()) ; Tugas MyExchangeTask = MyExchangeTask baru(varian, wsHelper, getHelper()); startExchange(tugas, dapat dibatalkan); )
    Dan ubah panggilan ke prosedur pertukaran startExchange(ExchangeVariant.FULL, true) di handler onOptionsItemSelected menjadi startExchangeMyRules(ExchangeVariant.FULL, true).

    Aplikasi sudah siap, formulir otorisasi dan pengaturan program akan dibuat secara otomatis, kami tidak akan mengubahnya.
    Mari kita uji di emulator. Jika Anda tidak melakukan kesalahan apa pun, aplikasi akan diluncurkan. Namun, alih-alih jendela otorisasi, jendela pengaturan akan segera ditampilkan, karena data otorisasi (nama pengguna dan kata sandi) tidak ditentukan.

    Silakan masukkan nama pengguna Anda: ivanov
    Dan kata sandi: 123456

    Luncurkan database 1C dan buka direktori “Karyawan Seluler”. Sebagai perangkat seluler, tentukan elemen yang telah ditentukan sebelumnya "Emulator Perangkat", tambahkan aplikasi "Laporkan ke Manajer" ke bagian tabular "Aplikasi Seluler" dan tetapkan nama pengguna dan kata sandi yang sama.

    Mulai prosedur pertukaran pada emulator (tombol dengan panah “Atas” di panel kanan)

    Hasil pertukaran ditampilkan dalam notifikasi:

    Klik untuk meluncurkan aplikasi Anda (atau untuk melihat detail kesalahan jika pertukaran tidak berhasil).

    Mari kita periksa apa yang terjadi. Klik pada laporan dalam daftar:

    Menunjukkan


    Besar! Laporan ditampilkan, Anda dapat mengubah skala menggunakan tombol atau gerakan.


    Aplikasi sudah siap, ternyata cukup fungsional dan mudah diperluas. Menambahkan laporan lain tidak akan sulit.
    Anda dapat mentransfer dokumen dalam berbagai format, seperti *.doc atau *.pdf, dan menggunakan aplikasi eksternal untuk melihatnya. Lihat contoh source codenya, ada 3 laporan lagi :
    • grafik menggunakan Google Chart Tools
    • plot menggunakan plugin jQuery Plot
    • keluaran laporan PDF oleh aplikasi eksternal (PdfReport.java)
    Saya tidak akan menjelaskannya secara detail, sehingga artikelnya menjadi panjang. Jika Anda memiliki pertanyaan, saya siap menjawab di komentar. Inilah hasilnya:

    Menunjukkan


    Anda dapat mengunduh kode contoh lengkap di https://xp-dev.com/svn/fba_toolkit_public/samples/fbaSample4ReportHead/

    Menggunakan HTML untuk membuat laporan memungkinkan Anda membuat berbagai macam laporan, termasuk. dan dengan elemen interaktif. Misalnya, di salah satu proyek kami, laporan berikut digunakan:

    Menunjukkan

    • untuk bidang “Hutang”, skema warna bersyarat digunakan tergantung pada jumlahnya;
    • daftar lengkap faktur yang belum dibayar hanya terbuka ketika Anda mengklik penanda “Semua”; secara default, hanya 4 faktur terakhir yang ditampilkan.

    Dan tentu saja, Anda tidak dibatasi oleh apa pun, Anda dapat menggunakan perpustakaan pihak ketiga untuk menampilkan laporan dan grafik, misalnya achartengine, atau membuat grafik/diagram Anda sendiri (ada banyak contohnya, termasuk yang ada di Android SDK).

    Itu saja, Anda dapat menemukan contoh lainnya di situs http://profi1c.ru.
    Dalam waktu dekat, direncanakan untuk menambahkan pelajaran tentang elemen interaktif dan adaptor perpustakaan FBA, serta menunjukkan cara bekerja dengan peta mapforge offline.

    Terbang dalam salep Produk FBA Toolkit yang rencananya akan didistribusikan secara komersial, kini berstatus “versi demo”. Anda bebas menggunakannya untuk pengujian dan pembelajaran.
    Batasan:
    • program berhenti bekerja setelah lisensi demo berakhir, mis. setelah 31/12/13;
    • Saat memulai, pemberitahuan ditampilkan:

    Dalam waktu dekat (tidak lebih dari sebulan) akan ada versi komersialnya, informasi mengenai biaya dan prosedur perizinan akan ditambahkan ke website kami.

    Terima kasih telah membaca sampai akhir. Saya siap menjawab pertanyaan Anda di komentar mengenai 1C dan Android.

    Tag: Tambahkan tag

    Dengan menggunakan contoh aplikasi seluler “1C: Managing Our Company” (disingkat UNF), saya ingin menunjukkan evolusi aplikasi bisnis seluler dari asal-usulnya dan peluncuran versi pertama hingga saat ini. Aplikasi ini saat ini memiliki lebih dari 220.000 unduhan; Aplikasi ini gratis, tetapi memiliki opsi berbayar (diimplementasikan melalui pembelian dalam aplikasi).


    Versi pertama UNF seluler dibuat pada salah satu versi pertama platform seluler 1C:Enterprise pada tahun 2012. Saat itu, sudah ada konfigurasi client-server "1C: Manajemen perusahaan kecil" (saat itu namanya), program untuk mengotomatisasi aktivitas perusahaan kecil - penjualan, pengadaan, basis pelanggan dan pemasok, gudang manajemen, produksi, dll.

    Seperti kebanyakan aplikasi seluler yang ditulis pada platform seluler lintas platform 1C:Enterprise, UNF seluler tersedia di iOS, Android, dan Windows.

    Tugas yang diajukan adalah sebagai berikut: membuat aplikasi seluler yang mendukung sebagian skenario kerja UNF “besar”. Aplikasi harus dapat bekerja baik secara mandiri maupun menyinkronkan data dengan UNF “besar” (berikut ini saya akan menulis kata “besar” dalam kaitannya dengan UNF versi client-server tanpa tanda kutip agar tidak membebani teks. ). Dalam hal bekerja dengan CNF besar, skenario karyawan "bergerak" - perwakilan penjualan, teknisi servis, tenaga penjualan - harus didukung.

    Versi pertama dibuat dalam 1 bulan kerja. Saat membuat aplikasi seluler, beberapa objek metadata (direktori, dokumen) diimplementasikan berdasarkan objek UNF besar. Namun beberapa fungsinya harus diprogram dari awal, misalnya proses pertukaran data dengan UNF yang besar. Benar, sehubungan dengan pertukaran data, kami sebenarnya harus melakukan sedikit pemrograman - kami menggunakan mekanisme platform standar (khususnya, rencana pertukaran), yang meminimalkan pengkodean.

    Selain menyederhanakan pekerjaan dengan sinkronisasi data, platform 1C secara signifikan memfasilitasi pekerjaan membangun aplikasi seluler berfitur lengkap, memberi pengembang komponen antarmuka seperti daftar (tabel dan hierarki) dengan kemampuan untuk mencarinya, bidang input dengan pencarian, tabel untuk laporan, berbagai macam grafik, kemampuan mencetak pada printer WiFi dan Bluetooth, dll.

    Fitur versi seluler Ada dua strategi utama dalam memilih fungsionalitas aplikasi seluler. Yang pertama adalah “satu aplikasi - satu fungsi”. Misalnya saja aplikasi mobile untuk penerimaan barang di gudang, yang hanya dapat memindai barcode suatu produk dengan kamera internal dan mengirimkan informasi produk yang diterima ke server. Strategi kedua adalah membuat aplikasi seluler dengan fungsionalitas “all-in-one” yang luas. Kedua pendekatan tersebut valid; Saat menulis UNF seluler, kami memilih pendekatan kedua - aplikasi kami mencakup banyak tugas di bidang subjeknya dan dapat bekerja sepenuhnya secara mandiri, melayani kebutuhan organisasi kecil. Keuntungan lain dari pendekatan ini adalah pengguna dapat bekerja dengan beberapa fungsi yang saling terkait dari satu aplikasi.

    Mobile UNF banyak menggunakan fungsionalitas perangkat seluler, khususnya:

    • Kamera internal perangkat dapat digunakan untuk memotret produk saat mengisi kartu produk, untuk membaca barcode dan kode QR
    • Faktur pembayaran dapat dikirim ke klien melalui email atau SMS
    • Rekanan dapat dipilih dari buku alamat perangkat seluler
    • Jika rekanan memiliki nomor telepon, Anda dapat menghubungi rekanan atau mengirim SMS dengan satu sentuhan; jika email ditentukan, kirim surat; jika alamat ditentukan, tunjukkan di peta
    • Anda dapat mencetak dokumen ke printer melalui WiFi dan Bluetooth
    Ada opsi untuk mencadangkan dan memulihkan database UNF seluler ke Yandex.Disk dan mengirim database melalui surat.

    Konfigurasi UNF seluler terlihat cukup sederhana (lihat gambar di bawah):

    • 8 buku referensi (di UNF besar ada 273 buku referensi)
    • 7 dokumen (dalam UNF besar – 125)
    • 3 jurnal dokumen (di UNF besar – 24)
    • 3 register informasi (dalam UNF besar – 357)
    • 4 register akumulasi (di UNF besar – 64)

    Objek utama UNF keliling

    Namun, meskipun jumlah objek aplikasinya sedikit, produk tersebut ternyata cukup fungsional.

    Fitur menarik dari UNF seluler adalah sering digunakan oleh orang-orang yang belum pernah mendengar tentang 1C sebelumnya (ya, ada di negara kita), mereka yang membutuhkan aplikasi seluler untuk mencatat bisnis kecil mereka ( misalnya kerajinan rumah). Mereka cukup menemukannya dengan mencari di Google Play atau AppStore, membaca ulasannya, dan mulai bekerja.

    Operasi offline Skenario kerja ini ditujukan untuk organisasi yang sangat kecil, ketika semua akuntansi dilakukan secara eksklusif pada perangkat seluler. Misalnya saja, bisnis “rumahan” - membuat perhiasan di rumah dan menjualnya di halaman VKontakte. Atau mungkin bahkan toko kecil - Saya pribadi melihat kasus di mana toko mainan yang mengkhususkan diri dalam penjualan konstruktor Lego menyimpan catatan secara eksklusif pada UNF versi seluler. Mengingat mobile UNF dapat mencetak pada printer WiFi dan Bluetooth, maka dapat digunakan untuk menyelesaikan banyak masalah. Mobile UNF mendukung pemrosesan pesanan, memasukkan faktur dan faktur, akuntansi penerimaan dan pengeluaran uang.Bekerja dalam mode sinkronisasi dengan server (versi pertama) Dalam mode sinkronisasi dengan server di mobile UNF di versi sebelumnya, fungsi akuntansi menjadi tidak tersedia, dan berfungsi di dalamnya dilakukan terutama dengan pesanan (menerima dan memenuhi pesanan) dan kegiatan terkait (mengelola direktori rekanan, barang dan jasa, dll.).

    Direktori barang dan jasa, kontraktor, dan pesanan disinkronkan dengan UNF yang besar.


    Pertukaran data antara UNF seluler dan besar di versi pertama

    Pesanan yang dimasukkan dari perangkat seluler berakhir di UNF besar, dan ketika disinkronkan, pesanan tersebut berakhir di perangkat seluler mereka yang bertanggung jawab atas pesanan tersebut. Dokumen seperti penerimaan kas, penjualan barang, dan lain-lain, yang dimasukkan di perangkat seluler, masuk ke UNF besar, tetapi tidak disinkronkan antar perangkat seluler. Semua pekerjaan dalam aplikasi seluler dalam mode sinkronisasi dilakukan terutama di sekitar perintah - penerimaan dan pelaksanaannya; akuntansi penuh tidak dilakukan pada perangkat seluler; untuk ini perlu menggunakan CNF besar di komputer.

    Hal ini terjadi pada versi pertama, namun kemudian kami mengubah situasi dan memperluas daftar skenario penggunaan CNF seluler agar bekerja dengannya lebih nyaman bagi pengguna.

    Sedikit tentang sinkronisasi data Pertukaran data antara UNF seluler dan besar terjadi melalui layanan web; UNF seluler memanggil layanan web yang ditempatkan di sisi UNF yang besar. Struktur data di CNF besar dan seluler berbeda; Saat merancang arsitektur, kami mempertimbangkan 2 opsi untuk pertukaran data:
  • Buat struktur data dalam CNF besar yang menduplikasi struktur data CNF seluler, dan bertukar data dengan CNF seluler satu-ke-satu. Saat mengubah data di UNF besar, Anda perlu mentransfer data baru/yang diubah ke struktur duplikat ini, dan setelah bertukar data dengan UNF seluler, ubah data yang berasal dari perangkat seluler dan terletak di struktur duplikat menjadi UNF besar format.
  • Bertukar data secara langsung dengan struktur UNF yang besar, mengubah data “on the fly” sesuai dengan aturan pertukaran.
  • Kami memutuskan untuk memilih opsi kedua. Opsi pertama, meskipun menjanjikan beberapa keuntungan terkait dengan kesederhanaan pertukaran data itu sendiri, tidak menangani situasi dengan baik ketika struktur data diubah (diperluas) dalam versi baru UNF seluler; Agar pertukaran data satu-ke-satu dapat terus berfungsi, perlu dilakukan pembaruan pada server, UNF yang besar. Hal ini, karena berbagai alasan, tidak dapat diterima.

    Mekanisme pertukaran data yang diterapkan dalam platform mengambil alih sebagian besar pekerjaan pembuatan paket untuk sinkronisasi data, sehingga mengurangi pengkodean seminimal mungkin. Selama proses pertukaran, mekanisme standar platform 1C:Enterprise digunakan - mekanisme pertukaran data; untuk setiap UNF seluler, simpul pertukaran data dibuat di UNF besar; di UNF besar dan seluler, layanan registrasi perubahan digunakan untuk melacak perubahan data sejak sinkronisasi terakhir, dll.

    Aplikasi seluler memulai pertukaran data, menggunakan mekanisme platform, menghasilkan paket pertukaran (berisi pengidentifikasi aplikasi seluler dan data yang diperbarui pada UNF seluler sejak sinkronisasi terakhir) dan mengirimkannya ke UNF besar. Berdasarkan informasi di paket awal, CNF besar mempersiapkan CNF seluler data yang diubah di CNF besar sejak sinkronisasi terakhir dan mengemasnya ke dalam paket. Paket dalam format XDTO adalah objek metadata 1C yang diserialkan dalam XML; Ukuran setiap paket tidak lebih dari 500 objek.

    Mobile UNF mengumpulkan paket data ini demi paket. Setelah mengunduh paket terakhir, UNF seluler mulai memproses data yang diterima - memproses dokumen, direktori catatan, dll. Jika terjadi gangguan koneksi, melanjutkan paket didukung; Kami menulis sendiri mekanisme pelanjutan untuk CNF (tidak ada dalam platform), namun karena CNF seluler disediakan dalam kode sumber, pengembang dapat melihat penerapan mekanisme tersebut dan meminjamnya untuk aplikasi mereka.

    Selama sinkronisasi awal CNF seluler dengan CNF besar, Anda tidak dapat bekerja di CNF seluler - jendela modal muncul yang menunjukkan kemajuan proses. Semua sinkronisasi selanjutnya bersifat latar belakang dan tidak menghalangi pengoperasian UNF seluler.

    Daftar lengkap objek yang dipertukarkan antara UNF seluler dan UNF besar:

    • Direktori:
      • Tata nama
      • Pihak rekanan
      • daftar pengguna
    • Dokumentasi:
      • Pesanan pelanggan
      • Tanda terima di meja kas
      • Pengeluaran dari mesin kasir
      • Faktur Pembelian
      • Faktur penjualan
      • Produksi
    • Register (tetapi tidak semua harga, tetapi hanya harga utama):
      • HargaPemasok
      • Harga Produk
    • Informasi tentang organisasi:
      • Nama
      • Informasi pajak
    Dalam UNF besar, produk mempunyai gambar – gambar produk sebenarnya. Untuk meminimalkan lalu lintas, kami tidak memuat gambar ke UNF seluler; gambar dimuat berdasarkan permintaan - misalnya, saat kami membuka kartu produk di UNF seluler.


    Kartu produk dengan gambar produk

    Evolusi aplikasi - pengembangan kasus penggunaan Situasi umum - bisnis sedang berkembang, dan fungsi CNF seluler pada satu perangkat seluler tidak lagi cukup. Karyawan lain (atau karyawan) muncul dalam bisnis, dan mereka juga perlu mengerjakan pesanan.

    Pada versi pertama UNF seluler, skenario perpindahannya cukup mudah - data yang dimasukkan dalam UNF seluler disalin ke database UNF besar, dan pengguna sekarang harus menyimpan catatan di komputer. Dalam hal ini, UNF seluler akan bekerja dalam mode bekerja dengan perintah, dan tidak mungkin lagi menyimpan catatan (seperti pada UNF seluler versi mandiri).

    Hal ini, tentu saja, sangat tidak nyaman bagi pengguna akhir - dia sudah terbiasa menyimpan catatan dari perangkat seluler, tetapi di sini dia terpaksa duduk di depan keyboard komputer. Tidak semua orang akan senang dengan hal ini.

    Oleh karena itu, kami telah memperluas daftar skenario pengoperasian UNF seluler. Munculnya layanan cloud kami http://1cfresh.com, berdasarkan teknologi cloud 1cFresh, membantu kami dalam hal ini. Sekarang dimungkinkan untuk menempatkan CNF berukuran besar di cloud. Kami telah menjelaskan tiga skenario penggunaan aplikasi seluler seiring pertumbuhan bisnis pengguna:

  • Bisnis yang cukup kecil. Akuntansi dilakukan pada satu perangkat seluler.
  • Bisnis berkembang - karyawan bermunculan. Anda dapat menginstal UNF seluler di perangkat seluler karyawan. Pada saat yang sama, Anda harus dapat bertukar data antar perangkat seluler untuk menyinkronkan data; Untuk ini, kami memutuskan untuk tidak menggunakan pertukaran file, tetapi menggunakan untuk sinkronisasi (dan pada saat yang sama untuk cadangan) versi UNF besar yang terletak di cloud http://1cfresh.com. Saat Anda mengaktifkan skrip ini, sebuah instance CNF besar dibuat di cloud http://1cfresh.com, yang databasenya akan digunakan untuk menyinkronkan data antar perangkat seluler. Menggunakan satu perangkat seluler dalam skenario ini gratis, untuk setiap perangkat tambahan kami mengenakan biaya 75 rubel/bulan, Anda dapat menggunakan tidak lebih dari tiga perangkat dalam skenario ini. Pada saat yang sama, pengguna perangkat seluler dapat diberi peran yang telah ditentukan sebelumnya - perwakilan penjualan, teknisi layanan, tenaga penjualan (konfigurasi peran terperinci juga dimungkinkan); Fungsionalitas aplikasi seluler akan dibatasi. Anda juga dapat bekerja melalui klien web atau klien tipis dengan CNF besar yang dihosting di cloud, namun fungsionalitas CNF cloud akan dikurangi menjadi fungsionalitas CNF seluler. Namun tidak perlu bekerja langsung di cloud UNF - semua pekerjaan hanya dapat dilakukan dari perangkat seluler.
  • Bisnis ini telah berkembang menjadi perusahaan skala menengah. Dalam hal ini, masuk akal untuk menyewa versi lengkap UNF besar di cloud untuk menerima (melalui klien web atau klien tipis) fungsionalitas tambahan - CRM (paket termasuk penyertaan CRM di UNF seluler, tetapi untuk sekarang hanya tersedia dalam versi besar), manajemen gudang, pembentukan harga yang diperluas, kemampuan untuk bekerja sama dengan bank dan. Dalam hal ini, jumlah perangkat seluler yang bekerja dengan CNF besar tidak dibatasi (untuk setiap perangkat dikenakan biaya tambahan sesuai tarif, seperti untuk satu tempat kerja; 1 lisensi untuk CNF di Fresh atau untuk CNF “kotak” memberi hak untuk menggunakan 1 aplikasi seluler secara gratis).
  • Pengalaman monetisasi aplikasi Aplikasi seluler UNF, seperti yang sudah saya tulis, gratis. Beberapa waktu lalu, kami memutuskan untuk memonetisasi aplikasi kami (menggunakan fungsionalitas pembelian dalam aplikasi yang diterapkan di platform seluler 1C:Enterprise versi 8.3.8), menjual fungsionalitas tambahan - produksi, dan kemampuan untuk melakukan sinkronisasi dengan perangkat seluler tambahan.


    Fungsi Produksi adalah pembelian satu kali, dan kemampuan untuk melakukan sinkronisasi dengan perangkat seluler tambahan dikemas sebagai langganan yang harus diperbarui setiap bulan. Menariknya, hanya 3 minggu setelah penambahan fungsi belanja, mobile UNF berada di 15 besar di Google Play untuk penjualan aplikasi bisnis.Kesimpulan Mobile UNF adalah produk yang relatif kecil (dalam hal volume kode sumber), namun cukup populer. Kami berharap cerita tentang evolusinya akan bermanfaat bagi pembuat produk pengguna akhir seluler baik yang menggunakan teknologi 1C maupun alat pengembangan lainnya.

    Perlu diingat bahwa pada platform seluler 1C Anda dapat membuat aplikasi yang berinteraksi tidak hanya dengan backend server 1C; protokol yang digunakan untuk pertukaran data dalam aplikasi seluler pada platform 1C tidak bergantung pada platform (layanan web dan HTTP, dukungan untuk XML dan JSON, dll.). Jadi, jika Anda perlu mengembangkan klien seluler lintas platform (Android, iOS, Windows) dengan cepat dan dinamis, dengan kemampuan untuk bekerja offline tanpa koneksi Internet yang konstan untuk aplikasi bisnis Anda, maka platform seluler 1C mungkin merupakan pilihan terbaik untukmu.

    Perkenalan

    Versi baru platform 1C (8.3.5) memiliki banyak fungsi baru. Omong-omong, bagi mereka yang belum tahu, ada sumber daya di mana pengembang 1C menjelaskan inovasi yang muncul di platform. Salah satunya adalah mekanismenya. Ini menarik perhatian saya dan saya ingin menerapkan sesuatu untuk bersenang-senang. Ide segera muncul di benak saya untuk membuat sesuatu yang mirip dengan website, tetapi ide ini tidak akan dipahami bahkan di infostart, jadi saya membuangnya dari kepala saya. Sepertinya sudah dibuang, tetapi idenya diubah menjadi sesuatu yang tidak berskala besar, sesuatu yang dapat diterapkan secara nyata dalam kehidupan - aplikasi web seluler.
    Saya percaya bahwa aplikasi web seluler dengan beban rendah dan sederhana untuk sejumlah pengguna terbatas, misalnya karyawan, dapat diimplementasikan dalam 1C menggunakan layanan HTTP.

    Aplikasi web seluler "Kontak"

    Saya akan mulai dengan hasilnya. Aplikasi web seluler "Kontak" terlihat sederhana, dan kenyataannya memang demikian. Pada awalnya, Anda hanya melihat kolom untuk mencari kontak.

    Mari kita mencari seseorang (untuk memulai pencarian, Anda harus memasukkan setidaknya 3 karakter). Seseorang telah ditemukan.

    Sebut saja Alexei.

    Mari kita menulis surat kepada Timofey.

    Itu saja aplikasi web seluler.

    Omong-omong, sangat mudah untuk menyesuaikannya dengan konfigurasi apa pun.

    Sedikit tentang implementasi

    Alat yang digunakan:
    - Mekanisme layanan HTTP platform 1C (mulai dari versi 8.3.5)
    - Perpustakaan JavaScript jQuery (http://jquery.com)
    - Perpustakaan JavaScript jQuery seluler (http://jquerymobile.com)
    - 1C:JSON()

    Layanan HTTP "ContactsMVP" menerima semua permintaan dan mentransfernya ke pemrosesan "ContactsMVP". Semua logika aplikasi web seluler terkonsentrasi pada pemrosesan "ContactsMVP".

    Seperti inilah pemrosesan permintaan.

    Fungsi ProcessRequest(Permintaan) Ekspor Jika MatchesResource(Permintaan, "/index.html") Lalu Kembalikan GetResourceIndexHTML(); ElseIf MatchesResource(Request,"/application.js") Kemudian Kembalikan GetResourceApplicationJS(); ElseIf MatchesResource(Request,"/contacts.json") Kemudian Kembalikan GetResourceContactsJSON(Request); berakhir jika; Fungsi Akhir

    Dan seperti inilah, misalnya, tampilan kembali halaman index.html.

    Fungsi GetResourceIndexHTML() Respon = HTTPServiceResponse baru(200); Teks = GetLayout("IndexHTML").GetText(); Jawaban.SetBodyFromString(Teks); Response.Headers.Insert("Tipe Konten", "teks/html"); Kembalikan Balasan; Fungsi Akhir

    Tidak ada yang rumit. Anda dapat mempelajari mekanismenya lebih detail dengan mengunduh ContactsMVP.dt

    Fitur publikasi

    Ada beberapa kesulitan kecil saat memublikasikan layanan HTTP, jadi untuk memudahkan Anda, saya akan menguraikan beberapa catatan:
    - Terdapat penjelasan yang cukup detail tentang publikasi - baca lebih teliti.
    - Jangan lupa menjalankan konfigurator sebagai administrator sebelum mempublikasikan.
    - Dimungkinkan untuk meluncurkan layanan HTTP hanya dengan versi file; beberapa kesalahan terjadi dengan versi server-klien.
    - Agar aplikasi web seluler dapat berfungsi tanpa permintaan otorisasi, jika ada pengguna terdaftar di database, maka setelah dipublikasikan, di file default.vrd, parameter Usr dan Pwd harus ditambahkan ke string koneksi (titik. ib).

    Kesimpulan

    Semoga materi artikelnya bermanfaat bagi anda.

    Terima kasih atas perhatian Anda.

    Prototipe ini dibuat menggunakan Moqups– layanan sederhana dan nyaman untuk membuat tata letak dan konsep. Ini sangat cocok untuk pembuatan prototipe cepat aplikasi Android kecil. Untuk membuat prototipe proyek yang lebih serius, lebih baik menggunakan Photoshop dan Android UI Design Kit!.

    Deskripsi Aplikasi

    Aplikasi ini terdiri dari 3 layar:

    “Layar utama aplikasi” – saat diluncurkan, daftar tugas ditampilkan (tanggal jatuh tempo, nama tugas dan indikasi penyelesaiannya). Setelah tugas selesai, tugas tersebut ditandai sebagai selesai dalam daftar.

    Dengan mengklik tombol “Pertukaran Data”, karyawan dapat segera memulai prosedur untuk menerima tugas baru dari server. Pertukaran data dengan server juga dilakukan secara otomatis sehari sekali, sesuai jadwal yang ditentukan di pengaturan.

    "Pengaturan program" - di sini Anda mengatur parameter otorisasi dan alamat server 1C, dan juga menampilkan nomor identifikasi unik perangkat ini. Jadwal pertukaran otomatis juga dapat diatur di sini.

    Struktur pertukaran data antara klien seluler dan server 1C

    Jalurnya akan berupa tabel nilai (dalam istilah 1C), yang berisi 3 kolom:

    Membuat template aplikasi seluler di 1C

    Luncurkan 1C dan pilih direktori “Aplikasi Seluler”, tambahkan elemen baru, di mana:

      Di bidang “Pengidentifikasi”, tentukan SAMPLE_APP_TASKS (atau pikirkan yang lain), ini adalah pengidentifikasi aplikasi unik dalam konfigurasi Anda. Diperlukan untuk mengidentifikasi aplikasi secara unik selama proses pertukaran, karena Karyawan yang sama dapat menggunakan beberapa aplikasi di satu perangkat seluler.

      Di kolom “Nama”, masukkan nama aplikasi seluler Anda, misalnya Tugas.

    Tuliskan item direktori menggunakan tombol Tulis, lalu buat versi baru dan tentukan sebagai versi yang berfungsi untuk aplikasi Anda.

    Pilih grup “Data eksternal” di daftar “Metadata” dan klik tombol “Tambah” pada toolbar. Isikan parameter tabel baru seperti yang ditunjukkan pada gambar:

    Nama kolom dan tabel itu sendiri di sini, biasanya, ditentukan dalam bahasa Rusia, mereka akan digunakan untuk mengisi tabel dengan data menggunakan bahasa 1C bawaan.

    Setiap tabel data dalam aplikasi seluler harus memiliki kunci utama (PRIMARY KEY dalam istilah database relasional) bertipe string. Untuk semua tabel objek (direktori dan dokumen), kuncinya adalah representasi teks dari tautan (pengidentifikasi unik) dan diisi secara otomatis.

    Untuk tabel non-objek, seperti “daftar informasi” atau “tabel eksternal”, program harus menunjukkan cara pengisiannya. Salah satu opsinya adalah menyetel tanda “Indeks” untuk satu atau beberapa kolom tabel, seperti yang dilakukan dalam contoh kita untuk kolom “Tanggal Jatuh Tempo” dan “Tugas”. Artinya tabel tidak boleh memiliki dua tugas identik untuk tanggal yang sama.

    Klik OK, tabel akan ditambahkan ke pohon metadata, untuk aplikasi seluler nama-nama tersebut secara otomatis diterjemahkan ke dalam bahasa Latin.

    [Salah satu aturan FBA: di 1C kami menulis kode sumber dalam bahasa Rusia, di Java dalam bahasa Latin. Tidak adanya huruf Rusia pada pengidentifikasi, nama variabel, dan kelas akan menghindari banyak masalah saat merancang klien seluler]

    Ganti nama nama dari Latin ke Inggris. Pada prinsipnya, alfabet Latin dapat dibiarkan, tetapi kami telah memutuskan namanya (di atas tabel).

    Simpan perubahan dan klik tombol “Template aplikasi seluler” pada toolbar.

    “Direktori templat” – menentukan jalur ke direktori tempat file templat aplikasi seluler yang dihasilkan akan disimpan.

    Pada tab “Basic”, tentukan nama paket; ini harus berupa pengidentifikasi unik. Jika Anda memiliki situs web, gunakan situs tersebut untuk menghasilkan awalan. Dalam contoh kita, ini adalah ru.profi1c.samples.tasks

    Pada tab "Layanan Web", alamat server ditunjukkan sebagai 10.0.2.2; secara default, ini adalah alamat komputer Anda ketika diakses dari emulator Android.

    Di bidang “Nama layanan web” dan “Subdirektori aplikasi”, masukkan data yang ditentukan saat menerbitkan layanan web.

    Pada tab “Tentang program”, isi informasi kontak dan informasi tambahan tentang aplikasi Anda; biarkan pengaturan pada tab “Pembuat Tabel” tidak berubah.

    Klik Buat, template proyek Android akan dibuat. Tutup jendela wizard pembuatan template, simpan perubahan dan tutup item direktori “Aplikasi seluler”.