Începeți procesarea 1s 8.3 conform programului. Sarcina de reglementare universală. Instalarea rapoartelor suplimentare și procesarea în modelul de serviciu

19.11.2019 Recenzii

Tratamentele externe sunt foarte instrument la îndemână pentru companii care utilizează configurații standard pe 1C:Enterprise 8.3. Acestea vă permit să nu pierdeți efort și bani pe actualizările 1C, făcând posibilă actualizarea bazelor de date cu un singur buton în utilizator simplu. Folosind mecanismul standard al bibliotecii de subsistem, puteți adăuga diverse butoane la documente și cărți de referință fără a modifica configurația standard. Să ne uităm la un exemplu de creare și conectare prelucrare externăîntr-una din configurațiile 1C.

Creăm procesare externă în 1C 8.3

Pentru a crea o nouă prelucrare externă, folosim configuratorul. Prin meniul „Fișier”, selectați comanda de creare „Nou...” și stabiliți că vom crea procesare externă. În fereastra care se deschide, setați numele și când apăsați „Enter”, acesta este completat automat. Sistemul vă va oferi și acest nume ca nume de fișier atunci când salvați.

Să adăugăm un formular de procesare făcând clic pe butonul cu lupă din fereastra corespunzătoare. De exemplu, să creăm o procesare care să arate ce comenzi clienților folosesc un anumit articol. Pentru a face acest lucru, trebuie să plasăm pe formular:

  • Atribute – câmp pentru stabilirea nomenclaturii;
  • Un buton care va apela codul.

Adăugați atributul „Nomenclatură” cu tipul de date „DirectoryLink.Nomenclature” în secțiunea corespunzătoare și butonul „Afișare” în meniul „Comenzi” -> „Comenzi formular”.

Pentru ca datele adăugate să se reflecte pe formular, trebuie să le trageți în elementele formularului situate în partea din stânga sus. Este posibil să schimbați elemente folosind săgețile albastre. Pentru ca butonul creat de noi să facă ceea ce a intenționat, trebuie să i se atribuie o procedură. Prin meniul contextual Să selectăm „Acțiune de comandă”, iar când sunt întrebați unde este nevoie de handler, vom răspunde: „Creați pe client și o procedură pe server”.


Fragmentul 1

&OnClient Procedure Show(Command) ShowOnServer(); Sfârșitul procedurii &OnServer Procedura ShowOnServer() //Inserați conținutul handler-ului. Sfârșitul procedurii

Am ales să creăm o procedură pe server pentru că dorim să primim un eșantion din baza de date ca rezultat. Nu avem această opțiune pe client, așa că va trebui să ne conectăm la server, care face schimb de date cu baza de date. Acum trebuie să scriem cod care să implementeze ceea ce am planificat. Se va utiliza cererea și ieșirea tuturor documentelor prin intermediul funcției „Raport()”.


Fragmentul 2

&OnClient Procedure Show(Command) ShowOnServer(Nomenclatura); EndProcedure &OnServer Procedure ShowOnServer(Nomenclatura) Solicitare = Solicitare nouă; Query.Text = "SELECTARE VARIOUS | Client OrderComposition.Link AS Link | FROM | Document.Customer Order.Composition AS Customer OrderComposition | WHERE | Customer OrderComposition.Nomenclature = &Nomenclatură"; Request.SetParameter("Nomenclatură", Nomenclatură); RequestResult = Request.Execute(); SelectionDetailRecords = QueryResult.Select(); While SelectionDetailedRecords.Next() Loop Report(SelectionDetailedRecords.Link); EndCycle; Sfârșitul procedurii

În stadiul actual, putem deschide procesarea externă într-o bază de date 1C care rulează ca fișier obișnuit și va fi deja operațional. Dar dacă avem mulți utilizatori, va trebui să trimitem acest fișier tuturor, oferindu-le instrucțiuni despre cum să-l deschidem efectiv în 1C, ceea ce este extrem de incomod. Pentru a evita acest lucru, procesarea noastră ar trebui să fie localizată în interiorul uneia dintre secțiunile 1C. Pentru a face acest lucru, trebuie să-l mai modificăm puțin prin configurator, specificând anumite setări.

Pentru a plasa procesarea externă în secțiunea 1C, este necesar să înregistrați procedura „Informații DESPRE Prelucrarea externă” în modulul obiect. Din meniul principal de procesare, faceți clic pe Acțiuni și selectați Modul obiect. Aici trebuie să înregistrați toate setările necesare pentru 1C, astfel încât sistemul să înțeleagă ce i se cere și ce fel de fișier se află în fața lui. Captura de ecran arată codul pentru funcția „Informații despre procesarea externă”.

Funcție InformationOnExternalProcessing() Export DataForReg = New Structure(); DataForReg.Insert("Nume","Procesare externă nouă"); DataForReg.Insert(„SafeMode”, True); DataForReg.Insert(„Versiune”, „ver.: 1.001”); DataForReg.Insert(„Vizualizare”, „Procesare suplimentară”); CommandTable = NewValueTable; TabZnCommands.Columns.Add("Identificator"); TabZnCommands.Columns.Add(„Utilizare”); TabZnCommands.Columns.Add(„Vizualizare”); NewRow = TabZnCommands.Add(); NewString.Identifier = "NewExternalProcessing"; NewRow.Use = "OpenForm"; NewRow.View = "Procesare externă nouă"; DataForReg.Insert("Comenzi", TabZnCommands); Returnează DataForReg; EndFunction

Fragmentul 3

Conectarea procesării externe în 1C

Înainte de a conecta procesarea externă la o configurație standard, trebuie să activați utilizarea acestui instrument. În „Administrare” în subsecțiunea „ Formulare imprimabile, rapoarte și procesare” am pus steagul vizavi de mecanismul de care avem nevoie. Un buton pentru accesarea directorului de procesări suplimentare și rapoarte devine disponibil pentru noi.


Când mergem la listă, vom crea linie nouăîn el, iar sistemul vă va solicita să selectați un fișier. Selectăm procesarea făcută și salvată, iar configurația 1C completează în mod independent majoritatea câmpurilor. Folosind butonul „Run”, putem deja să verificăm funcționalitatea procesării noastre, dar acest lucru nu este foarte convenabil pentru alți utilizatori. Pentru ca utilizatorii să aibă comanda noastră și să poată efectua un apel, trebuie să:

  • Specificați locația obiectului. Făcând clic pe „Nedefinit” deschidem fereastra secțiunilor și indicăm în ce secțiuni va fi disponibilă operația;
  • Selectați utilizatorii care au această comandă va apărea în meniul „Procesare suplimentară” al secțiunilor selectate fără setări inutile. Pentru a face acest lucru, în secțiunea tabel trebuie să selectați elementul „ Acces rapid„și adăugați utilizatori responsabili în jumătatea dreaptă;
  • Pe " Informații suplimentare» puteți specifica folderul în care va fi localizată procesarea descărcată;
  • După apăsarea butonului „Scrie” din secțiunea selectată din meniul „Procesare suplimentară”, utilizatorii vor găsi comanda noastră și o vor putea folosi.

Dacă vrem să facem modificări procesării noastre, trebuie mai întâi să o descarcăm din baza de date. Pentru a face acest lucru, găsiți linia necesară în directorul „Procesare suplimentară și rapoarte” și utilizați comanda „Încărcați în fișier...”. Faceți modificări, salvați procesarea și utilizați butonul „Încărcare din fișier...” pentru a găsi fișierul epf modificat fără a modifica parametrii. După înregistrare, toți utilizatorii vor vedea modificările făcute.

Dacă utilizați o bază de date 1C non-standard sau întreruptă, atunci profitați de oportunitatea de a descărca procesarea prin configurator. În arborele de obiecte, în secțiunea „Procesări”, creați o nouă prelucrare și, prin meniul contextual, selectați „Înlocuire cu procesare externă, raportați...”. Tot ce rămâne este să configurați lansarea procesării externe din secțiunea dorită, inclusiv procesarea adăugată în subsistemul dorit.


Lucrul cu procesarea externă este foarte convenabil și vă permite să evitați multe conflicte. Singurul lor dezavantaj semnificativ este că nu sunt actualizate automat odată cu configurația. Adică, dacă dezvoltatorii au schimbat numele documentului sau cărții de referință în configurația principală, va trebui să configuram manual procesarea.

Să luăm în considerare în acest articol instrucțiuni pas cu pas pentru a crea procesare externă în 1C 8.3 în modul de aplicație gestionată, în consecință, vom folosi formulare gestionate. Și cel mai important, vom învăța cum să-l conectăm la mecanismul de „procesare externă” a configurațiilor 1C construite pe o bibliotecă de subsisteme standard versiunea 2.0 și mai nouă.

Sarcina va fi următoarea: să creați cea mai simplă procesare externă care va efectua o acțiune de grup în directorul „Articol”, și anume, să setați procentul cotei TVA selectat pentru grupul specificat de articole.

Pentru a face acest lucru, vom face imediat setările necesare în program (luăm în considerare configurația 1C 8.3: „Enterprise Accounting 3.0” pe forme controlate).

Bifarea acestei casete ne oferă posibilitatea de a folosi procesarea externă.

Crearea unei noi procesări externe în 1C 8.3 folosind un exemplu

Acum să trecem la configurator. În meniul „Fișier”, selectați „Nou...”. Se va deschide o fereastră pentru selectarea tipului de fișier care urmează să fie creat. Selectați „Procesare externă”:

Se va deschide o nouă fereastră de procesare externă. Să-i dăm un nume imediat. Acesta va fi oferit la salvarea procesării pe disc:

Să adăugăm un nou formular de procesare controlată. Indicăm că aceasta este o formă de prelucrare și este cea principală:

Vom avea două detalii pe formular:

  • Grup de nomenclatură – link către directorul „Nomenclatură”;
  • SelectVATRate – link către transferul ratei TVA.

Creăm detaliile în coloana „Proprietăți” din fereastra din dreapta sus. Trageți-le cu mouse-ul în fereastra din stânga sus. Noile detalii ar trebui să apară imediat în formularul de mai jos.

Ordinea detaliilor poate fi modificată folosind săgețile „Sus” – „Jos”:

Obțineți 267 de lecții video pe 1C gratuit:

Tot ce rămâne este să adăugați butonul „Instalare”. În formularele gestionate, nu puteți să adăugați un buton în formular. Chiar dacă îl adăugați la structura elementelor de formular, acesta nu va fi vizibil pe formularul în sine. Butonul trebuie să fie asociat cu comanda pe care o va executa. Accesați fila „Comenzi” și adăugați comanda „Setare cotă TVA”. În proprietățile comenzii, creați o acțiune. Selectați handlerul de comandă „Pe client”. O comandă poate fi adăugată la formular, pur și simplu trăgând-o în secțiunea cu elemente de formular.

În modulul formular va fi creată o procedură cu același nume. În el vom apela procedura pe server:

&OnClient

Procedura Setați rata TVA (comandă)

SetVATRateOnServer();

Sfârșitul procedurii

În procedura de pe server, vom scrie o mică cerere și acțiuni legate de stabilirea cotei de TVA:

&Pe server

Procedura SetVATRateOnServer()

Solicitare = Solicitare nouă;
Cerere.Text =
"ALEGE
| Nomenclatură.Link
|DIN
| Director.Nomenclatura AS Nomenclatura
|UNDE
| Nomenclatură.Link ÎN IERARHIE (&Nomenclatură Grup)
| ȘI NU Nomenclatură.MarkDeletion
| ȘI NU Nomenclatură. Acesta este un Grup”;

Request.SetParameter("Grup de articole", Grup de articole);
ResRequest = Request.Execute();
SelectRecordDet = ResRequest.Select();

În timp ce SelectRecordDet.Next() Loop

Atentat, încercare
SprNomObject.Write();
Excepție
Raport ("Eroare la scrierea obiectului """ + SprNomObject + """!
|» + DescriereEroare());
EndTempt;

EndCycle;

Sfârșitul procedurii

Ne întoarcem la fila „Formular”, adăugăm un buton la formular și îl asociam cu comanda:

Ca atare, prelucrarea noastră este gata de utilizare. Pentru a-l apela, în modul „1C Enterprise”, trebuie să mergeți la meniul „Fișier” - „Deschidere” și să selectați fișierul creat.

Cu toate acestea, lucrul în acest mod este convenabil pentru procesarea de depanare, dar nu este în întregime potrivit pentru utilizator. Utilizatorii sunt obișnuiți să aibă totul „la îndemână”, adică în baza de date în sine.

Pentru aceasta este secțiunea „Rapoarte și procesări suplimentare”.

Dar pentru a adăuga procesarea noastră acolo, trebuie mai întâi să îi dăm o descriere și să spunem programului proprietățile sale.

Descrierea funcției „Informații despre procesarea externă”

Voi da un exemplu de conținut al acestei funcții. Acesta trebuie să fie exportabil și, în consecință, localizat în modulul de procesare:

Funcție InformationOnExternalProcessing() Export

DataForReg = Structură nouă();
DataForReg.Insert(„Nume”, „Setarea cotei TVA”);
DataForReg.Insert(„SafeMode”, True);
DataForReg.Insert(„Versiune”, „ver.: 1.001”);
DataForReg.Insert("Informații", "Prelucrare pentru stabilirea cotei TVA în directorul Nomenclator");
DataForReg.Insert(„Vizualizare”, „Procesare suplimentară”);

CommandTable = NewValueTable;
TabZnCommands.Columns.Add("Identificator");
TabZnCommands.Columns.Add(„Utilizare”);
TabZnCommands.Columns.Add(„Vizualizare”);

NewRow = TabZnCommands.Add();
NewString.Identifier = "OpenProcessing";
NewRow.Use = "OpenForm";
NewRow.View = "Deschide procesarea";
DataForReg.Insert("Comenzi", TabZnCommands);

Returnează DataForReg;

EndFunction

Pentru a înțelege mai bine ce câmpuri ale structurii de date de înregistrare trebuie utilizate, să ne uităm la detaliile directorului „Rapoarte și procesare suplimentare”:

După cum puteți vedea, totul este destul de simplu. Un singur atribut nu se potrivește: „Opțiune de lansare” – „Utilizare”. Dacă ne uităm la codul unuia dintre modulele comune, vom vedea cum apar o grămadă de aceste câmpuri:

Pentru a determina ce câmpuri ale unei structuri sunt necesare, mai întâi nu o puteți descrie, pur și simplu creați unul gol și apoi utilizați depanatorul. Dacă urmăriți modulele atunci când înregistrați procesarea, devine imediat clar care câmpuri sunt obligatorii și care nu.

Conectarea procesării externe în 1C 8.3

Crearea unei sarcini de rutină

Să creăm o sarcină de rutină „Efectuați procesarea”.

Să dezactivăm utilizarea sarcinii programate, astfel încât la actualizarea configurației aceasta să nu ruleze automat.

Să atribuim o procedură care va fi declanșată la lansarea unei sarcini de rutină:Modulul RoutineTasks.RoutineTaskExecutionProcessing.

Procedura în sine arată astfel:

Procedură RutinăTaskExecutionProcessing(Key) Export

Parametrii lui RoutineTasks.PerformProcessingWithParameters(Key);

Sfârșitul procedurii

Creăm o carte de referință pentru sarcinile de rutină

Sarcina noastră de rutină poate genera multe procese de fundal - câte unul pentru fiecare procesare. Fiecare sarcină din platforma 1C8 are o cheie. Dar metoda jobului programat nu cunoaște cheia jobului de fundal, așa că trebuie să utilizați parametrii jobului de fundal. Ca rezultat, putem vedea jobul de fundal în consola de joburi, dar nu putem crea manual un job de fundal din această consolă, deoarece joburile cu parametri nu sunt create manual.

Cartea de referință „Parametrii sarcinilor programate” :

Rechizite :

· Cod înainte de lansare- șir nelimitat - cod în limbajul 1C care trebuie executat înainte de lansare.

· Procesare din configurație - linia (100) - identificator de procesare din configurație

· Procesare din director - linia (100) - link către elementul de director „Procesare externă”, dacă există unul în configurație

· Execut prin aplicația 1C - Boolean - va fi creată cerere separată 1C și o sarcină de rutină va fi lansată în el. Creat pentru 8.1, unde nu toate metodele de aplicare sunt disponibile pe serverul pe care rulează jobul programat.

· Cod de lansare- - linie nelimitată - cod în limbajul 1C care va fi executat la lansarea unei sarcini programate.

Să creăm forma elementului :

Făcând clic pe „Creare Reg. task" o sarcină de rutină cu un cod cheie este creată programatic:

Procedura BasicActionsFormCreateReglTask(Button)

Job variabil;

Cheie = AbbrLP(Cod);

Sarcină = RoutineTasks.CreateRoutineTask("PerformProcessing");

Task.Name = Cheie;

Task.Key = Cheie;

Parametri = New Array();

Parametri.Add(Key);

Task.Parameters = Parametri;

Task.Write();

Sfârșitul procedurii

Pornirea unei sarcini programate

Fiecare sarcină de rutină pe care o creăm are o cheie:

Această cheie corespunde codului din directorul „Parametrii sarcinilor de rutină”; este folosită pentru a căuta la pornirea unei sarcini. Dacă intrarea în director nu este găsită, sarcina nu este executată.

Apoi, dacă este dat codulCod înainte de lansare atunci acest cod va fi executat. În continuare, dacă variabila Îndeplini evaluează ca fals, sarcina nu va fi finalizată. Variabilă disponibilă pentru analiză Opțiuni, unde este stocată un link către elementul de director găsit „Parametrii sarcinilor de rutină”.

În funcție de valorile selectate ale detaliilor, fie va rula codul în limbajul 1C, fie va începe procesarea din configurație, fie va începe procesarea din cartea de referință standard „Procesare externă”.

Pentru 1C81, execuția este furnizată într-o aplicație nouă - astfel încât să puteți utiliza cod care este disponibil numai pe client, inclusiv utilizarea prelucrării externe. Pentru a face acest lucru, trebuie să bifați caseta de selectare „Run through 1C application”. În caz contrar, sarcina programată va fi executată pe server.

Recomand să setați un utilizator în câmpul „Utilizator” pentru o sarcină de rutină nou creată, astfel încât sarcina să fie executată cu anumite drepturi. Recomand să acordați drepturi depline unui astfel de utilizator. Folosesc utilizatorul "robot».

Programul sarcinilor de rutină este creat folosind hyperlinkul „Programare” din formularul de sarcini de rutină. Puteți utiliza procesarea „Consola de activități de rutină”.

2017-12-19T18:29:06+00:00

Pentru actualizator nu este necesar să fie deschis tot timpul sau să fie rulat ca un serviciu, astfel încât operațiunile programate să poată fi lansate.

Lansarea programată funcționează printr-un mecanism standard Windows numit „Task Scheduler”.

Și când utilizatorul setează setările de program...

Actualizatorul creează automat sarcinile necesare în planificator:

Ce nu ar trebui să uiți

Selectarea utilizatorului

Nu trebuie să uităm că utilizatorul pe care îl specificăm să execute operațiuni programate...

Trebuie să aibă drepturi de sistem pentru „Conectați-vă ca job batch”.

Cum se verifică dacă un utilizator are drepturile necesare?

Cea mai ușoară opțiune este să faceți clic dreapta pe sarcina creată în planificator și să selectați „Run”:

Dacă, după finalizarea sarcinii, rezultatul lansării acesteia este cu succes...

Dacă nu este cazul, atunci apelăm la administrator de sistem astfel încât în ​​politica de securitate să indice (utilizatorul nostru sau grupul său) în paragraful „ Conectare ca un lot de lucru", și, de asemenea, exclus din paragraful " Refuzați autentificarea ca sarcină în lot".

Trebuie să aibă o parolă care nu este goală. Aceasta este o cerință Securitate Windows. Dacă vă confruntați cu această limitare specială, atunci cea mai corectă soluție ar fi:

  • sau atribuiți o parolă utilizatorului curent, în baza căruia veți rula actualizatorul conform unui program
  • sau creați un utilizator separat în sistem cu o parolă, care va fi înregistrată în programul de actualizare

Ei bine, cea mai simplă (dar incorectă din punct de vedere al securității) soluție la această restricție ar fi dezactivarea opțiunii „Permiteți utilizarea parolelor goale numai în timpul conectării la consolă” în politica locala Securitatea calculatorului.

Alegerea bazelor

De asemenea, nu trebuie să uităm că doar acele baze de date care sunt selectate în lista bazelor de date care participă la program participă la operațiunile programate:

În acest caz, nu contează dacă bifa se află lângă bază în lista generală:

Aceste casete de selectare (din lista generală) sunt destinate doar lansării manuale a operațiunilor și nu afectează în niciun fel lansarea programată.

Comanda de pornire

Și, în sfârșit, încă un punct nu este evident. Când rulează o sarcină programată, actualizatorul verifică mai întâi dacă se execută o altă sarcină programată. Și dacă este executat, va aștepta mai întâi finalizarea lui și abia apoi va executa unul nou.

Aceasta înseamnă că, dacă, de exemplu, trebuie să configuram arhivarea să aibă loc la 22-00, iar bazele de date să fie actualizate imediat după finalizarea acesteia, atunci este suficient să specificam ora de început pentru arhivare la 22-00 și pentru actualizare. , de exemplu, 22-01.

Ce se întâmplă dacă ai nevoie de un program mai complex?

Ce se întâmplă dacă nu avem nevoie doar de o lansare regulată la o anumită oră în anumite zile? Ce se întâmplă dacă vrem, să zicem, să o setăm să înceapă la ora 5 la fiecare jumătate de oră sau ceva de genul?

În acest caz, trebuie să profităm de întreaga putere a programatorului de sarcini.

Mai întâi, am configurat programul prin intermediul programului de actualizare, indicând faptul că un anumit program va fi configurat în planificator:

Și abia apoi deschideți proprietățile sarcinilor create de actualizator în Windows Scheduler:

Și în filele corespunzătoare configuram tot ce ne dorește inima:

Cum să excludeți o bază de date din unele operațiuni programate

Să presupunem că avem un program configurat pentru actualizare și arhivare:

Dar, în același timp, dorim ca o bază de date să participe la arhivarea programată, dar să nu participe la actualizarea programată.

Cum să realizați acest lucru - la urma urmei, avem aceeași listă de baze care participă la program:

Și este foarte ușor de făcut.

Accesați proprietățile bazei de date pe care doriți să le excludeți din actualizările programate și, în partea de jos a ferestrei, găsiți elementul „Excludeți unele operațiuni...”:

Faceți clic pe el și excludeți actualizarea acestei baze de date de la lansarea programată:

Ar trebui să arate așa:

Este posibil să rulați într-un program cu alți parametri?

Aș dori să atrag o atenție deosebită asupra faptului că o sarcină din planificatorul de activități este o lansare regulată a unui updater cu anumiți parametri Linie de comanda:

Și actualizatorul are mulți parametri pentru lansarea prin linia de comandă.

Folosindu-le, puteți personaliza automatizarea mult mai subtil și în funcție de nevoile dvs. Doar nu modificați parametrii liniei de comandă într-o sarcină de actualizare deja creată - altfel îi va reseta în continuare la cei inițiali atunci când actualizați setările de lansare programată. În schimb, copiați sarcina creată în planificator (astfel încât să aibă propriul nume) și modificați-o.

Despre toate comutatoarele din linia de comandă a programului de actualizare.

Cum să aflați dacă actualizatorul a fost lansat conform programului

Se întâmplă ca programul pare să fi fost pus la punct, dar ceva nu merge bine.

Și nu suntem deloc siguri dacă actualizatorul a fost lansat în acea noapte.

În primul rând, vreau să vă atrag atenția asupra zonei din fereastra principală de actualizare în care este afișată starea operațiunilor programate:

Aici vedem cu câte zile în urmă a fost lansat cel corespunzător. operare programată; câte baze de date au fost implicate și dacă au existat erori. Mai mult, dacă facem clic stânga pe aceste linkuri, se va deschide raportul corespunzător.

De asemenea, putem accesa jurnalul complet al rapoartelor de actualizare...

Și vezi dacă sarcinile au fost finalizate.

Dar cel mai mult mod de încredere Pentru a afla dacă programul a pornit și pentru a înțelege motivele eșecului său de a porni sau a încetării lui bruscă, este să activați jurnalul tuturor sarcinilor în Windows Scheduler. În mod implicit, este dezactivat și vă recomand să îl porniți, astfel încât să puteți găsi întotdeauna situații problematice.

Pentru a activa jurnalul Programator Windows accesați caseta de dialog „Rulați conform programului” și faceți clic pe butonul „Deschideți programatorul Windows”:

Acest lucru se poate face și din panou Gestionare Windows(sectiunea administrare).

Aici găsim și facem clic pe elementul „Activați jurnalul tuturor sarcinilor”:

Gata! Acum putem vizualiza istoricul oricărei sarcini din planificator.

De exemplu, să evidențiem una dintre sarcinile de actualizare:

Cum să configurați un sistem de monitorizare în cloud pentru rularea sarcinilor de actualizare

Acum vă voi spune despre o modalitate de a vă asigura împotriva situației - „oh, se dovedește că bazele noastre de date nu au fost arhivate (actualizate, testate...) timp de o săptămână întreagă.”

Această situație este foarte posibilă dacă am configurat arhivarea să înceapă într-un program și apoi:

  • un alt administrator de server ne-a luat drepturile cont pentru a începe arhivarea din planificator, iar în acest caz actualizatorul nu va putea nici măcar să ne trimită o notificare prin e-mail, deoarece pentru aceasta trebuie să înceapă, dar nu există drepturi pentru a face acest lucru...
  • sau au apărut alte erori și nu există internet pe server pentru ca actualizatorul să ne trimită un mesaj de eroare...
  • sau noi înșine am dezactivat din greșeală arhivarea programată în programul de actualizare...
  • nu stii niciodata ce s-ar putea intampla...

Și pe lângă configurarea notificărilor de eroare prin e-mail, trebuie doar să configurați un sistem cloud pentru monitorizarea lansării programului nostru de actualizare. Ce este și cum funcționează?

Acesta, în opinia mea, este un lucru absolut genial numit healthchecks.io. Acești tipi au și planuri plătite, dar planul lor gratuit este în regulă pentru noi.

Ideea este următoarea. Ne înregistrăm cu ei pe site-ul lor și pe site-ul nostru cont personal avem ocazia să spunem:

  • Hei, HealthChecks, dați-mi o adresă URL unică (adresa unei resurse de internet).
  • HealthChecks, dacă nimeni nu bate (solicită) la această adresă într-o anumită perioadă, anunță-mă despre asta printr-un e-mail.

Apoi vom specifica această adresă în update și o va solicita, de exemplu, la finalul fiecărei arhivari programate. Și dacă la un moment dat se oprește brusc pornirea sau se blochează, serviciul HealthChecks ne va anunța despre acest lucru. Chiar dacă serverul nostru va arde, acesta va fi furat și dezasamblat în bucăți mici..., vom fi primii care află despre asta din HealthChecks

Cred că aceasta este o idee genială. Dacă nu crezi, se pare că nu ai înțeles pe deplin sensul acestui lucru - te rog recitiți din nou textul meu incomodă.

Voi mentiona separat că sistemul de monitorizare descris nu anulează, ci completează, notificările prin e-mail despre erori, care trebuie configurate și în updater pentru control complet asupra situației.

Cel mai simplu scenariu pentru configurarea HealthChecks cu un updater

Să setăm arhivarea zilnică pe un server numit DataServer care aparține companiei SRL „Romashka”:

Și dorim să ne anunțe HealthChecks dacă actualizatorul încetează brusc să ruleze pentru arhivare sau dacă astfel de lansări se termină anormal.

3. Înregistrați-vă cu adresa de e-mail la care doriți să primiți notificări.

3. Accesați secțiunea „Cecuri” și faceți clic pe butonul verde mare „Adăugați cec”.

5. Să schimbăm numele acestei verificări în OOO „Romashka” (DataServer, arhivare). Acest lucru trebuie făcut astfel încât să înțelegem cu ce anume este legată această verificare (arhivarea pe un server numit DataServer în compania Romashka LLC):

6. Specificați perioada de verificare (arhivarea trebuie începută o dată pe zi, procesul de arhivare în sine poate dura până la 12 ore):

Al doilea cursor (grația) este exact excesul admisibil al perioadei, adică timpul în care poate dura procesul de arhivare.

Am indicat limita suplimentară de 12 ore (grație) în mod intenționat, deoarece actualizatorul face o solicitare către sistemul de monitorizare la sfârșitul activității sale, iar ora de încheiere poate varia în funcție de diferite condiții.

De exemplu, dacă programăm o actualizare să înceapă la ora 22:00, atunci astăzi această actualizare se poate termina la ora 23:00, iar mâine (au fost lansate multe actualizări noi) va dura până la ora 4 dimineața.

De aici rezerva suplimentară de 12 ore, astfel încât să nu existe false pozitive de la HealthChecks.

Rezultatul stabilirii perioadei va fi astfel:

7. Dar după cum puteți vedea, câmpul Ultimul Ping este gol (Never). Acesta va fi actualizat pe măsură ce această adresă este accesată de către actualizator în timpul arhivării. Și dacă nu există nicio solicitare pentru mai mult de 1 zi și 12 ore, atunci HealthChecks va suna alarma și ne va anunța prin e-mail.

Întrebare: Problemă cu accesul la procesarea suplimentară în Zup3


a creat procesări suplimentare și a plasat-o în secțiunea de salarii. Un utilizator cu drepturi de ofițer superior de personal nu poate lansa contabilul, acesta spune „drepturi de acces insuficiente”. Cum se stabilesc permisiunile pentru a rula procesări suplimentare?

Salariul și managementul personalului, ediția 3.0 (3.0.24.115) ()
Copyright © LLC "1C", 2007-2014. Toate drepturile rezervate
()

Răspuns:

Întrebare: Se execută procesare suplimentară într-un program


Bună ziua tuturor. Doar învăț să programez, așa că nu mă certa prea mult pentru că pun întrebări greșite. 1C Retail 2.2.5.27 A creat o procesare externă care, atunci când faceți clic pe un buton, încarcă datele dintr-un fișier în registrul de informații. Totul funcționează bine manual, dar acum sarcina este să vă asigurați că această procesare începe într-un program și fără a deschide formularul. Adică în fundal a munci.
Prelucrarea este conectată în formularul „Rapoarte și procesări suplimentare”.

Cod în modulul formular

Funcție InformationOnExternalProcessing() ExportRegistrationParameters = Structură nouă; Parametri de înregistrare.Insert("Vizualizare", "Procesare suplimentară"); Parametri de înregistrare.Insert("Nume", "Solduri de încărcare (PCService(C))"); Parametri de înregistrare.Insert("Versiune", "1.0"); Parametri de înregistrare.Insert("SafeMode", False); Parametri de înregistrare.Insert("Informații", "Încărcare rămasă"); Parametri de înregistrare.Insert("BSPVersion", "2.3.2.33"); CommandTable = GetCommandTable(); AddCommand(CommandTable, „Solduri de încărcare (PCService(C))”, „1”, „OpenForm”, True,””); AddCommand(CommandTable, „Balante de încărcare (PCService(C))”, „2”, „CallServerMethod”, True,””); TeamId = "2"; Parametri de înregistrare.Insert("Comenzi", CommandTable); ReturnRegistrationParameters; Funcția EndFunction GetTableCommands() Comenzi = NewValueTable; Commands.Columns.Add(„Vizualizare”, NewTypeDescription(„Rând”); Commands.Columns.Add(„Identifier”, New TypeDescription(„String”)); Commands.Columns.Add(„Utilizare”, New TypeDescription(„Rând”); Commands.Columns.Add("ShowAlert", NewTypeDescription("Boolean")); Commands.Columns.Add(„Modificator”, New TypeDescription(„Rând”); Echipa de întoarcere; Procedura EndFunction AddCommand(CommandTable, View, Identifier, Usage, ShowAlert = False, Modifier = "") NewCommand = CommandTable.Add(); NewCommand.View = Vizualizare; NewCommand.Identifier = Identificator; NewCommand.Use = Utilizare; NewCommand.ShowAlert = ShowAlert; NewCommand.Modifier = Modificator; Sfârșitul procedurii &Pe server Procedura Executați comanda (ID comandă, obiecte de atribuire) Exportați Sfârșitul procedurii

Când faceți clic pe butonul de execuție cu opțiunea de lansare „Deschide formularul”, se deschide formularul și programul se execută imediat (se execută imediat deoarece pe formularul din evenimentele „When CreatedOnServer” este indicat că codul principal al programul va fi executat)
Când faceți clic pe butonul Execute cu opțiunea de lansare „Call ServerMethod” nu produce nicio eroare, dar niciun rezultat.
Ce fac greșit??

Răspuns:

Am fumat totul. Aici a trebuit să copiez codul pe care am vrut să fie executat fără a deschide formularul

Întrebare: Retail 2.2 lansarea procesării suplimentare conform programului


Salutari. Retail 2.2, procesarea suplimentară este activată și execuția programată este setată. Urmăresc execuția prin - Suport și Întreținere - sarcini de rutină, sarcina mea fie rulează, fie se oprește conform programului, de ceva timp funcționează exact conform programului și se oprește de la sine. Nu este o chestiune de procesare în sine, deoarece nu dă o eroare, dar sarcina pur și simplu nu începe. Apoi începe să funcționeze normal de la sine. Ce poate influența începutul unei sarcini de rutină?
Am încercat să stabilesc programe diferite, dar nu a funcționat.

Răspuns:

Problema a fost rezolvată prin reinstalarea platformei pe toate computerele

Întrebare: procesare suplimentară


Ziua bună tuturor.
Gestionarea companiei noastre, versiunea 1.6 (1.6.12.4)

Spuneți-mi, este posibil să adăugați procesare suplimentară la subsistem fără să atingeți configuratorul?
Acestea. Am nevoie ca procesarea să fie apelată nu prin Procesare suplimentară, ci ca un raport extern, imediat în lista de subsistem.

Răspuns:

Creați un raport în extensie, adăugați subsistemul dorit (existent) la extensie, faceți o legătură către raportul creat în subsistemul „extins”.

Întrebare: Utilizarea Serviciilor Web în procesarea suplimentară folosind BSP


Bună ziua
În stare proaspătă este necesar să se includă o procesare suplimentară care va accesa Serviciul Web al altei baze de date. Procesarea este, desigur, în modul sigur, dar „este permisă utilizarea extensiei modul sigur biblioteci ale subsistemelor standard (capacitatea de a lucra cu fișiere, resurse de Internet etc.) printr-o interfață software specializată cu înregistrarea permisiunilor necesare pentru raportare/procesare suplimentară.” Cu toate acestea, nu o găsesc în Versiune curentă BSP cum să configurați acest lucru. ajutor, vă rog Versiune nouă a bazei de date: Enterprise Accounting, ediția 3 .0 (3 .0 .59 .45) BSP 2 .4 .5 .31

Răspuns: oO

Întrebare: ZUP se blochează la începerea unei anumite procesări, ce ar trebui să fac?


Există o completare care actualizează actele de decontare introduse pe bază de concediere. Când această procesare este pornită, programul se închide prostește fără niciun mesaj. Nu pot vedea nimic în depanator. La data testului pentru care a fost realizat 1 document, acesta trece. Ce altceva ar trebui să fac? Am testat și se pare că nu există erori.

Răspuns: grozav, dar de ce a fost nevoie de ciclu? Dacă aveți intrări atunci scrieți, nu știu, într-un jurnal sau altceva, nu, atunci modificați sau nu faceți nimic

Întrebare: Sarcină programată de procesare suplimentară


Configurare Alfa-Auto: Showroom auto + Service auto + Piese auto CORP. Ediția 6.
Creat Procesare externă. L-am conectat ca procesare suplimentară.
Configurați execuția programată. Dar nu începe cu eroarea:
Sarcina de rutină „Lansarea procesării suplimentare” nu poate fi executată din cauza lipsei setărilor din procedura RoutineTasksOverridden.WhenDefiningRegularTaskSettings(). Contactați administratorul de sistem!
Cine poate să-mi spună ce este în neregulă cu procesarea sau Configurarea bazei.

Răspuns:() Deci vă uitați la ce există în RoutineTasksOverridden.WhenDefiningSettingsofRoutineTasks()
În BSP această procedură este de obicei goală. În Alpha, ceva poate să fi fost îmbunătățit.

Întrebare: Pornirea automată a procesării externe


Ziua bună tuturor. Vă rugăm să ajutați, dragi dezvoltatori 1C, să rezolvați această problemă.
Există procesare externă, are două butoane, „Run” și „Submit”. Când faceți clic pe butonul „Run”, partea tabulară este completată.
Când faceți clic pe butonul „Trimite”, acesta este trimis e-mail cu date din secțiunea tabelară și un fișier atașat.

Întrebare: este posibil să se facă așa această prelucrare a fost executat automat în fiecare zi. ACESTEA. de exemplu: la 08:00 dimineața fiecărei zile, a fost declanșată procedura butonului „Run” și „Submit”? Baza serverului. Voi fi bucuros de orice ajutor și orice opțiune.

Răspuns:() Și cu această opțiune de lansare, se va închide procesul 1C după procesare? sau trebuie să fie oprit de la procesare prin ShutdownSystem(False)?

Bună dimineața, spuneți-mi un script care să ruleze conform programului de procesare, sau mai degrabă problema este că aveți nevoie de un script (fișier batch) care ar începe 1s 77, dar după verificare, dacă lansarea normală eșuează, atunci va fi exclusiv cu reindexare. Și de preferință cu deschiderea prelucrării externe. Este necesar pentru încărcările automate, dar orele de trimitere sunt setate diferit peste tot. și mai ales noaptea.

Răspuns: orice programator nncron xstarter