Internet Windows Android
Kengaytirish

Modali oynalarni 1 soniyada qanday olib tashlash mumkin. Nima uchun "Bu rejimda modal oynalarni ishlatish taqiqlangan" xatosi paydo bo'ladi? Muammoni tezda hal qilish

14
Korxonani Oddiy yoki Boshqariladigan ilovada ishga tushirishga majburlash uchun quyidagi tugmalar ishlatiladi: / RunModeOrdinaryApplication, konfiguratsiya sozlamalariga qaramay, qalin mijozni normal rejimda ishga tushiradi. 3
Foydalanuvchilar ular uchun tuzilgan interfeysni o'zgartira olmasligi kerak! Biznes: O'chirish uchun siz ildiz konfiguratsiya elementining kirish huquqidagi "Foydalanuvchi ma'lumotlarini saqlash" ni o'chirib tashlashingiz kerak. ... 2
Joriy ishda foydalanuvchi odatda bir nechta ob'ektlarni ochadi. Bu hujjat, ma'lumotnoma, hisobot va boshqalar bo'lishi mumkin. Oldingi interfeysda ochiq ob'ektni tezda topish va uni yangilashda hech qanday muammo yo'q edi ... 2
Oxirgi maqolada: 1C da manzil tasniflagichini (KLADR) o'rnatish, men sizga Kladr nima ekanligini va uni 1C oddiy shakllariga qanday yuklash kerakligini aytdim (8.0-8.2). Ushbu maqolada men sizga manzil tasniflagichini (KLADR) qanday yuklashni ko'rsataman ... 2
Ko'pincha, ma'lum bir konfiguratsiyani ishlab chiqishda, foydalanuvchilar rasmlarni katalog elementiga qo'shishni xohlashadi va ular ma'lumotlar bazasida saqlanadi. Ushbu maqolada men sizga qurilish ob'ektlarini ma'lumotnomaga qanday ulash kerakligini aytaman ...

1C 8.3 platformasining yangi interfeysi - "taksi" ning kiritilishi foydalanuvchilar va dasturchilar quyidagi tarkibdagi xatoga duch kelishlariga olib keldi: modal oynalar v bu rejim taqiqlangan ".
Guruch. 1

1C texnologik platformasini ishlab chiquvchilari olib kelish orqali global tendentsiyalarda muvaffaqiyat qozonishga intilishadi dasturiy ta'minot xalqaro standartlarga muvofiq. Ikkinchisi muqarrar ravishda veb -sahifalarga yaqin bo'lgan yagona interfeysga olib keladi.

Modallar va qalqib chiquvchi oynalar yomon ta'mning belgisi bo'lib, dasturiy ta'minotni ishlab chiqishda uzoq vaqtdan beri nomaqbul deb tan olingan. "Bir oynada" ishlash zarurati foydalanuvchilar ongida mustahkam o'rnashgan.

1C platformasini ishlab chiquvchilari amaliy echimlarni ishlab chiquvchilarni "yangi usulda" ishlashga joriy etishga urinishdi. Yangi taksi interfeysi joriy etilishi bilan ular yangi platformani to'ldirishdi yangi funksiya- "uslubdan foydalanish tartibi".

Muammoni tezda hal qilish

Vaqt bo'lmasa, muammoni tezda hal qilish kerak bo'lsa, siz juda oddiy, ammo unchalik to'g'ri bo'lmagan echimga murojaat qilishingiz mumkin - faqat konfiguratsiya xususiyatlarida modallik rejimini o'zgartirish kerak.

Buning uchun konfigurator rejimida tizimga o'ting, konfiguratsiyani oching:

Shundan so'ng, ochish uchun konfiguratsiya ildizini o'ng tugmasini bosing kontekst menyusi, "Xususiyatlar" ni tanlang:


Guruch. 3

Ochilgan konfiguratsiya xususiyatlarida, yorliqlarda "Modaldan foydalanish rejimi" ni toping, "Foydalanish" -ni tanlang:


Guruch. 4

"F7" tugmachasini bosib o'zgarishlarni saqlang va qo'llang.

8.3.3.641 versiyasida amalga oshirildi.

1C: Enterprise foydalanuvchidan ma'lumotlarni kiritish talab qilinadigan holatlarda modal oynalardan foydalanadi, ularsiz algoritmni keyingi bajarish mumkin emas. Bunday holda, dastur interfeysining qolgan qismi to'liq bloklanadi va foydalanuvchi modal oynani yopmaguncha dastur kodining bajarilishi to'xtaydi.

Veb -mijoz paydo bo'lishi va 1C: Enterprise -ga o'tish bilan mobil platformalar, modallar manba bo'lib chiqdi katta raqam noqulayliklar va muammolar, ko'pincha hal qilinmaydi.

Odatda "ish stoli" brauzerlari yaxshiroq yoki yomonroq, lekin ular modal oynalarni qo'llab -quvvatlaydi va ularni yangi brauzer oynasida "popup" sifatida ochadi:

Ammo pop-up texnologiyasi Internetda reklama uchun keng qo'llanilganligi sababli, pop-uplar deyarli barcha brauzerlarda sukut bo'yicha o'chirilgan. Ko'pgina hollarda, brauzer sozlamalarini o'zgartirmasdan, veb -mijozning ishlashi imkonsiz bo'ladi.

Yana bir muammo shundaki mobil brauzerlar modallarni umuman qo'llab -quvvatlamang. Va 1C: Enterprise ularda ishlashi uchun veb -mijozda maxsus mexanizm ishga tushirildi. Bu juda murakkab mexanizm va afsuski, u barcha zarur vaziyatlarni qamrab olmaydi. Natijada, konfiguratsiyalar iPad -da ishlaydi, masalan, katta qiyinchilik bilan.

Bunday holatda, 1C: Enterprise interfeysining modal oynalarni ishlatmasdan tanlashi yuqorida sanab o'tilgan barcha muammolarni bartaraf qiladi.

Bu ilgari modal oynalar bilan ta'minlangan funksiyadan voz kechmaydi. Ammo bu funksiya brauzerlarda 1C: Enterprise ishlashiga xalaqit bermaydigan boshqa texnologiyalar yordamida amalga oshiriladi.

Interfeysning yangi rejimida, avvalgi modali bo'lgan oyna, ota -ona oynasida chiziladi va xuddi shu tarzda veb -mijozning qolgan interfeysini bloklaydi:

Natijada:

  • veb -mijozning ishlashi va barqarorligini yaxshilaydigan yangi brauzer oynalari ochilmaydi;
  • Ko'p hollarda qo'shimcha sozlash brauzer keraksiz bo'lib qoladi, chunki 1C: Enterprise endi qalqib chiquvchi oynalarni ishlatmaydi;
  • veb -mijoz yordamida har qanday konfiguratsiya iPad va boshqa mobil qurilmalarda ishlashi mumkin.

Tabiiyki, mo''jizalar bo'lmaydi va yangi ish rejimini "sehrli tayoqcha to'lqini" bilan yoqib bo'lmaydi. Yangi blokirovka oynalari bilan ishlash mantig'ini o'zgartirish talab qilinadi. Lekin yaxshi xabar shundaki, bu o'zgarishlar qiyin emas va dasturning barcha "shubhali" qismlarini nazorat qilish mumkin. Platforma maxsus konfiguratsiyani ishlab chiqish bosqichida butun konfiguratsiyaning yangi mexanizmlardan foydalanishini va modal oynasiz ishlashini tekshirishga imkon beradi.

Bunday oynalar bilan ishlash mantig'ini o'zgartirish zarurati yangi interfeysning ish rejimi faqat foydalanuvchi uchun modallikni ta'minlaganligi bilan bog'liq. Biroq, ishlab chiquvchi uchun, blokirovka oynasi ko'rsatilganda, dastur kodining bajarilishi to'xtamaydi.

Bu shuni anglatadiki, ilgari bir butun bo'lgan algoritmni endi ikki qismga bo'lish kerak. Biri, blokirovka oynasi ochilishi bilan tugaydi, ikkinchisi, foydalanuvchi bu oynani yopganda bajariladi. Tizim dastur kodini bajarishni qaerda davom ettirishini bilishi uchun, foydalanuvchi bu oynani yopganda bajarilishi kerak bo'lgan protsedura nomi blokirovka oynasiga o'tkaziladi.

Bu o'zgarishlarning mohiyatini misol bilan ko'rish osonroq. Modali oynani ochgan va olingan ma'lumotlarni qayta ishlagan eski protsedura quyidagicha ko'rinishi mumkin.

Shakl uchun yangi versiyada Format matn kiritish (blokirovka oynasida ochiladi) siz xususiyatni sozlashingiz kerak Ochish rejimi qiymatida BlockAllInterface ... Bu foydalanuvchiga modallikni beradi:

Dastur kodi bitta protsedura o'rniga, avvalgidek, ikkita protsedurani o'z ichiga oladi:

Birinchi protsedurada biz shaklni ochamiz. Bu holda, oxirgi parametrda, biz unga ikkinchi protseduraning joylashishini beramiz, u foydalanuvchi oynani yopgandan so'ng bajariladi. Bunday holda, bu protsedura bir xil modulda joylashgan, lekin umuman boshqasida joylashishi mumkin.

Foydalanuvchi ma'lumotni kiritganda va shaklni yopganda, ular biz ko'rsatgan ikkinchi protsedurada qayta ishlanadi, biz unga qabul qilingan ma'lumotlarni qayta ishlaydigan "eski" kodni o'tkazdik.

Ishlab chiquvchi modal rejimda (xohishiga ko'ra) ochishi mumkin bo'lgan shakllardan tashqari, har doim, ishlab chiqaruvchining xohishidan qat'i nazar, ma'lumotlarni kiritish yoki tanlash uchun modal shakllarni ochadigan ko'milgan til usullari mavjud. Masalan, usul Qiymatni kiriting () .

Modalsiz rejimda bunday usullardan foydalanish yanada osonroq. Bunday usullarning barchasi uchun platforma takroriy usullarni yaratdi, ularni chaqirganda, foydalanuvchi oynani yopgandan so'ng bajariladigan protseduraning manzilini ham ko'rsatishingiz kerak.

Masalan, quyida eski usuldan foydalanish ko'rsatilgan Qiymatni kiriting () va uning yangi zaxira usuli ShowEnterValues ​​() :

Aytishim kerakki, sanab o'tilgan holatlarga qo'shimcha ravishda, ba'zi platforma mexanizmlari foydalanuvchi bilan muloqot qilish uchun modal oynalardan ham foydalanadi. Va bu hech qanday tarzda ishlab chiquvchining harakatlariga bog'liq emas.

Shu sababli, platformaning bunday tizimli dialoglari ham ishning modal bo'lmagan versiyasiga o'tkaziladi.

Amaliy echimlarda modal oynalarni ishlatishdan asta -sekin voz kechish rejalashtirilgan. Shu sababli, ilgari yozilgan amaliy echimlarga mos kelishi uchun platforma modal oynalar yordamida interfeysning eski versiyasida ishlash qobiliyatini saqlab qoladi.

1C: Enterprise 8.3 platformasidagi konfiguratsiya xususiyatlarida modaldan foydalanish tartibi mavjud. Agar bu maydonning qiymati "Foydalanmang" bo'lsa, u holda siz modal oynani ochmoqchi bo'lganingizda, platformada "Bu rejimda modal oynalarni ishlatish taqiqlangan" degan xabar paydo bo'ladi. Bu dastur kodining bajarilishini to'xtatadi.

Ushbu maqolada modal rejim o'chirilgan bo'lsa, foydalanuvchiga savol misolidan foydalanib, dastur kodini o'zgartirish mexanizmi ko'rsatilgan.

Vaqti -vaqti bilan, dasturiy mahsulotni ishlab chiqishda, foydalanuvchidan bajariladigan harakatlar haqida so'rash zarurati tug'iladi. Masalan, avtomatik to'ldirish bilan jadval bo'limlari... PMni to'ldirishdan oldin, foydalanuvchidan buni qilish zarurligini so'rash kerak. Va uning javobiga qarab, Bosh vazir tozalanadi va to'ldiriladi yoki to'ldirilmaydi.

Savol bilan kodning qismi quyidagicha ko'rinishi mumkin:

Agar PM. Miqdor ()< >0 Keyin Javob = Savol (" // Bu satrda savolli modal oyna ko'rsatiladi va foydalanuvchi javob bermaguncha kodni bajarilishi to'xtatiladi Agar javob = muloqot oynasini qaytarish kodi bo'lsa. Yo'q, keyin qaytaring; EndIf; // Foydalanuvchi davom etishga rozi bo'ldi PM Ochiq (); EndIf; // Qo'shimcha chora ko'ring // Dastur bo'sh bo'lsa yoki foydalanuvchi ortiqcha to'ldirish haqidagi savolga ijobiy javob bersa, dastur bu erga keladi Qo'shimcha harakatlarni bajarish ();

Agar modali rejim o'chirilgan bo'lsa, ushbu kodning savoliga xatolik yuz beradi va keyingi bajarilishi to'xtatiladi. Sababi, Savol funksiyasi modal oynadan foydalanadi.

Bunday holda siz ShowQuestion protsedurasidan foydalanishingiz kerak. Ushbu protseduradan foydalanganda, foydalanuvchining javobni to'ldirishi kutilmaydi. Biroq, bu protseduraning birinchi parametri - foydalanuvchining javobini kuzatuvchi ogohlantirish tavsifi.

Oldindan yozilgan kod qanday o'zgaradi:

// Bosh vazirni ma'lumotlar bilan to'ldirish kerak // PMning to'liqligini tekshiring Agar PM. Miqdor ()< >0 Keyin // PM bo'sh emas, siz foydalanuvchidan toshib ketish haqida so'rashingiz kerak ShowQuestion (Yangi tavsifli ogohlantirish (") OverflowPTC tugallanishi", ThisObject, Qo'shimcha Parametrlar)," PM ortiqcha to'ldiriladi. Davom etilsinmi?", Dialogue ModeSavol. Ha Yo'q); // Bu satrda savolli oyna ko'rsatiladi, lekin kodning bajarilishi to'xtamaydi Aks holda // Bosh vazir bo'sh bo'lsa, dastur bu erga keladi Amalga oshirish: EndIf; // Dastur har qanday holatda, PM bo'sh bo'ladimi yoki yo'qmi, bu erga keladi // (agar, albatta, oldingi kodda xato bo'lmasa) . . . // Xuddi shu modulda eksport qilish tartibi // Foydalanuvchi savolga javob berganidan keyin chaqiriladi& OnClient protsedurasi OverflowPOFC Completion (ResponseResult, Qo'shimcha Parametrlar) Export ResponseResult = DialogReturnCode. Yo'q Keyin // Foydalanuvchi davom etishdan bosh tortdi Qaytish; EndIf; // Boshqa harakatlarni bajaring // Agar dastur bo'sh qolmagan bo'lsa va foydalanuvchi ortiqcha to'ldirish haqidagi savolga ijobiy javob bergan bo'lsa, dastur bu erga keladi PM Ochiq (); Amalga oshirish: Jarayonning tugashi

Shunday qilib, ShowQuestion protsedurasi bajarilganda dastur to'xtamaydi, shuning uchun barcha hodisalarni diqqat bilan ko'rib chiqish kerak
Ushbu muammoni hal qilishda, keyingi harakatlarning bajarilishi ikkita hodisada bo'lishi mumkin:
1. Agar PM bo'sh bo'lsa
2. Agar PM bo'sh bo'lmasa va foydalanuvchi to'la savolga ijobiy javob bersa

Va shunga ko'ra, dastur foydalanuvchining javobini kutishni to'xtatmaganligi sababli, ushbu hodisalarning chaqiruvi kodning turli qismlariga tarqatilishi kerak.
Shuning uchun, qoida tariqasida, PM to'liqligini tekshirgandan so'ng bajarilishi kerak bo'lgan barcha bajarilgan usullar alohida tartibda joylashtiriladi.

O'xshash mexanizm o'xshash foydalanuvchilar bilan o'zaro ta'sirlashish funktsiyalari uchun ishlatiladi (SelectValue, SelectFrom List va boshqalar).

"Bu rejimda modali oynalarni ishlatish taqiqlanadi" - bu xato endi 1C 8.3 platformasining yangi interfeysi kelishi bilan 1C foydalanuvchilari va dasturchilarini bezovta qila boshlaydi - "".

1C texnologik platformasini ishlab chiquvchilar o'z echimlarini dasturiy ta'minotni ishlab chiqishning jahon standartlariga moslab, zamon bilan hamnafas. Barcha standartlar u yoki bu tarzda veb -sahifalarga yaqin bo'lgan yagona interfeysga tushiriladi.

Modali va qalqib chiquvchi oynalar yomon shakl deb hisoblanadi va dasturiy ta'minotni ishlab chiqishda anchadan buyon to'xtaydi. Foydalanuvchilar "bitta oynada" ishlashga odatlangan.

Ayniqsa, tez -tez biz modal xatolarni ko'ramiz quyidagi usullar 1C:

  • Savol;
  • Ogohlantirish;
  • OpenValue.

Yangi taksi interfeysi chiqarilishi bilan 1C 8 platformasi ishlab chiqaruvchilari to'g'ri qaror qabul qilishdi - amaliy echimlar ishlab chiqaruvchilarini yangi usulda qayta o'qitishga urinish. Ular yangi platformaga "modalli foydalanish rejimi" deb nomlangan xususiyatni kiritdilar.

Muammoni tezda hal qilish

Agar siz buni tushunishga vaqtingiz bo'lmasa va muammoni tezda hal qilishingiz kerak bo'lsa, biz oddiy, lekin umuman to'g'ri bo'lmagan echimni taklif qilamiz. Xatolikni tezda tuzatish uchun konfiguratsiya xususiyatlarida modallik rejimini o'zgartirish kifoya.

Buning uchun tizimga rejimda kiring, konfiguratsiyani oching:

Ochiq konfiguratsiyada, konfiguratsiya ildizini sichqonchaning o'ng tugmasi bilan bosing va "Xususiyatlar" ni tanlab kontekst menyusiga qo'ng'iroq qiling:

267 1C video darsliklarini bepul oling:

Konfiguratsiya xususiyatlari ochiladi, bu erda podvalda bizni qiziqtiradigan xususiyat bor - "Modaldan foydalanish rejimi", "Foydalanish" rejimini tanlang:

Shundan so'ng, "F7" tugmachasini bosib o'zgarishlarni saqlang va qo'llang.

Muammoning to'g'ri echimi

Ushbu muammoni hal qilishning to'g'ri yo'li konfiguratsiyani o'zgartirish yoki tashqi ishlov berish yangi talablar uchun.

Ogohlantirish, savol, muloqot oynalari va boshqa modalar - bularning hammasini yangicha tarzda qayta yozish kerak.

Modallarni chaqirgan o'rnatilgan operatorlarni takroriy funktsiyalar bilan almashtirish kerak.

Masalan:

  • Ogohlantirish - ogohlantirishni ko'rsatish;
  • Savol - Savolni ko'rsatish (batafsil -);
  • - Kirish raqamlarini ko'rsatish.

Shu bilan birga, maxsus ob'ekt paydo bo'ldi - Xabarnoma tavsifi.

O'zgartirish misoli:

String = ""; EnterString (satr, "String qiymatini kiriting") Hisobot ("Siz kiritdingiz" + String);

Quyidagilar bilan almashtirilishi kerak:

String = ""; Ogohlantirish tavsifi = Yangi ogohlantirish tavsifi ( "TestStringEnter", ThisForm); ShowInputString (ogohlantirish tavsifi, satr, "String qiymatini kiriting") ;

Shu bilan birga, mijozga shunga o'xshash protsedurani qo'shing, u foydalanuvchi tomonidan qiymat kiritilganda ishlaydi:

& OnClient tartibi TestInputString (ReceivedValue, PassedParameters) Eksport hisoboti ("siz kiritdingiz" + String); Jarayonning tugashi

Konfiguratsiya ichida ishlab chiqilgan shakllar xuddi shu tarzda ochiladi. "OpenFormModal" usulini "OpenForm" bilan almashtirish kifoya, bunda bildirishnomaning tavsifi va u uchun zarur bo'lgan yangi protsedura ko'rsatilgan.

Ochilish shakli orqali chaqirilgan shaklga kirishni yopish uchun "WindowOpening Mode" xossasida forma xususiyatidagi "egasining oynasini qulflash" qiymatini ko'rsatish kifoya: