Računala Windows Internet

Chrome upotreba modalnih prozora u ovom načinu rada je zabranjena. Što učiniti ako je "korištenje modalnih prozora u ovom načinu rada zabranjeno". Ispravno rješenje problema

Sintaksni pomoćnik za ove naredbe označava da ako svojstvo konfiguracije Način korištenja ugrađen u Nemojte koristiti, tada biste trebali koristiti druge naredbe u programskom kodu, kao npr Prikaži pitanje (), Prikaži upozorenje (), ShowEnterNumbers ():

Za rad s ovim situacijama, program 1C 8.3 pruža novi objekt sustava "Opis upozorenja", koji se koristi za opisivanje poziva proceduri programskog modula kada se dogodi očekivani događaj, kao što je zatvaranje obrasca ili dijalog bez mode:

Ovo je pogled na problem "iznutra" za one koji se žele nositi s korijenskim uzrokom. Prvenstveno za 1C programere. Kako u ovoj situaciji obični korisnici mogu popraviti grešku bez elaboracije programski kod? Postoji vrlo jednostavna metoda.

Upute za ispravljanje pogrešaka za obične korisnike

Korak 1. Dovršite posao:

Korak 2. Vratite se na početni izbornik za pokretanje konfiguracije. Odabiremo stavku izbornika "Konfiguracija":

Korak 3. Otvorite "Konfigurator": na gornjoj ploči nalazimo gumb "Konfiguracija", a na predloženom popisu odaberite izbornik "Otvori konfiguraciju":

Korak 4. Postavite pokazivač na Konfiguraciju i kliknite desnom tipkom za pozivanje kontekstni izbornik, u kojem odabiremo stavku "Svojstva":

Korak 5. Otvorite obrazac "Svojstva":

Korak 6. Pronađite redak "Način korištenja modaliteta" (na dnu popisa):

Prema zadanim postavkama, program 1C 8.3 postavljen je na "Ne koristiti". Vrijednost "Ne koristiti" prevodimo u vrijednost "Koristi":

Proizlaziti:

Ako je pogreška "Korištenje modalnih prozora u ovom načinu rada zabranjena" u 1C 8.3 nestala, možete raditi dalje. To se obično događa.

Ali ako modalitetna pogreška u 1C ostane nakon izvršenja svih ovih radnji, trebali biste kontaktirati programere koji servisiraju i podržavaju vaš 1C program.

Kako raditi u sučelju "Taxi", kako prilagoditi radno mjesto "za sebe", prilagoditi navigacijsku traku Favoriti, kako izvršiti pretraživanje cijelog teksta, tehnike rada s časopisima, gumb "odaberi" u dokumentima, prijenos poveznica na dokumente, provjeru i druge značajke u novom sučelju - sve to možete naučiti iz našeg videa:

Detaljnije o tome kako pravilno i brzo organizirati navigaciju kroz program 1C 8.3 pomoću novog TAXI sučelja, o novim mogućnostima korištenja poznatih alata kao što su ugrađeni kalkulator, kalendar, usporedba datoteka, prijenos linkova na dokumente kolegama, pogledajte naš tečaj ““


Ocijenite ovaj članak:

Ako u procesu dovršavanja lekcija imate takvu grešku, vrlo je lako to popraviti.

Vratite se u konfigurator i odaberite stavku izbornika "Konfiguracija" -> "Otvori konfiguraciju":

U prozoru koji se otvori kliknite desni klik na stavku "Konfiguracija" i odaberite stavku "Svojstva" s padajućeg izbornika:

Otvorit će se prozor sa svojstvima konfiguracije (desno):

Pomaknite se do samog dna i tamo pronađite stavku "Način korištenja modaliteta":

Postavite njegovu vrijednost na "Koristiti":

Pažnja! Imajte na umu da ako koristite 1C platformu koja se razlikuje od one koju smo preuzeli u prvoj lekciji (kasnija verzija), tada ćete imati i polje "Način korištenja sinkronih poziva ...". Također ga treba postaviti na "Koristi".

Na kraju odaberite stavku izbornika "Konfiguracija" -> "Spremi konfiguraciju":

Spreman! Sada se greška više neće javljati.

