Automatické vypnutie počítača. Automatické vypnutie počítača Koncept asynchrónneho programovania

Používatelia sa často sťažujú, že „1C 8.3 spomaľuje“: formuláre dokumentov sa otvárajú pomaly, dokumenty sa dlho uchovávajú, program sa spustí, správy sa generujú dlho atď.

Takéto „závady“ navyše možno nájsť v rôznych programoch:

Dôvody sa môžu líšiť. Nie je obnovené uchovávanie dokumentov, slabý počítač alebo server, nesprávne nakonfigurovaný server 1C.

V tomto článku chcem zvážiť jeden z najjednoduchších a najčastejších dôvodov pomalého programu -. Tento pokyn bude relevantný pre používateľov databáz súborov pre 1-2 používateľov, kde neexistuje žiadna súťaž o zdroje.

Ak máte záujem o serióznejšiu optimalizáciu možností server-klient systému, navštívte časť stránky.

Kde v 1C 8.3 naplánované úlohy

Predtým, ako som stihol načítať program, bolo v 1C vykonaných mnoho úloh na pozadí. Môžete ich zobraziť tak, že prejdete do ponuky „Správa“ a potom na „Podpora a servis“:

Získajte 267 video návodov 1C zadarmo:

Takto vyzerá okno dokončených úloh:

A tak kompletný zoznam všetkých naplánovaných úloh, ktoré sú spustené:

Medzi tieto úlohy patrí napríklad „“, načítanie rôznych klasifikátorov, kontrola relevancie verzie programu atď. Napríklad takmer všetky tieto úlohy sú pre mňa zbytočné. Vedenie meny nevediem, verzie si kontrolujem sám, podľa potreby načítam klasifikátory.

Preto je v mojom (a vo väčšine prípadov vo vašom prípade) záujme zakázať nepotrebné úlohy.

Zakázanie naplánovaných úloh a úloh na pozadí v 1C 8.3

Koncept asynchrónneho programovania

Koncept asynchrónneho programovania spočíva v tom, že výsledok spustenia funkcie nie je k dispozícii okamžite, ale po chvíli vo forme nejakého asynchrónneho (porušenia zvyčajného poradia spustenia) hovoru.

Títo. Hlavnou myšlienkou asynchrónneho programovania je spúšťať samostatné volania metód a pokračovať v paralelnej práci bez čakania na dokončenie hovorov.

Niektoré metódy, u ktorých je pravdepodobnosť výnimiek minimalizovaná, nepotrebujú asynchrónny prístup, iné ju však vyžadujú na úplnom začiatku vývoja.

Ako je zrejmé z grafov, koeficient užitočných interaktívnych akcií používateľa v modeli synchrónneho programovania chýba, pretože systém uzamkne používateľské rozhranie, zatiaľ čo v asynchrónnom modeli používateľ naďalej aktívne pracuje v systéme.

Pri synchrónnom spustení má aplikácia iba jedno vlákno. S asynchrónnym programovacím modelom môžete spúšťať viacero súbežných vlákien a reagovať na nové akcie používateľov pri ich spustení. Po dokončení n-závitu zobrazíte výsledok na obrazovku.

Úlohy na pozadí v „1C: Enterprise 8“

V 1C: Enterprise 8 sú úlohy na pozadí navrhnuté tak, aby vykonávali úlohy aplikácií asynchrónne. Môžu vytvárať podradené úlohy na pozadí, napríklad na paralelizáciu komplexných výpočtov medzi rôznymi pracovnými servermi klastra spôsobom klient-server.

Podľa konkrétneho kritéria aplikácie je možné obmedziť vykonávanie úloh na pozadí, ktoré majú rovnaké metódy. Programové vytváranie a správa úloh na pozadí je možná z akéhokoľvek používateľského pripojenia k systémovej informačnej základni. Úloha na pozadí beží v mene používateľa, ktorý ju vytvoril.

Mechanizmus úloh funguje ako na klientskom serveri, tak aj v súborovom režime prevádzky, ale možnosti správy a vykonávania úloh v oboch možnostiach sa mierne líšia.

Možnosť klient-server

Vo verzii klient-server sa o plánovanie úloh stará plánovač úloh, ktorý sa fyzicky nachádza v správcovi klastrov.

Plánovač pravidelne kontroluje požiadavky na úlohy na pozadí. Ak existujú úlohy, ktoré je potrebné dokončiť, plánovač identifikuje najmenej zaťažené klastrové pracovné procesy a každému z nich postupne priradí svoju vlastnú úlohu, ktorá sa má vykonať. Rovnaký pracovný tok teda môže potenciálne vykonávať viac úloh súčasne. Potom, čo úlohu prijme pracovný tok, pracovný tok nadviaže spojenie s informačnou základňou a vykoná úlohu v rámci tohto pripojenia. Po dokončení úlohy pracovný postup upozorní plánovača na úspech alebo neúspech úlohy.

Možnosť súboru

Od verzie 8.3.3.641 platformy vývojári výrazne zjednodušili prácu s úlohami na pozadí vo verzii súboru.

Predtým automatické vykonávanie úloh vyžadovalo spustenie samostatnej ďalšej relácie 1C: Enterprise používanej ako plánovač úloh. A v tejto relácii bolo potrebné pravidelne vykonávať metódu vloženého jazyka ExecuteJobProcessing (). Tento prístup bol dosť ťažkopádny, nepohodlný a výrazne obmedzoval používanie úloh na pozadí a plánovaných úloh v prevádzkovom režime súborov.

Teraz je všetko oveľa jednoduchšie. Ak sa spustí tenký alebo hrubý klient alebo ak má webový server klientske pripojenia, v každej z týchto aplikácií sa automaticky spustí ďalšie vlákno s pripojením k databáze. Tieto vlákna sú zodpovedné za vykonávanie úloh na pozadí a plánovaných úloh.

Každá z uvedených aplikácií má svoje vlastné úlohy na pozadí. Ak aplikácia iniciovala niekoľko úloh na pozadí, potom sa vykonajú postupne v poradí, v akom boli prijaté.

Zjavná nevýhoda 1C úloh na pozadí: keďže sú vykonávané na strane servera, neexistuje žiadna možnosť interaktívnej práce s používateľom (napríklad nemôžete zobraziť správu ani žiadne iné informácie; všetky tieto údaje musia byť uložené na informačnej základni a ďalej nejakým spôsobom spracované) .

Je potrebné poznamenať, že úlohy na pozadí sú čisto programové objekty a nemožno ich uložiť do databázy. To znamená, že môžeme vytvoriť iba inštanciu triedy, inicializovať jej vlastnosti a spustiť ju na spustenie.

Príklad asynchrónneho spustenia kódu v 1C: Enterprise 8

"Písanie programov, v ktorých je výsledok volania funkcie neznámy, keď je oveľa ťažšie ako obvykle." Vnorené hovory, spracovanie chýb, kontrola nad tým, čo sa deje - všetko sa komplikuje, “ - to povedia iba tí, ktorí nevedia, ako správne využívať možnosti platformy, ale nie my!

Ukážme všetku jednoduchosť a milosť asynchrónneho spustenia kódu v 1C: Enterprise 8!

Krok 1. Vytvorme nové zabezpečenie informácií pre vývoj konfigurácie

Krok 2. V konfigurácii pridajte spoločný modul „AsynchronousHandlers“

Prečo sme pridali spoločný modul? Všetko je tu jednoduché: na vykonávanie asynchrónnych operácií v 1C: Enterprise 8 sa používajú úlohy na pozadí, ktoré majú svojho vlastného správcu - „BackgroundJobs Manager“. Tento objekt má metódu Run, ktorá sa používa na spustenie úlohy na pozadí.

Obráťme sa na pomocníka syntaxe.

Preto potrebujeme spoločný modul.

Krok 3 Do všeobecného modulu „AisynchronousProcessors“ pridáme procedúru exportu OurLongedOperation ()

Procedúra OurLongedOperation (Duration) Export // Simulácia nepretržitej akcie (Duration sec.). OperationStartDate = CurrentDate (); While CurrentDate () - Date of OperationStart< Длительность Цикл КонецЦикла; КонецПроцедуры

Krok 4. Pridajte do konfigurácie spracovanie „AsynchronousProgrammingConcept“ (môžete vytvoriť externé spracovanie)

Pridajte do formulára jednu rekvizitu:

Trvanie (číslo)

a dva tímy

Vykonajte dlhú operáciu;

RunLongOperation asynchrónne.

Krok 5. Podľa pomocníka syntaxe vyplňte modul formulára

& Na klientskom postupe ExecuteLongOperation (príkaz) ExecuteLongOperationAtServer (); Procedúra EndProcedure & OnServer ExecuteLongServerOperation () AsynchronousHandlers.OurLongOperation (Duration); Procedúra EndProcedure & AtClient ExecuteLongOperationAsynchronously (Command) ExecuteLongOperationAsynchronouslyAtServer (); EndProcedure & AtServer Procedúra ExecuteLongOperationAsynchronouslyOnServer () Parameters = New Array; Možnosti. Pridať (trvanie); BackgroundJobs.Run ("AsynchronousHandlers.OurLongOperation", parametre, nový UniqueIdentifier, "príklad koncepcie asynchrónneho programovania"); Koniec postupu

Krok 6. Spustite a skontrolujte!

Výsledok:

Ak klikneme na tlačidlo „Vykonať dlhú operáciu“, používateľské rozhranie sa zablokuje na „sekundy“;

Ak klikneme na tlačidlo „Asynchrónne vykonať dlhú operáciu“, používateľské rozhranie nie je zablokované, ale programový kód sa vykonáva súbežne.

V protokole môžeme overiť, že kód programu je vykonávaný asynchrónne.

Programový kód, ktorý je spustený na „pozadí“, môžeme odladiť, ak v parametroch ladenia nastavíme zodpovedajúcu vlastnosť.

Príklad asynchrónneho spustenia kódu v 1C: Enterprise 8 pomocou BSP

Príklad implementácie koncepcie asynchrónneho programovania v „1C: Enterprise 8“ v BSP bude zvážený na príklade spracovania „Aktuálne záležitosti“.

Logika je nasledovná: počas štartu programu sa inicializuje pracovná oblasť úvodnej stránky, kde môžete zobraziť formulár spracovania „Aktuálne záležitosti“. Tento formulár je vyplnený aktuálnymi záležitosťami používateľa a jeho vyplnenie vyžaduje určitý čas. Ak by vývojári nemali možnosť spustiť kód asynchrónne, používateľské rozhranie by bolo zablokované po celú dobu vypĺňania formulára na spracovanie!

Analyzujme programový kód formulára.

Udalosť formulára „OnCreateAtServer“ nazýva postup „StartBackgroundJob“ - to je to, čo potrebujeme.

Bez toho, aby sme boli rozptýlení nuansami, analyzujeme tento postup

A tu vidíme, že je použitý správca úloh na pozadí a jeho metóda Run. Upozorňujeme, že vývojári si pre úlohu na pozadí ponechávajú jedinečné ID.

Na tento účel používajú vývojári túto metódu ConnectWaitingHandler (<ИмяПроцедуры>, <Интервал>, <Однократно>).



V zásuvnom postupe Connectable_VerifyJob Execution () vývojári volajú funkciu Úloha dokončená (ID úlohy)


Táto funkcia kontroluje vykonanie úlohy na pozadí podľa identifikátora.

Je potrebné poznamenať, že BSP vyvinul spoločné moduly na podporu prevádzky dlhodobých serverových operácií.

Koncept asynchrónneho programovania v 1C: Enterprise 8 teda mierne zvyšuje komplexnosť riešenia problémov pre vývojárov, ale citeľne zlepšuje funkčnosť programu z pohľadu používateľa.

Pravdepodobne každý programátor 1C 8.3 musel skôr alebo neskôr nakonfigurovať vykonávanie určitých úloh podľa plánu. Nasleduje podrobný popis týchto mechanizmov, dúfam, že to budú užitočné informácie pre začínajúcich programátorov 1C. Je to veľmi výhodné, pretože nevyžaduje ľudskú akciu, naplánovaná úloha je nakonfigurovaná 1krát a funguje podľa vášho plánu.

Podrobný návod na príklade nájdete nižšie.

Čo sú naplánované a pozadie úlohy v 1C

  • Plánované úlohy Je špeciálny mechanizmus 1C Enterprise 8.3 určený na vykonanie konkrétnej akcie v danom rozvrhu.
  • Práca na pozadí- objekty generované naplánovanou úlohou, ktorá priamo vykonáva priradenú akciu bez účasti používateľa alebo programátora 1C 8.2.

Mechanizmus plánovaných úloh a úloh na pozadí funguje vďaka funkcii systému DBMS v operačnom režime klient-server (SQL). Ak máte databázu súborov, úlohu je možné tiež nakonfigurovať, ale trochu iným spôsobom.

Nastavenie úloh na pozadí v režime 1C klient-server

Najprv vytvoríme nový objekt metadát - naplánovanú úlohu. Svoju úlohu nazvem „Načítavanie meny“. Zvážte paletu vlastností tohto konfiguračného objektu:

Získajte 267 video návodov 1C zadarmo:

  • Názov metódy- cesta k postupu, ktorý bude vykonaný v úlohe na pozadí podľa zadaného plánu. Postup by mal byť v spoločnom module. Odporúča sa nepoužívať štandardné, ale vytvoriť si vlastné. Nezabudnite, že úlohy na pozadí bežia na serveri!
  • Použitie- znak použitia naplánovanej úlohy.
  • Vopred určené- označuje, či je naplánovaná úloha preddefinovaná. Ak chcete, aby naplánovaná úloha začala fungovať ihneď po umiestnení do databázy, označte tento znak. V opačnom prípade budete musieť použiť spracovanie Job Console alebo programovo vyvolať spustenie úlohy.
  • Počet opakovaní v prípade abnormálneho dokončenia úlohy- koľkokrát bola úloha na pozadí reštartovaná, ak bola dokončená s chybou.
  • Interval opakovania pre abnormálne ukončenie úlohy- ako často sa bude úloha na pozadí reštartovať, ak bola vykonaná s chybou.

A najzaujímavejšie nastavenie je Plán:

Tu môžete nakonfigurovať interval na spustenie postupu uvedeného v poli „Názov metódy“. Povedzme, že som nakonfiguroval

Pozor! Nezabudnite zakázať blokovanie vykonávania naplánovaných a pozadých úloh na úrovni DBMS!

To je možné vykonať v obslužnom programe klient-server alebo pri vytváraní novej databázy:

Nastavenie naplánovaných úloh v režime súboru 1C

V súborovom režime je nastavenie takýchto úloh o niečo ťažšie. Na vykonanie takejto úlohy je potrebné začať samostatnú reláciu programu 1C. Často to rieši inštitúcia „technického“ používateľa, ktorého relácia je vždy spustená.

V režime súboru sa naplánovaná úloha inicializuje po spustení metódy „RunJobProcessing ()“.

Pre konkrétneho používateľa môžete túto metódu nakonfigurovať tak, aby sa spúšťala pomocou inej metódy -

ConnectWaitingHandler ( <ИмяПроцедуры>, <Интервал>, <Однократно>).

  • Názov postupu- názov postupu pripojeného ako obsluha čakania. Názov exportovanej procedúry pre modul spravovanej aplikácie (modul bežnej aplikácie) alebo globálny zdieľaný modul. Procedúra musí byť umiestnená na klientovi.
  • Interval- doba medzi vykonaním operácií v sekundách.
  • Raz- ako úlohu dokončiť raz alebo nie.

ConnectWaitingHandler, 3600);

Dvojminútové video, ktoré ukazuje, ako nastaviť naplánovanú úlohu v konfigurátore 1C:

Práca podniku a používateľa takmer vždy potrebuje organizáciu a plánovanie. Mnoho ľudí používa na tieto účely organizátory a kalendáre tretích strán. Vo verzii 8 programu, začínajúc vydaním 8.3.6.1977, bola implementovaná schopnosť nezávisle vytvárať plánovač úloh v 1C.

Na tieto účely má platforma nový nástroj s názvom „Plánovač“.

Čo je to plánovač

V skutočnosti je nástroj „Plánovač“ zbierkou vizuálneho poľa a objektu, ktorý patrí do vstavaného jazyka. Vzhľad týždenného plánu vytvoreného pomocou „Plánovača“ je znázornený na obr.1.

Rovnako ako každý objekt vloženého jazyka má Plánovač úloh v 1C určitú sadu vlastností, ktoré vám umožňujú programovo ho vyplniť:

  1. Aktuálne doby zobrazenia (v predvolenom nastavení program nastaví tento parameter na aktuálny dátum počítača);
  2. Merania (tu môžete určiť rozpis práce podľa divízií, rozvrhy podľa skupín univerzít, otváracie hodiny a obedy pre obchody);
  3. Prvky (objekty predstavujúce úlohy, ktoré sa majú vykonať, položky atď.).

V tejto fáze je dôležité porozumieť: Plánovač nie je objekt metadát a neukladá žiadne informácie. Je to len nástroj, ktorý umožňuje zobrazovať a organizovať informácie uložené na iných miestach (najčastejšie v adresároch, ale je možné ich synchronizovať aj s externými tabuľkami).

Pri pridávaní udalosti do okna plánovača je potrebné zaznamenať zodpovedajúci prvok referenčnej knihy. Po otvorení formulára je potrebné znova prečítať skutočné údaje.

Prvky plánovača majú nasledujúci súbor vlastností:

  • Začiatok a koniec časového obdobia udalosti;
  • Textový obsah;
  • Obrázok;
  • Uložená hodnota (najčastejšie je to odkaz na prvok zodpovedajúceho katalógu, ale môžu existovať aj dokumenty).

Dôležité! Hlavnou podmienkou uložených údajov je prítomnosť dvoch polí s typom hodnoty DATE na nastavenie počiatočného a koncového bodu udalosti.

Základné akcie s plánovačom

Keď máte okno (obr. 1), môžete pridať novú udalosť. Pre to:


Obr

  • Najmä kliknutie na štítok „Opakovať“ vám umožňuje nastaviť frekvenciu úlohy.

Konfigurácia parametrov zobrazenia plánovača úloh v 1C

V závislosti od potrieb používateľa je možné okno kalendára prispôsobiť rôznymi spôsobmi. Na to existuje niekoľko parametrov:

  1. Periodická jednotka;
  2. Mnohonásobnosť periodickej verzie;
  3. Poloha časovej osi.

Vo vyššie uvedenom príklade má prvá premenná hodnotu 1 hodinu, druhá -7 a tretí parameter nadobúda hodnotu navrchu.

Kombináciou a experimentovaním s týmito rekvizitami môžete dosiahnuť zobrazenie, ktoré najjasnejšie vyjadruje danú úlohu.

Je potrebné poznamenať, že v prípade, že interval určený programom prekročí multiplicitu, časová os sa prenesie na nasledujúci riadok.

Vzhľad môže odrážať viacero časových línií. Jeho podrobné nastavenie vám umožňuje zarovnať prvky podľa časových intervalov s presnosťou na minúty, zobraziť pracovný čas alebo dni ako celok, upraviť viditeľnosť ukazovateľa aktuálneho času systému.

Otáčaním kolieska myši alebo príslušných tlačidiel vo formulári (ak existujú) sa môžete pohybovať v kalendári v okne spracovania.

Riešenie niektorých ťažkostí pri práci plánovača

Pri práci s plánovačom, ako pri každom inom novom nástroji, často vznikajú otázky. Pokúsme sa odhaliť tie hlavné.

Otázka: Kde nájdem plánovač?

Odpoveď: Po vytvorení rekvizít spravovaného formulára vo verziách platforiem vyšších ako 8.3.6.1977 môžete nastaviť typ plánovača (obr. 4), zatiaľ čo v okne vlastností rekvizít môžete nakonfigurovať mierka a zobrazené rozmery a mnoho ďalších parametrov.

Otázka: Ako získam upravené údaje z formulára týkajúceho sa času začiatku a konca udalosti?

Odpoveď: V module môžete zaregistrovať procedúru OnEditingComplete () väzbou na zodpovedajúce pole formulára. V prípade úpravy existujúceho prvku je možné tento prvok získať pomocou vlastnosti SelectedElements;

Otázka: Aký kód pomáha zmeniť aktuálne zobrazené obdobie?

Odpoveď: Na formulári môžete vytvoriť tlačidlá „Deň“, „Týždeň“, „Mesiac“, nižšie uvedený kód vám umožňuje zmeniť režim zobrazenia kalendára (obr. 5)

Obr

Ahoj.
Z témy je už zrejmé, že pôjde o automatické vypnutie počítača... Táto téma je veľmi dôležitá pre domácnosť aj kanceláriu.

V práci sa často stáva, že zamestnanec opustí svoje pracovisko, pričom zabudne vypnúť počítač, a niekedy je potrebné ísť domov, ale niektoré úlohy sa vykonávajú na počítači a počítač sa nedá vypnúť.

Po zadaní všetkých nastavení kliknite na „Použiť“ alebo „Ok“.

Aby ste naplno využili výhody programu Shutdown, musíte použiť parametre príkazového riadka.
Ak chcete zobraziť parametre pomocného programu Shutdown, prejdite na príkazový riadok (ŠTART - Všetky programy - Štandard - Príkazový riadok) a zadajte príkaz

Vypnúť /? zobrazí pomocné informácie k programu

Tu je jedna kombinácia vypnutia počítača
C: \ WINDOWS \ system32 \ shutdown.exe -s -f -t 60
Kde
-vypnutie lokálneho počítača
-f povoliť násilné zatvorenie všetkých spustených aplikácií
-t xx nastavuje časové oneskorenie pred volaním postupu vypnutia v sekundách - xx. Predvolená hodnota je 20 sekúnd.

Niektorí tiež vypínajú plánovač, keď sa nepoužíva, čo znižuje čas spustenia systému Windows.
Ak chcete plánovač deaktivovať, v registri v sekcii HKLM / SYSTEM / CurrentControlSet / Services / Schedule zadajte parameter REG_DWORD Start a nastavte hodnotu na 0. Ak chcete vrátiť všetko tak, ako to bolo, nastavte hodnotu na 2.

Nechajte svoj názor v komentároch.

P.S. Na uvoľnenie Stalinovho žartu