QO‘NG‘IROQ

Bu xabarni sizdan oldin o'qiganlar bor.
Eng so'nggi maqolalarni olish uchun obuna bo'ling.
Elektron pochta
Ism
Familiya
Qo'ng'iroqni qanday o'qishni xohlaysiz
Spam yo'q

Va 1C 8.2 muhitida boshqariladigan shakldagi kod tuzilmasi uchun ma'lumotlarni uzatish ob'ekti.

Kirish

Keling, "boshqariladigan shakl" tushunchasining qisqacha tavsifi va 1C platformasining tegishli tushunchalari bilan boshlaylik. Platforma mutaxassislari ushbu bo'limni o'tkazib yuborishlari mumkin.

2008 yilda sotuvga chiqarildi yangi versiya 1C platformasi: Enterprise 8.2 (bundan buyon matnda boshqariladigan dastur deb yuritiladi), bu interfeys bilan ishlashning butun qatlamini butunlay o'zgartiradi. Bunga buyruqlar interfeysi, shakllar va oyna tizimi kiradi. Bu nafaqat konfiguratsiyadagi foydalanuvchi interfeysini ishlab chiqish modelini o'zgartiradi, balki mijoz ilovasi va server o'rtasidagi funksionallikni ajratish uchun yangi arxitekturani taklif qiladi.
Boshqariladigan dastur quyidagi turdagi mijozlarni qo'llab-quvvatlaydi:

  • Qalin mijoz (oddiy va boshqariladigan ishga tushirish rejimi)
  • Yupqa mijoz
  • Veb mijoz
Boshqariladigan ilova o'rnatilgan shakllardan foydalanadi yangi texnologiya. Ular chaqiriladi Boshqariladigan shakllar. O'tish qulayligi uchun eski shakllar (muntazam shakllar deb ataladigan) ham qo'llab-quvvatlanadi, ammo ularning funksionalligi ishlab chiqilmagan va ular faqat boy mijozni ishga tushirish rejimida mavjud.
Ishlab chiquvchi uchun boshqariladigan shakllarning asosiy farqlari:
  • Tuzilishning "piksellar bo'yicha" tavsifi emas, deklarativ. Shakl ko'rsatilganda elementlarning o'ziga xos joylashuvi tizim tomonidan avtomatik ravishda amalga oshiriladi.
  • Shaklning barcha funksionalligi shaklda tasvirlangan tafsilotlar va buyruqlar. Tafsilotlar - bu forma ishlaydigan ma'lumotlar va buyruqlar - bajarilgan harakatlar.
  • Shakl serverda ham, mijozda ham bajariladi.
  • Mijoz kontekstida deyarli barcha dastur turlari mavjud emas va shunga mos ravishda ma'lumotlar bazasidagi ma'lumotlarni o'zgartirish mumkin emas.
  • Har bir usul yoki shakl o'zgaruvchisi uchun u ko'rsatilishi kerak kompilyatsiya direktivasi Amal qilish joyi (mijoz yoki server) va shakl kontekstiga kirishni belgilaydi.
Shakl usullarini kompilyatsiya qilish bo'yicha ko'rsatmalar:
  • &AtClient
  • &Serverda
  • &OnServerWithoutContext
  • &MijozdaServerda kontekstsiz
Keling, yuqoridagilarni tasvirlab beraylik. Skrinshotda boshqariladigan shakl va uning moduli ishlab chiqish rejimiga misol keltirilgan. Deklarativ tavsif, rekvizitlar, kompilyatsiya direktivalari va boshqalarni toping.

Keyingi barcha muhokamalar illyustratsiyaning o'ng tomoni, modul kodini qanday tuzish va mijoz-serverning samarali o'zaro ta'sirini amalga oshirish imkonini beradigan qanday tamoyillar haqida bo'ladi.

Keling, muammoni aniqlaylik

1C platformasining yangi versiyasi faol qo'llanilganidan beri bir necha yil o'tdi va 1C va uning ko'plab sheriklari tomonidan ko'plab echimlar (konfiguratsiyalar) chiqarildi.
Ishlab chiquvchilar ushbu vaqt ichida shakllarni yaratishda mijoz va server o'zaro ta'siri tamoyillari haqida umumiy tushunchani ishlab chiqdilarmi va amalga oshirishga yondashuv o'zgarganmi? dasturiy modullar yangi arxitektura haqiqatlarida?

Kod tuzilishini (shakl moduli) bir xil tipik konfiguratsiyaning bir nechta shakllarida ko'rib chiqing va naqshlarni topishga harakat qiling.
Tuzilish ostida biz ishlab chiquvchi tomonidan guruhlash usullari va ushbu usullarni kompilyatsiya qilish uchun direktivalar uchun ajratilgan kod bo'limlarini (ko'pincha bu sharh bloklari) nazarda tutamiz.
1-misol:
Voqealarni qayta ishlash bo'limi Usul - mijozda Usul - serverda Usul - mijozda Xizmat ko'rsatish protseduralari va funktsiyalari bo'limi Kirish boshqaruvi yordamchi funktsiyalari
2-misol:
Xizmat ko'rsatish tartib-qoidalari va funktsiyalari To'lov hujjatlari Qimmatbaho buyumlar Voqealar bilan shug'ullanuvchilar
3-misol:
Serverda xizmat ko'rsatish tartib-qoidalari Mijozda xizmat ko'rsatish protseduralari Kontekstsiz serverda xizmat ko'rsatish protseduralari Sarlavha hodisasi ishlov beruvchilari Buyruq hodisasi ishlov beruvchilari
4-misol:
Umumiy maqsadli protseduralar Shakl hodisalari ishlov beruvchilari "Kontakt ma'lumotlari" quyi tizimining protseduralari
Aslida, kod tuzilishi yo'q yoki yumshoq qilib aytganda, u 8.1 shakllaridagiga o'xshaydi:

  • Ma'lumotga ega bo'lmagan so'zlar "Umumiy, Xizmat, Yordamchi".
  • Timid mijoz va server usullarini ajratishga harakat qiladi.
  • Ko'pincha usullar interfeys elementlari bo'yicha guruhlangan "Jadval qismi bilan ishlash Mahsulotlar, Aloqa ma'lumotlari".
  • Usullar va kod guruhlarini o'zboshimchalik bilan joylashtirish. Misol uchun, Voqealar ishlovchilari bir shaklda yuqorida, boshqasida pastda, uchinchisida umuman ta'kidlanmagan va hokazo bo'lishi mumkin.
  • Shuni ham unutmaslik kerakki, bularning barchasi bir xil konfiguratsiyada.
  • Ha, "Umumiy, Xizmat, Yordamchi" so'zlari har doim bir xil joylarda bo'lgan konfiguratsiyalar mavjud, ammo ...
Nima uchun sizga kod tuzilishi kerak?
  • Xizmatni soddalashtirish.
  • O'rganishni soddalashtiring.
  • Umumiy/muhim/muvaffaqiyatli tamoyillarni aniqlash.
  • ... sizning tanlovingiz
Nega 1C dan mavjud rivojlanish standarti yordam bermaydi?
Keling, boshqariladigan shaklni yozishda tavsiya etilgan ITS disklarida va turli xil "Ishlab chiquvchilar uchun qo'llanmalar ..." da chop etilgan tamoyillarni ko'rib chiqaylik.
  • Server qo'ng'iroqlari sonini kamaytiring.
  • Serverda maksimal hisoblash.
  • Kontekstli bo'lmagan server qo'ng'iroqlari kontekstli qo'ng'iroqlarga qaraganda tezroq.
  • Mijoz va server o'zaro ta'sirini hisobga olgan holda dastur.
  • va h.k.
Bular mutlaqo to'g'ri bo'lgan shiorlar, ammo ularni qanday amalga oshirish mumkin? Qo'ng'iroqlar sonini qanday kamaytirish mumkin, mijoz-server rejimida dasturlash nimani anglatadi?

Dizayn naqshlari yoki avlod donoligi

Mijoz va serverning o'zaro ta'siri o'nlab yillar davomida turli xil dasturiy texnologiyalarda qo'llanilgan. Oldingi bo'limda keltirilgan savollarga javob uzoq vaqtdan beri ma'lum bo'lib, ikkita asosiy tamoyilda jamlangan.
  • Masofaviy Fasad(bundan keyin masofaviy kirish interfeysi)
  • Ma'lumotlarni uzatish ob'ekti(keyingi o'rinlarda ma'lumotlarni uzatish ob'ekti deb yuritiladi)
Martin Faulerga so'z, uning ushbu tamoyillarning tavsifi:
  • masofaviy kirish uchun mo'ljallangan har bir ob'ekt bo'lishi kerak past granülerlik interfeysi, bu ma'lum bir protsedurani bajarish uchun zarur bo'lgan qo'ng'iroqlar sonini kamaytiradi. ... Hisob-fakturani va uning barcha bandlarini alohida so‘rash o‘rniga, bitta qo‘ng‘iroqda fakturaning barcha bandlarini o‘qib chiqish va yangilash kerak. Bu ob'ektning butun tuzilishiga ta'sir qiladi ... Esda tuting: masofaviy kirish interfeysi domen mantig'ini o'z ichiga olmaydi.
  • ... agar men g'amxo'r ona bo'lganimda, men bolamga: "Hech qachon ma'lumot uzatish ob'ektlarini yozmang!" Ko'pgina hollarda, ma'lumotlarni ko'chirish ob'ektlari boshqa narsa emas shishgan maydon to'plami... Bu jirkanch yirtqich hayvonning qiymati faqat ehtimollikdadir bir qo'ng'iroqda bir nechta ma'lumotlarni tarmoq orqali uzatish- taqsimlangan tizimlar uchun katta ahamiyatga ega bo'lgan texnika.
1C platformasidagi shablonlarga misollar
Boshqariladigan shaklni ishlab chiqishda ishlab chiquvchi uchun mavjud bo'lgan API ushbu tamoyillarning ko'plab misollarini o'z ichiga oladi.
Masalan, OpenForm() usuli, odatiy "qo'pol" interfeys.
OpenParameters = Yangi tuzilma ("Parametr1, Parametr2, Parametr3", Qiymat1, Qiymat2, Qiymat3); Shakl = OpenForm(FormName, OpenParameters);
v8.1 uslubi bilan solishtiring.
Shakl = GetForm (FormName); Form.Parameter1 = Qiymat1; Form.Parameter2 = Qiymat2; Form.Open();

Boshqariladigan shakl kontekstida "Ma'lumotlarni uzatish ob'ektlari" to'plami. Ajratish mumkin tizimli va ishlab chiquvchi tomonidan belgilangan.
Tizimlilar dastur ob'ektini mijozda bir yoki bir nechta shakl ma'lumotlari elementlari shaklida modellashtiradi. Siz ularni shakl tafsilotlariga bog'lanmagan holda yarata olmaysiz.

  • DataFormsStructure
  • DataForms Collection
  • DataFormStructureCollection
  • DataFormsTree
Ma'lumotlarni uzatish tizimi ob'ektlarini dastur turlariga va aksincha konvertatsiya qilish quyidagi usullar bilan amalga oshiriladi:
  • ValueVDataForm()
  • FormDataToValue()
  • CopyFormData()
  • ValueVFormProps()
  • FormAttributeToValue()
Ko'pincha mavjud echimni moslashtirishda aniq konvertatsiya qo'llaniladi. Usullar FormDataCollection emas, balki ValueTable kabi kiritish parametrlarini kutishi (xususiyati) bo'lishi mumkin yoki usul dastur ob'ekti kontekstida aniqlangan va shakldan to'g'ridan-to'g'ri qo'ng'iroq qilish uchun mavjud bo'lmagan.
Misol 1C v8.1:
// FillUsersCache(DepartmentReference) shakli kontekstida mijozda
Misol 1C v8.2:
// forma kontekstida serverda ProcessingObject = FormAttributeToValue("Object"); ProcessingObject.FillCacheUsers(DepartmentReference); ValueVFormAttribute(ProcessingObject, "Ob'ekt");

Tuzilishi ishlab chiquvchi tomonidan belgilanadigan ma'lumotlarni ko'chirish ob'ektlari mijoz va serverda mavjud bo'lgan turlarning kichik bir qismidir. Ko'pincha, "qo'pol" interfeys usullarining parametrlari va natijalari sifatida quyidagilar qo'llaniladi:

  • Primitiv tiplar (string, raqam, mantiqiy)
  • Tuzilishi
  • Muvofiqlik
  • massiv
  • Ilova ob'ektlariga havolalar (noyob identifikator va matn ko'rinishi)
Misol: usul holatni o'zgartirish uchun buyurtmalar ro'yxatini qabul qiladi va mijozga xatolar tavsifini qaytaradi.
&OnServerWithoutContext Function ServerChangeOrderStatus(Buyurtmalar, NewStatus) Xatolar = Yangi moslik(); // [buyurtma][xato tavsifi] Buyurtmalardan har bir buyurtma uchun Loop StartTransaction(); Urinish DocOb = Order.GetObject(); …. boshqa harakatlar, ehtimol, faqat buyurtma bilan emas... Istisno CancelTransaction(); Errors.Insert(Order, DescriptionError()); Urinishning tugashi; EndCycle; Qaytish xatosi; EndFunction // ServerChangeOrderStatus()

Kodning tuzilishi

Boshqariladigan shakl moduli aks ettirishi kerak bo'lgan asosiy maqsadlar va yechimga yondashuvlar.
  • Mijoz va server kodini aniq ajratish. Shuni unutmasligimiz kerakki, bajarilish vaqtida bu ikkita o'zaro ta'sir qiluvchi jarayon bo'lib, ularning har birida mavjud funktsiyalar sezilarli darajada farqlanadi.
  • Masofaviy kirish interfeysining aniq tanlovi, mijozdan qaysi server usullarini chaqirish mumkin va qaysi biri mumkin emas? Masofaviy interfeys usullarining nomlari "Server" prefiksi bilan boshlanadi. Bu kodni o'qiyotganda boshqaruvning serverga o'tishini darhol ko'rish imkonini beradi va kontekstli maslahatlardan foydalanishni soddalashtiradi. Rasmiy tavsiyanoma (ITS) ChangeOrderStatusOnServer() kabi postfikslar bilan nomlash usullarini taklif qilishini unutmang. Biroq, takror aytmoqchimanki, barcha server usullarini mijozdan chaqirib bo'lmaydi, shuning uchun mantiqiy foydalanish imkoniyati kompilyatsiya joyidan muhimroqdir. Shuning uchun, "Server" prefiksi bilan biz faqat mijoz uchun mavjud bo'lgan usullarni belgilaymiz, misol usuli ServerChangeOrderStatus() deb nomlanadi.
  • O'qish qobiliyati. Ta'mga ko'ra, modul serverda shakl yaratish protseduralari va masofaviy kirish usullari bilan boshlanganda buyurtmani qabul qilamiz.
  • Saqlash qobiliyati. Yangi kod qo'shiladigan joy aniq belgilanishi kerak. Muhim nuqta, ular avtomatik ravishda usul stub konfiguratori tomonidan yaratilgan, modulning oxiriga qo'shiladi. Shakl elementi hodisasi ishlov beruvchilari ko'pincha avtomatik tarzda yaratilganligi sababli, mos keladigan blok har bir ishlov beruvchini modulning boshqa joyiga sudrab ketmaslik uchun oxirgi joylashtiriladi.
Quyida sanab o'tilgan maqsadlarni amalga oshiradigan modulning asosiy tuzilishi keltirilgan.
  • Grafik variant - ijro etilishning asosiy oqimini aniq ko'rsatadi.
  • Matn versiyasi shablon dizayniga misoldir tez kiritish tuzilmalarni yangi shakl moduliga aylantiradi.

//////////////////////////////////////////////////////////////////////////////// // <(c) Автор=""Sana""/> // <Описание> // // ///////////////////////////////////////////////////////// / ///////////////////////////// // MODUL O'ZGARCHILARI ////////////// / //////////////////////////////////////////////////////// // ///////////// // SERVERDA //******* SERVERDAGI HODISALAR ******* &Serverda Serverda yaratish tartibi( Failure, StandardProcessing) //EndProcedure ishlov beruvchisi tarkibini kiriting //******* MASOQDA KIRISH INTERFEYSI ******* //********* SERVERDAGI BIZNES MANTIQI **** *** ///////// //////////////////////////////////// //////////////////////////////// // UMUMIY MIJOZ VA SERVER USULLARI ///////// ///////////////////////////////////////////////////////// //////////////// /////// // MIJOZ HAQIDA //********* BIZNES MANTIQI MIJOZDA ******* //********* BUYRUQLAR ******* //********* MIJOZDA BO'LGAN VOQEALAR ******** ///////////// ///////////////////////////////////////////////////////// //////////////// / / ASOSIY DASTUR OPERATORLARI

Tegishli savollar
Xulosa qilib aytganda, biz mijoz-server o'zaro ta'sirini dasturlashda o'ylash uchun foydali bo'lgan bir nechta sohalarni belgilaymiz.
  • Masofaviy kirish interfeysini amalga oshirish imkoniyatlari. Asinxroniya, granularlik...
  • keshlash. 1C baxtsiz arxitektura qarorini qabul qildi, keshlashni faqat umumiy modullarni chaqirish usullari darajasida joriy qildi va boshqaruv variantlarini taqdim etmadi (yangilangan vaqt, talab bo'yicha qayta o'rnatish).
  • Yashirin server qo'ng'iroqlari. Texnologik xususiyatlar haqida unutmang, mijozdagi ko'plab "zararsiz" operatsiyalar platformani serverga kirishga undaydi.

11.12.2016

1C boshqariladigan shakllar haqida (boshi)

Yupqa mijoz

Hech qanday nozik joy yo'q. Endi mijoz ilovasi ma'lumotlar bazasini so'ramaydi (bu serverning ishi). Mijoz ilovasi shunchaki interfeys va ma'lumotlarni ko'rsatadi.

Shuni ta'kidlash kerakki, kod tuzilishi bunday transformatsiyalar tufayli yanada murakkablashdi. Mijozda havolalar, ob'ektlar, qiymatlar jadvali yo'q... faqat ibtidoiy turlar mavjud (string, sana, mantiqiy, massiv, struktura...). Bu shuni anglatadiki, dasturchi endi serverga nima olish va buni minimal xarajatlar bilan qanday qilish haqida o'ylashi kerak.

Mijoz-server o'zaro ta'siri

Mijoz va server o'rtasidagi o'zaro munosabatlarga yangi yondashuv bizga foydalanuvchi interfeysining yangi modelini yaratishga imkon berdi. Endi interfeys e'lon qilindi(!) interfeys dizayni ma'lumotlardan, tafsilotlardan va jadval qismlaridan boshlanadi. Tayanch yaratishda siz uning interfeysda qanday ko'rinishi, talab qilinadimi, boshqa rekvizitlar bilan qanday bog'liqligi haqida o'ylashingiz kerak...

Serverda kontekst (holat) yo'q

