“1C-Reyting: Mobil ofitsiant” mobil ilovasining dastlabki sozlamalari. Bitta ilovaning hikoyasi: mobil “1C: Kompaniyamizni boshqarish Mobil versiyaning xususiyatlari

"1C: Bizning kompaniyamizni boshqarish" (qisqartirilgan UNF) mobil ilovasi misolidan foydalanib, men mobil biznes ilovasining kelib chiqishi va bugungi kungacha birinchi versiyasining chiqarilishi evolyutsiyasini ko'rsatmoqchiman. Hozirda ilova 220 000 dan ortiq yuklab olingan; Ilova bepul, lekin u pullik variantlarga ega (ilova ichidagi xaridlar orqali amalga oshiriladi).


Mobil UNFning birinchi versiyasi 2012 yilda 1C: Enterprise mobil platformasining birinchi versiyalaridan birida yaratilgan. O'sha paytda "1C: Kichik kompaniyani boshqarish" mijoz-server konfiguratsiyasi (keyinchalik nomi shunday edi), kichik kompaniya faoliyatini avtomatlashtirish dasturi - savdo, xaridlar, mijozlar va etkazib beruvchilar bazasi, omborxona mavjud edi. boshqaruv, ishlab chiqarish va boshqalar.

1C: Enterprise kross-platformali mobil platformasida yozilgan ko'pgina mobil ilovalar singari, mobil UNF ham iOS, Android va Windows tizimlarida mavjud.

Vazifa quyidagicha qo'yildi: "katta" UNF ish stsenariylarining bir qismini qo'llab-quvvatlaydigan mobil ilovani yaratish. Ilova avtonom tarzda ishlashi va ma'lumotlarni "katta" UNF bilan sinxronlashtirishi kerak (bundan keyin matnni ortiqcha yuklamaslik uchun UNFning mijoz-server versiyasiga nisbatan "katta" so'zini tirnoqsiz yozaman). Katta CNF bilan ishlashda "mobil" xodimlarning stsenariylari - savdo vakili, xizmat ko'rsatish muhandisi, sotuvchi - qo'llab-quvvatlanishi kerak.

Birinchi versiya 1 kishi-oyda yaratilgan. Mobil ilovani yaratishda ba'zi metama'lumotlar ob'ektlari (kataloglar, hujjatlar) yirik UNF ob'ektlari asosida amalga oshirildi. Ammo ba'zi funksiyalarni noldan dasturlash kerak edi, masalan, katta UNF bilan ma'lumot almashish jarayoni. To'g'ri, ma'lumotlar almashinuvi bilan bog'liq holda, biz ozgina dasturlashimiz kerak edi - biz kodlashni minimal darajaga tushiradigan standart platforma mexanizmlaridan (xususan, almashinuv rejalaridan) foydalandik.

Ma'lumotlarni sinxronlashtirish bilan ishlashni soddalashtirishdan tashqari, 1C platformasi to'liq xususiyatli mobil ilovani yaratish ishini sezilarli darajada osonlashtiradi, ishlab chiquvchiga ro'yxatlar (jadvalli va ierarxik) kabi interfeys komponentlarini ularni qidirish, kiritish maydonlari bilan ta'minlaydi. qidiruv, hisobotlar uchun jadvallar, diagrammalarning keng doirasi, WiFi va Bluetooth printerlarida chop etish qobiliyati va boshqalar.

Mobil versiyaning xususiyatlari Mobil ilovaning funksionalligini tanlashning ikkita asosiy strategiyasi mavjud. Birinchisi, "bitta dastur - bitta funktsiya". Masalan, omborxonada tovarlarni qabul qilish uchun mo‘ljallangan mobil ilova, u faqat o‘rnatilgan kamera yordamida mahsulotning shtrix kodini skanerlashi va qabul qilingan mahsulot haqidagi ma’lumotlarni serverga jo‘natishi mumkin. Ikkinchi strategiya - keng "barchasi birida" funksiyasiga ega mobil ilovani yaratish. Ikkala yondashuv ham to'g'ri; Mobil UNFni yozishda biz ikkinchi yondashuvni tanladik - bizning ilovamiz o'z mavzuidagi ko'plab vazifalarni o'z ichiga oladi va kichik tashkilot ehtiyojlariga xizmat qiladigan to'liq avtonom ishlashi mumkin. Ushbu yondashuvning yana bir afzalligi shundaki, foydalanuvchi bir ilovadan bir nechta o'zaro bog'liq funksiyalar bilan ishlashi mumkin.

Mobile UNF mobil qurilmaning funksional imkoniyatlaridan keng foydalanadi, xususan:

  • Qurilmaning o'rnatilgan kamerasi mahsulot kartasini to'ldirishda mahsulotni suratga olish, shtrix kodlari va QR kodlarini o'qish uchun ishlatilishi mumkin.
  • To'lov uchun hisob-faktura mijozga elektron pochta yoki SMS orqali yuborilishi mumkin
  • Qarshi tomonni mobil qurilmaning manzillar kitobidan tanlash mumkin
  • Agar kontragentning telefon raqami bo'lsa, siz kontragentga qo'ng'iroq qilishingiz yoki bir tegish bilan SMS yuborishingiz mumkin; agar elektron pochta ko'rsatilgan bo'lsa, xat yuboring; agar manzil ko'rsatilgan bo'lsa, uni xaritada ko'rsating.
  • Hujjatlarni Wi-Fi va Bluetooth orqali printerlarga chop etishingiz mumkin
Mobil UNF ma'lumotlar bazasini Yandex.Disk-ga zaxiralash va tiklash va ma'lumotlar bazasini pochta orqali yuborish imkoniyati mavjud.

Mobil UNF konfiguratsiyasi juda spartan ko'rinadi (quyida skrinshotga qarang):

  • 8 ta ma'lumotnoma (katta UNFda 273 ta ma'lumotnoma mavjud)
  • 7 ta hujjat (katta UNFda - 125)
  • 3 ta hujjat jurnali (katta UNFda - 24)
  • 3 ta axborot registrlari (katta UNFda - 357)
  • 4 ta jamg'arish registrlari (katta UNFda - 64)

Mobil UNFning asosiy ob'ektlari

Ammo, bunday kam sonli dastur ob'ektlariga qaramay, mahsulot juda funktsional bo'lib chiqdi.

Mobil UNFning qiziqarli xususiyati shundaki, undan ko'pincha 1C haqida hech qachon eshitmagan odamlar (ha, bizning mamlakatimizda bundaylar bor), o'zlarining kichik biznesini hisobga olish uchun mobil ilovaga muhtoj bo'lganlar foydalana boshlaydilar ( masalan, uy hunarmandchiligi). Ular shunchaki Google Play yoki AppStore-da qidirish orqali topdilar, sharhlarni o'qib chiqdilar va ishlay boshladilar.

Oflayn rejimda ishlash Ushbu ish stsenariysi barcha buxgalteriya hisobi faqat mobil qurilmada amalga oshirilganda juda kichik tashkilotlar uchun mo'ljallangan. Bu, masalan, "uy" biznesi bo'lishi mumkin - uyda zargarlik buyumlarini yasash va uni VKontakte sahifasida sotish. Yoki hatto kichik do'kon ham bo'lishi mumkin - men shaxsan Lego konstruktorlarini sotishga ixtisoslashgan o'yinchoqlar do'koni yozuvlarni faqat UNFning mobil versiyasida saqlaganini ko'rdim. Mobil UNF WiFi va Bluetooth printerlarida chop etishi mumkinligini hisobga olsak, u juda ko'p muammolarni hal qilish uchun ishlatilishi mumkin. Mobil UNF buyurtmalarni qayta ishlash, schyot-fakturalar va invoyslarni kiritish, pul tushumlari va xarajatlarini hisobga olishni qo'llab-quvvatlaydi.Server bilan sinxronizatsiya rejimida ishlash (birinchi versiyalar) Oldingi versiyalarda mobil UNF-da server bilan sinxronlash rejimida buxgalteriya funksiyalari mavjud bo'lmagan va ishlaydi. unda asosan buyurtmalar (buyurtmalarni qabul qilish va bajarish) va tegishli faoliyat (kontragentlar, tovarlar va xizmatlar ma'lumotnomalarini yuritish va boshqalar) bilan amalga oshirildi.

Tovarlar va xizmatlar, pudratchilar va buyurtmalar bo'yicha ma'lumotnomalar yirik UNF bilan sinxronlashtirildi.


Birinchi versiyalarda mobil va yirik UNF o'rtasida ma'lumotlar almashinuvi

Mobil qurilmalardan kiritilgan buyurtmalar katta UNFda yakunlandi va sinxronlashtirilganda ular buyurtmalar uchun mas'ul bo'lganlarning mobil qurilmalariga tushdi. Mobil qurilmalarga kiritilgan naqd pul tushumlari, tovarlarni sotish va h.k. kabi hujjatlar yirik UNFga bordi, lekin mobil qurilmalar o'rtasida sinxronlashtirilmadi. Sinxronizatsiya rejimida mobil ilovadagi barcha ishlar asosan buyurtmalar atrofida amalga oshirildi - ularni qabul qilish va bajarish; mobil qurilmada to'liq hisobga olish amalga oshirilmadi, buning uchun kompyuterda katta CNF dan foydalanish kerak edi.

Birinchi versiyalarda shunday edi, lekin keyinchalik biz vaziyatni o'zgartirdik va foydalanuvchilar uchun qulayroq bo'lishi uchun mobil CNF-dan foydalanish stsenariylari ro'yxatini kengaytirdik.

Ma'lumotlarni sinxronlash haqida bir oz. Mobil va katta UNF o'rtasida ma'lumotlar almashinuvi veb-xizmatlar orqali amalga oshiriladi; mobil UNF katta UNF tomonida joylashtirilgan veb-xizmatlarni chaqiradi. Katta va mobil CNFdagi ma'lumotlar tuzilmalari har xil; Arxitekturani loyihalashda biz ma'lumotlar almashinuvining 2 variantini ko'rib chiqdik:
  • Mobil CNF ma'lumotlar strukturasini takrorlaydigan katta CNFda ma'lumotlar strukturasini yarating va mobil CNF bilan birma-bir ma'lumot almashing. Katta UNFdagi ma'lumotlarni o'zgartirganda, siz yangi/o'zgartirilgan ma'lumotlarni ushbu dublikat tuzilmaga o'tkazishingiz kerak va mobil UNF bilan ma'lumot almashgandan so'ng, mobil qurilmadan kelgan va dublikat tuzilmasida joylashgan ma'lumotlarni katta UNFga aylantirishingiz kerak. format.
  • Katta UNF tuzilmalari bilan to'g'ridan-to'g'ri ma'lumotlarni almashish, almashish qoidalariga muvofiq ma'lumotlarni "parvozda" aylantirish.
  • Biz ikkinchi variantni tanlashga qaror qildik. Birinchi variant, garchi u ma'lumotlar almashinuvining soddaligi bilan bog'liq ba'zi afzalliklarni va'da qilgan bo'lsa-da, mobil UNFning yangi versiyasida ma'lumotlar strukturasi o'zgarganda (kengaytirilganda) vaziyatni yaxshi hal qilmadi; Yakkama-yakka ma'lumotlar almashinuvi ishlashda davom etishi uchun katta UNF serverini yangilash kerak bo'ladi. Bu ko'p sabablarga ko'ra qabul qilinishi mumkin emas edi.

    Platformada amalga oshirilgan ma'lumotlar almashinuvi mexanizmlari kodlashni minimal darajaga tushirishga imkon beruvchi ma'lumotlarni sinxronlashtirish uchun paketlarni yaratish ishlarining ko'p qismini oladi. Ayirboshlash jarayonida 1C: Enterprise platformasining standart mexanizmi - ma'lumotlar almashinuvi mexanizmi qo'llaniladi; Har bir mobil UNF uchun katta UNFda ma'lumotlar almashinuvi tugunlari yaratiladi; katta va mobil UNFda oxirgi sinxronizatsiyadan keyin o'zgargan ma'lumotlarni kuzatish uchun o'zgarishlarni ro'yxatga olish xizmatidan foydalaniladi va hokazo.

    Mobil ilova platforma mexanizmlaridan foydalangan holda ma'lumotlar almashinuvini boshlaydi, almashuv paketini (o'z ichiga mobil ilova identifikatori va oxirgi sinxronizatsiyadan beri mobil UNFda yangilangan ma'lumotlarni o'z ichiga oladi) yaratadi va uni yirik UNFga yuboradi. Boshlang'ich paketdagi ma'lumotlarga asoslanib, katta CNF mobil CNF uchun oxirgi sinxronizatsiyadan beri katta CNFda o'zgartirilgan ma'lumotlarni tayyorlaydi va ularni paketlarga joylashtiradi. XDTO formatidagi paketlar XMLda ketma-ketlashtirilgan 1C metama'lumotlar obyektlari; Har bir paketning hajmi 500 ta ob'ektdan oshmaydi.

    Mobil UNF ushbu ma'lumotlar paketini paket bo'yicha yig'adi. Oxirgi paketni yuklab olgandan so'ng, mobil UNF olingan ma'lumotlarni qayta ishlashni boshlaydi - hujjatlarni qayta ishlash, ro'yxatga olish kataloglari va boshqalar. Ulanish buzilgan taqdirda, paketlarni qayta tiklash qo'llab-quvvatlanadi; Biz CNF uchun qayta tiklash mexanizmini o'zimiz yozdik (u platformada emas), lekin mobil CNF manba kodida taqdim etilganligi sababli, ishlab chiquvchilar mexanizmning amalga oshirilishini ko'rib chiqishi va uni o'z ilovalari uchun qarzga olishlari mumkin.

    Mobil CNF-ni katta CNF bilan dastlabki sinxronlashtirishda siz mobil CNF-da ishlay olmaysiz - jarayonning borishini ko'rsatadigan modal oyna paydo bo'ladi. Barcha keyingi sinxronizatsiyalar fon hisoblanadi va mobil UNF ishlashiga to'sqinlik qilmaydi.

    Mobil va yirik UNF o'rtasida almashinadigan ob'ektlarning to'liq ro'yxati:

    • Kataloglar:
      • Nomenklatura
      • Qarama-qarshi tomonlar
      • foydalanuvchilar ro'yxati
    • Hujjatlar:
      • Mijoz buyurtmalari
      • Kassada kvitansiya
      • Kassa apparatidan olingan xarajatlar
      • Sotib olish fakturasi
      • Sotish hisob-fakturasi
      • Ishlab chiqarish
    • Ro'yxatdan o'tish (lekin barcha narxlar emas, balki faqat asosiylari):
      • Narxlar yetkazib beruvchilar
      • Mahsulotlar Narxlari
    • Tashkilot haqida ma'lumot:
      • Ism
      • Soliq ma'lumotlari
    Katta UNFda mahsulotlarning rasmlari - haqiqiy mahsulotlarning tasvirlari mavjud. Trafikni minimallashtirish uchun biz rasmlarni mobil UNF-ga yuklamaymiz, ular talab bo'yicha yuklanadi - masalan, mobil UNFda mahsulot kartasini ochganimizda.


    Mahsulot tasviri bilan mahsulot kartasi

    Ilovaning evolyutsiyasi - foydalanish holatlarining rivojlanishi Odatiy vaziyat - biznes o'sib bormoqda va bitta mobil qurilmada mobil CNF funksionalligi endi etarli emas. Biznesda boshqa xodim (yoki xodimlar) paydo bo'ladi va ular ham buyurtmalar bilan ishlashlari kerak.

    Mobil UNFning birinchi versiyalarida harakatlanuvchi stsenariy juda oddiy edi - mobil UNFga kiritilgan ma'lumotlar yirik UNF ma'lumotlar bazasiga ko'chirildi va foydalanuvchi endi kompyuterda yozuvlarni saqlashi kerak edi. Bunday holda, mobil UNF buyurtmalar bilan ishlash rejimida ishlaydi va endi yozuvlarni yuritish mumkin bo'lmaydi (mobil UNFning mustaqil versiyasida bo'lgani kabi).

    Bu, albatta, oxirgi foydalanuvchi uchun unchalik qulay emas edi - u allaqachon mobil qurilmadan yozuvlarni saqlashga odatlangan edi, ammo bu erda u kompyuter klaviaturasida o'tirishga majbur bo'ldi. Bundan hamma ham xursand bo'lavermaydi.

    Shuning uchun biz mobil UNF ishlashi uchun stsenariylar ro'yxatini kengaytirdik. Bunda bizga 1cFresh bulutli texnologiyasiga asoslangan http://1cfresh.com bulutli xizmatimizning paydo bo'lishi yordam berdi. Endi bulutda katta CNF joylashtirish mumkin. Biz foydalanuvchining biznesi o'sishi bilan mobil ilovadan foydalanishning uchta stsenariysini tasvirlab berdik:

  • Juda kichik biznes. Buxgalteriya hisobi bitta mobil qurilmada amalga oshiriladi.
  • Biznes rivojlanmoqda - xodimlar paydo bo'ldi. Mobil UNFni xodimlarning mobil qurilmalariga o'rnatishingiz mumkin. Shu bilan birga, ma'lumotlarni sinxronlashtirish uchun mobil qurilmalar o'rtasida ma'lumot almashish imkoniyatiga ega bo'lishingiz kerak; Buning uchun biz fayl almashinuvidan foydalanmaslikka qaror qildik, lekin sinxronizatsiya uchun (va ayni paytda zaxira uchun) http://1cfresh.com bulutida joylashgan katta UNF versiyasidan foydalanishga qaror qildik. Ushbu skriptni yoqsangiz, http://1cfresh.com bulutida katta CNF nusxasi yaratiladi, uning ma'lumotlar bazasi mobil qurilmalar o'rtasida ma'lumotlarni sinxronlashtirish uchun ishlatiladi. Ushbu stsenariyda bitta mobil qurilmadan foydalanish bepul, har bir qo'shimcha qurilma uchun biz oyiga 75 rubl to'laymiz, ushbu stsenariyda siz uchtadan ko'p bo'lmagan qurilmadan foydalanishingiz mumkin. Shu bilan birga, mobil qurilmalar foydalanuvchilariga oldindan belgilangan rollar berilishi mumkin - savdo vakili, xizmat ko'rsatish muhandisi, sotuvchi (rollarning batafsil konfiguratsiyasi ham mumkin); Mobil ilovaning funksionalligi mos ravishda cheklanadi. Siz bulutda joylashgan katta CNF bilan veb-mijoz yoki nozik mijoz orqali ham ishlashingiz mumkin, ammo bulutli CNF funksiyasi mobil CNF funksiyasiga kamayadi. Lekin to'g'ridan-to'g'ri UNF bulutida ishlash shart emas - barcha ishlarni faqat mobil qurilmalardan amalga oshirish mumkin.
  • Biznes o'rta darajadagi firma darajasiga ko'tarildi. Bunday holda, (veb-mijoz yoki nozik mijoz orqali) qo'shimcha funktsiyalarni - CRM (rejalar mobil UNF-ga CRM-ni o'z ichiga oladi) olish uchun bulutda katta UNF-ning to'liq huquqli versiyasini ijaraga olish mantiqan. endi u faqat katta versiyada mavjud), omborlarni boshqarish, kengaytirilgan narxlarni shakllantirish, banklar bilan ishlash qobiliyati va. Bunday holda, katta CNF bilan ishlaydigan mobil qurilmalar soni cheklanmagan (har bir qurilma uchun bitta ish joyi uchun bo'lgani kabi tarifga muvofiq qo'shimcha to'lov olinadi; Fresh-dagi CNF yoki "qutili" CNF uchun 1 ta litsenziya beradi. 1 ta mobil ilovadan bepul foydalanish huquqi).
  • Ilovalarni monetizatsiya qilish tajribasi UNF mobil ilovasi, men allaqachon yozganimdek, bepul. Bir muncha vaqt oldin biz ilovamizni monetizatsiya qilishga qaror qildik (1C: Enterprise mobil platformasining 8.3.8 versiyasida amalga oshirilgan ilova ichidagi sotib olish funksiyasidan foydalangan holda), qo'shimcha funktsiyalarni - ishlab chiqarishni va qo'shimcha mobil qurilmalar bilan sinxronizatsiya qilish qobiliyatini sotish.


    Ishlab chiqarish funksiyasi bir martalik xarid bo‘lib, qo‘shimcha mobil qurilmalar bilan sinxronlash imkoniyati har oy yangilanishi kerak bo‘lgan obuna sifatida paketlangan. Qizig'i shundaki, xarid qilish funksiyasi qo'shilganidan atigi 3 hafta o'tgach, mobil UNF biznes ilovalari sotuvi bo'yicha Google Play'da eng yaxshi 15 talikka kirdi.Xulosa Mobile UNF nisbatan kichik (manba kod hajmi bo'yicha), lekin juda mashhur mahsulot. Umid qilamizki, uning evolyutsiyasi haqidagi hikoya 1C texnologiyalari va boshqa ishlab chiqish vositalaridan foydalangan holda oxirgi foydalanuvchi mobil mahsulotlarini yaratuvchilar uchun foydali bo'ladi.

    1C mobil platformasida siz nafaqat 1C serverining backend bilan o'zaro ta'sir qiladigan ilovalarni yaratishingiz mumkinligini eslatib o'tish foydali bo'ladi; 1C platformasidagi mobil ilovalarda ma'lumotlar almashinuvi uchun ishlatiladigan protokollar platformadan mustaqil (veb va HTTP xizmatlari, XML va JSON-ni qo'llab-quvvatlash va boshqalar). Shunday qilib, agar siz biznes-ilovangiz uchun doimiy Internetga ulanmasdan oflayn rejimda ishlash imkoniyatiga ega bo'lgan kross-platforma (Android, iOS, Windows) mobil mijozini tez va dinamik ravishda ishlab chiqishingiz kerak bo'lsa, unda 1C mobil platformasi eng yaxshi tanlov bo'lishi mumkin. Siz uchun.

    Kirish

    1C platformasining yangi versiyasi (8.3.5) juda ko'p yangi funksiyalarga ega. Aytgancha, bilmaganlar uchun 1C ishlab chiquvchilari platformada paydo bo'layotgan innovatsiyalarni tasvirlaydigan resurs mavjud. Ulardan biri mexanizmdir. Bu mening e'tiborimni tortdi va men o'yin-kulgi uchun biror narsani amalga oshirmoqchi bo'ldim. Menga darhol veb-saytga o'xshash narsa qilish g'oyasi keldi, lekin bu g'oya hatto infostartda ham tushunilmas edi, shuning uchun men uni boshimdan uloqtirdim. U tashlab yuborilgandek tuyuldi, lekin g'oya unchalik katta bo'lmagan narsaga, hayotda haqiqiy dasturni topadigan narsaga - mobil veb-ilovaga aylandi.
    Cheklangan miqdordagi foydalanuvchilar, masalan, xodimlar uchun kam yuklangan va oddiy mobil veb-ilova HTTP xizmatlaridan foydalangan holda 1C-da amalga oshirilishi mumkinligiga ishonaman.

    Mobil veb-ilova "Kontaktlar"

    Natijadan boshlayman. "Kontaktlar" mobil veb-ilovasi oddiy ko'rinadi va aslida shunday. Boshida siz faqat kontaktni qidirish uchun maydonni ko'rasiz.

    Keling, kimnidir qidiramiz (qidiruvni boshlash uchun siz kamida 3 ta belgini kiritishingiz kerak). Kimdir topildi.

    Keling, Alekseyga qo'ng'iroq qilaylik.

    Keling, Timofeyga xat yozaylik.

    Bu mobil veb-ilovaning hammasi.

    Aytgancha, uni har qanday konfiguratsiyaga moslashtirish juda oson.

    Amalga oshirish haqida bir oz

    Ishlatilgan asboblar:
    - 1C platformasining HTTP xizmatlari mexanizmi (8.3.5 versiyasidan boshlab)
    - jQuery JavaScript kutubxonasi (http://jquery.com)
    - jQuery mobile JavaScript kutubxonasi (http://jquerymobile.com)
    - 1C: JSON ()

    "ContactsMVP" HTTP xizmati barcha so'rovlarni qabul qiladi va ularni "ContactsMVP" ishloviga o'tkazadi. Mobil veb-ilovaning barcha mantig'i "ContactsMVP" ni qayta ishlashda jamlangan.

    So'rovni qayta ishlash jarayoni shunday ko'rinadi.

    Funktsiya ProcessRequest(Request) Export If MatchesResource(Request, "/index.html") Keyin GetResourceIndexHTML(); ElseIf MatchesResource(Request,"/application.js") Keyin GetResourceApplicationJS(); ElseIf MatchesResource(Request,"/contacts.json") Keyin GetResourceContactsJSON(Request) ni qaytaring; endIf; EndFunction

    Va bu, masalan, index.html sahifasining qaytishi qanday ko'rinishga ega.

    Funktsiya GetResourceIndexHTML() Response = Yangi HTTPServiceResponse(200); Matn = GetLayout("IndexHTML").GetText(); Answer.SetBodyFromString(Matn); Response.Headers.Insert("Content-Type", "matn/html"); Javobni qaytarish; EndFunction

    Hech narsa murakkab emas. ContactsMVP.dt ni yuklab olib, mexanizmni batafsil o'rganishingiz mumkin

    Nashrning xususiyatlari

    HTTP xizmatini nashr qilishda ba'zi kichik qiyinchiliklar yuzaga keldi, shuning uchun siz uchun qulaylik yaratish uchun men ba'zi izohlarni keltiraman:
    - Nashr haqida juda batafsil tavsiflar mavjud - diqqat bilan o'qing.
    - Nashr qilishdan oldin konfiguratorni administrator sifatida ishga tushirishni unutmang.
    - HTTP xizmatini faqat fayl versiyasi bilan ishga tushirish mumkin edi, mijoz-server versiyasida xatolik yuz berdi.
    - Mobil veb-ilovaning avtorizatsiya so'rovisiz ishlashi uchun, agar ma'lumotlar bazasida ro'yxatdan o'tgan foydalanuvchilar bo'lsa, u holda nashr etilgandan so'ng default.vrd faylida ulanish qatoriga Usr va Pwd parametrlari qo'shilishi kerak (nuqta. ib).

    Xulosa

    Umid qilamanki, maqola materiali siz uchun foydali bo'ladi.

    E'tiboringiz uchun rahmat.

    • Oʻquv qoʻllanma

    Salom azizlar.

    Ushbu maqolada men sizni 1C + Android-da korporativ mobil ilovani ishlab chiqish jarayonini sezilarli darajada soddalashtiradigan yangi "FBA Toolkit" mahsuloti bilan tanishtirmoqchiman.
    "FBA Toolkit" bu:
    - Java-da mahalliy IDE-da "mahalliy" Android ilovasini ishlab chiqish;
    - 1C: Enterprise 8.1 (8.2) ma'lumotlar manbai, korporativ axborot tizimi sifatida.

    Avvalo, ramka Android uchun biznes-ilovalarni ishlab chiqmoqchi bo'lgan, ammo ular uchun yangi platformani o'zlashtirishda qiynalayotgan 1C dasturchilari uchun foydali bo'ladi. Rivojlanishni boshlash uchun Java bo'yicha asosiy bilim etarli bo'ladi. Keyinchalik, men sizga bir necha soat ichida mijoz-server ilovasining ishchi prototipini qanday yaratishni ko'rsataman.

    Ish joyini tayyorlash Rivojlanish jarayonining o'zini boshlashdan oldin, ishlab chiquvchining ish joyini tayyorlash kerak. Majburiy:

    1. O'rnating va sozlang:
    - Java SDK + Eclipse + Android SDK;
    - Web server (IIS yoki Apache);
    - 1C: Enterprise 8.1 (8.2)

    2. Eclipse uchun ikkita kutubxona loyihasini import qiling: SVN omboridan ActionBarSherlock va ru_profu1c_fba.

    3. "FBA" konfiguratsiya taqsimotini o'rnating va uni 1C-ga asoslangan dastur yechimingiz bilan birlashtiring.

    Barcha oldindan konfiguratsiya jarayoni maqolalarda batafsil tavsiflangan:
    Ishlab chiquvchining ish joyini tayyorlash
    "FBA" konfiguratsiya taqsimotini o'rnatish
    "FBA" konfiguratsiyasini dastur yechimi bilan birlashtirish va uni veb-serverda nashr qilish

    O'rnatish ko'p vaqt talab qilmasligi kerak va ehtimol sizda ba'zi kerakli dasturlar o'rnatilgan.

    Ilova tavsifi Biz menejerga korxonadagi ishlarning holati to'g'risida muntazam ravishda ma'lumot berish uchun mo'ljallangan "Menejerga hisobot" mobil ilovasini yaratamiz. Ilova 3 ta ekrandan iborat bo'ladi:
  • "Kirish" - dasturni ishga tushirishda foydalanuvchi avtorizatsiyasi.
  • "Hisobotlar ro'yxati" ilovamizning asosiy ekranidir. Mavjud hisobotlar ro'yxati 1C ma'lumotlar bazasidan ma'lumotlarni ko'rish va yangilash imkoniyati bilan ko'rsatiladi.
  • "Dastur sozlamalari" - bu erda foydalanuvchi avtorizatsiya parametrlarini va 1C serverining manzilini o'rnatadi, 1C serveri bilan avtomatik almashish jadvalini sozlaydi.
  • Ilova 1C serveridan ma'lumotlarni qabul qilishning 2 ta variantini amalga oshiradi:

  • "Omborlardagi tovarlar" haqida hisobot. U serverda yaratilgan va HTML hujjati sifatida tuzilgan, u shunchaki mobil ilovada ko'rsatiladi. Eng oddiy variant - hisobot shakli sobit va uni o'zgartirib bo'lmaydi.
  • "Moliyaviy ko'rsatkichlar" hisoboti. Bu erda hisobot uchun manba ma'lumotlar jadval ko'rinishida olinadi, keyin esa hisobot tuzish uchun ishlatiladi. Ushbu variantning afzalliklari: hisobot chiqarishning bepul shakli, shu jumladan. grafik va diagrammalar shaklida; tanlash va saralashni o'rnatish mumkin.
  • 1C mobil ilovasini ishlab chiqishda mobil ilova shablonini yaratish 1C da boshlanadi, bu ajablanarli emas. Bu erda siz metadata tarkibini aniqlaysiz, almashinuv sxemasini sozlaysiz va kelajakdagi mobil ilovangiz shablonini qayta tiklaysiz.

    “Mobil ilovalar” katalogida “Menejerga hisobot” nomi va SAMPLE_REPORT_HEAD identifikatori bilan yangi element yarating.

    "Metama'lumotlar" ro'yxatida "Tashqi ma'lumotlar" guruhini tanlang va asboblar panelidagi "Qo'shish" tugmasini bosing. Rasmda ko'rsatilganidek, yangi jadvalning parametrlarini to'ldiring:

    "Ko'rsatkich" - hisobot indikatorining sinov ko'rinishi, satr (250)
    "Qiymat" - indikatorning raqamli qiymati, raqam (15.2)
    Bu erda ustunlar va jadvalning o'zi nomlari, qoida tariqasida, rus tilida ko'rsatilgan, ular o'rnatilgan 1C tilidan foydalangan holda jadvalni ma'lumotlar bilan to'ldirish uchun ishlatiladi. OK tugmasini bosing, jadval metadata daraxtiga qo'shiladi, mobil ilova uchun nomlar avtomatik ravishda lotin tiliga tarjima qilinadi.

    Shunday qilib, biz "Moliyaviy ko'rsatkichlar" hisoboti uchun ma'lumotlarni uzatadigan qiymatlar jadvalining tuzilishini (1C bo'yicha) tayyorladik. "Omborlardagi tovarlar" ikkinchi hisoboti uchun ma'lumotlar tashqi fayl sifatida uzatiladi.

    "Almashinuv sxemasi" yorlig'ida "Yuklab olish" belgisi belgilanganligini tekshiring. "Loading" bayrog'i muhim emas, chunki Biz ushbu jadvalga 1C mobil ilovasidan olingan o'zgarishlarni qayta ishlamoqchi emasmiz.

    O'zgartirishlaringizni saqlang. Asboblar panelidagi "Mobil ilova shabloni" tugmasini bosing, mobil ilovangiz parametrlarini o'rnating

    "Shablon katalogi" - yaratilgan mobil ilova shablon fayllari saqlanadigan katalogga yo'l.

    "Asosiy" yorlig'ida paket nomini belgilang, bu noyob identifikator bo'lishi kerak. Agar veb-saytingiz bo'lsa, undan prefiks yaratish uchun foydalaning. Ushbu misolda men ru.profi1c.samples.report.head ni ko'rsatdim

    "Veb-xizmat" yorlig'ida IP-manzil 10.0.2.2; sukut bo'yicha, bu Android emulyatoridan kirishda kompyuteringizning manzilidir. "Veb-xizmat nomi" va "Ilova pastki katalogi" maydonlarida veb-xizmatni nashr qilishda ko'rsatilgan ma'lumotlarni kiriting.

    Iltimos, esda tutingki, 1C 8.2 uchun sizda qo'shimcha /ws pastki katalogiga ega bo'lgan dastur quyi katalogiga ega bo'lasiz, ya'ni demoFba/ws, batafsil ma'lumot uchun qarang.
    Yaratish-ni bosing, Android loyihasi shabloni yaratiladi.

    1C da hisobotlar uchun manba ma'lumotlarini tayyorlash 1C konfiguratorida fba Event obuna modulini oching va "Tashqi jadvalni yuborishdan oldin" protsedurasiga quyidagi kodni qo'shing:

    Agar AbbrLP(Mobile Application. Code) = "SAMPLE_REPORT_HEAD" Agar TableName = "Menejerga hisobot" bo'lsa, // xayoliy hisobot ma'lumotlari ListTemp = fbaTotal.FromLineWithSeparators("Naqd pul, kreditorlik qarzlari, jami debitorlik qarzlari, Tovar qoldiqlari, kreditorlik qarzlari, Savdo hajmi"); RNG = NewRandomNumberGenerator (123456789); Har bir ListElement From ListTemp Cycle uchun NewRow = ExternalTable.Add(); NewRow.Indicator = ListElement.Value; NewRow.Value = RNG.RandomNumber(0.999999) + Sin (RNG.RandomNumber(0.999)); EndCycle; endIf; EndIf
    Ushbu misolda jadval xayoliy ma'lumotlar bilan to'ldirilgan, haqiqiy ilovada siz bu erda ixtiyoriy sonli hisobot ko'rsatkichlarini topshirishingiz mumkin.
    Biz birinchi hisobot uchun ma’lumotlarni saralab oldik, qolgani uni ikkinchisiga tayyorlash. Xuddi shu fbaEvent obuna modulida ikkilik ma'lumotlarni yuborish uchun tayyorlash protsedurasiga quyidagi kodni qo'shing:

    DD = Aniqlanmagan; Agar AbbrLP(MobileApp.Code) = "SAMPLE_REPORT_HEAD" Agar Identifikator = "REPORT_PRODUCTS_IN_STOK" bo'lsa FileName = GetTemporaryFileName("html"); Hisobot = Reports.ProductsInWarehouses.Create(); Agar Report.SaveReportInHTML(FileName) bo'lsa, DD = New BinaryData(FileName); Fayllarni o'chirish (Fayl nomi); endIf; endIf; endIf; Qaytish DD;
    Kodga izoh beraman. Mobil ilova "REPORT_PRODUCTS_IN_STOK" identifikatori bilan o'zboshimchalik bilan ma'lumotlarni (fayl ko'rinishida) so'raganda, hisobot 1C da bajariladi va uning natijasi vaqtinchalik faylga saqlanadi. Ushbu vaqtinchalik fayl ikkilik ma'lumotlar sifatida o'qiladi va mobil ilovaga o'tkaziladi. Vaqtinchalik fayl o'chiriladi.

    Bu holda html fayli qanday yaratilgani biz uchun muhim emas. Elektron jadval hujjatini HTML sifatida saqlash yoki HTMLni qo'lda yaratish uchun standart 1C mexanizmidan foydalanishingiz mumkin. Chiqarish misolini "FBA demo" konfiguratsiyasi, "Omborlardagi mahsulotlar" hisobotida ko'rishingiz mumkin.

    1C bilan hammasi tugadi, keling, Android-da mobil ilovani ishlab chiqishga o'tamiz.

    Android ilovasini loyihalash Biz 1C da yaratilgan Android loyihasi shablonini Eclipse ish maydoniga import qilamiz.

    Eclipse-ni ishga tushiring va loyihani import qiling: Fayl > Import... Android guruhida “Ish maydonida Android kodi mavjud” bandini tanlang, “Keyingi” tugmasini bosing, Android loyihasi shablonlari katalogiga yo‘lni belgilang va “Finish” tugmasini bosing, yangi loyiha bo‘ladi. ish maydoniga qo'shildi. Agar biron bir qiyinchilik tug'ilsa, qarang, jarayon rasmlarda tasvirlangan.

    1. Ma'lumotlar manbai 1C dan olingan qiymatlar jadvali bo'lgan "Moliyaviy ko'rsatkichlar" hisobotini yarating. Buning uchun ToChiefReport.java yangi sinfini qo'shing, bu erda to'liq manba kodi:

    Ko'rsatish

    /** * Mahalliy sqlite ma'lumotlar bazasi ma'lumotlaridan foydalangan holda hisobot yaratish misoli. * ma'lumotlar manbai "Menejerga hisobot berish" tashqi jadvalidir * */ umumiy sinf ToChiefReport SimpleMapHtmlReportni kengaytiradi ( @Override public int getResIdIcon() ( return R.drawable.report_01; ) @Override public int getResIdTitle() ( R ni qaytaring. string.report_name_to_chief; ) @Override public void build(Context context, IReportBuilderResult builderResult) ( try ( makeReport(context); ) catch (SQLException e) ( e.printStackTrace(); setHeader1("Op, hisobot yaratilmadi!"); ) super.build (kontekst, builderResult); ) private void makeReport(Kontekst konteksti) SQLException ni chiqaradi ( DBHelper helper = new DBHelper(context); // Hisobot va jadval sarlavhasi setHeader2("Moliyaviy ko'rsatkichlar"); setTableHeader("Nomi" ", "Miqdor, rub ."); // Jadval qatorlari qo'shilgan tartibda bo'ladi Map mapData = new LinkedHashMap(); // Mahalliy sqlite ma'lumotlar bazasidan ma'lumotlarni tanlash, tashqi jadval // "Menejerga hisobot berish ” ExTableRaportRukovoditelyuDao dao = yordamchi .getDao(ExTableRaportRukovoditelyu.class); Ro'yxat qatorlari = dao.select(); uchun (ExTableRaportRukovoditelyu qator: qatorlar) ( mapData.put(row.pokazatel, row.znachenie); ) setTableData(mapData); ))
    Kodga izoh beraman. SimpleMapHtmlReport mavhum klassi, undan meros bo'lib o'tadi, ikki ustunli jadval bilan oddiy HTML hisobotini yaratish uchun mo'ljallangan.
    Birinchi ikkita usul getResIdIcon() va getResIdTitle() ro'yxatda ko'rsatiladigan hisobotimizning belgisi va sarlavhasini qaytaradi. “Yaratish” hodisasi ishlov beruvchisida makeReport usuli chaqiriladi, bu bizning hisobotlarni kompilyatsiya qilish amaliyotimizdir.
    Hisobotni tuzishda avval hisobot va jadval nomi o'rnatiladi, so'ngra mahalliy sqlite jadvalidagi barcha yozuvlar hisobot jadvali qatorlari sifatida o'qiladi. Va nihoyat, setTableData() usulida biz hisobot jadvali uchun ma'lumotlarni o'rnatamiz. Oh, ochiq-oydin narsalarni sharhlash qanchalik qiyin.


    2.Ikkinchi hisobot yarating, bu yerda hamma narsa yanada sodda:

    Ko'rsatish

    /** * Kompilyatsiya qilingan hisobotga misol, oddiygina Html faylini chiqaradi. Ushbu misolda * ma'lumotlar fayli 1C da yaratilgan va almashish paytida mobil mijozga uzatilgan * */ umumiy sinf ProductsInStokReport SimpleCompiledHtmlReport ni kengaytiradi ( // 1C dan olingan fayl saqlanadigan nom (almashtirish tartibiga qarang // MyExchangeTask). ) umumiy statik yakuniy satr REPORT_FILE_NAME = "products_in_stok.html"; public ProductsInStokReport(Fayl fayli) ( super(file); ) @Override public int getResIdIcon() ( return R.drawable.report_02; ) @Override public int getResIdTitle() () R.string.report_name_products_in_stokni qaytaring;))


    3. 1C serveri bilan oldindan belgilangan almashish tartibini kengaytiramiz, ya'ni. Keling, unga yana bir qadam qo'shamiz - kompilyatsiya qilingan fayl shaklida ikkinchi hisobotimiz uchun ma'lumotlarni olish. Keling, ExchangeTask avlodi bo'lgan MyExchangeTask sinfini qo'shamiz:

    Ko'rsatish

    /** * Standart almashish tartibi maxsus qoidalar bilan to'ldirilgan. * Bundan tashqari, bitta tuzilgan fayl olinadi - hisobot. * */ umumiy klass MyExchangeTask ExchangeTask-ni kengaytiradi ( // Hisobot identifikatori 1C shaxsiy statik yakuniy satrida aniqlanganidek ID_REPORT_PRODUCTS_IN_STOK = "REPORT_PRODUCTS_IN_STOK"; ommaviy MyExchangeTask(ExchangeVariant exchangeVariant, WSHelper wsrvHelper, DVHelper wsrvHelperxelperv(DVO) H elper, dbOpenHelper); ) @Override himoyalangan mantiqiy doExecute() ni tashlaydi Istisno ( // Oldindan belgilangan qoidalarga muvofiq almashinuv qadamlarini bajarish mantiqiy muvaffaqiyat = super.doExecute(); if (muvaffaqiyat) ( // O'zboshimchalik bilan ma'lumotlarni olish - bizning 2-chi hisobotimiz onStepInfo("Hisobotlarni qabul qilish.." . "); String fPath = appSettings.getCacheDir().getAbsolutePath() + "/" + ProductsInStokReport.REPORT_FILE_NAME; Fayl f = wsHelper.getLargeData(ID_REPORT_PRODUCTS_IN_STOK, null, "", fPath=); muvaffaqiyat = (f) ;) muvaffaqiyatga qaytish;))
    Hisobot ma'lumotlarini olish uchun getLargeData veb-xizmati usuli qo'llaniladi, u muvaffaqiyatli bo'lsa, natijani belgilangan yo'lda faylga saqlaydi. ID_REPORT_PRODUCTS_IN_STOK identifikatoriga e'tibor bering, u "Yuborish uchun ikkilik ma'lumotlarni tayyorlash" usulida 1C bilan bir xil bo'lishi kerak.


    4. Asosiy shaklda hisobotlar ro'yxatini ko'rsatish. Res\activity_main.xml faylini oching va hisobotlar ro'yxatini ko'rsatadigan listView qo'shing:

    MainActiviy.java-da biz quyidagilarni qo'shamiz:

    A) ro'yxat uchun mahalliy o'zgaruvchi
    shaxsiy ListView ro'yxati;
    b) ishga tushirish usuli
    private void init() ( list = (ListView) findViewById(android.R.id.list); // Hisobotlar roʻyxatini koʻrsatish uchun adapter yarating ReportListAdapter adapteri = new ReportListAdapter(this,createReportList()); list.setAdapter( adapter); list.setOnItemClickListener(new OnItemClickListener() ( @Override public void onItemClick(AdapterView ota-onasi, View view, int position, long id) ( // Hisobotni bosganingizda dialog oynasida ko'rsating IReport report = (IReport) list.getItemAtPosition(pozitsiya) ; report.onShow(MainActivity.this); ) )); )
    va forma tartibini o'rnatgandan so'ng uni onCreate() da chaqirish
    setContentView(R.layout.activity_main); init();
    c) hisobotlar ro'yxatini ishga tushirish usuli
    /* * Hisobotlar roʻyxatini tayyorlang */ private List createReportList() ( List lst = new ArrayList(); // Birinchi hisobotni yarating, fayl saqlanadigan vaqtinchalik katalog // IReport sozlamalari hisoboti = yangi ProductsInStokReport (yangi Fayl(getAppSettings() .getCacheDir(), ProductsInStokReport.REPORT_FILE_NAME)); lst.add(report); // lst.add(new ToChiefReport()); ) roʻyxatga boshqa hisobotlarni yarating va qoʻshing.
    d) sizning qoidalaringiz bo'yicha birjani ishga tushirish tartibi
    /* * Qoidalarimga muvofiq almashinuvni boshlash. Iltimos, rejalashtiruvchida * (agar o'rnatilgan bo'lsa) almashinuv standart qoidalarga muvofiq qolganligini unutmang */ private void startExchangeMyRules(ExchangeVariant varianti, mantiqiy bekor qilinishi mumkin) ( // veb-xizmat usullarini chaqirish uchun yordamchi WSHelper wsHelper = new WSHelper(getExchangeSettings()) ; MyExchangeTask vazifasi = yangi MyExchangeTask(variant, wsHelper, getHelper()); startExchange(vazifa, bekor qilinadi); )
    Va startExchangeMyRules(ExchangeVariant.FULL, rost) uchun onOptionsItemSelected ishlov beruvchisidagi startExchange(ExchangeVariant.FULL, true) almashish protsedurasiga chaqiruvni o'zgartiring.

    Ilova tayyor, avtorizatsiya shakllari va dastur sozlamalari avtomatik ravishda yaratiladi, biz ularni o'zgartirmaymiz.
    Keling, uni emulyatorda sinab ko'raylik. Agar biror joyda xato qilmagan bo'lsangiz, dastur ishga tushadi. Biroq, avtorizatsiya oynasi o'rniga sozlamalar oynasi darhol ko'rsatiladi, chunki avtorizatsiya ma'lumotlari (foydalanuvchi nomi va parol) ko'rsatilmagan.

    Iltimos, foydalanuvchi nomingizni kiriting: ivanov
    Va parol: 123456

    1C ma'lumotlar bazasini ishga tushiring va "Mobil xodimlar" katalogini oching. Mobil qurilma sifatida oldindan belgilangan elementni belgilang "Qurilma emulyatori", "Mobil ilovalar" jadval bo'limiga "Menejerga hisobot" ilovasini qo'shing va bir xil foydalanuvchi nomi va parolni o'rnating.

    Emulyatorda almashish jarayonini boshlang (o'ng paneldagi "Yuqoriga" strelkasi bilan tugma)

    Ayirboshlash natijasi bildirishnomada ko'rsatiladi:

    Ilovangizni ishga tushirish uchun ustiga bosing (yoki almashinuv muvaffaqiyatsiz bo'lsa, xato tafsilotlarini ko'rish uchun).

    Keling, nima bo'lganini tekshirib ko'raylik. Ro'yxatdagi hisobotni bosing:

    Ko'rsatish


    Ajoyib! Hisobotlar ko'rsatiladi, siz tugma yoki imo-ishoralar yordamida o'lchovni o'zgartirishingiz mumkin.


    Ilova tayyor, u juda funktsional va osongina kengaytiriladigan bo'lib chiqdi. Boshqa hisobotlarni qo'shish qiyin bo'lmaydi.
    Hujjatlarni *.doc yoki *.pdf kabi turli formatlarda oʻtkazishingiz va ularni koʻrish uchun tashqi ilovalardan foydalanishingiz mumkin. Misol manba kodiga qarang, yana 3 ta hisobot mavjud:
    • Google Chart Tools yordamida diagramma
    • jQuery Plot plaginidan foydalangan holda chizma
    • PDF hisobotining tashqi ilova tomonidan chiqishi (PdfReport.java)
    Men buni batafsil tasvirlab bermayman va shuning uchun maqola uzoq bo'lib chiqdi. Agar sizda biron bir savol bo'lsa, sharhlarda javob berishga tayyorman. Mana natija:

    Ko'rsatish


    Toʻliq misol kodini https://xp-dev.com/svn/fba_toolkit_public/samples/fbaSample4ReportHead/ manzilidan yuklab olishingiz mumkin.

    Hisobotlarni yaratish uchun HTML-dan foydalanish sizga turli xil hisobotlarni yaratishga imkon beradi, shu jumladan. va interaktiv elementlar bilan. Misol uchun, bizning loyihalarimizdan birida quyidagi hisobot ishlatiladi:

    Ko'rsatish

    • "Qarz" maydoni uchun miqdorga qarab shartli rang sxemasi qo'llaniladi;
    • to'lanmagan hisob-fakturalarning to'liq ro'yxati faqat "Hammasi" belgisini bosganingizda ochiladi, sukut bo'yicha faqat oxirgi 4 tasi ko'rsatiladi.

    Va, albatta, siz hech narsa bilan cheklanmaysiz, hisobotlar va jadvallarni ko'rsatish uchun uchinchi tomon kutubxonalaridan foydalanishingiz mumkin, masalan, achartengine yoki o'zingizning grafik/diagrammangizni yaratishingiz mumkin (ko'plab misollar mavjud, shu jumladan Android SDK-da ham).

    Hammasi shu, boshqa misollarni http://profi1c.ru veb-saytida topishingiz mumkin.
    Yaqin kelajakda FBA kutubxonasining interaktiv elementlari va adapterlari bo'yicha darslarni qo'shish, shuningdek, oflayn mapsforge xaritalari bilan qanday ishlashni ko'rsatish rejalashtirilgan.

    Fly in malham FBA Toolkit mahsuloti tijorat asosida tarqatilishi rejalashtirilgan bo'lib, u endi "demo versiya" maqomida. Siz undan sinov va o'rganish uchun bepul foydalanishingiz mumkin.
    Cheklovlar:
    • demo litsenziyasi tugagandan so'ng dastur ishlashni to'xtatadi, ya'ni. 31.12.13 dan keyin;
    • Ishga tushganda bildirishnoma ko'rsatiladi:

    Yaqin kelajakda (bir oydan ko'p bo'lmagan) tijorat versiyasi paydo bo'ladi, narxi va litsenziyalash tartibi haqidagi ma'lumotlar bizning veb-saytimizga qo'shiladi.

    Oxirigacha o'qiganingiz uchun rahmat. Men sizning savollaringizga 1C va Android bilan bog'liq sharhlarda javob berishga tayyorman.

    Teglar: teglar qo'shish

    1C 8.3 mobil ilovasini ishlab chiqish amaliyoti (1-qism)

    Ushbu maqolada biz planshetlar uchun ko'proq yoki kamroq oddiy dasturni yaratishga muvaffaq bo'lgunimizcha, biz nimani sinab ko'rganimiz va qanday xatolarga yo'l qo'yganimiz haqida gapiramiz. Ilova dastlab faqat Android uchun 1C: Buyurtmalar konfiguratsiyasi va ishlab chiqish uchun mobil ilova asosida ishlab chiqilgan.

    Dastlab, "noto'g'ri" yondashuv tanlangan: dasturni kompilyatsiya qilish va uni planshetga qo'lda yuklash. Sizga shuni eslatib o'tamanki, mobil ilovalarni yaratish uchun siz "Mobil ilovalarni yaratish yordamchisi" (MobileAppWizzard) dan foydalanasiz. Keyin, forumlardan birida rivojlanish uchun mobil ilova yordamida chiroyli yechim topildi. Ushbu ilova mobil platformani o'rnatish bilan birga keladi. Ishlab chiqish vaqtida platformaning 8.3.3.24 versiyasi ishlatilgan. "Android" papkasida siz 1cem.apk faylini topishingiz mumkin. Bu rivojlanish uchun mobil ilova. Uning bizni ko‘p vaqt tejagan eng katta afzalligi shundaki, siz mobil ilovani veb-serverda nashr qilishingiz va planshetingizda http://[Veb server manzili]/[Mobil ilova nomi] kabi yo‘lni belgilashingiz mumkin. .

    Planshet kompyuterida, qo'shilgan dastur sozlamalarida siz "Konfiguratordan yangilash" katagiga belgi qo'yishingiz mumkin va har safar dasturni ishga tushirganingizda, u veb-serverga ulanishga va yangilanishlarni tekshirishga harakat qiladi.

    Mobil ilova ishga tushirilgach, uni takomillashtirish jarayoni boshlandi.

    Nima talab qilindi:

    1. Markaziy ma'lumotlar bazasi va mobil qurilma o'rtasida almashinuvni o'rnating.

    2. Asimmetrik sinxronlashni tashkil qilish: markaziy ma’lumotlar bazasidan mahsulot ob’ektlari, kontragentlar, ombordagi tovarlar qoldig‘i va o‘zaro hisob-kitoblar bo‘yicha ma’lumotlarni yuklab olish va mobil ilovadan faqat mijozlar buyurtmalarini yuklab olish.

    3. Menejerlar uchun balanslar, narxlar va o'zaro hisob-kitoblarni tezda ko'rishlari mumkin bo'lgan oddiy interfeysni amalga oshiring.

    Sinov bosqichida "Boshqariladigan dastur" oraliq ma'lumotlar bazasidan foydalanildi, chunki 1C:Orders demo ilovasi dastlab boshqariladigan dastur bilan almashish uchun mo'ljallangan.

    Birinchi krep bo'lak bo'lib chiqdi. Tom ma'noda. Markaziy ma'lumotlar bazasi bilan almashish uchun v82.ComConnector ishlatilgan. Men uni o'rnatish haqida batafsil ma'lumot bermayman, bu haqda juda ko'p alohida materiallar mavjud. Men faqat duch kelgan qiyinchiliklarni boshdan kechiraman.

    1. 64-bitli server OTda com obyektlaridan foydalanish. Muammoni hal qilish uchun biz Komponent xizmatlarida sozlangan COM+ Ilovalar paketidan foydalandik.

    2. Boshqa serverdan Com-ga masofaviy qo'ng'iroq. Chaqirilayotgan server dastur serveri roliga ega bo'lishi va COM+ tarmoqqa kirish sozlangan bo'lishi kerak. Bundan tashqari, Apache serveri tegishli huquqlarga ega bo'lishi kerak (ya'ni vakolatli foydalanuvchi sifatida xizmat sifatida ishga tushirish)

    Com ulanishlari bilan bog'liq muammolar tufayli biz ishlaydigan ma'lumotlar bazasini veb-xizmatlarga o'tkazishga qaror qildik.

    Veb-xizmatlarni nashr qilish haqida ham ko'p yozilgan, ammo u qanday ishlashi haqida yozilgan. Bu qanday ishlamasligi haqida quyida baham ko'raman.

    Ishchi baza 8.2 platformasida, mobil ilovada mos ravishda 8.3 da joylashtirilgan.

    Ilovalarni nashr qilishda avval 8.3, keyin esa 8.2. vaqti-vaqti bilan veb-mijoz 8.3 da "Oqim formatidagi xato" xatosi yoki "mijoz va server platformalarining versiyalari farqlanadi" xato xabari paydo bo'ldi. Qayta nashr qilish ham, Apache-ni qayta ishga tushirish ham yordam bermaydi. Ammo nashrni o'chirib qo'yish va qayta ulanish yordam beradi.

    Keyinchalik, foydalanuvchiga avtorizatsiya qilishda (ws ta'rifini yaratishda) kulgili xatoga yo'l qo'ydim. Kompyuterda sinovdan o'tganda, uzoq nom bilan avtorizatsiya qilish oson. Android operatsion tizimida ishlaydigan planshetdan bir xil foydalanuvchini avtorizatsiya qilishga urinayotganda, avtorizatsiya boshlanishidan oldin tugadi. Eksperimental tarzda, kirill alifbosida login uzunligi 22 belgi bilan cheklanganligini hisoblash mumkin edi. Shu bilan birga, kirill harflari va raqamlarning kombinatsiyasi 27 belgidan iborat login bilan tizimga kirish imkonini berdi. Bu kirill harflarining o‘zgarishi bilan bog‘liq, degan gumon bor. Shunday qilib, masalan, Firefox brauzerida Vikipediya qatori “ivo” “” ga aylantiriladi.

    Texnologik jihatdan, 8.3.3 mobil platformasi hozirda bir qator cheklovlarga ega. Eng kutilgan yangilik, menimcha, so'rovlarni qo'llab-quvvatlashdir. Biroq, mobil platforma dinamik ro'yxatlardagi o'zboshimchalik bilan so'rovlarni hali qo'llab-quvvatlamaganligi sababli, biz "boshqa yo'lni tanlashimiz" kerak edi.

    Narxlar va balanslar bilan mahsulot katalogini ko'rsatish muammosini hal qilish uchun quyidagi yondashuv qo'llanildi:

    1. Nomenklatura ma'lumotnomasi shaklida ikkita jadval tuzildi. Birinchisi, dinamik ro'yxat, katalogning o'zi. Dinamik ro'yxat filtri faqat guruhlarni ko'rsatish uchun tuzilgan. Ikkinchi jadval - haqiqiy balanslar va narxlar. Dinamik ro'yxat chizig'i faollashtirilganda, serverda qiymatlar jadvali to'ldiriladi, so'ngra ikkinchi jadvalga chiqariladi. Narxlar va balanslarni olish uchun ob'ekt modeli ishlatilgan. Daf bilan bu raqslarning barchasi odatdagi qalin mijoz usuli "chiziqni chiqarishda" yoki "ma'lumotni qabul qilishda" mavjud emasligi va ustunga raqamlarni dinamik ravishda chizish mumkin emasligi sababli amalga oshirildi.

    Shunga o'xshash yondashuv tanlov shaklida qo'llanilgan

    2. Joriy narxlar bilan chiziqni ko'rsatish uchun FormattedString mukammal edi.

    Quyida kod misoli keltirilgan.

    &OnServerWithoutContext Function RemainingWhenActivatingStringsOnServer(nom)RecordSet = InformationRegisters.ProductPrices.CreateRecordSet(); RecordSet.Selection.Product.Value = nom; RecordSet.Selection.Product.Use = Rost; Recordset.Read(); ArrayFormatStrings = Yangi massiv; Yozuvlar to‘plamidan har bir qator qatori uchun Formatlangan qatorlar massivini aylantiring.Qo‘shish(Yangi formatlangan qator(Set Qator.Price Type.Name,WebColors.Blue)); FormattedStrings massivi.Add(New FormattedString(" " + String(SetString.Price) + " ")); EndCycle; Yangi FormattedString(ArrayFormatStrings) ni qaytaring; // Ishlovchi tarkibini kiriting. EndFunction

    3. Mobil ilovaga ma'lumotnomalar, balanslar va narxlarni yuklash uchun kirish sifatida parametr tuzilmasini qabul qiluvchi va chiqish sifatida qiymatlar do'konini qaytaruvchi veb-xizmatidan foydalanildi. Yana bir noxush kashfiyot shundan iborat ediki, server tomonida ishlov berish juda uzoq davom etganda almashinuv ishdan chiqdi. Aftidan, qandaydir vaqt tugashi bor, shundan so'ng dastur ulanish uzilganiga "ishonadi" (garchi aslida ma'lumotlar ws ulanishi orqali ishchi ma'lumotlar bazasida qayta ishlansa ham) va xato bilan almashinuvni to'xtatadi. .

    Bunga yo'l qo'ymaslik uchun to'liq almashinuvni qismlarga bo'lish, diqqatni mobil ilovaga qaytarishga qaror qilindi. Bular. avval elementlarni, keyin kontragentlarni, keyin balanslarni va hokazolarni sinxronlashtiring.

    4. Hisobotlarni olish uchun 1C: Buyurtmalar konfiguratsiyasidagi kabi bir xil yondashuv qo'llaniladi. Parametrlari bo'lgan veb-xizmat chaqiriladi, ishchi ma'lumotlar bazasining server tomonida elektron jadval hujjati yaratiladi va keyin to'ldirilgan elektron jadval hujjati mobil ilovaga qaytariladi.

    Ushbu prototip Moqups yordamida yaratilgan– maketlar va kontseptsiyalarni yaratish uchun oddiy va qulay xizmat. Bu kichik Android ilovalarini tez prototiplash uchun juda mos keladi. Jiddiyroq loyihalarni prototiplash uchun Photoshop va Android UI Design Kit-dan foydalangan ma'qul!.

    Ilova tavsifi

    Ilova 3 ta ekrandan iborat:

    "Ilovaning asosiy ekrani" - ishga tushirilganda, vazifalar ro'yxati ko'rsatiladi (muddati, topshiriqning nomi va uning bajarilishi ko'rsatkichi). Vazifa bajarilgandan so'ng, u ro'yxatda bajarilgan deb belgilanadi.

    "Ma'lumotlar almashinuvi" tugmasini bosish orqali xodim darhol serverdan yangi vazifalarni qabul qilish tartibini boshlashi mumkin. Server bilan ma'lumotlar almashinuvi ham avtomatik ravishda kuniga bir marta, sozlamalarda ko'rsatilgan jadvalga muvofiq amalga oshiriladi.

    "Dastur sozlamalari" - bu erda siz avtorizatsiya parametrlarini va 1C server manzilini o'rnatasiz, shuningdek, ushbu qurilmaning noyob identifikatsiya raqamini ko'rsatadi. Bu yerda avtomatik almashish jadvali ham o'rnatilishi mumkin.

    Mobil mijoz va 1C serveri o'rtasida almashinadigan ma'lumotlarning tuzilishi

    Yo'l 3 ta ustunni o'z ichiga olgan qiymatlar jadvali (1C shartlarida) bo'ladi:

    1C da mobil ilova shablonini yaratish

    1C-ni ishga tushiring va "Mobil ilovalar" katalogini tanlang, yangi element qo'shing, bu erda:

      "Identifikator" maydonida SAMPLE_APP_TASKS ni belgilang (yoki boshqasini o'ylab ko'ring), bu sizning konfiguratsiyangizdagi noyob ilova identifikatoridir. Ayirboshlash jarayonida dasturni yagona aniqlash uchun kerak, chunki Bitta xodim bitta mobil qurilmada bir nechta ilovalardan foydalanishi mumkin.

      "Ism" maydoniga mobil ilovangiz nomini kiriting, masalan, Vazifalar.

    Write tugmasi yordamida katalog elementini yozing, so'ngra yangi versiya yarating va uni ilovangiz uchun ishchi versiya sifatida belgilang.

    "Metadata" ro'yxatida "Tashqi ma'lumotlar" guruhini tanlang va asboblar panelidagi "Qo'shish" tugmasini bosing. Rasmda ko'rsatilganidek, yangi jadvalning parametrlarini to'ldiring:

    Bu erda ustunlar va jadvalning o'zi nomlari, qoida tariqasida, rus tilida ko'rsatilgan, ular o'rnatilgan 1C tilidan foydalangan holda jadvalni ma'lumotlar bilan to'ldirish uchun ishlatiladi.

    Mobil ilovadagi har bir maʼlumotlar jadvali qator tipidagi birlamchi kalitga (relyatsion maʼlumotlar bazalari nuqtai nazaridan PRIMARY KEY) ega boʻlishi kerak. Barcha ob'ektlar jadvallari (kataloglar va hujjatlar) uchun kalit havolaning matnli ko'rinishidir (noyob identifikator) va avtomatik ravishda to'ldiriladi.

    "Axborot registr" yoki "tashqi jadval" kabi ob'ekt bo'lmagan jadvallar uchun dastur uni qanday to'ldirish kerakligini ko'rsatishi kerak. Bitta variant - bir yoki bir nechta jadval ustunlari uchun "Indeks" bayrog'ini o'rnatish, bu bizning misolimizda "Muddati" va "Vazifa" ustunlari uchun qilingan. Bu shuni anglatadiki, jadvalda bir xil sana uchun ikkita bir xil vazifa bo'lishi mumkin emas.

    OK tugmasini bosing, jadval metadata daraxtiga qo'shiladi, mobil ilova uchun nomlar avtomatik ravishda lotin tiliga tarjima qilinadi.

    [FBA qoidalaridan biri: 1C da biz manba kodini rus tilida, Java-da lotin tilida yozamiz. Identifikatorlar, o'zgaruvchan nomlar va sinflarda ruscha harflarning yo'qligi mobil mijozni loyihalashda ko'p muammolardan qochadi]

    Nomlarni lotin tilidan inglizchaga o'zgartiring. Asosan, lotin alifbosini tark etish mumkin edi, lekin biz allaqachon nomlar haqida qaror qabul qildik (jadvalda yuqorida).

    O'zgarishlarni saqlang va asboblar panelidagi "Mobil ilova shabloni" tugmasini bosing.

    "Shablon katalogi" - yaratilgan mobil ilova shablon fayllari saqlanadigan katalogga yo'lni belgilang.

    "Asosiy" yorlig'ida paket nomini belgilang, bu noyob identifikator bo'lishi kerak. Agar veb-saytingiz bo'lsa, undan prefiks yaratish uchun foydalaning. Bizning misolimizda bu ru.profi1c.samples.tasks

    "Veb-xizmat" yorlig'ida server manzili 10.0.2.2 sifatida ko'rsatilgan; sukut bo'yicha, bu Android emulyatoridan kirishda kompyuteringizning manzilidir.

    "Veb-xizmat nomi" va "Ilova pastki katalogi" maydonlarida veb-xizmatni nashr qilishda ko'rsatilgan ma'lumotlarni kiriting.

    "Dastur haqida" yorlig'ida kontakt ma'lumotlarini va arizangiz haqida qo'shimcha ma'lumotlarni to'ldiring, "Jadval generatori" yorlig'idagi sozlamalarni o'zgarishsiz qoldiring.

    Yaratish-ni bosing, Android loyihasi shabloni yaratiladi. Shablon yaratish ustasi oynasini yoping, o'zgarishlarni saqlang va "Mobil ilovalar" katalog elementini yoping