Računalniki Windows internet

Chromova uporaba modalnih oken v tem načinu je prepovedana. Kaj storiti, če je "uporaba modalnih oken v tem načinu prepovedana." Pravilna rešitev problema

Pomočnik za skladnjo za te ukaze označuje, da če je konfiguracijska lastnost Način uporabe nameščen v Ne uporabljajte, potem bi morali uporabiti druge ukaze v programski kodi, kot je npr ShowQuestion (), Pokaži opozorilo (), ShowEnterNumbers ():

Za delo s temi situacijami program 1C 8.3 ponuja nov sistemski objekt "Opis opozorila", ki se uporablja za opis klica postopka programskega modula, ko pride do pričakovanega dogodka, na primer zapiranje obrazca ali brezmodnega pogovornega okna:

To je pogled na problem "od znotraj" za tiste, ki se želijo spopasti z osnovnim vzrokom. Predvsem za programerje 1C. Kako lahko v tej situaciji navadni uporabniki odpravijo napako brez razlage programsko kodo? Obstaja zelo preprosta metoda.

Navodila za odpravljanje napak za navadne uporabnike

1. korak. Dokončajte delo:

2. korak. Vrnite se v začetni meni, da zaženete konfiguracijo. Izberemo točko menija "Konfiguracija":

Korak 3. Odprite "Konfigurator": na zgornji plošči najdemo gumb "Konfiguracija" in na predlaganem seznamu izberite meni "Odpri konfiguracijo":

Korak 4. Postavite kazalec na Konfiguracijo in z desno tipko miške kliknite, da pokličete kontekstni meni, v katerem izberemo postavko "Lastnosti":

Korak 5. Odprite obrazec »Lastnosti«:

Korak 6. Poiščite vrstico "Način uporabe modalnosti" (na dnu seznama):

Program 1C 8.3 je privzeto nastavljen na "Ne uporabljaj". Vrednost "Ne uporabljaj" prevedemo v vrednost "Uporabi":

rezultat:

Če napaka "Uporaba modalnih oken v tem načinu je prepovedana" v 1C 8.3 ni več, lahko delate naprej. To je običajno tako.

Če pa napaka modalnosti v 1C ostane po opravljenih vseh teh dejanjih, se obrnite na programerje, ki servisirajo in podpirajo vaš program 1C.

Kako delati v vmesniku "Taxi", kako prilagoditi delovno mesto "zase", prilagoditi navigacijsko vrstico Priljubljene, kako izvajati iskanje po celotnem besedilu, tehnike dela z revijami, gumb "izberi" v dokumentih, prenos povezav do dokumentov, preverjanja in drugih funkcij v novem vmesniku - vse to se lahko naučite iz našega videa:

Za več podrobnosti o tem, kako pravilno in hitro organizirati navigacijo po programu 1C 8.3 z novim vmesnikom TAXI, o novih možnostih uporabe znanih orodij, kot so vgrajeni kalkulator, koledar, primerjava datotek, prenos povezav do dokumentov kolegom, glejte naš tečaj ""


Ocenite ta članek:

Če imate med zaključkom lekcije takšno napako, jo je zelo enostavno popraviti.

Vrnite se v konfigurator in izberite točko menija "Konfiguracija" -> "Odpri konfiguracijo":

V oknu, ki se odpre, kliknite desni klik na elementu "Konfiguracija" in v spustnem meniju izberite element "Lastnosti":

Odpre se okno s konfiguracijskimi lastnostmi (na desni):

Pomaknite se do dna in tam poiščite element "Modality mode":

Nastavite njeno vrednost na "Uporaba":

Pozor! Upoštevajte, da če uporabljate platformo 1C, ki se razlikuje od tiste, ki smo jo prenesli v prvi lekciji (poznejša različica), boste imeli tudi polje "Način uporabe sinhronih klicev ...". Prav tako ga je treba nastaviti na "Uporabi".

Na koncu izberite točko menija "Konfiguracija" -> "Shrani konfiguracijo":

Pripravljen! Zdaj se napaka ne bo več pojavljala.

Spodnja pojasnila so za tiste, ki jih zanima, kaj smo naredili.