1C serveri "fuqaroligi yo'q" (inglizcha davlatsiz) tamoyili asosida ishlaydi. Bu shuni anglatadiki, server faqat so'rovlarga javob beradi va shu bilan birga ikkita so'rov o'rtasida hech narsa saqlamaydi (bu maqsad uchun vaqtinchalik saqlash mavjud).

FormDataToValue,FormDataCollection,FormData...

Biz serverga murojaat qildik, u biz uchun hamma narsani qildi, ma'lumotlarni o'chirib tashladi va biz kelganimizni unutdi. "FormData" + "u erda bir narsa" deb nomlangan barcha ob'ektlar ikkita server qo'ng'iroqlari o'rtasida ma'lumotlarni saqlashga yordam beradi.

Vaqtinchalik saqlash

Vaqtinchalik saqlash - bu (shakl tafsilotlariga qo'shimcha ravishda) serverdagi holatni saqlashingiz mumkin bo'lgan maxsus joy. Saqlash mijozda mavjud bo'lmagan ma'lumotlarni saqlashi mumkin (ya'ni, shakl tafsilotlariga joylashtirilmaydi).

Vaqtinchalik saqlash bilan ishlash uchun MoveToTempStorage() usullaridan foydalaning Sintaksis: PlaceToTempStorage(<Данные>, <Адрес>) Tavsif: Seriyali qiymatni vaqtincha saqlashda saqlaydi. Mavjudligi: Yupqa mijoz, veb-mijoz, server, qalin mijoz, tashqi ulanish, mobil ilova (mijoz), mobil ilova (server). Usul chaqiruvi serverga qo'ng'iroq qiladi.<Адрес>(ixtiyoriy) Turi: UniqueIdentifier; Chiziq. Vaqtinchalik saqlash joyiga ma'lumotlar joylashtiriladigan va yangi manzil qaytarilishi kerak bo'lgan shaklning noyob identifikatori. Yoki ma'lumotlar joylashtirilishi kerak bo'lgan vaqtinchalik xotiradagi manzil. Ushbu usul yordamida manzil avvalroq olinishi kerak. Agar forma UniqueIdentifier yoki xotiradagi manzil uzatilsa, shakl yopilgandan so'ng qiymat avtomatik ravishda o'chiriladi. Agar forma uchun noyob identifikator bo'lmagan UniqueIdentifier uzatilsa, foydalanuvchi sessiyasi tugagach, qiymat o'chiriladi. Agar parametr ko'rsatilmagan bo'lsa, joylashtirilgan qiymat umumiy moduldan keyingi server so'rovidan so'ng, formadan kontekstli va kontekst bo'lmagan server qo'ng'iroqlarida, buyruq modulidan server qo'ng'iroqlarida yoki shaklni olishda o'chiriladi. Eslatma: Bir seansda yaratilgan vaqtinchalik xotiraga boshqa seansda kirish mumkin emas. Istisno - bu vaqtinchalik saqlashdan foydalanib, ma'lumotlarni fon ishidan fon ishini boshlagan seansga o'tkazish imkoniyati. Bunday uzatish uchun, ota-sessiyada, shakl identifikatoridan o'tib, vaqtinchalik saqlashga bo'sh qiymat qo'ying. Keyin olingan manzilni fon ishining parametrlari orqali fon ishiga o'tkazing. Bundan tashqari, agar ushbu manzil parametrda ishlatilsa<Адрес>, natija fon ishi boshlangan sessiyaga ko'chiriladi. Fon ishida vaqtinchalik saqlashga joylashtirilgan maʼlumotlar fon ishi tugamaguncha ota-sessiyadan foydalanib boʻlmaydi. va GetFromTempStorage() sintaksisi: GetFromTempStorage(<Адрес>) Tavsif: Vaqtinchalik saqlashdan qiymat oladi. Mavjudligi: Yupqa mijoz, veb-mijoz, server, qalin mijoz, tashqi ulanish, mobil ilova (mijoz), mobil ilova (server). Usul chaqiruvi serverga qo'ng'iroq qiladi. Eslatma: Bajarilish natijasi keshda saqlanmaydi, har safar usul chaqirilganda server chaqiriladi.

Qo'ng'iroq qiluvchi server kodi

Server kodiga har qanday qo'ng'iroq har doim uzatilgan ma'lumotlarni ketma-ketlashtiradi. Barcha parametrlar satr shaklida to'planadi va tarmoq orqali uzatiladi. Ishning natijasi, shuningdek, ketma-ketlashtirilgan shaklda qaytariladi, keyin u tanish ob'ektlarga qayta tiklanadi.

Modul bayroqlarini belgilash

  • Bayroq modul kodi qayerda kompilyatsiya qilinishini ko'rsatadi (serverda, mijozda, tashqi ulanishda)
  • Agar modul bir nechta joyda tuzilgan bo'lsa, u faqat bayroqlarga ko'ra ko'rinadi
  • Kodning bajarilishini uzatish faqat joriy ijro kontekstida chaqirilgan modul bo'lmasa, lekin u boshqa joyda mavjud bo'lsa mumkin (agar modul faqat serverda mavjud bo'lsa va u mijozda mavjud bo'lmasa, server chaqiriladi)

Server chaqiruv bayrog'i

1C: Enterprise 8.2 platformasidan boshlab, "server chaqiruvi" bayrog'i qo'shildi. Bu boshqa mashinaga o'tish shartlarini "hal qilishga" yordam beradi. Agar ushbu bayroq modulga tayinlangan bo'lsa, u holda modul mijozdan ko'rinadi, agar bo'lmasa, mijozdan qo'ng'iroq qilishga urinish xatolikka olib keladi. Modul kodi ko'rinmaydi, go'yo u umuman mavjud emas.

Shunday qilib, oddiy qalin mijozda, agar siz mijozdan umumiy modulni chaqirsangizgina kodni serverga o'tkazishingiz mumkin, buning uchun:

  • Server belgilash katagi belgilandi
  • "Qo'ng'iroq serveri" katagiga belgi qo'yilgan
  • Barcha "mijoz" katakchalari olib tashlandi

1C Enterprise 8.2 platformasining paydo bo'lishi bilan foydalanuvchi interfeysini ishlab chiqish mexanizmi sezilarli darajada o'zgardi. Endi siz boshqariladigan shakllar va ilovalarni yaratishingiz mumkin (1-rasm).

1-rasm

Bundan tashqari, mijoz ilovasi va server o'rtasida funksionallikni ajratish uchun yangi tizim taklif etiladi.
Boshqariladigan dastur quyidagi turdagi mijozlarni qo'llab-quvvatlaydi:

  • Qalin mijoz (oddiy va boshqariladigan ishga tushirish rejimi),
  • nozik mijoz,
  • Veb mijoz.

Boshqariladigan shakllarni yaratish mexanizmi an'anaviy shakllardan sezilarli darajada farq qiladi. Avvalo, boshqariladigan shakllar tizim tomonidan maxsus sozlashlar asosida avtomatik tarzda yaratilishi bilan farqlanadi, endi dasturchi har bir shaklni batafsil chizishga hojat qolmaydi. Shaklning barcha funksionalligi tafsilotlar va buyruqlar ko'rinishida tasvirlangan. Tafsilotlar - bu forma ishlaydigan ma'lumotlar va buyruqlar - bajarilgan harakatlar. Har bir usul yoki shakl o'zgaruvchisi uchun kompilyatsiya direktivasi ko'rsatilishi kerak, bu bajarilish joyini (mijoz yoki server) belgilaydi. Kompilyatsiya direktivalari quyidagilar bo'lishi mumkin:

  • &AtClient,
  • &Serverda,
  • &OnServerWithoutContext,
  • &MijozdaServerda kontekstsiz.

Boshqariladigan shakl oddiy shakldan ishlayotgan ma'lumotlar turlarida ham farq qiladi. Agar oddiy shakl 1C: Enterprise tomonidan taqdim etilgan ko'pgina turlar bilan ishlayotgan bo'lsa (shu jumladan DirectoryObject, DocumentObject va boshqalar), unda boshqariladigan shaklda quyidagi tur toifalarini ajratish mumkin:

  • to'g'ridan-to'g'ri shaklda ishlatiladigan turlar - bu nozik va veb-mijoz tomonida mavjud bo'lgan turlar (masalan, Number, ReferenceReference.Products, GraphicScheme, SpreadsheetDocument);
  • maxsus ma'lumotlar turlariga aylantiriladigan turlar boshqariladigan shakldagi ma'lumotlar turlaridir. Bunday turlar shakl atributlari ro'yxatida qavs ichida ko'rsatiladi, masalan (CatalogObject.Products);
  • dinamik ro'yxat.

Boshqariladigan shakllarning ishlashi quyidagi o'ziga xos xususiyatlarga ega (2-rasm):

  • Shakl mijozda ham, serverda ham mavjud.

U mijoz-server o'zaro ta'sirini (ma'lumotlarni uzatish va elementlarning dizayn xususiyatlarini) amalga oshiradi.

  • Form ilova obyektlari bilan ishlamaydi


2-rasm

Shakl maxsus umumiy ob'ektlardan foydalanadi
DataForms(3-rasm).


3-rasm

Ilova ob'ektlari faqat serverda va faqat ma'lum operatsiyalar paytida ishlaydi.
Shaklni ochishda:

  • Ob'ekt ma'lumotlar bazasidan o'qiladi,
  • Ob'ekt shakl ma'lumotlariga aylantiriladi,
  • Ob'ekt o'chirildi (xotiradan),
  • Shakl ma'lumotlari mijozga uzatiladi.

Yozib olishda:

  • Shakl ma'lumotlari mijozdan olinadi,
  • Shakl ma'lumotlari ob'ektga aylantiriladi,
  • Ob'ekt ma'lumotlar bazasiga yoziladi,
  • Ob'ekt o'chiriladi (xotiradan).

Oxirgi darsda biz oddiy (yog'li) mijozni ko'rib chiqdik. 1C 8.2 platforma versiyasida. Ular 1C 8.2 yangi ekran shakllaridan foydalanadilar. Ular boshqariladigan shakllar deb ataladi 1C 8.2.

Boshqariladigan shakllar 1C 8.2 - bu 1C ning kelajagi. Ular oddiy 1C 8.2 shakllaridan farq qiladi, chunki ular tizim tomonidan maxsus sozlamalar asosida avtomatik ravishda yaratiladi ("oddiy" shakllar dasturchi tomonidan shunchaki o'z xohishiga ko'ra chiziladi).

Boshqariladigan 1C 8.2 shakllarini ishlab chiqishda odatdagidan farqlari sezilarli. Shuning uchun biz bugun 1C 8.2 boshqariladigan shakllarni yaratish va o'zgartirishni alohida muhokama qilish uchun yig'ildik.

Boshqariladigan shakllar 1C 8.2

Agar siz ilgari 1C konfiguratsiyalarini ishlab chiqqan bo'lsangiz, 1C 8.2 boshqariladigan shakl muharririni ochganingizda, sichqoncha bilan 1C 8.2 shakliga umuman ta'sir qilishning iloji yo'qligi sizni darhol chalkashtirib yuboradi.

Siz 1C 8.2 formasini o'zgartira olmaysiz, elementni ko'chira olmaysiz, hatto maydonning xususiyatlarini avvalgidek ko'ra olmaysiz - 1C 8.2 formasida maydonni ikki marta bosish orqali.

Endi 1C 8.2 shaklini ishlab chiqish uchun asos maydonlarni shakldagi koordinatalar bilan bog'lash emas, balki maxsus sozlamalardir. Ushbu sozlamalar asosida tizim avtomatik ravishda boshqariladigan 1C 8.2 shaklini yaratadi.

Sozlamalar yuqori chap burchakdagi muharrirda joylashgan 1C 8.2 shakl elementlari ro'yxatidan iborat. 1C 8.2 shaklining elementlariga quyidagilar kiradi:

  • Rekvizitlar
  • Buyruqlar (yangi kontseptsiya 1C 8.2, tugmalar yoki menyu elementlari kabi ko'rinishi mumkin)
  • Guruhlar (tafsilotlar va buyruqlarni birlashtirish uchun).

Shunga ko'ra, ushbu elementlarning sozlamalari maydonlarning xususiyatlarida emas, balki ushbu sozlamalar elementlarining xususiyatlarida (sichqonchaning o'ng tugmasi menyusi, Xususiyatlar bandi).

1C 8.2 boshqariladigan shakllar qanday ishlaydi

1C 8.2 boshqariladigan shakllar bilan ishlash foydalanuvchi uchun farq qiladi. Ular ko'proq xususiyatlarga ega, ammo 1C bilan uzoq vaqt davomida ishlayotganlar uchun odatiy emas.

Avvalo, 1C 8.2 shaklidagi odatiy elementlarning joylashuvi farqlanadi. Buyruqlar paneli har doim yuqorida joylashgan.

Buyruqlar panelining chap tomonini sozlash mumkin. Unda odatda Record va Post kabi odatiy tugmalar mavjud.

Buyruqlar panelining o'ng tomoni - 1C shaklining yangi standart menyusi Barcha harakatlar. Ushbu menyu sizga 1C 8.2 shaklini xohlaganingizcha boshqarish imkonini beradi, xuddi ACS hisobotidagi sozlamalar hisobotning ko'rinishini sezilarli darajada o'zgartirishga imkon beradi.

O'zboshimchalik bilan menyu elementlari 1C Barcha harakatlar

Ushbu 1C 8.1 shakli bir yoki boshqasiga tegishli ekanligiga qarab, menyu ushbu ob'ektni boshqarishga imkon beruvchi elementlar bilan to'ldiriladi. Misol uchun, agar bu katalog ro'yxati shakli bo'lsa, unda Yaratish yoki Tahrirlash kabi buyruqlar bo'ladi.

Element Menyu ro'yxatini sozlash 1C Barcha harakatlar

Agar 1C 8.2 formasida ro'yxat mavjud bo'lsa, menyuda ro'yxatni o'rnatish va ro'yxatni ko'rsatish buyrug'i mavjud.
Agar Chiqish ro'yxati buyrug'i sizga allaqachon tanish bo'lsa - bu sizga har qanday ro'yxatni 1C-da Excel-da saqlash / chop etish imkonini beradi, keyin ikkinchi buyruq yangi.

Siz allaqachon sezganingizdek, ro'yxatlar buyruqlar panelida boshqa tanlash tugmalari yo'q. Buning o'rniga "Topish" tugmasi paydo bo'ldi, bu ish (shuningdek, yozish paytida kursorni ro'yxatda hozir o'chirib qo'yish) - shikoyatlar mavjud.

"Topish" tugmachasining funksionalligi, albatta, tanlovlar bilan taqqoslanmaydi, lekin ular hech qaerda yo'qolmagan!
Ular endi ro'yxatni sozlash menyusi ostida. Tanlash endi har qanday maydon tomonidan amalga oshirilishi mumkin va unga qo'shimcha ravishda, saralash va shartli formatlash xuddi SKD hisobotlarida amalga oshirilishi mumkin bo'lgan tarzda amalga oshirilishi mumkin.

Element Menyu shaklini o'zgartirish 1C Barcha harakatlar

Shaklni o'zgartirish elementi nafaqat 1C 8.2 shaklidagi ro'yxatni, balki 1C 8.2 shaklining o'zini ham xuddi shunday o'zgartirishga imkon beradi.

Foydalanuvchi 1C 8.2 shaklidagi maydonlarning ko'rinishini, kengligi va balandligini, ochilganda standart maydonni faollashtirishni va hokazolarni mustaqil ravishda yoqishi yoki o'chirishi mumkin.

Boshqariladigan shakllar 1C 8.2 va an'anaviy 1C shakllaridan foydalanish

Odatiy bo'lib, oddiy 1C shakllari qalin (oddiy) 1C mijozi uchun konfiguratsiyalarda ishlatiladi va boshqariladigan shakllar nozik va veb 1C mijozi uchun konfiguratsiyalarda qo'llaniladi. Biroq, 1C ning ikkala shakli ham har qanday konfiguratsiyada, shu jumladan bir vaqtning o'zida ishlatilishi mumkin.

Buni amalga oshirish uchun siz konfiguratsiya xususiyatlarini ham kiritishingiz kerak (konfiguratsiya oynasining yuqori elementi).

1C 8.2 da konfiguratsiya xususiyatlarida 1C shakllaridan nostandart foydalanishni yoqish imkonini beruvchi ikkita yangi katakcha paydo bo'ldi.

Boshqariladigan shakllarni yaratish 8.2

1C 8.2 yangi shaklini qo'shish avvalgidek amalga oshiriladi - klaviaturadagi Ins tugmasi yoki Qo'shish tugmasi yordamida. Mavjudni kiritish uchun sichqoncha bilan ikki marta bosing.

Odatiy bo'lib, konfiguratsiyada o'rnatilgan shakl (muntazam yoki boshqariladigan) yaratiladi (konfiguratsiya xususiyatlaridagi Asosiy ishga tushirish rejimi xususiyatiga qarang).

Konstruktor sizga forma turini - element shaklini, ro'yxatni tanlashni taklif qiladi. Bu yerda siz formaga buyruq satrini qo'shishingiz yoki olib tashlashingiz mumkin. Ko'pincha, bu sozlamalar sukut bo'yicha qoldiriladi.

Odatiy ravishda to'ldirilgan shakl ochiladi - unga qo'shilgan 1C ob'ektining barcha tafsilotlari. Konstruktorning ikkinchi yorlig'ida kerakli maydonlarning ma'lum bir ro'yxatini belgilashingiz mumkin.

Shakl muharriri uchta bo'limdan iborat.

  • Yuqori chap burchakda shakl elementlari ro'yxati joylashgan. U elementlarni birlashtirish imkonini beruvchi maydonlar, buyruqlar va guruhlardan iborat. Buyruqlar ro'yxatini Buyruqlar interfeysi yorlig'ida alohida ko'rish mumkin.
  • Yuqori o'ng burchakda mavjud shakl atributlari va ob'ekt atributlari ro'yxati mavjud (Ob'ekt atributi yonidagi xochni oching).
  • Quyida olingan shaklni oldindan ko'rish mumkin.

Mavjud ma'lumotlarni chapga sudrab o'tishingiz mumkin va u shakl elementiga aylanadi (shakldagi maydon).

Agar siz tugma yoki menyu elementini qo'shishingiz kerak bo'lsa - Buyruqlar yorlig'ining o'ng tomonida yangi Buyruq yaratishingiz kerak. Bu forma modulidagi funksiya uchun o‘ram. Qaysi funktsiya aslida chaqirilishini belgilashdan tashqari, siz tasvirni belgilashingiz mumkin - masalan, rasm, shuningdek, ko'rinishning funktsional variantga bog'liqligi.

Buyruqlar ham chapga tortiladi. Agar ota-ona buyruq satri bo'lsa, u holda buyruqlar paneli tugmasi bo'ladi - aks holda faqat tugma.

Shakl elementlari (maydonlari) ro'yxatida siz ob'ekt/shaklning atributini tortibgina qolmay, balki uni oddiygina qo'shishingiz mumkin (Qo'shish yoki Ins tugmasi). Xususan, siz yangi shakl ob'ektini - Guruh yaratishingiz mumkin.

Guruh buyruqlar paneli bo'lishi mumkin (kursor Form satrida bo'lishi kerak). Keyin buyruqlarni unga sudrab olib borasiz va ular tugmachalarga aylanadi.

Guruh "muntazam" bo'lishi mumkin. Keyin bu maydonlarni vertikal va gorizontal ravishda guruhlashning bir usuli. Guruh nomi xususiyatlarda olib tashlanishi mumkin.

Guruh panel (sahifalar) bo'lishi mumkin. Yuqori qo'shilgan guruh panel va bu turdagi ichki o'rnatilgan guruhlar sahifalardir. Maydonlar allaqachon sahifalarga tortilmoqda.

Ro'yxatdagi forma elementlarini o'chirish orqali keraksiz shakl elementlari o'chiriladi.
Shakldagi maydonning o'rni elementlar ro'yxatidagi tartib (vertikal) yoki guruhlar (gorizontal) bo'yicha aniqlanadi. Kenglik va balandlik shakl elementining xususiyatlarida o'rnatiladi.

Shakl elementi xususiyatlari sezilarli darajada kengaytirildi va juda ko'p foydali narsalarni o'z ichiga oladi - tashqi ko'rinishni boshqarish (tanlash va tozalash tugmalari) va standart qiymatlarni tekshirish.

Shaklning o'ziga xos xususiyatlari, shu jumladan uning o'lchamlari Formaning bir xil nomli asosiy elementida o'rnatiladi.

Hodisa ishlov beruvchilari (foydalanuvchi harakatlariga javob) endi ikki turga bo'linadi. Qadimgilar - avvalgidek, ular forma va maydonlarning xususiyatlarida ko'rsatilgan (masalan, OnChange va OnOpening formasi). Yangi - buyruqlarga aylandi va menyu elementlari va tugmalari uchun ishlatiladi.

Platformaning 8.2 versiyasidan boshlab, 1C interfeysni yaratish va foydalanuvchining ma'lumotlar bazasi bilan o'zaro munosabati uchun yangi tamoyillardan foydalanishni boshladi. Yangi texnologiya boshqariladigan dastur deb ataladi. Shakllarni yaratish mexanizmlari va 1C serverining foydalanuvchisi va ma'lumotlar bazasi o'rtasidagi o'zaro ta'sir sxemasi eng katta ishlov berishdan o'tdi. Oddiy rejim hali ham platforma tomonidan qo'llab-quvvatlanadi, ammo vaqt o'tishi bilan barcha 1C foydalanuvchilari boshqariladigan shakllarga o'tadi.

Oddiy foydalanuvchilar uchun 1C hujjatining boshqariladigan shakli odatdagidan faqat tashqi ko'rinishi bilan farq qiladi. Ishlab chiquvchi uchun bu o'z qoidalari, qonunlari va shartlariga ega bo'lgan yangi mexanizm. Ko'pgina sohalar o'zgardi, ammo tajribali 1C ishlab chiqaruvchilari orasida quyidagi yangiliklar asosiy hisoblanadi:

  • Shakl strukturasini mustaqil shakllantirish va maydonlarni platforma tomonidan joylashtirish. Agar ilgari ishlab chiquvchilar piksellarni ko'rsatish orqali maydon o'rnini tasvirlab bergan bo'lsa, endi faqat guruhlash turini ko'rsatish mumkin;
  • Shakl shakl ma'lumotlarini ifodalovchi atributlardan va buyruqlar - bajariladigan protseduralar va funktsiyalardan iborat;
  • Shakl kodi ham server, ham mijoz tomonida bajariladi. Axir, formaning o'zi serverda yaratilgan va mijozda ko'rsatiladigan konfiguratsiya ob'ektidir. Bu mijoz va server qismlarini birlashtirganligini anglatadi;
  • Mijoz tomonida ma'lumotlarning ko'p turlari mavjud bo'lib qoldi va endi ma'lumotlar bazasidagi ma'lumotlarni o'zgartirishning imkoni yo'q;
  • Har bir protsedura yoki funktsiya uchun maxsus sozlama ko'rsatilishi kerak - kompilyatsiya direktivasi. U kod bajariladigan joy uchun javobgardir va quyidagi qiymatlarni olishi mumkin:
    • mijoz bo'yicha;
    • Serverda;
    • ServerWithoutContext-da;
    • OnClientOnServer;
    • Kontekstsiz serverda mijozda.

Oxirgi nuqta, ayniqsa, boshqariladigan shakllar rejimida keskindir. Agar ishlab chiquvchi direktivalar yoki mijoz-server o'zaro ta'sirini yaxshi bilmasa, u holda boshqariladigan shaklni yaratish juda qiyin bo'ladi. 1C: Enterprise 8.3 da boshqariladigan shakllarni yaratishning barcha yangi tamoyillari uch bosqichli arxitekturaning umumiy kontseptsiyasi bilan birlashtirilgan. U mijoz kompyuterlarini, 1C serverini va ma'lumotlar saqlanadigan ma'lumotlar bazasini o'z ichiga oladi.

Konfiguratorda boshqariladigan shaklni tahrirlash ham boshqacha bo'ldi. Ko'p jihatlar o'zgardi va boshqariladigan shakllar bo'lmagan 7.7 versiyasini ishlab chiquvchilar hayratda qolishlari mumkin. Hatto shakl dizaynerining ko'rinishi ham o'zgargan, buni konfiguratsiya ob'ektining istalgan shakllarini ochish orqali ko'rish mumkin. Ob'ektni ochishda biz bir nechta bo'limlarga bo'lingan oynani ko'ramiz:

  1. Shakl interfeysi elementlari. Yuqori chap tomonda dasturning foydalanuvchi bilan o'zaro ta'sirini ta'minlaydigan tanlangan shaklda ko'rsatilgan barcha maydonlarni ko'rsatadigan oyna mavjud;
  2. Shakl tafsilotlari. Yuqori o'ng tomonda forma ishlaydigan barcha ma'lumotlar mavjud. Aynan ularda ma'lumotlar mijoz tomonida saqlanadi;
  3. Boshqariladigan shakl ko'rsatilmoqda. Quyida biz interfeys elementlariga asoslangan ko'rinishni oldindan ko'rishni ko'ramiz;
  4. Shakl moduli. Ushbu shakl tomonidan ishlatiladigan protseduralar va funktsiyalarni o'z ichiga olgan bo'lim. Bu yerda dasturning ham foydalanuvchi, ham ma'lumotlar bazasi bilan o'zaro aloqasi uchun algoritmlar kodini topishingiz mumkin.

1C ishlab chiquvchilari mijozlarni boshqariladigan shakllarga o'tishga undamoqda, shuning uchun boshqariladigan shakllarni ishlab chiqish tamoyillarini o'rganish vaqt masalasidir. Ushbu turdagi shakllar bilan ishlashni boshlaganingizda, bu rivojlanishni standartlashtirish va yagona qoidalarga rioya qilish yo'lidagi qadam ekanligini tushunasiz. Shuning uchun, 1C 8.3 da boshqariladigan shakllar bilan ishlash qobiliyati 1C dasturchisi sifatida sizning darajangizni oshiradi.

Boshqariladigan shakllarni loyihalash bo'yicha ko'rsatmalar

Avvalo, 1C boshqariladigan rejim mexanizmini tushunish uchun siz forma serverda ham, mijozda ham mavjudligini yodda tutishingiz kerak. Bundan tashqari, mijozda ushbu ob'ekt foydalanuvchining dastur bilan o'zaro aloqasi interfeysining faqat tasviridir. Barcha hisob-kitoblar, algoritmlar, hisob-kitoblar va ishlov berish faqat server tomonida amalga oshirilishi kerak. Bu nafaqat mijozda ko'plab funktsiyalar va parametrlardan foydalana olmaslik, balki ishlash talablari bilan ham bog'liq.

Form modulidagi har bir protsedura va funktsiyadan oldin yozilishi kerak bo'lgan direktiv nomi bilan protsedura qayerda bajarilishini aniqlashingiz mumkin. "Kontekstsiz" so'zi boshqariladigan shakldagi ma'lumotlar serverdagi ushbu protseduraga o'tkazilmasligini bildiradi. Shunday qilib, bunday protseduralarda foydalanuvchi tomonidan kiritilgan qiymatlar asosida algoritmlarni yozish mumkin bo'lmaydi. Agar ushbu so'z ko'rsatilmagan bo'lsa, unda shakl barcha tafsilotlar bilan to'liq uzatiladi va siz ularga kirishingiz mumkin.

1C ishlab chiquvchilari kontekstsiz server qo'ng'iroqlaridan foydalanishni, ularning sonini iloji boricha kamaytirishni va mijozda hisob-kitoblarni amalga oshirmaslikka harakat qilishni qat'iy tavsiya qiladi. Nazariy ma'lumotga ega bo'lmagan yangi ishlab chiquvchilar uchun ushbu qoidalarning barchasiga rioya qilish va kodni to'g'ri o'zgartirish qiyin. O'zingiz ishlashni boshlashdan oldin, boshqariladigan konfiguratsiya shaklini ochish, sintaksisni va mijoz va serverning o'zaro ta'sirini ko'rib chiqish foydali bo'ladi.

&НаСервере Процедура ПолучитьПлатежноРасчетныеДокументыИзХранилища(НовыйАдресВХранилище) &НаСервереБезКонтекста Функция ЕстьРасчетыСКлиентом(ДокументОснование) &НаСервереБезКонтекста Процедура ЗаполнитьСписокВыбораКПП(СписокВыбора, Контрагент, ДатаСведений) &НаКлиенте Процедура ЗаполнитьГоловногоКонтрагентаЗавершение(ВыбранноеЗначение, ДополнительныеПараметры) &НаСервере Процедура УстановитьТекстПлатежноРасчетныхДокументов() &НаСервере Функция ЕстьЗаполненныеИсходныеДокументы()

1C shakllarini ishlab chiqishning yangi qoidalari, agar barcha ishlab chiquvchilar ularga rioya qilsalar, katta foyda keltiradi. Bundan tashqari, hamma yaxshi tomonga o'zgarishlarni his qiladi - dasturchilar ham, 1C da ishlaydigan kompaniyalar ham, franchayzi va 1C ishlab chiquvchilari ham. 1C da boshqariladigan shakllarning to'g'ri ishlashining asosiy oqibatlari:

  1. Konfiguratsiyaga xizmat ko'rsatish qulayligi va kodni o'qish qobiliyatini oshirish. Bundan xulosa qilishimiz mumkinki, bitta ishlab chiquvchi tomonidan yozilgan algoritm har doim boshqa xodim tomonidan ko'p vaqt sarflamasdan tuzatilishi mumkin;
  2. Mijoz va serverda ishlaydigan kodni ajratish. Ushbu tomonlarning har birida mavjud bo'lgan funksionallik qanchalik farq qilishini hisobga olsak, ularni ajratish to'g'ri harakat bo'ladi;
  3. Ishlab chiquvchilar platforma mantig'i, mijoz-server o'zaro ta'siri va ular yozadigan algoritmlarni chuqurroq tushunishadi. 8.0 va undan oldingi versiyalarda mijoz-server qismini tushunmasdan ishlab chiqilgan hujjatlar yoki katalog shakllarini topish juda keng tarqalgan edi;
  4. Konfiguratsiyalar tezligini oshirish va mijoz kompyuterlariga yukni kamaytirish;
  5. Kuchli shaxsiy kompyuterlarni sotib olish zarurati yo'qligi sababli ish joylari uchun kompyuterlarni sotib olish xarajatlarini kamaytirish.

1C ishga tushirishning asosiy rejimi sifatida boshqariladigan shaklni tanlash ko'plab kutilmagan hodisalar keltirishi mumkin. Ammo to'g'ri yondashuv bilan bu qadam katta dividendlar olib keladi, shuning uchun Rossiya bo'ylab tobora ko'proq 1C foydalanuvchilari buni hal qilishadi. 1C kompaniyasi kelajakda boshqariladigan shakllarni ishlab chiqishga umid qilayotganini hisobga olsak, eskirgan an'anaviy shakllarda qolish xavfli.

QO‘NG‘IROQ

Bu xabarni sizdan oldin o'qiganlar bor.
Eng so'nggi maqolalarni olish uchun obuna bo'ling.
Elektron pochta
Ism
Familiya
Qo'ng'iroqni qanday o'qishni xohlaysiz
Spam yo'q