Internet ablakok Android

Hogyan lehet eltávolítani a modális ablakokat 1 másodperc alatt. Miért jelenik meg a hiba "A modális ablakok használata ebben az üzemmódban tilos"? Gyors megoldás a problémára

14
Ahhoz, hogy a vállalatot normál vagy felügyelt alkalmazásban kelljen elindítani, a következő kulcsokat kell használni: / RunModeOrdinaryApplication a konfigurációs beállítások és ... ellenére elindítja a vastag klienst normál módban. 3
Szükséges, hogy a felhasználók ne módosítsák a számukra konfigurált felületet! Megoldás: A letiltáshoz el kell távolítania a "Felhasználói adatok mentése" pontot a gyökér konfigurációs elem hozzáférési jogaiból. ... 2
A jelenlegi munkában a felhasználó általában több objektumot nyit meg. Ez lehet dokumentum, referenciakönyv, jelentés stb. Az előző felületen nem volt probléma a nyitott objektum gyors megtalálásával és frissítésével ... 2
Az utolsó cikkben: Címosztályozó (KLADR) telepítése 1C-ben elmondtam, hogy mi a Kladr és hogyan kell betölteni az 1C rendes űrlapokba (8.0-8.2). Ebben a cikkben megmutatom, hogyan kell betölteni a címosztályozót (KLADR) a ... 2
Gyakran bizonyos konfigurációk kidolgozásakor a felhasználók fényképeket szeretnének csatolni egy könyvtárelemhez, és tárolni azokat az adatbázisban. Ebben a cikkben elmondom, hogyan lehet az építési objektumokat a referenciakönyvhöz csatlakoztatni ...

Az 1C 8.3 platform új kezelőfelületének - a „taxi” - bevezetése azt eredményezte, hogy a felhasználók és a programozók a következő tartalmú hibával találkoztak: modális ablakok v ezt a módot tiltott".
Rizs. 1

Az 1C technológiai platform fejlesztői arra törekszenek, hogy sikeresek legyenek a globális trendekben szoftver a nemzetközi szabványoknak megfelelően. Ez utóbbi elkerülhetetlenül egy egységes felülethez vezet a weboldalak közelében.

A modális és előugró ablakokat, amelyek a rossz ízlés jelei, régóta elfogadhatatlannak tartják a szoftverfejlesztésben. Az "egy ablakban" való munkavégzés szükségessége szilárdan gyökerezik a felhasználók fejében.

Az 1C platform fejlesztői kísérletet tettek arra, hogy az alkalmazott megoldások fejlesztőit "új módon" vezessék be. Az új taxi felület bevezetésével kiegészítették az új platformot új funkció- "a modalitás használatának módja".

Gyors megoldás a problémára

Idő hiányában, ha gyorsan meg kell oldania a problémát, akkor egy meglehetősen egyszerű, de nem túl helyes megoldáshoz folyamodhat - csak módosítania kell a modalitás módját a konfigurációs tulajdonságokban.

Ebből a célból lépjen a rendszerbe konfigurátor módban, nyissa meg a konfigurációt:

Ezt követően kattintson a jobb gombbal a konfigurációs gyökérre a megnyitáshoz helyi menü, válassza a "Tulajdonságok" lehetőséget:


Rizs. 3

A megnyitott konfigurációs tulajdonságokban a füleken keresse meg a "Modality use mode" lehetőséget, válassza ki a "Use" lehetőséget:


Rizs. 4

Mentse el és alkalmazza a módosításokat az "F7" billentyű megnyomásával.

A 8.3.3.641 verzióban implementálva.

1C: Az Enterprise modális ablakokat használ azokban a helyzetekben, amikor a felhasználónak információt kell megadnia, anélkül az algoritmus további végrehajtása lehetetlen. Ebben az esetben a program interfészének többi része teljesen blokkolva van, és a programkód végrehajtása leáll, amíg a felhasználó bezárja a modális ablakot.

A webes kliens megjelenésével és az 1C: Enterprise átállásával mobil platformok, a modálok bizonyultak a forrásnak egy nagy szám kellemetlenségek és problémák, gyakran megoldhatatlanok.

Általában az "asztali" böngészők jobbak vagy rosszabbak, de támogatják a modális ablakokat, és új böngészőablakban nyitják meg őket "előugró ablakként":

De mivel az előugró technológiát széles körben használják az interneten hirdetésekhez, az előugró ablakok alapértelmezés szerint szinte minden böngészőben le vannak tiltva. Az esetek túlnyomó többségében e böngészőbeállítás megváltoztatása nélkül a webes kliens működése lehetetlenné válik.