V naši konfiguraciji smo omogočili način uporabe modaliteta. Ta način je privzeto onemogočen in nam ne dovoljuje uporabe ukazov, kot so EnterNumber, EnterString, EnterDate, OpenValue.

Bistvo je, da so ti ukazi modalni. Njihovo klicanje vodi do dejstva, da se pred uporabnikom prikaže okno (na primer za vnos informacij), ki blokira možnost dela s programom, dokler se okno ne zapre.

In ker je prisotnost takšnih oken pri delu z 1C prek spletnega brskalnika izjemno nezaželena, je pri razvoju novih konfiguracij način modalnosti privzeto onemogočen.

Varno ga lahko vključimo, saj pišemo izobraževalne primere, ki niso namenjeni delu na internetu.

Članek bo obravnaval glavne razloge za opustitev modalnosti v platformi 1C: Enterprise in glavne metode za pretvorbo odsekov kode v nov asinhroni model.

Uporabnost

Članek obravnava asinhroni model gradnje poslovne logike, dodano platformo "1C: Enterprise" različice 8.3. Predložene informacije so pomembne za trenutne izdaje platforme.

Zavrnitev uporabe modalnih oken v platformi 1C: Enterprise 8.3

Pri razvoju konfiguracije na platformi 1C: Enterprise 8 je treba občasno ustaviti delovanje programa, dokler se uporabnik ne odloči ali ne izvede kakršnega koli dejanja.

Na primer, ko kliknemo na gumb za izpolnitev tabelarnega odseka, je treba uporabnika vprašati, ali je treba počistiti tabelarni odsek, da se predhodno vneseni podatki ne bodo izgubili.

To vedenje je mogoče zagotoviti na primer z naslednjo kodo:

& OnClient
Postopek FillProducts(ukaz )
Odgovor = Vprašanje (»Odsek tabele bo počiščen. Nadaljuj?«, Dialoški način Vprašanje Da Ne);
Če je odgovor = Dialog Povratna koda. Da Potem
// algoritem polnjenja
EndIf;
Konec postopka

Zaradi dela tega dela kode bo izvajanje programske kode začasno prekinjeno, na zaslonu se prikaže vprašanje, vmesnik aplikacije poleg pogovornega okna z vprašanjem postane nedostopen, sistem čaka da se uporabnik lahko odloči, se bo izvajanje kode nadaljevalo šele po odgovoru na vprašanje.

Tudi odpiranje modalnih oken s klicem metode OpenModal () vodi do prekinitve izvajanja kode in blokiranja vmesnika.

Pri delu s konfiguracijo v načinu spletnega odjemalca prek brskalnika se bo v tem primeru odprlo novo okno - pojavno okno, ki bo blokiralo ne samo trenutni zavihek, temveč tudi celoten vmesnik brskalnika, vključno z ostalim odprta okna in zavihki.

Pojavna okna v internetu se pogosto uporabljajo za zlonamerno distribucijo neželenih oglasov, zato brskalniki vključujejo funkcije blokiranja pojavnih oken.

V tem primeru je za delo s konfiguracijami 1C: Enterprise 8 prek brskalnika potrebno onemogočiti blokiranje pojavnih oken.

Težave se pojavijo tudi pri delu mobilne naprave... Na primer, modali niso podprti v iPadu.

Če želite rešiti te težave, bi morali namesto modalnih oken uporabiti blokirajoča okna. Za uporabnika je vizualno vse videti enako: okno blokira vmesnik spletnega odjemalca.

Vendar je okno za blokiranje "narisano" nad glavnim oknom, blokiran pa je le trenutni zavihek brskalnika, v katerem je konfiguracija odprta, kar omogoča preklop na druge zavihke, saj se modalna okna brskalnika v tem primeru ne uporabljajo.

Tako se pojavna okna v brskalniku ne odprejo in je delo prek spletnega odjemalca na mobilnih napravah zagotovljeno.

Korenski konfiguracijski element ima lastnost »Modality use mode«, ki določa, ali je v konfiguraciji mogoče odpreti modalna okna.