Objašnjenja u nastavku su za one koje zanima što smo napravili.

Omogućili smo način korištenja modaliteta u našoj konfiguraciji. Prema zadanim postavkama, ovaj način je onemogućen i ne dopušta nam korištenje naredbi kao što su EnterNumber, EnterString, EnterDate, OpenValue.

Poanta je da su te naredbe modalne. Njihovo pozivanje dovodi do činjenice da se ispred korisnika pojavljuje prozor (na primjer, za unos informacija), što blokira mogućnost rada s programom dok se prozor ne zatvori.

A budući da je prisutnost takvih prozora iznimno nepoželjna pri radu s 1C putem web-preglednika, pri razvoju novih konfiguracija modalitet je prema zadanim postavkama onemogućen.

Možemo ga sa sigurnošću uključiti jer pišemo obrazovne primjere koji nisu namijenjeni za rad na internetu.

U članku će se razmotriti glavni razlozi za napuštanje modaliteta na platformi 1C: Enterprise i glavne metode pretvaranja odjeljaka koda u novi asinkroni model.

Primjenjivost

U članku se govori o asinkronom modelu izgradnje poslovne logike, dodanoj platformi "1C: Enterprise" verzija 8.3. Dostavljene informacije relevantne su za trenutna izdanja platforme.

Odbijanje korištenja modalnih prozora na platformi 1C: Enterprise 8.3

Prilikom razvoja konfiguracije na platformi 1C: Enterprise 8, potrebno je s vremena na vrijeme obustaviti rad programa dok korisnik ne donese odluku ili izvrši bilo kakvu radnju.

Primjerice, prilikom klika na gumb za popunjavanje tabelarnog dijela, korisnika treba pitati da li je potrebno brisati tabelarni dio kako se prethodno uneseni podaci ne bi izgubili.

Ovo ponašanje može biti omogućeno, na primjer, sljedećim kodom:

& OnClient
Postupak FillProducts(naredba)
Odgovor = Pitanje ("Odjeljak tablice bit će obrisan. Nastaviti?", Pitanje u načinu dijaloga Da Ne);
Ako je odgovor = Povratni kod dijaloga. Da Zatim
// algoritam punjenja
Završi ako;
Završetak postupka

Kao rezultat rada ovog dijela koda, izvršenje programskog koda će biti obustavljeno, na ekranu se prikazuje pitanje, sučelje aplikacije, osim dijaloga s pitanjem, postaje nedostupno, sustav čeka za odluku korisnika, izvršavanje koda će se nastaviti tek nakon odgovora na pitanje.

Također, otvaranje modalnih prozora pozivanjem metode OpenModal () dovodi do obustave izvršavanja koda i blokiranja sučelja.

Prilikom rada s konfiguracijom u načinu web klijenta putem preglednika, u ovom slučaju otvorit će se novi prozor - skočni prozor koji će blokirati ne samo trenutnu karticu, već i cijelo sučelje preglednika, uključujući ostatak otvorene prozore i kartice.

Skočni prozori na Internetu često se koriste za zlonamjernu distribuciju neželjenih reklama, zbog čega preglednici uključuju značajke blokiranja skočnih prozora.

U ovom slučaju, za rad s konfiguracijama 1C: Enterprise 8 putem preglednika, potrebno je onemogućiti blokiranje skočnih prozora.

Problemi se javljaju i pri radu na Mobilni uredaji... Na primjer, modali nisu podržani na iPadu.

Da biste riješili ove probleme, trebali biste koristiti blokirajuće prozore umjesto modalnih. Za korisnika, vizualno, sve izgleda isto: prozor blokira sučelje web klijenta.

Međutim, prozor za blokiranje je "nacrtan" preko glavnog prozora, a blokirana je samo trenutna kartica preglednika u kojoj je konfiguracija otvorena, što vam omogućuje prelazak na druge kartice, budući da se modalni prozori preglednika u ovom slučaju ne koriste .

Tako se skočni prozori u pregledniku ne otvaraju i rad preko web klijenta na mobilnim uređajima je osiguran.

Korijenski konfiguracijski element ima svojstvo “Modality use mode”, koje određuje mogu li se modalni prozori otvoriti u konfiguraciji.

Ako je odabrana opcija "Koristi", tada se mogu otvoriti modalni prozori. Ako odaberete opciju "Ne koristiti", modali su nevažeći. Kada pokušavate pozvati metodu koja otvara modalni prozor, sustav prikazuje poruku o pogrešci:

Uz ovu vrijednost svojstva "Modality use mode" dopušteni su samo prozori za blokiranje.

Ako je odabrana opcija "Koristi s upozorenjima", onda kada se otvore modalni prozori, u prozoru s porukom prikazuje se sljedeći tekst:

Ova varijanta rada može se koristiti kao srednja pri preradi konfiguracije kako bi se odbila korištenje modalnih prozora.

Glavna razlika između blokirajućih i modalnih prozora je u tome što otvaranje prozora za blokiranje ne pauzira izvršavanje koda.

Stoga će programeri morati ponovno napisati kod koji koristi modale imajući na umu ovu značajku.

Kod se mora podijeliti na dva dijela:

  • otvaranje prozora za blokiranje;
  • rukovanje odabirom korisnika.

Isječak koda na početku članka potrebno je ponovno napisati na sljedeći način:

& OnClient
Postupak FillProducts(naredba)
Upozorenje = Novo Opis upozorenja(, Ovaj objekt);

Pitanje u načinu dijaloga Da Ne);
Završetak postupka
& OnClient
Postupak (rezultat, Dodatne opcije) Izvoz
Ako je rezultat = Povratni kod dijaloga. Da Zatim
// algoritam punjenja
Završi ako;
Završetak postupka

Nakon izvršenja procedure ShowQuestion (), sustav se ne zaustavlja, čekajući da korisnik odgovori, kod se nastavlja izvršavati.

Korisnik će moći napraviti izbor tek nakon završetka cijelog postupka. Ovo će pozvati proceduru izvoza FillProductsQuestionCompletion (). Njegovo ime prenijeli smo u konstruktor objekta Opis upozorenja.

Procedura koja će se pozvati nakon odabira može se nalaziti u modulu obrasca, naredbenom modulu, zajedničkom neglobalnom modulu.

U gornjem primjeru, pozvana procedura nalazi se u modulu upravljanog obrasca, pa smo ovajObject proslijedili u parametar.

Razmislite o pozivu procedure koja se nalazi u zajedničkom modulu. Da biste to učinili, dodajte novi zajednički modul ProcessingNotifications, postavite zastavicu "Klijent (upravljana aplikacija)" za njega i nemojte postavljati zastavicu "Globalno". Postavite proceduru FillProductsQuestionCompletion () u ovaj modul.

Tada će rukovatelj naredbe za popunjavanje izgledati ovako:

& OnClient
Postupak FillProducts(naredba)
Upozorenje = Novo Opis upozorenja("FillProductsQuestionFinishing",
Obrada obavijesti);
QuestionText = “Odjeljak tablice bit će obrisan. Nastaviti?" ;
Prikaži pitanje (upozorenje, tekst pitanja, Pitanje u načinu dijaloga Da Ne);
Završetak postupka

Nakon pozivanja bilo koje metode koja otvara prozor za blokiranje, procedura mora biti dovršena, a kod koji se dalje izvršava trebao bi se nalaziti u proceduri koja će biti pozvana nakon zatvaranja prozora.

Za prosljeđivanje konteksta (pomoćnih podataka, nekih parametara, vrijednosti varijabli) iz procedure koja otvara modalni prozor u proceduru koja se poziva kada je zatvorena, predviđen je treći neobavezni parametar konstruktora objekta DescriptionNotifications - AdditionalParameters.

Ovaj objekt (bilo koje vrste) bit će proslijeđen proceduri opisanoj u AlertDescription kao posljednji parametar.

Koristeći primjer gornjeg odjeljka koda, to se može učiniti ovako:

& OnClient
Postupak FillProducts(naredba)
Parametar1 = 0;
Parametar2 = 0;
Popis parametara= Nova struktura (“Parametar1, Parametar2 ″, Parametar1, Parametar2);
Upozorenje = Novo Opis upozorenja("FillProductsQuestionFinishing", ovaj objekt,
Popis parametara);
ShowQuestion (Upozorenje, "Odjeljak tablice bit će obrisan. Nastaviti?",
Pitanje u načinu dijaloga Da Ne);
Završetak postupka
& OnClient
Postupak IspuniProizvodiPitanjeZavršna obrada(Rezultat, Dodatne opcije) Izvoz
Ako je rezultat = Povratni kod dijaloga. Da Zatim
// raščlanjivati ​​AdditionalParameters.Parameter1
// raščlanjivati ​​AdditionalParameters.Parameter2
Završi ako;
Završetak postupka

Ako trebate proslijediti samo jednu vrijednost, tada se struktura ne može koristiti, već se tu vrijednost dodijeli parametru AdditionalParameters konstruktora objekta DescriptionAlerts.

Pogledajmo neke primjere rada s blokiranjem prozora.

Zadatak 1. Otvaranje drugog obrasca

Iz obrasca dokumenta klikom na gumb "Otvori parametre" potrebno je otvoriti obrazac na kojem se nalaze dva check box-a Parametar1 i Parametar2 koje korisnik mora postaviti. Nakon što se obrazac zatvori, ispišite vrijednosti parametara u redak poruke.

Izradite opći obrazac “Parameters Form”, na koji postavljamo parametre Parameter1 i Parameter2, kao i naredbu CloseForm:

Rukovatelj naredbama izgleda ovako:

Rukovalac naredbama izgleda ovako: & OnClient
Postupak CloseForm (naredba)
Popis parametara= Nova struktura ( "Parametar1, Parametar2", Parametar1, Parametar2);
Zatvoriti ( Popis parametara); Završetak postupka

Za obrazac postavite svojstvo WindowOpening Mode na "Zaključaj cijelo sučelje":

Na obrazac dokumenta postavite naredbu OpenParameters, čiji je rukovatelj opisan na sljedeći način:

& OnClient
Postupak OpenParameters(naredba)
Upozorenje = Novo Opis upozorenja("OpenParametersCompletion", ThisObject);
OpenForm ( "GeneralForm.ParameterForm",,,,,, Obavijest);
Završetak postupka
& OnClient
Postupak OpenParametersCompletion(Rezultat, Dodatne opcije) Izvoz
Ako je TypeZnch (rezultat) = Vrsta ("Struktura") Onda
Za svaku vrijednost ključa iz ciklusa rezultata
Poruka = ​​Novo Poruka korisniku;
Poruka.Tekst = "Ključ:" " "+ KeyValue.Key +" "", vrijednost = "
+ Ključna vrijednost. Vrijednost;
Poruka.Inform();
Kraj ciklusa;
Završi ako;
Završetak postupka

U korisničkom načinu rada, pokretanjem konfiguracije pod web klijentom, dobivamo sljedeće rezultate rada:

Kliknite na sliku za povećanje.

Način otvaranja prozora također se može odrediti u posljednjem parametru OpenForm procedure.

& OnClient
Postupak OpenParameters(naredba)
Upozorenje = Novo Opis upozorenja("OpenParametersCompletion", ThisObject);
OpenForm ( "GeneralForm.ParameterForm",,,,,, Upozorenje,
ModeOpenWindowForms.LockAllInterface
);
Završetak postupka

Zadatak 2. Pitanje pri zatvaranju obrasca

Prilikom zatvaranja prozora za obradu, pitajte korisnika želi li stvarno zatvoriti prozor.

Ovaj zadatak se može riješiti korištenjem sljedećeg koda koji se nalazi u modulu obrasca za obradu:

& OnClient
Promijeniti NeedCloseForm;
& OnClient
Prije postupka zatvaranja (odricanje od odgovornosti, Standardna obrada)
Ako ne NeedCloseForm= Točno Onda
Odbijanje = Istina;
Upozorenje = Novo Opis upozorenja("Prije zatvaranja dovršetka", ThisObject);
ShowQuestion (Upozorenje, "Jeste li sigurni da želite zatvoriti prozor?",
Pitanje u načinu dijaloga Da Ne
);
Završi ako;
Završetak postupka
& OnClient
Postupak Prije CloseCompletion(Rezultat, Dodatne opcije) Izvoz
Ako je rezultat = Povratni kod dijaloga. Da Zatim
NeedCloseForm= Istina;
Zatvoriti ();
Inače
NeedCloseForm= Nedefinirano;
Završi ako;
Završetak postupka

U postupku Prije zatvaranja obrasca, korisniku se postavlja pitanje, zastavica Odbij postavlja se na True, a obrazac se zatvara.

Nakon potvrdnog odgovora na pitanje, varijabla MustCloseForm se postavlja na True, obrazac se ponovno zatvara.

Zadatak 3. Unos brojčane vrijednosti

Kada kliknete na gumb na obrascu za obradu, otvara se standardni dijaloški okvir za unos broja.

Da biste to učinili, koristite metodu ShowNumberEnter () umjestoNumberEnter (), koja otvara prozor za blokiranje umjesto modalnog.

& OnClient
Postupak unosa broja (naredba)
Upozorenje = Novo Opis upozorenja("EnterNumberCompletion", ThisObject);
ShowEnterNumbers(Objava, 0, “Unesite iznos”, 15, 3);
Završetak postupka
& OnClient
Postupak Unesite BrojeveDovršenje(Rezultat, Dodatne opcije) Izvoz

Poruka = ​​Novo Poruka korisniku;
Message.Text = “Upisali ste količinu” + Rezultat;
Poruka.Inform();
Završi ako;
Završetak postupka

Nakon zatvaranja prozora za unos broja, pozvat će se procedura čiji će prvi parametar biti proslijeđen uneseni broj ili vrijednost Nedefinirana ako korisnik odbije unijeti.

Zadatak 4. Odabir boje

Klikom na gumb na obrascu za obradu pomoću standardnog dijaloškog okvira odabira boje, korisnik određuje potrebnu boju. Postavite ovu boju na pozadinu gumba koji pritisnete.

Dodajte naredbu SelectColor u obrazac sa sljedećim rukovateljem:

& OnClient
Postupak odabira boje (naredba)
DialogueSelectColors= Novo DialogueSelectColors;
Upozorenje = Novo Opis upozorenja("Odaberi dovršetak boje", ThisObject);
Dijalog Odaberi boje. Prikaži (obavijest);
Završetak postupka
& OnClient
Postupak IzborBojeZavršetak(Rezultat, Dodatne opcije) Izvoz
Ako NOT Rezultat = Nedefinirano Onda
Elementi.Boja.BojaPozadina= Rezultat;
Završi ako;
Završetak postupka

Za objekte ColorSelectDialogue (kao i StandardPeriodEdit Dialogue, FormatString Constructor, RegularJobScheduleDialogue, FontSelect Dialogue), metoda Show () otvara prozor za blokiranje.

Nakon što se prozor zatvori, pozvat će se procedura čiji će prvi parametar biti proslijeđena odabrana vrijednost (boja, font itd.) ili vrijednost Nedefinirano ako je korisnik poništio odabir.

Imajte na umu da objekt FileSelectDialog nema metodu Show (), za razliku od dijaloških okvira za odabir boje ili fonta, budući da se implementacija ovih dijaloških okvira značajno razlikuje.

Da biste koristili dijaloški okvir za odabir datoteke na web klijentu, najprije morate povezati ekstenziju datoteke.

Dijalozi implementirani putem proširenja datoteke ne stvaraju takve probleme u radu kao modalni prozori preglednika, stoga nije implementirano otvaranje blokirajućih prozora za FileChoiceDialog objekt.

Zaključno, napominjemo da je od izdanja 8.3.10 podrška za modalne prozore ukinuta u web klijentu. U ovom slučaju, ako se u konfiguraciji pozove modalna metoda, izbacuje se iznimka. Također, u web klijentu je obustavljena podrška za način rada sučelja. U odvojenim prozorima... Osim toga, više nije moguće otvoriti obrazac u zasebnom prozoru i u tankom i u web klijentu (kada radite u načinu sučelja Oznake). Takvi drastični koraci omogućili su napuštanje načina rada sučelja, koji više ne podržavaju svi moderni preglednici.

Koji se praktični zaključak može izvući iz ovih informacija? A zaključak je prilično jednostavan - ako iz nekog razloga modalni pozivi još uvijek postoje u vašoj konfiguraciji, tada će se na tim mjestima u web klijentu prikazati prozor s porukom o pogrešci. Želio bih upozoriti na pokušaje "guglanja" bilo kakvog brzog rješenja ovog problema, jer najveći dio savjeta svodi se na sljedeći recept: u konfiguratoru na razini konfiguracije postavite svojstvo "Modality use mode" na vrijednost "Use". Naravno, u ovaj trenutak, neće raditi samo zato moderni preglednici više ne podržavaju modalne pozive.

I imate samo dva načina kako riješiti gore opisani problem:

  1. Nadogradite platformu na izdanje 8.3.10+ (8.3.11), postavite svojstvo konfiguracije "Način kompatibilnosti" na "Ne koristiti" i prepišite fragmente koda koji koriste modalne metode u asinkroni model za izgradnju poslovne logike
  2. Preporučite svojim klijentima da koriste zastarjele preglednike u kojima su još uvijek podržani modalni pozivi ( Mozilla Firefox verzija 37 i niže, Chrome ispod verzije 37 itd.).

Usput, počevši od izdanja 8.3.11, Microsoftovi web preglednici više nisu podržani Internet Explorer verzije 8 i 9.

S web preglednicima u svjetlu modaliteta, shvatili smo, sada je vrijeme da razjasnimo situaciju s ostalim klijentima.

Počevši od verzije 8.3.5, svojstvo "Modality usage mode" u tankim i debelim klijentima uzima se u obzir samo ako je naveden parametar naredbenog retka / EnableCheckModal. Ovaj parametar se automatski zamjenjuje u naredbeni redak samo pri pokretanju aplikacije iz konfiguratora. Ako ovaj parametar nije naveden, tada se ne generiraju iznimke i ne prikazuju se odgovarajuća upozorenja. Oni. u praksi se u slučaju korištenja debelog i tankog klijenta ne uočava nikakva temeljna promjena u radu pri korištenju modaliteta – modalni pozivi će raditi na isti način kao i prije, bez generiranja ikakvih upozorenja, kao u web klijentu.

Za točku na "i" imajte na umu da počevši od verzije 8.3.9, debeli klijent zanemaruje svojstvo konfiguracije "Način korištenja sinkronih poziva proširenjima platforme i vanjskim komponentama", dok odgovarajuće sinkrone metode rade bez bacanja iznimaka i prikazivanja upozorenja . Navedeno zanemareno svojstvo dodano je u reviziji 8.3.5 kako bi podržalo asinkroni rad s vanjskim komponentama, kriptografijom i proširenjima za rad s datotekama u web pregledniku Google Chrome... Jasno je da to nema nikakve veze s debelim klijentom, pa je stoga "tiho" ignoriranje ovog svojstva jednostavno eliminiralo nepotrebne provjere korištenja sinkronih metoda pri korištenju konfiguracije.

Usput! Zbog činjenice da platforma samouvjereno ide prema webu, programeri su od verzije 8.3.8 uveli određena ograničenja na programski kod koji je povezan s logikom zatvaranja obrasca ili aplikacije, koja se izvršava u debelim i tankim klijentima. Svakako pročitajte naš članak koji detaljno pokriva ovu nijansu. Osim toga, u kolegiju "Profesionalni razvoj sučelja i obrazaca u 1C: Enterprise 8.3" nalazi se poglavlje posvećeno odbacivanju modaliteta, a o ovoj temi možete dobiti puno korisnih i relevantnih informacija.

Kolege, dvije stvari se mogu čitati beskonačno: VKontakte feed i popis promjena u sljedećem izdanju platforme, pa da rezimiramo;)

U procesu gledanja primjera koji vam omogućuju da prijeđete s elemenata sinkronog modela na asinkroni model, vjerojatno ste već primijetili da u općem slučaju ima više koda. Što je više koda, to se više povećava složenost njegovog daljnjeg održavanja i otklanjanja pogrešaka.

Osim toga, količina koda će se još više povećati ako tijekom procesa razvoja koristimo više dijaloga. Stoga, u procesu razvoja aplikacijskih rješenja usmjerenih na rad u web klijentu, morate se sjetiti paradigme rada koja se trenutno koristi u modernim web aplikacijama. Stoga, ako vaša konfiguracija ima puno interaktivnih dijaloga s korisnikom, izdanih upozorenja, onda ima smisla revidirati ovu funkcionalnost u korist nekih drugih pristupa u organizaciji interakcije korisnika.

Umjesto zaključka

Tako je naš ciklus "Prvi koraci u razvoju na 1C" došao do kraja. Ako ste je pročitali u cijelosti, onda ste najvjerojatnije već primijetili s kakvim se skokovima platforma razvija u posljednje vrijeme. Materijal ovog ciklusa napisan je relativno nedavno, ali smo ga morali ozbiljno ažurirati, jer čak i u tako kratkom vremenu, puno novih važnih funkcionalnost i promjene. Takve velike promjene mogu donekle zbuniti 1C programera ako cijelo to vrijeme nije rastao i profesionalno se razvijao s platformom.

Na specijaliziranim internetskim resursima često možete pročitati zahtjeve programera početnika i njihovih zrelijih kolega za savjetovanje o materijalima koji bi im pomogli razumjeti goleme i ponekad naizgled beskrajne mogućnosti 1C platforme. Po tradiciji preporučamo da obratite pozornost na naše tečajeve programiranja

14
Kako bi se poduzeće natjeralo da se pokrene u normalnoj ili upravljanoj aplikaciji, koriste se sljedeće tipke: / RunModeOrdinaryApplication pokreće debeli klijent u normalnom načinu rada, unatoč postavkama konfiguracije i ... 3
Potrebno je da korisnici ne mogu mijenjati sučelje koje im je konfigurirano! Rješenje: da biste ga onemogućili, morate ukloniti pravo "Spremi korisničke podatke" u pravima pristupa korijenskog konfiguracijskog elementa. ... 2
U trenutnom radu korisnik obično otvara nekoliko objekata. To može biti dokument, referentna knjiga, izvješće itd. U prethodnom sučelju nije bilo problema brzo pronaći otvoreni objekt i ažurirati ga za ... 2
U zadnjem članku: Instaliranje klasifikatora adresa (KLADR) u 1C, rekao sam vam što je Kladr i kako ga učitati u 1C regularne forme (8.0-8.2). U ovom članku pokazat ću vam kako učitati Klasifikator adresa (KLADR) u ... 2
Često kada razvijaju određenu konfiguraciju, korisnici žele priložiti fotografije na stavku direktorija i pohraniti ih u bazu podataka. U ovom članku ću vam reći kako spojiti građevinske objekte na referentnu knjigu ...

U platformi 1C pojavila se verzija 8.3 novi režim rad programa - bez korištenja modaliteta. Točnije, pojavila su se 2 nova načina rada: bez korištenja modaliteta i korištenje modaliteta, ali s upozorenjem. A stari način rada označava se kako koristiti modalitet.

Što sve ovo znači? U ranim verzijama platforme koristili smo razne modalne prozore i nismo baš razmišljali o tome. Na primjer, trebate prikazati upozorenje korisniku, ili trebate postaviti pitanje ili unijeti neku vrijednost ili odabrati datoteku. Sve su to modalni prozori.

Što znači modalno? To znači da kada se ovaj prozor pozove, on se preklapa sa svim ostalim prozorima, odnosno dovodi se na sam vrh i blokira rad s drugim prozorima do kraja rada s tim prozorom. Osim blokiranja prozora, izvršavanje koda se zaustavlja točno na mjestu gdje je ovaj prozor pozvan i nastavak izvršavanja koda se provodi tek nakon zatvaranja takvog prozora. Od mjesta gdje je stala egzekucija. Poziv modalnog prozora ilustrirat ću na primjeru pozivanja obrasca za odabir razdoblja:

& OnClient

Standardna obrada = False;




Ako Dialog.Edit () Onda // Pozovite modalni oblik. Nastavak izvršavanja koda dogodit će se tek nakon zatvaranja obrasca.
Elements.Services.CurrentData.StartDate = Dialog.Period.StartDate;
Elements.Services.CurrentData.EndDate = Dialogue.Period.EndDate;
Završi ako;

Završetak postupka


Kao što vidimo, dovoljan je jedan postupak za obradu poziva modalnog prozora za odabir razdoblja.

Zašto su modali loši? Sada ćemo shvatiti zašto je 1C odlučio napustiti korištenje modalnih prozora. Pa, prije svega, to je posljedica činjenice da se 1C platforma može koristiti ne samo u svom uobičajenom obliku - u obliku desktop aplikacije, već se također može pokrenuti u pregledniku i može se pokrenuti u obliku mobilne aplikacije.

Problem s preglednicima je sljedeći. Modalitet prozora u njima implementiran je pomoću skočnih zasebnih prozora preglednika. Podržavaju ih gotovo svi preglednici, ali zbog česte upotrebe ovakvih prozora za oglašavanje, gotovo svi programeri preglednika muku muče s njima i onemogućuju korištenje takvih prozora prema zadanim postavkama. Kao rezultat toga, kako biste osigurali mogućnost rada korisnika 1c u pregledniku, morate ga prisiliti da dopusti ove prozore, posvetiti se svim suptilnostima 1c i preglednika i općenito preopteretiti nepotrebnim informacijama.

Zasebna nijansa s preglednicima za tablet računala i preglednici za telefone. U većini slučajeva ovi preglednici ne podržavaju skočne prozore. Sučelja (monitori i ulazni uređaji) takvih uređaja sa skočnim prozorima nisu kompatibilna.

I konačno mobilna aplikacija 1C se također nije baš sprijateljio s modalnim prozorima.

Odatle zaključak: nemojte koristiti modale. A što koristiti umjesto njih? Umjesto toga, trebate koristiti iste prozore, ali bez modaliteta. U novoj platformi 1C je također razvio takav način rada za svaki prozor. Implementira se kao zasebna metoda za svaki dijalog. Ovaj način vam omogućuje da pozovete prozor, ali ne i zaustavite izvršavanje programskog koda. Tehnički u preglednicima, ovo je implementirano kao pseudo prozor koji se pojavljuje unutar roditeljskog prozora, ali ga preklapa. Činjenica da se kod nastavlja izvršavati nakon otvaranja prozora znači da ne možete dobiti vrijednosti odabrane u njemu odmah nakon koda za pozivanje prozora. Još nisu odabrani. Stoga se primanje i obrada ovih vrijednosti provodi u zasebnoj proceduri koja se poziva kada se takav prozor zatvori i ovaj postupak se specificira kada se poziva metoda za otvaranje prozora. Pogledajmo primjer istog prozora za odabir razdoblja.

& OnClient
Service ProcedureStartDateSelectionStart (stavka, podaci odabira, standardna obrada)

Standardna obrada = False;

Dijalog = Novi dijalog EditStandardPeriod ();
Standardni period = Novi standardni period ();

Datum početka = Items.Services.CurrentData.StartDate;
Datum završetka = Stavke.Usluge.Trenutačni podaci.Datum završetka;

StandardPeriod.StartDate = Datum početka;
StandardPeriod.EndDate = Datum završetka;
Dijalog.Razdoblje = Standardno razdoblje;

AlertDescription = New AlertDescription ("PeriodSelectionProcessing", ThisForm);

Dialogue.Show (opis upozorenja)

Završetak postupka

& OnClient
Postupak za obradu Odabir razdoblja (razdoblja, parametara) za izvoz

Ako Razdoblje<>Nedefinirano Zatim

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

Završi ako;

Završetak postupka


Kao što vidimo, umjesto Edit (), poziva se Show (). A obrada selekcijskog događaja je već u drugom postupku.

Dakle, shvatili smo kako bez modaliteta. Sada ćemo shvatiti čemu služi način korištenja modaliteta s upozorenjem. Zapravo, ovo je takav prijelazni režim. Kada još niste imali vremena ponoviti cijelu konfiguraciju za način rada bez korištenja modaliteta, ali već težite tome. I svaki put kada se pozove modalni prozor, program će vam dati upozorenje da je nepoželjno pozivati ​​modalne prozore u ovom načinu rada.

Pa, napuštamo modalitet i svladavamo nove tehnologije za rad 1C u preglednicima i mobilnim računalima.