AppSheet Pro
367 subscribers
41 photos
30 links
AppSheetni oสปrganish uchun kerakli hammasi
AppSheetPro.uz
Download Telegram
Channel created
Channel photo updated
Assalomu alaykum.

Ismim Muhammadjavohir. Yanvar oyidan AppSheet no-code instrumentini o'rganishni boshladim. Bu kanalda o'rganish va loyihalar tuzish davomidagi foydali ma'lumotlarni ulashib turaman.
๐Ÿ‘7
Lokalizatsiya - dastur tilini tarjima qilish

AppSheetdagi tizim atamalari va matnlarni o'zbek tiliga o'girib ko'rdim.

Atamalar tarjimalari mana bu yerda bor.
https://docs.google.com/spreadsheets/d/1O2DvKYDlQg6aCq_26YV6M-Nu1K0qN_IzWezk-ziiYiA/edit?usp=sharing

Har yangi dasturda 100+ maydon qiymatini qayta kirgazmaslik uchun o'zbek tilidagi dasturlar uchun starter app yaratib, uning localizationini to'g'rilab qo'ygan yaxshi ekan.
Shu kabi har bir loyihada takrorlanish mumkin bo'lgan vaziyatlar uchun bir universal starter/shablon loyiha tuzib uni pishitib boravergan yaxshiyov.

Bir necha tilli dastur tuzganda esa mana bu YouTube videosidagi usuldan foydalanilarkan.
https://youtu.be/Uc_mUF8DE0U?si=4iLbmQgAQsURBuod
Translations jadvali tepadagi kabi Sheetsdan olib qo'shiladi va Localizationda LOOKUP funksiyasi ishlatiladi. Lekin hali o'zim sinab ko'rmadim.

โš ๏ธ Jadvallar qo'shilgandagi actionlar tarjima qilinmas ekan. Ularning "Display name" maydonini bittama-bitta tahrirlash kerak ekan.
๐Ÿ‘10โค1
Pasport validatsiyasi

Biron xodim yoki mijozning pasport ma'lumotlari kiritiladigan loyihalarda qo'l kelishi mumkin. Shu sababli chuqur tekshirilmadi.

Afsuski, dasturlashdagi kabi matnni tekshirishnin RegEx bilan bajariladigan yo'li hozircha yo'q ekan.

Validatsiya kodi:
AND(
LEN([_THIS]) = 9,
COUNT(
FILTER(
"Employees",
AND(
[Passport] = [_THIS],
[_RowNumber] <> [_THISROW].[_RowNumber]
)
)
) = 0
)


Validatsiya bilan birga xatolik uchraganda mos xato matni ko'rsatilishi uchun "Invalid value error" maydoniga ham formula joylanishi kerak.
IFS(
LEN([_THIS]) <> 9, "Pasport 9 ta belgidan iborat bo'lishi kerak",
COUNT(
FILTER(
"Employees",
AND(
[Passport] = [_THIS],
[_RowNumber] <> [_THISROW].[_RowNumber]
)
)
) <> 0, "Bu pasport raqami bazada mavjud"
)
๐Ÿ‘5
๐ŸŒ๐Ÿ’ป AppSheet va raqamlashtirish dunyosi bilan tanishuv

AppSheet bilan tanishish jarayonim 3 bosqichda bo'lgan. Yaxshi tomoni shu 3 bosqichning muhim nuqtalari YouTubeda suhbat ko'rinishida saqlab qolingan.

U videolarni ketma-ketlikda ko'rib bular haqida dastlabki to'liq kartinani tasavvur qilishingiz mumkin.

1๏ธโƒฃ Google Sheetsning imkoniyatlari. Google Sheetsda 15 ta kam veb ilova tuzish
https://www.youtube.com/live/DRofaw4MmyI?si=_OQm1WCqAP0hV1n7

2๏ธโƒฃ Kodsiz dasturlash va AppSheet imkoniyatlari bilan tanishuv
https://www.youtube.com/live/rQzfGt93now?si=_mU-Qt30Yu8WNZc6

3๏ธโƒฃ AppSheetda nimalar qilish mumkin? AppSheetda tuziladigan dasturlar bozori haqida
https://youtu.be/l0n10-uRKFA?si=m8myD4_O1eDfSst6

Raqamlashtirish va ilovalar tuzishga qiziquvchilarga ulashib qo'yamiz ๐Ÿ˜‰๐Ÿ˜Š

@appsheetpro_uz
๐Ÿ‘6๐Ÿ†’4
Dashboard bor, lekin yo'q ๐Ÿ˜ฑ

Shu holatni boshimdan o'tkazdim.

Loyihada dropdown qiymatlar uchun avval jadval tuzib keyin u jadval qiymatlarini kerakli nuqtada foydalanish mumkin. Shu jadvallarni bir joyda saqlash uchun dashboard tuzayotgandim.

Bu dashboardda sozlamalarga mos jadvallar bo'lgani uchun "Settings" nomini berdim.

1 marta tuzdim, previewda to'g'ri ko'rsatyapti. Loyihani saqladim. Yo'qolib qoldi.

3-4 marta qayta urindim.

Boshqa loyihamda "test" nomi bilan dashboard tuzib ko'rdim. Ishladi.

๐Ÿ’ก๐Ÿ’ก๐Ÿ’ก

Hamma gap "Settings" nomida ekan. Bu AppSheet tomonidan band qilingan (reserved) bo'lgani uchun uni saqlab bo'lmagan ekan.

#tip
๐Ÿ‘5๐Ÿคฏ5
"15 kun bo'ldi seni ko'rmaganimga" โŒ›๏ธ

Ikki sana orasida necha kun borligini hisoblash ko'p uchrashi mumkin bo'lgan talablardan.

Masalan:

- keyingi buyurtmani berishga 3 kun qolganda xabarnoma yuborish
- mahsulot do'konga kelganiga 60 kundan oshsa, unga chegirma biriktirilish
- kursni sotib olganiga 90 kundan oshgan mijozga qo'shimcha xizmatlar taklif qilish

Bu kabi holatlarda hayolga birinchi keladigan usul balki mana bunday bo'lar:
[A Sana] - [B Sana]

Afsuski, bu ish bermaydi (kamida shaxsan mendagi holatda).

AppSheetda ikki sana orasidagi kunlarni topish uchun sanalardagi soat farqini topib, keyin natijadagi qiymatni kunga aylantirish kerak bo'ladi.

HOUR([A Sana] - [B Sana]) / 24

===

Bizneslarda ko'p uchraydigan sanalarga oid shu kabi qanday holatlarga misol keltira olasiz?
๐Ÿ‘8๐Ÿ˜1
AppSheet jadval import qilish oynasi o'zgaribdi โšก๏ธ

Endi yangi dastur tuzayotganda 48 ta Sheets sahifasini birma-bir import qilib chiqish shart emas ๐Ÿ˜ฎโ€๐Ÿ’จ
๐Ÿ‘7
App Gallery ko'rinishidagi sahifa (view)

Bir loyihani mijoz bilan muhokama qilayotgandik. Dastur imkoni boricha sodda bo'lishi, sahifalar (views) ishlatishga qulay joylashtirilishini so'rashdi.

Smartfonlardagi dasturlar ikonkalari ko'pchilikka tanish. Shu sababli unga o'xshash bo'lishi taklifi berildi.

YouTubeda mana bu videoda buning bajarish yo'li ko'rsatilgan ekan.

Undan o'rganganlarimga ko'ra men ham bosh sahifada eng ko'p ishlatiladigan amallarni (action) shu ko'rinishda joylab ko'raman.

@appsheetpro_uz
๐Ÿ‘6โค1
Xomashyo xaridi balansini hisoblash โš–๏ธ
1-qism

Dasturdagi xomashyo sotib olish amaliga oid qismlarini tuzayotgandim. Avval faqatgina dollarda to'lov qilinadi degan yondashuvda boshladim. Sababi xomashyo uchun dollarda to'lov qilinishini aytishgandi.

Xarid balansi (yoki qarzdorlik) = Xarid narxi - Xaridga aloqador to'lovlar yig'indisi

Masala hal
[Fondagi notiq ovozi: "bu bola adashganini hali bilmasdi, muahahaha ๐Ÿ˜ˆ"]

Korxona egasi to'lovda nafaqat dollar, balki 5 xil usul bo'lishini so'radilar: so'm (naqd|karta), dollar(naqd|karta), bank o'tkazmasi (so'mda ะฟะตั€ะตั‡ะตัะปะตะฝะธะต).

"Ha, bo'ldi, tezda tayyor qilolaman" deb o'yladim.
[Tepadagi fonda aytilgan gaplar #2]

#keys
๐Ÿ‘6
Xomashyo xaridi balansini hisoblash โš–๏ธ
2-qism

Avvalgi holatga ko'ra to'lov jadvalida quyidagi maydonlar bor edi (keysga aloqadorlari)
- naqd dollar miqdori + mos kassa
- kartadagi dollar miqdori + mos kassa

Talabga ko'ra unga quyidagilar qo'shildi
- naqd so'm miqdori + mos kassa
- kartadagi so'm miqdori + mos kassa
- bank o'tkazmasi miqdori + mos kassa

Bu holatda balansni hisoblash uchun quyidagi formulani yozib ko'rdim. Unda xaridga aloqador so'm to'lovlari yig'indisini to'lovlardagi valyuta kursiga bo'lib davomidan dollardagi to'lovlar yig'indisini summadan ayirmoqchi bo'ldim.

[Total] - 
FLOOR(
(
SUM([Related RawMaterialPurchasePayments][UZSCashAmount]) +
SUM([Related RawMaterialPurchasePayments][USDCardAmount]) +
SUM([Related RawMaterialPurchasePayments][BankTransferAmount])
) /
IF(COUNT(SELECT(RawMaterialPurchasePayments[ID], TRUE)) > 0, ANY(
SELECT(
RawMaterialPurchasePayments[ExchangeRate],
AND(
[RawMaterialPurchaseID] = [ID],
[_RowNumber] = MAXROW("RawMaterialPurchasePayments", "_RowNumber")
)
)
), 12500)
) -
SUM([Related RawMaterialPurchasePayments][USDCashAmount]) -
SUM([Related RawMaterialPurchasePayments][USDCardAmount])


So'mni dollarga o'tkazish qismini bir nechta urinishda ham to'g'ri chiqara olmadim ๐Ÿ˜ข

Keyin esa ๐Ÿ’ก["tiding" ovoz effekti]

Tinchgina to'lov qatoriga "To'lovning dollardagi summasi (Total in USD)" ustunini qo'shdim. Shu usulda valyuta kursini chaqirib ishlash oson bo'ldi.
Xarid jami to'lovi va qarzdorligi dollarda hisoblangani uchun shu usul to'g'ri keldi.

Tepadagi allambalo formula o'rniga esa mana bu sodda, bir qator, shiringina, uti-puti formula yetarli bo'ldi.
[Total] - SUM([Related RawMaterialPurchasePayments][TotalInUSD])


#keys
๐Ÿ‘7๐Ÿ‘Œ1
Xomashyo xaridi balansini hisoblash โš–๏ธ
3-qism

Hisob-kitob tayyor. Endi ko'rinishini qulay qilishimiz kerak.

Rasmda mingliklar ajratib ko'rsatilganini payqagan bo'lishingiz mumkin. Avval undan emas va sondagi nollarni birma-bir sanab chiqish kerak bo'layotgandi.

Dastlabki formula
CONCATENATE("Kartadagi so'm balansi: ", [UZSCardAccountBalance])


Mingliklarni ajratib ko'rsatish uchun ozgina docs titkiladim. E'tibor bersam, TEXT() funksiyasiga butun son berilganda (0.00) mingliklarga bo'lib formatlab qaytararkan. Shu usuldan foydalandim.

CONCATENATE("Kartadagi so'm balansi: ", TEXT([UZSCardAccountBalance]))


Shu balansni hisoblashga oid yana bir qo'shimcha masala haqida keyingi postda.

#keys
๐Ÿ‘3๐Ÿ”ฅ2๐ŸŽ‰1
Xomashyo xaridi balansini hisoblash โš–๏ธ
4-qism

Avval bu sahifada faqat to'lov summasini kiritish maydoni bor edi. Mantiqiy olib qarasak, bu maydonga kassadagi mavjud miqdordan ko'pini kiritish to'g'ri bo'lmaydi.

Uni faqat validation - to'g'riligini tasdiqlash orqali ham bajarish mumkin. Lekin u holatda foydalanuvchi avval maydonga son kiritadi. Agar ko'proq kiritsa, undan keyingina ogohlantirish chiqadi. Avvaldan balansni ko'rib turgani yaxshi, deb o'yladim.

Ham balansni ko'rsatib, ham validation qilish kerak. Balansni ko'rishda mana bu turdagi formula ishlatildi.
ANY(
SELECT(
Accounts[Balance],
AND(
[Currency] = "So'm",
[CashOrCard] = "Naqd"
)
)
)


5 xil maydon uchun shu formulani moslab yozib chiqdim. Lekin ham yorliq (matn), ham validation uchun ishlatiladigan bo'lsa, 5x2=10 marta SELECT ishlashi kerak bo'lardi. So'rovlar soni 5 taligicha qolishi uchun boshqa yo'ldan yurdim.

Jadvalga kassa balansini yuqoridagi formula bilan hisoblab olib keladigan ustun qo'shdim, lekin uni ko'rinmaydigan qildim.

Balans yorlig'i (show-text) va validation uchun shu ustun qiymatidan foydalandim.
[_THIS] <= [UZSCashAccountBalance]


Shu bilan dastur qanchadir darajada tezroq ishlashiga hissa qo'sholdim, deb o'ylayapman.

#keys
๐Ÿ‘3๐Ÿ”ฅ1