Če je izbrana možnost "Uporabi", lahko odprete modalna okna. Če izberete možnost »Ne uporabljaj«, so modali neveljavni. Ko poskušate poklicati metodo, ki odpre modalno okno, sistem prikaže sporočilo o napaki:

S to vrednostjo lastnosti "Modality use mode" so dovoljena samo blokirana okna.

Če je izbrana možnost "Uporabi z opozorili", se ob odprtju modalnih oken v oknu za sporočilo prikaže naslednje besedilo:

To varianto dela je mogoče uporabiti kot vmesno pri predelavi konfiguracije, da bi prenehali uporabljati modalna okna.

Glavna razlika med blokirajočimi in modalnimi okni je v tem, da odpiranje blokirajočega okna ne ustavi izvajanja kode.

Zato bodo morali razvijalci na novo napisati kodo, ki uporablja modale, da bodo upoštevali to funkcijo.

Kodo je treba razdeliti na dva dela:

  • odpiranje blokirnega okna;
  • ravnanje z izbiro uporabnika.

Odrezek kode na začetku članka je treba ponovno napisati, kot sledi:

& OnClient
Postopek FillProducts(ukaz )
Opozorilo = Novo Opis opozoril(, ta predmet);

Dialoški način Vprašanje Da Ne);
Konec postopka
& OnClient
Postopek (rezultat, Dodatne možnosti) Izvoz
Če je rezultat = Dialog Povratna koda. Da Potem
// algoritem polnjenja
EndIf;
Konec postopka

Po izvedbi postopka ShowQuestion () se sistem ne ustavi, čaka na odgovor uporabnika, izvajanje kode se nadaljuje.

Uporabnik se bo lahko odločil šele po zaključku celotnega postopka. To bo poklicalo izvozno proceduro FillProductsQuestionCompletion (). Njegovo ime smo posredovali konstruktorju objekta Opis opozorila.

Postopek, ki bo poklican po izbiri, se lahko nahaja v modulu obrazca, ukaznem modulu, običajnem neglobalnem modulu.

V zgornjem primeru se klicana procedura nahaja v modulu upravljanega obrazca, zato smo taObject posredovali v parameter.

Razmislite o klicu postopka, ki se nahaja v skupnem modulu. Če želite to narediti, dodajte novo skupni modul ProcessingNotifications, zanj nastavite zastavico »Odjemalec (upravljana aplikacija)« in ne nastavite zastavice »Globalno«. V ta modul postavite postopek FillProductsQuestionCompletion ().

Nato bo upravljalnik ukaza za polnjenje videti takole:

& OnClient
Postopek FillProducts(ukaz )
Opozorilo = Novo Opis opozoril("FillProductsQuestionFinishing",
Obdelava opozoril);
QuestionText = »Odsek tabele bo počiščen. Nadaljuj?" ;
Pokaži vprašanje (opozorilo, besedilo vprašanja, Dialoški način Vprašanje Da Ne);
Konec postopka

Po klicu katere koli metode, ki odpre okno za blokiranje, se mora postopek zaključiti, koda, ki se izvaja naprej, pa naj se nahaja v proceduri, ki bo poklicana po zaprtju okna.

Za prenos konteksta (pomožni podatki, nekateri parametri, vrednosti spremenljivk) iz procedure, ki odpre modalno okno, v proceduro, ki se kliče, ko je zaprta, je na voljo tretji neobvezni parameter konstruktorja objektov DescriptionNotifications - AdditionalParameters.

Ta objekt (katere koli vrste) bo posredovan v proceduro, opisano v AlertDescription, kot zadnji parameter.

S primerom zgornjega razdelka kode lahko to storite takole:

& OnClient
Postopek FillProducts(ukaz )
Parameter1 = 0;
Parameter2 = 0;
Seznam parametrov= Nova struktura (»Parameter1, Parameter2 ″, Parameter1, Parameter2);
Opozorilo = Novo Opis opozoril("FillProductsQuestionFinishing", ta predmet,
Seznam parametrov);
ShowQuestion (Opozorilo, »Razdelek tabele bo počiščen. Nadaljuj?«,
Dialoški način Vprašanje Da Ne);
Konec postopka
& OnClient
Postopek FillProductsQuestionFinishing(Rezultat, Dodatne možnosti) Izvoz
Če je rezultat = Dialog Povratna koda. Da Potem
// razčleni AdditionalParameters.Parameter1
// razčleni AdditionalParameters.Parameter2
EndIf;
Konec postopka

Če morate posredovati samo eno vrednost, strukture ni mogoče uporabiti, temveč dodelite to vrednost parametru AdditionalParameters konstruktorja objektov DescriptionAlerts.

Oglejmo si nekaj primerov dela z blokiranjem oken.

Naloga 1. Odpiranje drugega obrazca

Iz obrazca dokumenta morate s klikom na gumb "Odpri parametre" odpreti obrazec, na katerem sta dve potrditveni polji Parameter1 in Parameter2, ki ju mora nastaviti uporabnik. Ko zaprete obrazec, izpišite vrednosti parametrov v vrstico sporočila.

Ustvarite splošni obrazec "ParameterForm", na katerega postavimo parameter Parameter1 in Parameter2 ter ukaz CloseForm:

Upravljavec ukazov izgleda takole:

Upravljavec ukazov je videti takole: & OnClient
Postopek CloseForm (ukaz)
Seznam parametrov= Nova struktura ( "Parameter1, Parameter2", Parameter1, Parameter2);
Zapri ( Seznam parametrov); Konec postopka

Za obrazec nastavite lastnost WindowOpening Mode na »Zakleni celoten vmesnik«:

Na obrazec dokumenta postavite ukaz OpenParameters, katerega obdelovalec je opisan takole:

& OnClient
Postopek OpenParameters(ukaz )
Opozorilo = Novo Opis opozoril("Dokončanje odprtih parametrov", Ta predmet);
OpenForm ( "GeneralForm.ParameterForm",,,,,, obvestilo);
Konec postopka
& OnClient
Postopek OpenParametersCompletion(Rezultat, Dodatne možnosti) Izvoz
Če je TypeZnch (rezultat) = Vrsta ("Struktura"), potem
Za vsako vrednost ključa iz cikla rezultata
Sporočilo = Novo Sporočilo uporabniku;
Message.Text = "Ključ:" " "+ KeyValue.Key +" "", vrednost = "
+ Ključna vrednost Vrednost;
Message.Inform();
Konec cikla;
EndIf;
Konec postopka

V uporabniškem načinu, ki izvaja konfiguracijo pod spletnim odjemalcem, dobimo naslednje rezultate dela:

Kliknite na sliko za povečavo.

Način odpiranja okna lahko podate tudi v zadnjem parametru postopka OpenForm.

& OnClient
Postopek OpenParameters(ukaz )
Opozorilo = Novo Opis opozoril("Dokončanje odprtih parametrov", Ta predmet);
OpenForm ( "GeneralForm.ParameterForm",,,,,, Opozorilo,
ModeOpenWindowForms.LockAllInterface
);
Konec postopka

Naloga 2. Vprašanje ob zapiranju obrazca

Ko zaprete okno za obdelavo, vprašajte uporabnika, ali res želi zapreti okno.

To nalogo je mogoče rešiti z naslednjo kodo, ki se nahaja v modulu obrazca za obdelavo:

& OnClient
Spremeni se NeedCloseForm;
& OnClient
Pred zaključnim postopkom (zavrnitev odgovornosti, Standardna obdelava)
Če ne NeedCloseForm= True Potem
Zavrnitev = Res;
Opozorilo = Novo Opis opozoril("BeforeCloseCompletion", Ta predmet);
ShowQuestion (Opozorilo, »Ali ste prepričani, da želite zapreti okno?«,
Dialoški način Vprašanje Da Ne
);
EndIf;
Konec postopka
& OnClient
Postopek Pred zaključkom Close(Rezultat, Dodatne možnosti) Izvoz
Če je rezultat = Dialog Povratna koda. Da Potem
NeedCloseForm= res;
Zapri ();
sicer
NeedCloseForm= Nedefinirano;
EndIf;
Konec postopka

V postopku Pred zapiranjem obrazca se uporabniku postavi vprašanje, zastavica Zavrni se nastavi na True in obrazec se zapre.

Po pritrdilnem odgovoru na vprašanje je spremenljivka MustCloseForm nastavljena na True, obrazec se ponovno zapre.

Naloga 3. Vnos številske vrednosti

Ko kliknete na gumb na obrazcu za obdelavo, odprete standardno pogovorno okno za vnos številke.

Če želite to narediti, uporabite metodo ShowNumberEnter () namestoNumberEnter (), ki odpre okno za blokiranje namesto modalnega.

& OnClient
Postopek vnosa številke (ukaz)
Opozorilo = Novo Opis opozoril("EnterNumberCompletion", Ta predmet);
ShowEnterNumbers(Obvestilo, 0, »Vnesite znesek«, 15, 3);
Konec postopka
& OnClient
Postopek EnterNumbersCompletion(Rezultat, Dodatne možnosti) Izvoz

Sporočilo = Novo Sporočilo uporabniku;
Message.Text = “Vnesli ste količino” + Rezultat;
Message.Inform();
EndIf;
Konec postopka

Po zaprtju okna za vnos številke bo poklicana procedura, katere prvi parameter bo posredovana vnesena številka oziroma vrednost Undefined, če uporabnik vnos zavrne.

Naloga 4. Izbira barve

S klikom na gumb na obrazcu za obdelavo s pomočjo standardnega pogovornega okna za izbiro barve uporabnik določi želeno barvo. To barvo nastavite za ozadje gumba, ki ga pritisnete.

Dodajte ukaz SelectColor v obrazec z naslednjim upravljalnikom:

& OnClient
Postopek izbire barve (ukaz)
DialogueSelectColors= Novo DialogueSelectColors;
Opozorilo = Novo Opis opozoril("SelectColorCompletion", Ta predmet);
Dialog Izberite barve. Pokaži (Obvestilo);
Konec postopka
& OnClient
Postopek ChoiceColorsCompletion(Rezultat, Dodatne možnosti) Izvoz
Če NOT Rezultat = Nedefinirano Potem
Elementi.Barva.BarvaOzadja= rezultat;
EndIf;
Konec postopka

Za predmete ColorSelectDialogue (kot tudi StandardPeriodEdit Dialogue, FormatString Constructor, RegularJobScheduleDialogue, FontSelect Dialogue) metoda Show () odpre okno za blokiranje.

Po zaprtju okna se pokliče postopek, katerega prvi parameter bo posredoval izbrano vrednost (barva, pisava itd.) ali vrednost Undefined, če je uporabnik preklical izbiro.

Opozoriti je treba, da predmet FileSelectDialog nima metode Show () za razliko od pogovornih oknov za izbiro barve ali pisave, saj je izvedba teh pogovornih oken bistveno drugačna.

Če želite uporabiti pogovorno okno za izbiro datoteke v spletnem odjemalcu, morate najprej povezati razširitev datoteke.

Pogovorna okna, ki se izvajajo prek razširitve datoteke, ne povzročajo takšnih težav pri delovanju kot modalna okna brskalnika, zato odpiranje oken za blokiranje za objekt FileChoiceDialog ni bilo izvedeno.

Na koncu ugotavljamo, da je bila od izdaje 8.3.10 podpora za modalna okna v spletnem odjemalcu ukinjena. V tem primeru, če je v konfiguraciji poklicana modalna metoda, se vrne izjema. Prav tako je v spletnem odjemalcu ukinjena podpora za način vmesnika V ločenih oknih... Poleg tega ni več mogoče odpreti obrazca v ločenem oknu tako v tankem kot v spletnem odjemalcu (pri delu v načinu vmesnika Zaznamki). Tako drastični koraki so omogočili opustitev načina vmesnika, ki ga ne podpirajo več vsi sodobni brskalniki.

Kakšen praktičen zaključek je mogoče izpeljati iz teh informacij? In zaključek je precej preprost - če iz nekega razloga v vaši konfiguraciji še vedno obstajajo modalni klici, se bo na teh mestih v spletnem odjemalcu prikazalo okno s sporočilom o napaki. Rad bi opozoril pred poskusi "googlanja" kakršne koli hitre rešitve tega problema, ker Glavnina nasvetov se spušča v naslednji recept: v konfiguratorju na ravni konfiguracije nastavite lastnost »Modality use mode« na vrednost »Use«. Seveda, v ta trenutek, ne bo delovalo samo zato sodobnih brskalnikih ne podpira več modalnih klicev.

In imate samo dva načina, kako rešiti zgoraj opisano težavo:

  1. Nadgradite platformo na izdajo 8.3.10+ (8.3.11), nastavite konfiguracijsko lastnost "Compatibility mode" na "Ne uporabljaj" in prepišite fragmente kode, ki uporabljajo modalne metode, v asinhroni model za izgradnjo poslovne logike
  2. Priporočite svojim strankam, naj uporabljajo starejše brskalnike, kjer so bili še vedno podprti modalni klici ( Mozilla Firefox različica 37 in starejša, Chrome pod različico 37 itd.).

Mimogrede, od izdaje 8.3.11 Microsoftovi spletni brskalniki niso več podprti internet Explorer različici 8 in 9.

S spletnimi brskalniki v luči modalnosti smo ugotovili, zdaj je čas, da razjasnimo situacijo s preostalimi strankami.

Od različice 8.3.5 se lastnost "Modality usage mode" v tankih in debelih odjemalcih upošteva le, če je podan parameter ukazne vrstice / EnableCheckModal. Ta parameter se samodejno nadomesti v ukazna vrstica samo ob zagonu aplikacije iz konfiguratorja. Če ta parameter ni podan, se izjeme ne ustvarijo in ustrezna opozorila niso prikazana. tiste. v praksi v primeru uporabe debelega in tankega odjemalca pri uporabi načina modalnosti ne opazimo bistvene spremembe v delu – modalni klici bodo delovali enako kot prej, brez generiranja opozoril, kot v spletnem odjemalcu.

Če želite postaviti piko na i, upoštevajte, da od različice 8.3.9 debeli odjemalec ignorira konfiguracijsko lastnost »Način uporabe sinhronih klicev razširitev platforme in zunanjih komponent«, medtem ko ustrezne sinhrone metode delujejo brez metanja izjem in prikazovanja opozoril. Navedena prezrta lastnost je bila dodana v reviziji 8.3.5, da podpira asinhrono delo z zunanjimi komponentami, kriptografijo in razširitvami za delo z datotekami v spletnem brskalniku Google Chrome... Jasno je, da to nima nobene zveze z debelim odjemalcem, zato je "tiho" ignoriranje te lastnosti preprosto odpravilo nepotrebna preverjanja uporabe sinhronih metod pri uporabi konfiguracije.

Mimogrede! Zaradi dejstva, da se platforma samozavestno premika proti spletu, so razvijalci od različice 8.3.8 uvedli določene omejitve za programsko kodo, ki je povezana z logiko zapiranja obrazca ali aplikacije, ki se izvaja v debelih in tankih odjemalcih. Ne pozabite prebrati našega članka, ki podrobno obravnava ta odtenek. Poleg tega je v predmetu "Strokovni razvoj vmesnikov in obrazcev v 1C: Enterprise 8.3" poglavje, posvečeno zavračanju modalnosti, in na to temo lahko dobite veliko koristnih in ustreznih informacij.

Kolegi, dve stvari lahko berete neskončno: vir VKontakte in seznam sprememb v naslednji izdaji platforme, zato povzamemo končne rezultate;)

Med pregledovanjem primerov, ki vam omogočajo prehod z elementov sinhronega modela na asinhroni model, ste verjetno že opazili, da je na splošno več kode. Več ko je kode, bolj se povečuje kompleksnost njenega nadaljnjega vzdrževanja in odpravljanja napak.

Poleg tega se bo količina kode še povečala, če bomo med razvojnim procesom uporabljali več dialogov. Zato se morate v procesu razvoja aplikacijskih rešitev, osredotočenih na delo v spletnem odjemalcu, spomniti na paradigmo dela, ki se trenutno uporablja v sodobnih spletnih aplikacijah. Torej, če ima vaša konfiguracija veliko interaktivnih pogovorov z uporabnikom, izdanih opozoril, potem je smiselno to funkcionalnost spremeniti v korist nekaterih drugih pristopov k organizaciji interakcije z uporabnikom.

Namesto sklepa

Tako se je naš cikel "Prvi koraki v razvoju na 1C" končal. Če jo preberete v celoti, potem ste najverjetneje že opazili, s kakšnimi skoki se je platforma razvijala v zadnjem času. Gradivo tega cikla je bilo napisano relativno nedavno, vendar smo ga morali resno posodobiti, ker tudi v tako kratkem času, veliko novega pomembnega funkcionalnost in spremembe. Tako velike spremembe lahko nekoliko zmedejo programerja 1C, če ves ta čas ni rasel in se profesionalno razvijal s platformo.

Na specializiranih internetnih virih lahko pogosto preberete prošnje programerjev začetnikov in njihovih zrelejših kolegov, da jim svetujejo glede gradiva, ki bi jim pomagala razumeti ogromne in včasih na videz neskončne možnosti platforme 1C. Po tradiciji vam priporočamo, da se posvetite našim tečajem programiranja

14
Za prisilno zagon podjetja v običajni ali upravljani aplikaciji se uporabljajo naslednji ključi: / RunModeOrdinaryApplication zažene debelega odjemalca v običajnem načinu, kljub konfiguracijskim nastavitvam in ... 3
Nujno je, da uporabniki ne morejo spremeniti zanje konfiguriranega vmesnika! Rešitev: Če ga želite onemogočiti, morate odstraniti pravico »Shrani uporabniške podatke« v pravicah dostopa korenskega konfiguracijskega elementa. ... 2
Pri trenutnem delu uporabnik običajno odpre več predmetov. Lahko je dokument, referenčna knjiga, poročilo itd. V prejšnjem vmesniku ni bilo težav s hitrim iskanjem odprtega predmeta in posodabljanjem za ... 2
V zadnjem članku: Namestitev klasifikatorja naslovov (KLADR) v 1C sem vam povedal, kaj je Kladr in kako ga naložiti v običajne obrazce 1C (8.0-8.2). V tem članku bom razložil, kako naložiti klasifikator naslovov (KLADR) v ... 2
Pogosto pri razvoju določene konfiguracije uporabniki želijo priložiti fotografije elementu imenika in jih shraniti v bazo podatkov. V tem članku vam bom povedal, kako povezati gradbene predmete z referenčno knjigo ...

V platformi 1C se je pojavila različica 8.3 nov režim delo programa - brez uporabe modalnosti. Natančneje, pojavila sta se 2 nova načina: brez uporabe modalnosti in uporabe modalnosti, vendar z opozorilom. In stari način delovanja je, kako uporabljati modalnost.

Kaj vse to pomeni? V zgodnjih različicah platforme smo uporabljali različna modalna okna in o tem sploh nismo razmišljali. Uporabniku morate na primer prikazati opozorilo ali zastaviti vprašanje ali vnesti neko vrednost ali izbrati datoteko. Vse to so modalna okna.

Kaj pomeni modalno? To pomeni, da ko se to okno pokliče, prekriva vsa druga okna, torej se pripelje na sam vrh in blokira delo z drugimi okni do konca dela s tem oknom. Poleg blokiranja oken se izvajanje kode ustavi točno na mestu, kjer je to okno poklicano, nadaljevanje izvajanja kode pa se izvede šele po zaprtju takega okna. Od tam, kjer se je usmrtitev ustavila. Klic modalnega okna bom ponazoril s primerom klica obrazca za izbiro obdobja:

& OnClient

StandardProcessing = False;




Če Dialog.Edit () Potem // Pokličite modalni obrazec. Nadaljevanje izvajanja kode se bo zgodilo šele po zaprtju obrazca.
Elements.Services.CurrentData.StartDate = Dialog.Period.StartDate;
Elements.Services.CurrentData.EndDate = Dialogue.Period.EndDate;
EndIf;

Konec postopka


Kot lahko vidimo, je en postopek dovolj za obravnavo klica modalnega okna za izbiro obdobja.

Zakaj so modali slabi? Zdaj pa ugotovimo, zakaj se je 1C odločil opustiti uporabo modalnih oken. No, najprej je to posledica dejstva, da se platforma 1C lahko uporablja ne le v svoji običajni obliki - v obliki namizne aplikacije, temveč jo je mogoče zagnati tudi v brskalniku in jo je mogoče zagnati v obliki mobilne aplikacije.

Težava z brskalniki je naslednja. Modalnost oken v njih se izvaja z uporabo ločenih pojavnih oken brskalnika. Podpirajo jih skoraj vsi brskalniki, vendar se zaradi pogoste uporabe tovrstnih oken za oglaševanje skoraj vsi razvijalci brskalnikov spopadajo z njimi in privzeto onemogočijo uporabo takšnih oken. Posledično, da bi uporabniku 1c zagotovili možnost dela v brskalniku, ga morate prisiliti, da dovoli ta okna, se posvetiti vsem tankostim 1c in brskalnikov in na splošno preobremeniti z nepotrebnimi informacijami.

Ločen odtenek z brskalniki za tabličnih računalnikov in brskalniki za telefone. V večini primerov ti brskalniki ne podpirajo pojavnih oken. Vmesniki (monitorji in vhodne naprave) takšnih naprav s pojavnimi okni niso združljivi.

In končno mobilno aplikacijo 1C se tudi ni povsem spoprijateljil z modalnimi okni.

Od tod sklep: ne uporabljajte modalov. In kaj uporabiti namesto njih? Namesto tega morate uporabiti ista okna, vendar brez načina modalnosti. V novi platformi je 1C razvil tudi tak način za vsako okno. Izvaja se kot ločena metoda za vsako pogovorno okno. Ta način vam omogoča, da pokličete okno, vendar ne ustavite izvajanja programske kode. Tehnično se v brskalnikih to izvaja kot psevdo okno, ki se pojavi znotraj nadrejenega okna, vendar ga prekriva. Dejstvo, da se koda še naprej izvaja po odprtju okna, pomeni, da vrednosti, izbranih v njem, ne morete dobiti takoj po kodi, ki kliče okno. Niso še izbrani. Zato se sprejem in obdelava teh vrednosti izvedeta v ločenem postopku, ki se kliče, ko je takšno okno zaprto, in ta postopek je določen, ko se kliče metoda za odpiranje okna. Poglejmo si primer istega okna za izbiro obdobja.

& OnClient
Service ProcedureStartDateSelectionStart (Item, SelectionData, StandardProcessing)

StandardProcessing = False;

Pogovorno okno = Novo pogovorno okno StandardPeriodEdit ();
Standardno obdobje = Novo standardno obdobje ();

Datum začetka = Items.Services.CurrentData.StartDate;
Končni datum = Items.Services.CurrentData.EndDate;

StandardPeriod.StartDate = Datum začetka;
StandardPeriod.EndDate = Končni datum;
Dialogue.Period = Standardno obdobje;

AlertDescription = New AlertDescription ("PeriodSelectionProcessing", ta obrazec);

Dialogue.Show (opis opozorila)

Konec postopka

& OnClient
Postopek za obdelavoIzbira izvoza obdobja (obdobje, parametri).

Če Obdobje<>Nedefinirano Potem

Items.Services.CurrentData.StartDate = Period.StartDate;
Items.Services.CurrentData.EndDate = Period.EndDate;

EndIf;

Konec postopka


Kot lahko vidimo, se namesto Edit () kliče Show (). In obdelava izbirnega dogodka je že v drugem postopku.

Tako smo ugotovili, kako brez modalnosti. Zdaj pa ugotovimo, čemu je namenjen način uporabe modaliteta z opozorilom. Pravzaprav je to tak prehodni režim. Ko še niste imeli časa ponoviti celotne konfiguracije za način brez uporabe modalnosti, vendar si že prizadevate za to. In vsakič, ko pokličete modalno okno, vas program opozori, da v tem načinu ni zaželeno klicati modalnih oken.

No, opustimo modalnost in obvladamo nove tehnologije za delo 1C v brskalnikih in mobilnih računalnikih.