Boshqariladigan shakllar uv 1s tavsifi. StavAnalit

Biz hammamiz bilamizki, 1C kompaniyasi 1C platformasining juda ko'p turli xil versiyalariga ega edi; endi biz ushbu maqolani yozish paytida eng so'nggi versiyalardan biri bilan qiziqamiz, bu 1C 8.2 va 1C 8.3 versiyalari. Agar siz ushbu ikkala versiyada ham ishlashingiz kerak bo'lsa, ehtimol siz ushbu versiyalarning interfeyslarida farqlarni sezdi, foydalanuvchilar uchun ular faqat tashqi ko'rinishida farqlanadi. Aslida tanlov muntazam yoki boshqariladigan dastur tizimni ishga tushirish uchun qaysi shakllarni ko'rsatish kerakligini aytadi, muntazam yoki boshqariladigan, shuningdek, qaysi dastur mijozi sukut bo'yicha ishlatiladi, qalin yoki ingichka. Mijozlar haqida batafsil ma'lumot olish uchun "1C-da qalin va ingichka mijozlar nima, shuningdek ularning farqlari" maqolasini o'qing.

Oddiy 1C ilovasi (oddiy shakllar, oddiy interfeys, 1C 8.2 versiyasi)

1C 8.2 da faqat ishlash mumkin muntazam shakllar bilan, muntazam dastur rejimida. Quyidagi rasmda ma'lumotlar bazasi "muntazam 1C ilovasi" ish rejimida (muntazam shakllar) ko'rsatilgan.

Boshqariladigan 1C ilovasi (boshqariladigan shakllar, boshqariladigan interfeys, 1C 8.3 versiyasi)

1C 8.3 platformasida biz oddiy shakllar (moslik rejimida) va boshqariladigan shakllar bilan ishlashimiz mumkin. Bundan tashqari boshqariladigan shakllar ikki xil displeyga ega, bu standart va taksi. Standart boshqariladigan shakllar bilan 1C 8.3 konfiguratsiyasiga misol quyida ko'rsatilgan va undan keyin "Taksi" interfeysi ko'rsatilgan.

Oddiy va boshqariladigan 1C ilovasi o'rtasidagi farq nima?

Biz allaqachon bilib olganimizdek oddiy dastur va boshqariladigan dastur - bu 1C dasturini ishga tushirishning bunday turlari. Bundan tashqari, 1C ishga tushirish turining qiymatiga qarab ( muntazam yoki boshqariladigan dastur), ma'lum bir interfeys sukut bo'yicha yuklanadi ( muntazam yoki boshqariladigan shakllar), shuning uchun bu tushuncha uchun juda ko'p sinonimlar mavjud. Shuni ta'kidlashni istardikki, interfeyslardagi farqlar juda muhim, boshqariladigan interfeys butunlay qayta ishlab chiqilgan; Aslida, bu 1C dasturining oddiy foydalanuvchilari ko'radigan barcha farqlar. Dasturchilarga kelsak, boshqariladigan interfeys o'zgartirilgan kodni yozishni talab qiladi, chunki ishlab chiqish 1C 8.2 da emas, balki 1C 8.3 da amalga oshirilgan, shuning uchun barcha oqibatlar. Kod, shuningdek, mijoz va serverga bo'linishi kerak, bu konfiguratorda tegishli ko'rsatmalar yordamida ko'rsatilgan.

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

1-rasm

Bundan tashqari, mijoz ilovasi va server o'rtasida funksionallikni taqsimlash 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'anaviylardan sezilarli darajada farq qiladi. Avvalo, boshqariladigan shakllar tizim tomonidan maxsus sozlamalar asosida avtomatik ravishda yaratilishi bilan ajralib turadi, endi dasturchi har bir shaklni batafsil chizishga muhtoj emas; Shaklning barcha funksionalligi tafsilotlar va buyruqlar ko'rinishida tasvirlangan. Tafsilotlar - bu forma ishlaydigan ma'lumotlar va buyruqlar - bajariladigan harakatlar. Har bir usul yoki shakl o'zgaruvchisi uchun bajarish joyini (mijoz yoki server) aniqlaydigan kompilyatsiya direktivasi ko'rsatilishi kerak. Kompilyatsiya direktivalari quyidagicha bo'lishi mumkin:

  • &OnClient,
  • &Serverda,
  • &OnServerWithoutContext,
  • &OnClientOnServerWithoutContext.

Boshqariladigan shakl oddiy shakldan u ishlaydigan ma'lumotlar turlari bilan ham farq qiladi. Oddiy shakl 1C: Enterprise taqdim etadigan 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 qo'llaniladigan turlar - bu nozik va Web mijoz tomonida mavjud bo'lgan turlar (masalan, Number, DirectoryLink.Products, GraphicScheme, TabularDocument);
  • maxsus ma'lumotlar turlariga aylantiriladigan turlar - boshqariladigan shakl ma'lumotlar turlari. Bunday turlar shakl tafsilotlari ro'yxatida qavslar ichida ko'rsatiladi, masalan (DirectoryObject.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.

  • Shakl ilova obyektlari bilan ishlamaydi


2-rasm

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


3-rasm

Ilova ob'ektlari faqat serverda va faqat ma'lum operatsiyalarni bajarish vaqtida 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 yuboriladi.

Yozib olishda:

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

Aytaylik, 8.1 versiyasi uchun yozilgan tashqi ishlov berish mavjud. Uni 8.2 da ishga tushirish mumkinmi, shunda u eski, boshqarilmaydigan shaklda ishlaydi? Ma'lumotlarni uzatish uchun faqat bir marta ishlov berish kerak bo'ladi va siz uning uchun boshqariladigan shaklni bir marta yaratishni xohlamaysiz...

Boshqariladigan rejimda tashqi ishlov berish (alohida fayldan ochilgan) uchun oddiy shakllardan foydalanish qo'llab-quvvatlanmaydi. Shuning uchun, agar boshqariladigan rejimda ishlaydigan konfiguratsiyada boshqarilmaydigan shakl bilan ishlov berishni boshlash kerak bo'lsa va siz ushbu ishlov berish uchun yangi, boshqariladigan shakl yaratmoqchi bo'lmasangiz, unda bunday ishlov berish birinchi navbatda konfiguratsiyaga kiritilishi kerak.

Muntazam (boshqarilmaydigan) shakllar faqat qalin mijozda ishlashi mumkin. Yupqa va veb-mijozlar faqat boshqariladigan shakllarni qo'llab-quvvatlaydi.

Shuning uchun, agar siz boshqariladigan dastur interfeysida muntazam ishlov berish shaklini ochishingiz kerak bo'lsa, unda bu faqat boshqariladigan dastur rejimida ishlaydigan qalin mijozda mumkin.

Eng oson yo'li - konfiguratordan boshqariladigan dastur rejimida qalin mijozni ishga tushirish, buni parametrlarda ko'rsatish: Xizmat - Variantlar - 1C: Enterprise-ni ishga tushiring - Asosiy - Qalin mijoz (boshqariladigan dastur).

Ammo shuni yodda tutish kerakki, mijozlarni boshqariladigan rejimda ishga tushirish faqat konfiguratsiya 8.1 versiyasi mosligi o'chirilgan bo'lsa mumkin (xususiyat). Moslik rejimi).

Biroq, bu platforma uchun eski, boshqarilmaydigan ishlov berish shaklini ochish uchun etarli emas.

Boshqariladigan rejimda muntazam shakllardan foydalanish qobiliyati maxsus konfiguratsiya xususiyati bilan tartibga solinadi - Boshqariladigan ilovada oddiy shakllardan foydalaning. Bu xususiyat o'rnatilishi kerak.

Konfiguratsiya xususiyatlari palitrasida bu xususiyat har doim ham ko'rsatilmaydi, faqat konfigurator parametrlarida konfiguratsiyani tahrirlash rejimi Boshqariladigan ilova va oddiy dastur tanlangan bo'lsa ( Xizmat - Variantlar - Umumiy).

Va nihoyat, siz boshqariladigan rejimda normal shaklini ko'rmoqchi bo'lgan ob'ekt bitta asosiy ob'ekt shakliga ega bo'lishi kerak va bu shakl oddiy, boshqarilmaydigan bo'lishi kerak.

Boshqa hollarda (agar ob'ektda asosiy shakl bo'lmasa yoki ob'ekt boshqariladigan asosiy shaklga ega bo'lsa), platforma sukut bo'yicha boshqariladigan shaklni yaratadi yoki ochadi (agar mavjud bo'lsa).

Asosiy muammo shundaki, 10-15 yil ichida oddiy shakllar uchun juda ko'p kodlar tuzilgan. Hech kim bularning barchasini mijoz-serverda qayta yozishni xohlamaydi + ko'p odamlar interfeys bilan ishlashga o'rgatilgan. Kelgusi yildan boshlab BP 3.0 ga majburiy o'tish ishlab chiquvchilar va buxgalterlar ongida vahima uyg'otmoqda. Fikr-mulohaza juda yoqimsiz bo'ladi. Bundan tashqari, kasbga kirish uchun bar ko'tarilmoqda, dasturlash qiyinroq va standart bo'lganlar yanada qiyinlashdi. Standart hujjatlardagi yangi algoritmning narxi qancha? Hujjatlarda 2-3 tugma mavjud bo'lganda UV ajoyib ko'rinadi, UV mobil qurilmalarda ishlash uchun juda yaxshi, lekin kompaniyalarning atigi 0,01 foizi undan foydalanadi. Agar 1C yangi narsa bilan chiqmasa, siz o'zgartirishingiz kerak bo'ladi, lekin bu hamma uchun uzoq va og'riqli bo'ladi. Pulni esa kompaniyalarning o‘zi to‘lashi kerak bo‘ladi.

Men ham hozirgacha boshqariladigan shakllardan faqat salbiy narsalarni boshdan kechirdim, bu erda innovatsiyaning yana bir qancha kamchiliklari bor:

  • Hech narsa? Xo'sh, men bunga bir necha bor duch keldim, masalan, ZUP conf-ga tashqi chop etish shaklini yozish va biriktirish, u erda ishlov berish butun bir epik, Internetdagi ko'rsatmalar va kod sahifalari bilan to'la.
    qalin mijozda parametrlarga ega bitta protsedura mavjud, ya'ni. rivojlanish daqiqalar masalasidir.
    va tormozlar yalang'och ko'z bilan ko'rinadigan nozik
  • Boshqariladigan shakllarni tayyorlash imkoniyatiga kelsak - bu san'at uchun san'at, lekin amaliy nuqta nima, ayniqsa fayl versiyasi uchun?
  • Men 3 yil davomida UVda haykaltaroshlik qildim, lekin endi men oddiy shakllarga qaytdim va menga ishoning, bu o'tishni psixologik jihatdan amalga oshirish juda qiyin edi, lekin bu mening ongli tanlovim, chunki UVda 1c taklif qiladigan narsa butunlay UG…. Balki bir necha yil ichida 1c yutuq qiladi, lekin hozir u bu yutuqni amalga oshirish uchun joy qidirmoqda...
  • Konfiguratordagi ultrabinafsha nurlarining ochilishi ancha uzoq davom etadi.
    Shundan so'ng, 8.1 da shakllarni ochish yuk mashinasidan samolyotga o'tishga o'xshaydi!
  • Hamma uchun ko'proq muammolar bor, foydalanuvchilar yangi interfeysdan hayratda qolishdi (hamma buni tan olmaydi, lekin ular kichikroq narsalarda ancha ahmoqdir), dasturchilarning yarmi professionallik uchun yaroqsiz bo'lib qoldi, oddiy mutaxassis uchun bu qiyinlashdi. ish topish va qanday qilib sifatli mahsulot ishlab chiqarish. Va UV-ning eng zo'r marketing mavzusi shundaki, ular hamma joyda ko'tariladi, deb o'tish oddiy yangilanish bilan sodir bo'ladi, lekin hamma boshidanoq eng so'nggi nashrlarni kuzatib borish kerakligini unutadi! Lekin printsipial jihatdan menga g'oya yoqadi!
  • Bilmayman, mening tajribam buning aksini ko'rsatadi. Qattiq shakldagi bumlar bir necha yillardan beri avtomatik ravishda urilgan joyda, har oy yangi UV standartlarida u "nega, bu tugmani yangilagandan keyin 1C hozir qayerda va nega endi ishlamayapti" boshlanadi, buni ko'rasiz. , tezlikni qo'shmaydi.
  • - ko'proq kod bor
    - kod yanada murakkablashdi
    — standartlarini o'zgartirish ancha qiyin
    - men UT11 ni bergan foydalanuvchilar 10.x bilan solishtirganda hech qanday afzalliklarni topa olmadilar
    - lekin ular ba'zi sekinlashuvlar va qidiruv kabi ba'zi funktsiyalarning etishmasligini aniqladilar (negadir ular tanlovni emas, balki oldinga orqaga qarab qidirishni xohlashdi)
    Mening fikrimcha, qurbonliklar veb-mijoz va planshetlar uchun juda katta. Bundan tashqari, shaxsan men masofaviy kirishdan muvaffaqiyatli foydalanishi kerak bo'lgan veb-mijoz bilan haqiqiy ishni hali ko'rmadim.
  • Mijoz-server bedlam ishlash va miqyoslilikni oshirishni ta'minlashi kerak, shu bilan birga xarajatlar kodlashning o'sishini o'z ichiga oladi.
    Biroq, hamma ham o'sishni boshdan kechirmadi, shuning uchun umidsizlik. Va shu bilan birga, hamma kodlash xarajatlariga moyil edi.
    P.S. Aslida, menga boshqariladiganlar yoqadi, men ularga xotirjamlik bilan qarayman. Ammo odatdagilar buzuq bo'lib qoldi.
  • Uyda (oddiy kompyuter) men ichimlikni yakka tartibdagi tadbirkorlarga ko'ra o'tkazaman.
    8.3, BP3, katakli. Asosiy taassurot shundaki, men ishlamayman, lekin doimo kutaman. gemorroyoid reaktsiya. Hisob uchun SALT shunchaki hayratlanarli shaklda yaratilgan - bu mega-xoldingda yil uchun hisob kartasi kabi ko'rinadi.
  • UT11 - yovvoyi tormoz, dahshat va umuman dahshatli tush.
    UT10 UT11 bilan solishtirganda uchadi.
    UV nuriga kelsak, xatolar yillar davomida zararlangan, hamma narsa egri, ustunlar hech qachon bitta ekranga sig'maydi, ko'p hollarda cho'zish dahshatli.
    Va men hali ham ko'plab minuslarni sanab o'tishim mumkin, lekin ehtimol, ortiqcha narsalar haqida hech narsa aytmayman. Ular oddiygina mavjud emas.
    Firmalar aynan shu shakllarni tugatdilar, chunki ishlab chiqish qimmatroq, maxsuslar yo'q edi va oddiylar ham yo'q.

Kamchiliklari bor, lekin ular albatta mavjud...

pros:

Javob uzoq vaqtdan beri mavjud, UP nima berdi:

o'zaro platforma mijozi

  • yomon aloqa liniyalarida ishlash
  • brauzer orqali ishlash qobiliyati (mijozni o'rnatmasdan)

Va 1C 8.2 muhitida kod tuzilmasi, boshqariladigan shaklga ma'lumotlarni uzatish ob'ekti.

Kirish

Keling, "boshqariladigan shakl" tushunchasining qisqacha tavsifi va 1C platformasining tegishli tushunchalari bilan boshlaylik. Platformani biluvchilar ushbu bo'limni o'tkazib yuborishni xohlashlari mumkin.

2008 yilda 1C platformasining yangi versiyasi: Enterprise 8.2 (keyingi o'rinlarda Boshqariladigan ilova deb yuritiladi) mavjud bo'lib, u interfeys bilan ishlashning butun qatlamini butunlay o'zgartiradi. Bunga buyruqlar interfeysi, shakllar va oyna tizimi kiradi. Shu bilan birga, nafaqat konfiguratsiyada foydalanuvchi interfeysini ishlab chiqish modeli o'zgaradi, balki mijoz ilovasi va server o'rtasidagi funksionallikni ajratish uchun yangi arxitektura ham taklif etiladi.
Boshqariladigan dastur quyidagi turdagi mijozlarni qo'llab-quvvatlaydi:

  • Qalin mijoz (oddiy va boshqariladigan ishga tushirish rejimi)
  • Yupqa mijoz
  • Veb mijoz
Boshqariladigan ilova yangi texnologiya asosida tuzilgan shakllardan foydalanadi. Ular chaqiriladi Boshqariladigan shakllar. O'tishni engillashtirish uchun oldingi shakllar (muntazam shakllar deb ataladigan) ham qo'llab-quvvatlanadi, ammo ularning funksionalligi ishlab chiqilmagan va ular faqat qalin mijozni ishga tushirish rejimida mavjud.
Ishlab chiquvchi uchun boshqariladigan shakllarning asosiy farqlari:
  • Tuzilishning "piksel bo'yicha" tavsifi emas, deklarativ. Shakl ko'rsatilganda elementlarning o'ziga xos joylashuvi tizim tomonidan avtomatik ravishda amalga oshiriladi.
  • Shaklning barcha funksionalligi sifatida tavsiflanadi tafsilotlar Va jamoalar. Tafsilotlar - bu forma ishlaydigan ma'lumotlar va buyruqlar - bajariladigan harakatlar.
  • Shakl serverda ham, mijozda ham ishlaydi.
  • 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, bajarilish joyini (mijoz yoki server) va shakl kontekstiga kirishni aniqlash.
Shakl usullarini kompilyatsiya qilish uchun direktivalarni sanab o'tamiz:
  • &OnClient
  • &Serverda
  • &OnServerKontekstsiz
  • &OnClientOnServerKontekstsiz
Keling, yuqoridagilarni misol qilib keltiramiz. 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.
Bu vaqt mobaynida ishlab chiquvchilar shakllarni yaratishda mijoz-server o'zaro ta'siri tamoyillari haqida umumiy tushunchani ishlab chiqdilarmi va yangi arxitektura realliklarida dasturiy modullarni amalga oshirishga yondashuv o'zgarganmi?

Keling, bir xil standart konfiguratsiyaning bir nechta shakllaridagi kod strukturasini (shakl moduli) ko'rib chiqamiz va naqshlarni topishga harakat qilamiz.
Tuzilish deganda ishlab chiquvchi tomonidan guruh usullari va kompilyatsiya direktivalari uchun ajratilgan kod bo'limlari (ko'pincha bu sharhlar bloklari) tushuniladi.
1-misol:
Hodisalarni qayta ishlash bo'limi Usul - mijozda Usul - serverda Usul - mijozda Xizmat ko'rsatish protseduralari va funktsiyalari bo'limi Yordamchi kiritishni boshqarish funktsiyalari
2-misol:
Xizmat ko'rsatish tartib-qoidalari va funktsiyalari To'lov hujjatlari Qiymatlar Voqealar ishlovchilari
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 “Aloqa maʼlumotlari” quyi tizimining protseduralari
Aslida, kod tuzilmasi yo'q yoki yumshoq qilib aytganda, 8.1 shakllaridagiga o'xshaydi:

  • Ma'lumotga ega bo'lmagan so'zlar "Umumiy, Xizmat, Yordamchi".
  • Timid mijoz va server usullarini ajratishga harakat qiladi.
  • Usullar ko'pincha interfeys elementlari bo'yicha guruhlangan "Mahsulotlar jadval qismi bilan ishlash, aloqa ma'lumotlari".
  • Usullar va kod guruhlarini o'zboshimchalik bilan joylashtirish. Masalan, Voqealar boshqaruvchilari bir shaklda tepada, boshqasida pastda, uchinchisida umuman ajratib ko'rsatilmagan bo'lishi mumkin va hokazo.
  • Va bularning barchasi bitta konfiguratsiyada ekanligini unutmasligimiz kerak.
  • Ha, shunday konfiguratsiyalar mavjudki, unda "Umumiy, Xizmat, Yordamchi" so'zlari har doim bir xil joylarda bo'ladi, lekin ...
Nima uchun sizga kod tuzilishi kerak?
  • Xizmatni soddalashtirish.
  • O'rganishni soddalashtiring.
  • Umumiy/muhim/muvaffaqiyatli tamoyillarni qayd etish.
  • ... sizning tanlovingiz
Nega 1C dan mavjud rivojlanish standarti yordam bermaydi?
Keling, boshqariladigan shaklni yozishda tavsiya etiladigan 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-server aloqasini hisobga olgan holda dastur.
  • va h.k.
Bu mutlaqo to'g'ri bo'lgan shiorlar, lekin ularni qanday amalga oshirish kerak? 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 buyon matnda masofaviy kirish interfeysi deb yuritiladi)
  • Ma'lumotlarni uzatish ob'ekti(keyingi o'rinlarda ma'lumotlarni uzatish ob'ekti deb yuritiladi)
Martin Faulerdan bir so'z, uning ushbu tamoyillarni 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-faktura va uning barcha bandlarini alohida so‘rash o‘rniga, bitta so‘rovda barcha hisob-faktura elementlarini o‘qib chiqishingiz va yangilashingiz 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 uzatish ob'ektlari boshqa narsa emas shishgan maydon to'plami...Bu jirkanch yirtqich hayvonning qiymati faqat imkoniyatda 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 amaliy dasturlash interfeysi ushbu tamoyillarning ko'plab misollarini o'z ichiga oladi.
Masalan, OpenForm() usuli, odatiy "qo'pol" interfeys.
OpeningParameters = Yangi tuzilma ("Parametr1, Parametr2, Parametr3", Qiymat1, Qiymat2, Qiymat3); Shakl = OpenForm(FormName, OpeningParameters);
v8.1 da qabul qilingan uslub bilan solishtiring.
Shakl = GetForm (FormName); Form.Parameter1 = Qiymat1; Form.Parameter2 = Qiymat2; Form.Open();

Boshqariladigan shakl kontekstida ko'plab "Ma'lumotlarni uzatish ob'ektlari" mavjud. Siz tanlashingiz mumkin tizimli Va ishlab chiquvchi tomonidan belgilangan.
Tizimlilar dastur ob'ektini mijozda bir yoki bir nechta shakl ma'lumotlari elementlari shaklida modellashtiradi. Shakl tafsilotlariga murojaat qilmasdan ularni yaratish mumkin emas.

  • DataFormsStructure
  • DataForms Collection
  • DataFormStructureWithCollection
  • DataShapesTree
Tizim ma'lumotlarini uzatish ob'ektlarini dastur turlariga va aksincha konvertatsiya qilish quyidagi usullar yordamida amalga oshiriladi:
  • ValueInFormData()
  • FormDataValue()
  • CopyFormData()
  • ValueInFormAttributes()
  • FormAttributesValue()
Mavjud yechimni moslashtirishda ko'pincha aniq konversiya qo'llaniladi. Usullar FormDataCollection emas, balki ValueTable kabi kiritish parametrlarini kutishi (xususiyatlardan foydalanishi) mumkin yoki usul ilova ob'ekti kontekstida aniqlangan va shakldan to'g'ridan-to'g'ri qo'ng'iroq qilish uchun mavjud bo'lmagan.
Misol 1C v8.1:
// FillUserCache(DepartmentLink) shakli kontekstida mijozda
Misol 1C v8.2:
// forma kontekstida serverda ProcessingObject = Form AttributesValue("Object"); ProcessingObject.FillUserCache(DepartmentRef); ValueVFormAttributes(ProcessingObject, "Ob'ekt");

Tuzilishi ishlab chiquvchi tomonidan belgilanadigan ma'lumotlarni uzatish ob'ektlari mijozda ham, serverda ham 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
  • Xat yozish
  • 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 uchunTransaction Cycle Start(); DocOb = Order.GetObject(); …. boshqa harakatlar, faqat buyurtma bilan mumkin emas... Istisno CancelTransaction(); Errors.Insert(Buyurtma, ErrorDescription()); EndAttempt; 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 unutmaslik kerakki, bajarilish vaqtida bu ikkita o'zaro ta'sir qiluvchi jarayon bo'lib, ularning har biri sezilarli darajada farq qiladi.
  • Masofaviy kirish interfeysining aniq identifikatsiyasi, 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'tkazilishini darhol ko'rish imkonini beradi va kontekstli yordamdan foydalanishni soddalashtiradi. Rasmiy tavsiyalar (ITS) postfikslar bilan nomlash usullarini taklif qilishini unutmang, masalan, ChangeOrderStatusOnServer(). Biroq, takror aytamizki, barcha server usullarini mijozdan chaqirib bo'lmaydi va shuning uchun kompilyatsiya joyidan ko'ra mantiqiy foydalanish muhimroqdir. Shuning uchun, "Server" prefiksi bilan biz faqat mijoz uchun mavjud usullarni belgilaymiz, keling, misol usulini ServerChangeOrderStatus() deb nomlaymiz;
  • 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'shish uchun aniq joy bo'lishi kerak. Muhim nuqta shundaki, konfigurator tomonidan avtomatik ravishda yaratilgan usul shablonlari modul oxiriga qo'shiladi. Shakl elementlari uchun hodisa ishlov beruvchilari ko'pincha avtomatik ravishda yaratilganligi sababli, har bir ishlov beruvchini modulning boshqa joyiga sudrab ketmaslik uchun mos keladigan blok oxirgi joyda joylashgan.
Quyida sanab o'tilgan maqsadlarni amalga oshiradigan modulning asosiy tuzilishi keltirilgan.
  • Grafik variant - ijro etilishning asosiy oqimini aniq ko'rsatadi.
  • Matn varianti strukturani yangi shakl moduliga tezda kiritish uchun shablon dizayniga misoldir.

//////////////////////////////////////////////////////////////////////////////// // <(c) Автор=""Sana=""/> // <Описание> // // ////////////////////////////////////////////// ////////////////////////// // MODUL O'ZGARCHILARI ///////////////// // ///////////////////////////////////////////////////////// ////////// // SERVERDA //******* SERVERDAGI HOQIYoLAR ******* &Serverda yaratilganda server protsedurasi (muvaffaqiyatsizlik, standart ishlov berish) / /Ishlab chiqaruvchining mazmunini kiriting Protseduraning oxiri //******* MASOQDA KIRISH INTERFEYSI ******* //********* SERVERDAGI BIZNES MANTIQI ******* ///////// /////////////////////////////////////////////// /////// //////////////////// // MIJOZ VA SERVERNING UMUMIY USULLARI ////////////// /////// ///////////////////////////////////////////////// ///// //////// // MIJOZ HAQIDA //******* BIZNES MANTIQI MIJOZDA ******* //********** JAMOASI * ****** //********* MIJOLAR HOQADASI ******* //////////////////////// ///// //////////////////////////////////////////////////// // / / 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, tafsilotlar darajasi...
  • Keshlash. 1C muvaffaqiyatsiz arxitektura qarorini qabul qildi, keshlashni faqat umumiy modullarni chaqirish usullari darajasida joriy qildi va boshqarish imkoniyatlarini ta'minlamadi (muvofiqlik vaqti, talab bo'yicha qayta o'rnatish).
  • Yashirin server qo'ng'iroqlari. Mijozdagi ko'plab "zararsiz" operatsiyalar platformani server bilan bog'lanish uchun qo'zg'atadigan texnologik xususiyatlarni unutmang.


 

O'qish foydali bo'lishi mumkin: