Počítače Okna Internet

Chrome použití modálních oken v tomto režimu je zakázáno. Co dělat, když „je použití modálních oken v tomto režimu zakázáno“. Správné řešení problému

Pomocník syntaxe pro tyto příkazy označuje, že pokud vlastnost konfigurace Způsob použití nainstalovaný v Nepoužívat, pak byste měli v kódu programu použít další příkazy, jako např ShowQuestion (), ShowWarning (), ShowEnterNumbers ():

Pro práci s těmito situacemi poskytuje program 1C 8.3 nový systémový objekt „Alert Description“, který se používá k popisu volání procedury programového modulu, když nastane očekávaná událost, jako je zavření formuláře nebo nemodální dialog:

Toto je pohled na problém „zevnitř“ pro ty, kteří se chtějí vypořádat s hlavní příčinou. Primárně pro 1C programátory. Jak v této situaci mohou běžní uživatelé bez upřesnění opravit chybu programový kód? Existuje velmi jednoduchá metoda.

Návod na opravu chyb pro běžné uživatele

Krok 1. Dokončete práci:

Krok 2. Vraťte se do nabídky Start a spusťte konfiguraci. Vybereme položku nabídky "Konfigurace":

Krok 3. Otevřete „Konfigurátor“: na horním panelu najdeme tlačítko „Konfigurace“ a v navrhovaném seznamu vyberte nabídku „Otevřít konfiguraci“:

Krok 4. Umístěte kurzor na Konfigurace a kliknutím pravým tlačítkem zavolejte kontextová nabídka, ve kterém vybereme položku "Vlastnosti":

Krok 5. Otevřete formulář „Vlastnosti“:

Krok 6. Najděte řádek „Režim použití modality“ (v dolní části seznamu):

Ve výchozím nastavení je program 1C 8.3 nastaven na „Nepoužívat“. Hodnotu „Nepoužívat“ přeložíme na hodnotu „Použít“:

Výsledek:

Pokud chyba „Používání modálních oken v tomto režimu je zakázáno“ v 1C 8.3 zmizí, můžete pracovat dále. To se obvykle děje.

Pokud však chyba modality v 1C přetrvává i po provedení všech těchto akcí, měli byste kontaktovat programátory, kteří obsluhují a podporují váš program 1C.

Jak pracovat v rozhraní „Taxi“, jak si upravit pracoviště „pro sebe“, přizpůsobit si navigační lištu Oblíbené, jak provádět fulltextové vyhledávání, techniky práce s časopisy, tlačítko „vybrat“ v dokumentech, přenos odkazů na dokumenty, ověřování a další funkce v novém rozhraní - to vše se dozvíte z našeho videa:

Podrobněji o tom, jak správně a rychle organizovat navigaci v programu 1C 8.3 pomocí nového rozhraní TAXI, o nových možnostech používání známých nástrojů, jako je vestavěná kalkulačka, kalendář, porovnání souborů, přenos odkazů na dokumenty kolegům, viz náš kurz „“


Ohodnoťte tento článek:

Pokud v procesu dokončování lekcí máte takovou chybu, je velmi snadné ji opravit.

Vraťte se do konfigurátoru a vyberte položku nabídky "Konfigurace" -> "Otevřít konfiguraci":

V okně, které se otevře, klikněte na klikněte pravým tlačítkem myši na položce "Konfigurace" a z rozbalovací nabídky vyberte položku "Vlastnosti":

Otevře se okno s konfiguračními vlastnostmi (vpravo):

Přejděte úplně dolů a najděte tam položku „Režim použití modality“:

Nastavte jeho hodnotu na "Použití":

Pozornost! Vezměte prosím na vědomí, že pokud používáte platformu 1C, která se liší od té, kterou jsme stáhli v první lekci (pozdější verzi), budete mít také pole „Režim používání synchronních volání ...“. Musí být také nastaven na „Použít“.

Nakonec vyberte položku nabídky „Konfigurace“ -> „Uložit konfiguraci“:

Připraveno! Nyní se již chyba nebude vyskytovat.

Níže uvedená vysvětlení jsou pro ty, které zajímá, co jsme udělali.

V naší konfiguraci jsme povolili režim použití modality. Ve výchozím nastavení je tento režim zakázán a neumožňuje nám používat příkazy jako EnterNumber, EnterString, EnterDate, OpenValue.

Jde o to, že tyto příkazy jsou modální. Jejich volání vede k tomu, že se před uživatelem objeví okno (například pro zadávání informací), které blokuje možnost práce s programem až do zavření okna.

A protože přítomnost takových oken je při práci s 1C prostřednictvím webového prohlížeče extrémně nežádoucí, při vývoji nových konfigurací je režim modality ve výchozím nastavení zakázán.

Můžeme to klidně zařadit, jelikož píšeme vzdělávací příklady, které nejsou určeny pro práci na internetu.

Článek se bude zabývat hlavními důvody pro opuštění modality v platformě 1C: Enterprise a hlavními metodami převodu částí kódu na nový asynchronní model.

Použitelnost

Článek pojednává o asynchronním modelu budování obchodní logiky, přidané platformě „1C: Enterprise“ verze 8.3. Uvedené informace jsou relevantní pro aktuální verze platforem.

Odmítnutí používat modální okna na platformě 1C: Enterprise 8.3

Při vývoji konfigurace na platformě 1C: Enterprise 8 je potřeba čas od času pozastavit provoz programu, dokud uživatel nerozhodne nebo neprovede nějakou akci.

Například při kliknutí na tlačítko pro vyplnění tabulkové části by měl být uživatel dotázán, zda je nutné tabulkovou část vymazat, aby nedošlo ke ztrátě dříve zadaných údajů.

Toto chování může zajistit například následující kód:

& OnClient
Postup FillProducts(příkaz)
Odpověď = Otázka („Sekce tabulky bude vymazána. Pokračovat?“, Dialogový režim Otázka Ano Ne);
Pokud odpověď = Dialogové okno Návratový kód.Ano Pak
// algoritmus plnění
EndIf;
Konec procedury

V důsledku práce tohoto kusu kódu bude pozastaveno provádění programového kódu, na obrazovce se zobrazí otázka, rozhraní aplikace se kromě dialogu s otázkou stane nepřístupným, systém čeká pro rozhodnutí uživatele bude spouštění kódu pokračovat až po zodpovězení otázky.

Také otevírání modálních oken voláním metody OpenModal () vede k pozastavení provádění kódu a zablokování rozhraní.

Při práci s konfigurací v režimu webového klienta přes prohlížeč se v tomto případě otevře nové okno - vyskakovací okno, které zablokuje nejen aktuální kartu, ale i celé rozhraní prohlížeče včetně zbytku otevřená okna a karty.

Vyskakovací okna na internetu se často používají ke škodlivému šíření nežádoucích reklam, a proto prohlížeče obsahují funkce blokování vyskakovacích oken.

V tomto případě je pro práci s konfiguracemi 1C: Enterprise 8 prostřednictvím prohlížeče nutné zakázat blokování vyskakovacích oken.

Problémy nastávají i při práci na mobilní zařízení... Například modály nejsou podporovány na iPadu.

Chcete-li tyto problémy vyřešit, měli byste místo modálních oken používat blokující okna. Pro uživatele vizuálně vše vypadá stejně: okno blokuje rozhraní webového klienta.

Blokovací okno je však „vykresleno“ přes hlavní okno a blokována je pouze aktuální karta prohlížeče, ve které je otevřena konfigurace, což umožňuje přepnout na jiné karty, protože modální okna prohlížeče se v tomto případě nepoužívají. .

Neotevírají se tak vyskakovací okna v prohlížeči a je zajištěna práce přes webového klienta na mobilních zařízeních.

Kořenový konfigurační prvek má vlastnost „Modality use mode“, která určuje, zda lze v konfiguraci otevřít modální okna.

Pokud je vybrána možnost "Použít", lze otevřít modální okna. Pokud vyberete možnost „Nepoužívat“, modály jsou neplatné. Při pokusu o volání metody, která otevře modální okno, systém zobrazí chybovou zprávu:

S touto hodnotou vlastnosti "Modality use mode" jsou povolena pouze blokující okna.

Pokud je vybrána možnost „Použít s varováními“, pak se při otevření modálních oken v okně zprávy zobrazí následující text:

Tato varianta práce může být použita jako mezilehlá při přepracování konfigurace za účelem odmítnutí použití modálních oken.

Hlavní rozdíl mezi blokovacími a modálními okny je v tom, že otevření blokovacího okna nepozastaví provádění kódu.

Vývojáři proto budou muset přepsat kód, který používá modály, s ohledem na tuto funkci.

Kód je potřeba rozdělit na dvě části:

  • otevření blokovacího okna;
  • zpracování výběru uživatele.

Fragment kódu na začátku článku je třeba přepsat takto:

& OnClient
Postup FillProducts(příkaz)
Upozornění = Nové Popis Upozornění(, ThisObject);

Dialogový režim Otázka Ano Ne);
Konec procedury
& OnClient
Postup (výsledek, Extra možnosti) Export
Pokud Výsledek = Dialogové okno Návratový kód.Ano Pak
// algoritmus plnění
EndIf;
Konec procedury

Po provedení procedury ShowQuestion () se systém nezastaví, čeká na odpověď uživatele a kód pokračuje v provádění.

Uživatel si bude moci vybrat až po dokončení celé procedury. To zavolá proceduru exportu FillProductsQuestionCompletion (). Jeho název jsme předali konstruktoru objektu Popis výstrahy.

Procedura, která bude volána po provedení výběru, může být umístěna ve formulářovém modulu, příkazovém modulu, běžném neglobálním modulu.

Ve výše uvedeném příkladu je volaná procedura umístěna v modulu spravovaného formuláře, takže jsme do parametru předali thisObject.

Zvažte volání procedury umístěné ve společném modulu. Chcete-li to provést, přidejte nový společný modul ProcessingNotifications, nastavte pro něj příznak „Klient (spravovaná aplikace)“ a nenastavujte příznak „Globální“. Do tohoto modulu umístěte proceduru FillProductsQuestionCompletion ().

Potom bude obsluha příkazu fill vypadat takto:

& OnClient
Postup FillProducts(příkaz)
Upozornění = Nové Popis Upozornění("FillProductsQuestionFinishing",
Zpracování oznámení);
QuestionText = “Sekce tabulky bude vymazána. Pokračovat?" ;
Zobrazit otázku (upozornění, text otázky, Dialogový režim Otázka Ano Ne);
Konec procedury

Po volání jakékoli metody, která otevře blokovací okno, musí být procedura dokončena a kód spouštěný dále by měl být umístěn v proceduře, která bude volána po zavření okna.

K předání kontextu (pomocná data, některé parametry, hodnoty proměnných) z procedury, která otevírá modální okno, do procedury, která je volána při jeho zavření, je k dispozici třetí volitelný parametr konstruktoru objektu DescriptionNotifications - AdditionalParameters.

Tento objekt (jakéhokoli typu) bude předán do procedury popsané v AlertDescription jako poslední parametr.

Pomocí příkladu výše uvedené části kódu to lze provést takto:

& OnClient
Postup FillProducts(příkaz)
Parametr1 = 0;
Parametr2 = 0;
Seznam parametrů= Nová struktura („Parametr1, Parametr2 ″, Parametr1, Parametr2);
Upozornění = Nové Popis Upozornění("FillProductsQuestionFinishing", TentoObjekt,
Seznam parametrů);
ShowQuestion (Výstraha, "Sekce tabulky bude vymazána. Pokračovat?",
Dialogový režim Otázka Ano Ne);
Konec procedury
& OnClient
Postup FillProductsQuestionFinishing(Výsledek , Extra možnosti) Export
Pokud Výsledek = Dialogové okno Návratový kód.Ano Pak
// analyzovat AdditionalParameters.Parameter1
// analyzovat AdditionalParameters.Parameter2
EndIf;
Konec procedury

Pokud potřebujete předat pouze jednu hodnotu, nelze strukturu použít, ale přiřaďte tuto hodnotu parametru AdditionalParameters konstruktoru objektu DescriptionAlerts.

Podívejme se na některé příklady práce s blokováním oken.

Úkol 1. Otevření dalšího formuláře

Z formuláře dokumentu kliknutím na tlačítko "Otevřít parametry" je potřeba otevřít formulář, na kterém jsou dvě zaškrtávací políčka Parametr1 a Parametr2, které musí nastavit uživatel. Po zavření formuláře vypište hodnoty parametrů do řádku zprávy.

Vytvořte obecný formulář „Parameters Form“, do kterého umístíme parametry Parameter1 a Parameter2 a také příkaz CloseForm:

Obsluha příkazu vypadá takto:

Obsluha příkazu vypadá takto: & OnClient
Postup CloseForm (příkaz)
Seznam parametrů= Nová struktura ( "Parametr1, Parametr2", Parametr1, Parametr2);
Zavřít ( Seznam parametrů); Konec procedury

U formuláře nastavte vlastnost WindowOpening Mode na „Zamknout celé rozhraní“:

Do formuláře dokumentu umístěte příkaz OpenParameters, jehož obsluha je popsána následovně:

& OnClient
Postup OpenParameters(příkaz)
Upozornění = Nové Popis Upozornění("OpenParametersCompletion", ThisObject);
OpenForm ( "GeneralForm.ParameterForm",,,,,, Oznámení);
Konec procedury
& OnClient
Postup OpenParametersCompletion(Výsledek , Extra možnosti) Export
If TypeZnch (Result) = Type ("Struktura") Then
Pro každou klíčovou hodnotu z cyklu výsledku
Zpráva = Nové Zpráva uživateli;
Message.Text = „Klíč:“ ” "+ KeyValue.Key +" "", hodnota = "
+ Klíčová hodnota;
Zpráva.Informovat();
Konec cyklu;
EndIf;
Konec procedury

V uživatelském režimu, spuštěním konfigurace pod webovým klientem, získáme následující pracovní výsledky:

Pro zvětšení klikněte na obrázek.

Režim otevírání okna lze také určit v posledním parametru procedury OpenForm.

& OnClient
Postup OpenParameters(příkaz)
Upozornění = Nové Popis Upozornění("OpenParametersCompletion", ThisObject);
OpenForm ( "GeneralForm.ParameterForm",,,,,, Upozornění,
ModeOpenWindowForms.LockAllInterface
);
Konec procedury

Úkol 2. Otázka při zavírání formuláře

Při zavírání okna zpracování se zeptejte uživatele, zda opravdu chce okno zavřít.

Tento úkol lze vyřešit pomocí následujícího kódu umístěného v modulu formuláře zpracování:

& OnClient
Změna NeedCloseForm;
& OnClient
Postup BeforeClose (odmítnutí odpovědnosti, Standardní zpracování)
Pokud ne NeedCloseForm= Pravda tehdy
Odmítnutí = pravda;
Upozornění = Nové Popis Upozornění("PředZavřítDokončení", ThisObject);
ShowQuestion (Výstraha: "Opravdu chcete zavřít okno?",
Dialogový režim Otázka Ano Ne
);
EndIf;
Konec procedury
& OnClient
Postup BeforeCloseCompletion(Výsledek , Extra možnosti) Export
Pokud Výsledek = Dialogové okno Návratový kód.Ano Pak
NeedCloseForm= Pravda;
Zavřít ();
v opačném případě
NeedCloseForm= Nedefinováno;
EndIf;
Konec procedury

V proceduře Před zavřením formuláře je uživateli položena otázka, příznak Odmítnout je nastaven na hodnotu True a formulář je uzavřen.

Po kladné odpovědi na otázku se proměnná MustCloseForm nastaví na True, formulář se opět uzavře.

Úkol 3. Zadání číselné hodnoty

Po kliknutí na tlačítko ve formuláři zpracování otevřete standardní dialog pro zadání čísla.

Chcete-li to provést, použijte metodu ShowNumberEnter () namístoNumberEnter (), která otevře blokovací okno namísto modálního.

& OnClient
Postup zadávání čísel (příkaz)
Upozornění = Nové Popis Upozornění("EnterNumberCompletion", ThisObject);
ShowEnterNumbers(Oznámení, 0, „Zadejte částku“, 15, 3);
Konec procedury
& OnClient
Postup EnterNumbersCompletion(Výsledek , Extra možnosti) Export

Zpráva = Nové Zpráva uživateli;
Message.Text = “Zadali jste množství” + Výsledek;
Zpráva.Informovat();
EndIf;
Konec procedury

Po zavření okna pro zadání čísla bude vyvolána procedura, jejímž prvním parametrem bude předáno zadané číslo nebo hodnota Nedefinováno, pokud uživatel odmítl zadání.

Úkol 4. Výběr barvy

Kliknutím na tlačítko ve formuláři zpracování pomocí standardního dialogu pro výběr barvy uživatel zadá požadovanou barvu. Nastavte tuto barvu na pozadí tlačítka, které stisknete.

Přidejte příkaz SelectColor do formuláře s následující obslužnou rutinou:

& OnClient
Postup výběru barvy (příkaz)
DialogueSelectColors= Nové DialogueSelectColors;
Upozornění = Nové Popis Upozornění("SelectColorCompletion", ThisObject);
Dialog Vyberte barvy. Zobrazit upozornění);
Konec procedury
& OnClient
Postup ChoiceColorsCompletion(Výsledek , Extra možnosti) Export
Pokud NE Výsledek = Nedefinováno Pak
Elements.Color.ColorBackground= výsledek;
EndIf;
Konec procedury

U objektů ColorSelectDialogue (stejně jako StandardPeriodEdit Dialogue, FormatString Constructor, RegularJobScheduleDialogue, FontSelect Dialogue) metoda Show () otevře blokovací okno.

Po zavření okna bude vyvolána procedura, jejímž prvním parametrem bude předána zvolená hodnota (barva, písmo atd.) nebo hodnota Nedefinováno, pokud uživatel výběr zrušil.

Všimněte si, že objekt FileSelectDialog nemá metodu Show (), na rozdíl od dialogů pro výběr barvy nebo písma, protože implementace těchto dialogů je výrazně odlišná.

Chcete-li použít dialogové okno pro výběr souboru na webovém klientovi, musíte nejprve připojit příponu souboru.

Dialogy implementované přes příponu souboru nevytvářejí takové problémy v provozu jako modální okna prohlížečů, proto nebylo implementováno otevírání blokujících oken pro objekt FileChoiceDialog.

Na závěr poznamenáváme, že od vydání 8.3.10 byla ve webovém klientovi ukončena podpora pro modální okna. V tomto případě, pokud je v konfiguraci volána modální metoda, je vyvolána výjimka. Ve webovém klientovi je také ukončena podpora režimu rozhraní. V samostatných oknech... Navíc již není možné otevřít formulář v samostatném okně v tenkém i webovém klientovi (při práci v režimu rozhraní Záložky). Takové drastické kroky umožnily opustit režim rozhraní, který již nepodporují všechny moderní prohlížeče.

Jaký praktický závěr lze z těchto informací vyvodit? A závěr je vcelku jednoduchý – pokud ve vaší konfiguraci z nějakého důvodu stále existují modální volání, pak se na těchto místech ve webovém klientovi zobrazí okno s chybovou hláškou. Chtěl bych varovat před pokusy o "googlování" jakéhokoli rychlého řešení tohoto problému, protože valná část rady spočívá v následujícím receptu: v konfigurátoru na konfigurační úrovni nastavte vlastnost "Modality use mode" na hodnotu "Use". Přirozeně, v tento moment, nebude to fungovat jen proto moderní prohlížeče již nepodporuje modální volání.

A máte pouze dva způsoby, jak vyřešit výše popsaný problém:

  1. Upgradujte platformu na verzi 8.3.10+ (8.3.11), nastavte konfigurační vlastnost "Režim kompatibility" na "Nepoužívat" a přepište fragmenty kódu, které používají modální metody, na asynchronní model pro vytváření obchodní logiky.
  2. Doporučte svým klientům, aby používali zastaralé prohlížeče, kde byla stále podporována modální volání ( Mozilla Firefox verze 37 a nižší, Chrome nižší verze 37 atd.).

Mimochodem, počínaje verzí 8.3.11 již nejsou podporovány webové prohlížeče společnosti Microsoft internet Explorer verze 8 a 9.

S webovými prohlížeči ve světle modality jsme přišli na to, nyní je čas vyjasnit situaci se zbytkem klientů.

Počínaje verzí 8.3.5 je vlastnost "Modality use mode" v tenkých a tlustých klientech brána v úvahu pouze v případě, že je zadán parametr příkazového řádku / EnableCheckModal. Tento parametr je automaticky nahrazen do příkazový řádek pouze při spuštění aplikace z konfigurátoru. Pokud tento parametr není zadán, nejsou generovány žádné výjimky a odpovídající varování se nezobrazují. Tito. v praxi v případě použití tlustého a tenkého klienta není pozorována žádná zásadní změna v práci při použití modality módu - modální volání budou fungovat stejně jako doposud, bez generování jakýchkoliv varování jako ve webovém klientovi.

K tečce „i“ si všimněte, že počínaje verzí 8.3.9 tlustý klient ignoruje konfigurační vlastnost „Režim používání synchronních volání pro rozšíření platformy a externí komponenty“, zatímco odpovídající synchronní metody fungují bez vyvolání výjimek a zobrazení varování. . Zadaná ignorovaná vlastnost byla přidána v revizi 8.3.5, aby podporovala asynchronní práci s externími komponentami, kryptografii a rozšíření pro práci se soubory ve webovém prohlížeči Google Chrome... Je jasné, že to nemá nic společného s tlustým klientem, a proto „tiché“ ignorování této vlastnosti jednoduše odstranilo zbytečné kontroly používání synchronních metod při použití konfigurace.

Mimochodem! Vzhledem k tomu, že platforma sebevědomě směřuje k webu, od verze 8.3.8 zavedli vývojáři určitá omezení do programového kódu, která souvisí s logikou uzavření formuláře nebo aplikace, prováděné v tlustých a tenkých klientech. Nezapomeňte si přečíst náš článek, který podrobně popisuje tuto nuanci. Kromě toho je v kurzu "Profesionální vývoj rozhraní a formulářů v 1C: Enterprise 8.3" kapitola věnovaná odmítání modality a na toto téma můžete získat mnoho užitečných a relevantních informací.

Kolegové, existují dvě věci, které lze číst donekonečna: zdroj VKontakte a seznam změn v příštím vydání platformy, takže si to shrňme;)

V procesu prohlížení příkladů, které vám umožňují přejít od prvků synchronního modelu k asynchronnímu modelu, jste si pravděpodobně již všimli, že v obecném případě je více kódu. Čím více kódu, tím více se zvyšuje náročnost jeho další údržby a ladění.

Množství kódu se navíc ještě zvýší, pokud během vývojového procesu použijeme více dialogů. V procesu vývoje aplikačních řešení zaměřených na práci ve webovém klientovi je proto třeba pamatovat na paradigma práce, které se v současné době používá v moderních webových aplikacích. Pokud tedy vaše konfigurace obsahuje mnoho interaktivních dialogů s uživatelem, vydávaných varování, pak má smysl tuto funkci revidovat ve prospěch některých jiných přístupů v organizaci interakce s uživatelem.

Místo závěru

Náš cyklus „První kroky ve vývoji na 1C“ tedy skončil. Pokud jste ji přečetli celou, pak jste si s největší pravděpodobností již všimli, jakými skoky se platforma v poslední době rozvíjí. Materiál tohoto cyklu byl napsán relativně nedávno, ale museli jsme ho vážně aktualizovat, protože i za tak krátkou dobu mnoho nového důležitého funkčnost a změny. Takové velké změny mohou programátora 1C poněkud zmást, pokud po celou tu dobu nevyrostl a nevyvinul se profesionálně s platformou.

Na specializovaných internetových zdrojích si často můžete přečíst požadavky začínajících programátorů a jejich odrostlejších kolegů, abyste jim poradili s materiály, které by jim pomohly pochopit rozsáhlé a někdy zdánlivě nekonečné možnosti platformy 1C. Již tradičně doporučujeme věnovat pozornost našim kurzům programování

14
Chcete-li vynutit spuštění podniku v normální nebo spravované aplikaci, používají se následující klíče: / RunModeOrdinaryApplication spustí tlustého klienta v normálním režimu, navzdory nastavení konfigurace a ... 3
Je nutné, aby uživatelé nemohli měnit pro ně nakonfigurované rozhraní! Řešení: Chcete-li jej zakázat, musíte odebrat právo "Uložit uživatelská data" v přístupových právech kořenového konfiguračního prvku. ... 2
V aktuální práci uživatel obvykle otevře několik objektů. Může to být dokument, referenční kniha, zpráva atd. V předchozím rozhraní nebyl problém rychle najít otevřený objekt a aktualizovat jej pro ... 2
V minulém článku: Instalace klasifikátoru adres (KLADR) v 1C jsem vám řekl, co je Kladr a jak jej načíst do běžných tvarů 1C (8.0-8.2). V tomto článku vám ukážu, jak načíst klasifikátor adres (KLADR) v ... 2
Často při vývoji určité konfigurace chtějí uživatelé připojit fotografie k položce adresáře a uložit je do databáze. V tomto článku vám řeknu, jak připojit stavební objekty k referenční knize ...

Na platformě 1C se objevila verze 8.3 nový režim práce programu - bez použití modality. Přesněji, objevily se 2 nové režimy: bez použití modality a pomocí modality, ale s varováním. A starý způsob provozu je označen, jak používat modalitu.

co to všechno znamená? V raných verzích platformy jsme používali různá modální okna a moc jsme o tom nepřemýšleli. Například musíte uživateli zobrazit varování nebo se musíte na něco zeptat nebo zadat nějakou hodnotu nebo vybrat soubor. To vše jsou modální okna.

Co znamená modální? To znamená, že při vyvolání tohoto okna překrývá všechna ostatní okna, to znamená, že je přeneseno úplně nahoru a bloky pracují s ostatními okny až do konce práce s tímto oknem. Kromě blokování oken se provádění kódu zastaví přesně v místě, kde je toto okno vyvoláno a pokračování ve spouštění kódu je provedeno až po zavření takového okna. Odkud se poprava zastavila. Volání modálního okna ilustruji na příkladu vyvolání formuláře pro výběr období:

& OnClient

StandardProcessing = False;




If Dialog.Edit () Then // Volání modálního formuláře. Pokračování spouštění kódu nastane až po zavření formuláře.
Elements.Services.CurrentData.StartDate = Dialog.Period.StartDate;
Elements.Services.CurrentData.EndDate = Dialogue.Period.EndDate;
EndIf;

Konec procedury


Jak vidíme, ke zpracování volání modálního okna pro výběr období stačí jedna procedura.

Proč jsou modály špatné? Nyní pojďme zjistit, proč se 1C rozhodl opustit používání modálních oken. No, za prvé je to důsledek toho, že platformu 1C lze používat nejen ve své obvyklé podobě - ​​ve formě desktopové aplikace, ale lze ji spustit i v prohlížeči a lze ji spustit ve formě mobilní aplikace.

Problém s prohlížeči je následující. Modalita oken v nich je implementována pomocí vyskakovacích samostatných oken prohlížeče. Podporují je téměř všechny prohlížeče, ale kvůli častému používání takových oken pro reklamu s nimi bojují téměř všichni vývojáři prohlížečů a používání takových oken ve výchozím nastavení zakazují. V důsledku toho, abyste zajistili schopnost uživatele 1c pracovat v prohlížeči, musíte ho donutit, aby povolil tato okna, věnoval se všem jemnostem 1c a prohlížečů a obecně zahltil zbytečnými informacemi.

Samostatná nuance s prohlížeči pro tabletové počítače a prohlížeče pro telefony. Ve většině případů tyto prohlížeče nepodporují vyskakovací okna. Rozhraní (monitory a vstupní zařízení) takových zařízení s vyskakovacími okny nejsou kompatibilní.

A nakonec mobilní aplikace 1C se také s modálními okny tak úplně nespřátelilo.

Proto závěr: nepoužívejte modály. A co použít místo nich? Místo toho musíte použít stejná okna, ale bez modality. V nové platformě 1C také vyvinul takový režim pro každé okno. Je implementována jako samostatná metoda pro každý dialog. Tento režim umožňuje vyvolat okno, ale nezastavit provádění programového kódu. Technicky v prohlížečích je to implementováno jako pseudo okno, které se objeví uvnitř nadřazeného okna, ale překrývá ho. Skutečnost, že kód pokračuje v provádění po otevření okna, znamená, že nemůžete získat hodnoty v něm vybrané ihned po kódu volání okna. Zatím nebyli vybráni. Proto příjem a zpracování těchto hodnot probíhá v samostatné proceduře, která je volána při zavření takového okna a tato procedura je specifikována při volání metody pro otevření okna. Podívejme se na příklad stejného okna pro výběr období.

& OnClient
Service ProcedureStartDateSelectionStart (položka, SelectionData, StandardProcessing)

StandardProcessing = False;

Dialog = New EditStandardPeriod Dialog ();
StandardPeriod = Nové standardní období ();

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

StandardPeriod.StartDate = Datum zahájení;
StandardPeriod.EndDate = Datum ukončení;
Dialogue.Period = Standardní období;

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

Dialogue.Show (popis výstrahy)

Konec procedury

& OnClient
Postup zpracováníVýběr období (období, parametrů) Export

Pokud Období<>Nedefinováno Potom

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

EndIf;

Konec procedury


Jak vidíme, místo Edit () se volá Show (). A zpracování výběrové akce je již v jiném řízení.

Takže jsme přišli na to, jak se obejít bez modality. Nyní pojďme zjistit, k čemu slouží režim použití modality s varováním. Vlastně je to takový přechodný režim. Když jste ještě neměli čas předělat celou konfiguraci pro režim bez použití modality, ale už o to usilujete. A pokaždé, když je vyvoláno modální okno, program vás upozorní, že je nežádoucí volat modální okna v tomto režimu.

No, opouštíme modalitu a ovládáme nové technologie pro práci 1C v prohlížečích a mobilních počítačích.