Egy másik probléma az mobil böngészők egyáltalán nem támogatja a modalokat. És hogy az 1C: Enterprise működhessen bennük, egy speciális mechanizmust vezettek be a webes kliensben. Ez egy meglehetősen bonyolult mechanizmus, és sajnos nem terjed ki az összes szükséges helyzetre. Ennek eredményeként a konfigurációk nagy nehézségekkel működnek például iPaden.

Ilyen helyzetben az 1C: Vállalati interfész működése opció modális ablakok használata nélkül eltávolítja az összes fent felsorolt ​​problémát.

Ez nem hagyja el a modális ablakok által korábban biztosított funkciókat. De ezt a funkciót más technológiák valósítják meg, amelyek nem zavarják az 1C: Enterprise működését a böngészőkben.

Az interfész új módjában az ablak, amely korábban modális lett volna, a szülőablakon belül rajzolódik ki, és ugyanígy blokkolja a webes ügyfélfelület többi részét:

Ennek eredményeként:

  • nem nyílnak új böngészőablakok, ami javítja a webes kliens teljesítményét és stabilitását;
  • Sok esetben további testreszabás a böngésző szükségtelenné válik, mivel az 1C: Enterprise már nem használ felugró ablakokat;
  • a webes kliens segítségével bármilyen konfiguráció működhet iPaden és más mobileszközökön.

Természetesen csodák nem történnek, és az új üzemmódot nem lehet "varázspálca hullámával" bekapcsolni. Meg kell változtatni az új blokkoló ablakokkal való munka logikáját. De a jó hír az, hogy ezek a változtatások nem bonyolultak, és lehetőség van a program összes "gyanús" részének ellenőrzésére. A platform egy speciális mechanizmust valósít meg, amely lehetővé teszi a fejlesztési szakaszban annak ellenőrzését, hogy a teljes konfiguráció új mechanizmusokat használ -e, és modális ablakok nélkül fog -e működni.

Az ilyen ablakokkal való munka logikájának megváltoztatásának szükségessége abból adódik, hogy az új interfész működési mód csak a felhasználó számára biztosítja a modalitást. A fejlesztő számára azonban a blokkoló ablak megjelenésekor a programkód végrehajtása nem áll le.

Ez azt jelenti, hogy az algoritmust, amely korábban egy egész volt, most két részre kell osztani. Az egyik, amely egy blokkoló ablak kinyitásával végződik, és a második, amely akkor kerül végrehajtásra, amikor a felhasználó bezárja ezt az ablakot. Annak érdekében, hogy a rendszer tudja, hol kell folytatni a programkód végrehajtását, a blokkolóablakba továbbítják annak az eljárásnak a nevét, amelyet akkor kell végrehajtani, amikor a felhasználó bezárja ezt az ablakot.

Ezeknek a változásoknak a lényegét a legkönnyebb egy példával látni. Egy régi eljárás, amely megnyitott egy modális ablakot és feldolgozta a kapott adatokat, így nézhet ki:

Az űrlap új verziójában FormText bemenet (amely blokkolóablakban nyílik meg) be kell állítania a tulajdonságot Ablak Nyitott mód értékben BlockAllInterface ... Ez modalitást biztosít a felhasználó számára:

És a programkód egy eljárás helyett, mint korábban, már két eljárást tartalmaz:

Az első eljárásban nyissa meg az űrlapot. Ebben az esetben az utolsó paraméterben átadjuk neki a második eljárás helyét, amelyet a felhasználó az ablak bezárása után hajt végre. Ebben az esetben ez az eljárás ugyanabban a modulban található, de általában egy másikban.

Amikor a felhasználó megadja az adatokat, és bezárja az űrlapot, azokat a második általunk megadott eljárásban dolgozzuk fel, amelybe egyszerűen átvittük a kapott adatokat feldolgozó "régi" kódot.

Azon űrlapokon kívül, amelyeket a fejlesztő modális módban (tetszés szerint) nyithat meg, vannak olyan beágyazott nyelvi módszerek, amelyek a fejlesztő kívánságától függetlenül mindig megnyitják a modális űrlapokat az adatok beviteléhez vagy kiválasztásához. Például a módszer Írja be az értéket () .

Még egyszerűbb az ilyen módszerek használata nem-modális módban. A platform minden ilyen módszerhez készített biztonsági mentési módszereket, amelyek hívásakor meg kell adnia az eljárás helyét is, amelyet a felhasználó az ablak bezárása után hajt végre.

Az alábbiakban például a régi módszer használatát mutatjuk be Írja be az értéket () és az új biztonsági mentési módszerét ShowEnterValues ​​() :

Azt kell mondanom, hogy a felsorolt ​​eseteken kívül néhány platformmechanizmus modális ablakokat is használ a felhasználóval való interakcióhoz. És ez semmilyen módon nem függ a fejlesztő cselekedeteitől.

Ezért a platform minden ilyen rendszer párbeszédablakát is átviszik a munka nem modális változatába.

A tervek szerint fokozatosan felhagynak a modális ablakok alkalmazásával az alkalmazott megoldásokban. Ezért a korábban írt alkalmazott megoldásokkal való kompatibilitás érdekében a platform megtartja azt a képességét, hogy a felület régi verziójában, modális ablakok használatával dolgozzon.

Az 1C: Enterprise 8.3 platform konfigurációs tulajdonságaiban van mód a modalitás használatára. Ha ennek a mezőnek az értéke "Ne használja", akkor amikor megpróbál megnyitni egy modális ablakot, a platform a következő üzenetet jeleníti meg: "A modális ablakok használata ebben a módban tilos." Ez leállítja a programkód végrehajtását.

Ez a cikk bemutatja a programkód megváltoztatásának mechanizmusát, egy példát használva a felhasználóhoz, amikor a modális mód le van tiltva.

Szoftvertermék fejlesztésekor időnként szükség van arra, hogy megkérdezze a felhasználót a végrehajtandó műveletekről. Például automatikus töltéssel táblázatos szakaszok... Amikor a PM újratöltése előtt meg kell kérdeznie a felhasználót ennek szükségességéről. És a válaszától függően a PM -et törlik és újratöltik, vagy sem.

A kód része a kérdéssel így nézhet ki:

Ha PM. Mennyiség()< >0 Akkor a válasz = Kérdés (" // Ez a sor egy modális ablakot jelenít meg egy kérdéssel, és a kódfuttatás leáll, amíg a felhasználó nem válaszol Ha a válasz = Dialog visszatérési kód. Nem, majd visszatérítés; EndIf; // A felhasználó beleegyezett a folytatásba DÉLUTÁN. Egyértelmű (); EndIf; // Tegyen további lépéseket // A program ide kerül, ha a PM üres volt, vagy a felhasználó pozitívan válaszolt a túltöltéssel kapcsolatos kérdésre További műveletek végrehajtása ();

Ha a modális mód le van tiltva, hiba lép fel a sorban a kód kérdésével, és a további végrehajtás megszakad. Ennek oka, hogy a Kérdés funkció modális ablakot használ.

Ebben a helyzetben a ShowQuestion eljárást kell használnia. Ennek az eljárásnak a használatakor a felhasználótól nem várható válasz. Ennek az eljárásnak az első paramétere azonban a riasztás leírása, amely követi a felhasználó válaszát.

Hogyan fog változni a korábban írt kód:

// A PM -et adatokkal kell kitölteni // Ellenőrizze a PM teljességét Ha PM. Mennyiség()< >0 Akkor // A PM nem üres, meg kell kérdeznie a felhasználót a túlcsordulásról ShowQuestion (New DescriptionAlert (" OverflowPTCTeljesítés", ThisObject, További paraméterek)," A PM túl lesz töltve. Folytassa ?", PárbeszédmódKérdés. Igen Nem); // Ez a sor egy ablakot jelenít meg egy kérdéssel, de a kód végrehajtása nem áll le Másképp // A program ide ér, ha a PM üres PerformFollowActions (); EndIf; // A program mindenképpen ide kerül, akár üres volt a PM, akár nem // (hacsak nem volt hiba az előző kódban) . . . // Exportálási eljárás ugyanabban a modulban // Azután hívják, hogy a felhasználó válaszol a kérdésre& OnClient eljárás túlcsordulásPOFCompletion (ResponseResult, AdditionalParameters) Export If ResponseResult = DialogReturnCode. Nem Akkor // A felhasználó nem volt hajlandó folytatni Visszatérés ; EndIf; // Végezzen további műveleteket // A program ide kerül, ha a PM nem volt üres, és a felhasználó pozitívan válaszolt a túltöltéssel kapcsolatos kérdésre DÉLUTÁN. Egyértelmű (); PerformFollowActions (); Az eljárás vége

Így, mivel a program nem áll le a ShowQuestion eljárás végrehajtásakor, minden eseményt gondosan kell kezelni
A probléma megoldása során a további műveletek végrehajtása két esetben történhet:
1. Ha a PM üres volt
2. Ha a PM nem volt üres, és a felhasználó pozitívan válaszolt a túlcsordulás kérdésére

Ennek megfelelően, mivel a program nem hagyja abba a felhasználó válaszának várakozását, ezen események hívását el kell osztani a kód különböző részeire.
Ezért rendszerint minden eljárást, amelyet a PM teljességének ellenőrzése után végre kell hajtani, külön eljárásba kell helyezni.

Hasonló mechanizmust használnak hasonló felhasználói interakciós funkciókhoz (SelectValue, SelectFrom List stb.)

"A modális ablakok használata ebben az üzemmódban tilos" - ez a hiba most kezdi zavarni az 1C felhasználókat és programozókat az 1C 8.3 platform új kezelőfelületének megjelenésével - "".

Az 1C technológiai platform fejlesztői lépést tartanak a korral, szabványukat szabványosítják a szoftverfejlesztés világszintű szabványaihoz. Minden szabvány így vagy úgy egyetlen felületre leszűkítve, közel a weboldalakhoz.

A modális és előugró ablakokat rossz formának tekintik, és a szoftverfejlesztésben már régóta megszokottak. A felhasználók megszokták, hogy "egy ablakban" dolgoznak.

Különösen gyakran látunk modalitási hibát következő módszerek 1C:

  • Kérdés;
  • Egy figyelmeztetés;
  • OpenValue.

Az új taxi felület megjelenésével az 1C 8 platform fejlesztői helyesen döntöttek - megpróbálták új módon átképzni az alkalmazott megoldások fejlesztőit. Az új platformba beépítették a "modalitás mód" nevű funkciót.

Gyors megoldás a problémára

Ha nincs ideje kitalálni, és gyorsan meg kell oldania egy problémát, kínálunk egy egyszerű, de nem teljesen korrekt megoldást. A hiba gyors kijavításához elegendő megváltoztatni a modalitás módot a konfigurációs tulajdonságokban.

Ehhez lépjen a rendszerbe a módban, nyissa meg a konfigurációt:

A nyitott konfigurációban hívja meg a helyi menüt, kattintson a jobb gombbal a konfigurációs gyökérre, és válassza a "Tulajdonságok" lehetőséget:

Ingyenes 267 1C videó oktatóanyag:

Megnyílnak a konfigurációs tulajdonságok, ahol az alagsorban található egy számunkra érdekes ingatlan - "Modality use mode", válassza a "Use" módot:

Ezután mentse el és alkalmazza a módosításokat az "F7" gomb megnyomásával.

A helyes megoldás a problémára

A probléma megoldásának helyes módja a konfiguráció módosítása vagy külső feldolgozásúj követelményeknek.

Figyelmeztetés, kérdés, párbeszédpanelekés más módok - mindezt új módon kell átírni.

A modálokat hívó beépített operátorokat duplikált függvényekkel kell helyettesíteni.

Például:

  • Figyelmeztetés - Figyelmeztetés megjelenítése;
  • Kérdés - Kérdés megjelenítése (részletesen);
  • - Bemeneti számok megjelenítése.

Ugyanakkor megjelent egy speciális objektum - Notification Description.

Példa a cserére:

Karakterlánc = ""; EnterString (karakterlánc, "Írja be a karakterlánc értékét") Report ("Belépett" + String);

Helyettesíteni kell:

Karakterlánc = ""; Riasztás leírása = Új riasztási leírás ( "TestStringEnter", Ez a forma); ShowInputString (Riasztás leírása, karakterlánc, "Írja be a karakterlánc értékét") ;

Ugyanakkor adjon hozzá egy hasonló eljárást az ügyfélhez, amely akkor működik, ha a felhasználó megadja az értéket:

& OnClient eljárás TestInputString (ReceivedValue, PassedParameters) Export Report ("beírtad" + String); Az eljárás vége

A konfigurációban kifejlesztett űrlapok ugyanúgy nyílnak meg. Elég, ha az "OpenFormModal" módszert "OpenForm" -ra cseréli, megadva az értesítés leírását és az ahhoz szükséges új eljárást.

Ahhoz, hogy a megnyitott űrlap segítségével bezárja a hozzáférést a meghívott űrlaphoz, elegendő az "WindowOpening Mode" tulajdonságban megadni a "tulajdonos ablakának zárolása" értéket az űrlap tulajdonságban: