Punctul de întrerupere 1s rulează 8.3. Fereastra Variabile locale

Salutări tuturor cititorilor site-ului portal, în acest articol vom vorbi despre punctele de întrerupere în 1C, sau mai degrabă despre funcționarea lor incorectă în anumite versiuni ale platformei 1C.

La sfârșitul lunii mai 2015, un nou platforma 1C 8.3.6.2014... Când lucrau cu această platformă, mulți programatori au întâmpinat situații problematice. În special, în mod corespunzător Punctele de întrerupere nu au funcționat în configurator la depanarea unei aplicații... După cum s-a dovedit, au fost observate probleme la depanarea proceselor externe folosind procesarea „Testing external printable”.

Să aruncăm mai întâi o privire la modul în care funcționează procesarea „Testarea plăcilor de imprimare externe”. Cu această prelucrare, am indicat procesarea noastră externă (externă formă tipărită de exemplu) (1), și apoi am deschis același imprimabil în configurator și am stabilit puncte de întrerupere, după care am lansat întreprinderea în depanare. Prin apăsarea butonului (2) a fost lansat imprimabilul nostru extern și nu sistemul generat implicit în directorul tmp, ca urmare, un punct de întrerupere a fost declanșat în procesarea noastră deschisă în configurator. Totul a funcționat conform așteptărilor. Dar asta a fost înainte... Dacă facem aceste acțiuni în platforma 1C 8.3.6.2014, atunci punctele de întrerupere în procesarea externă nu vor fi declanșate! După cum sa dovedit, această situație a apărut deoarece platforma 1C 8.3.6.2014 a încărcat procesarea externă în Berbec , în timp ce versiunile mai tinere ale platformei l-au salvat într-un fișier temporar, care se afla în directorul implicit de fișiere temporare 1C.

Rezolvarea problemei cu punctele de întrerupere în procesarea externă pe platforma 1C 8.3.6.2014

Din pacate, in acest moment, rezolvați problema cu punctele de întrerupere în tratamente externe pe platforma 1C 8.3.6.2014 a eșuat... Chestia este că această versiune a platformei stochează procesarea în RAM, iar depanatorul nu ajunge acolo, deoarece nu putem deschide procesarea în configurator și seta un punct de întrerupere. Să sperăm că specialiștii de la 1C vor face posibilă introducerea în RAM cu un depanator sau să vină cu metode alternative depanare.

Acesta este un alt articol din seria „Primii pași în dezvoltare pe 1C”. Continuă subiectul articolului anterior dedicat specificului lucrului în configurator.

În acest articol, vom lua în considerare un instrument special care facilitează dezvoltarea și depanarea codului de program pe platforma 1C: Enterprise, care se numește Debugger. După examinarea articolului, veți afla:

  • Pentru ce este un depanator și cum să îl folosești?
  • Ce sunt punctele de întrerupere, cum și de ce ar trebui să le setați?
  • Cum să parcurgeți codul și de ce este necesar?
  • Unde puteți să vă uitați la valorile variabilelor dvs., precum și să calculați valorile expresiilor?
  • Pentru ce este stiva de apeluri și cum să o vizualizați?
  • Cum pot opri executarea unui cod de program din greșeală?

Aplicabilitate

Articolul discută versiunea 8.3.4.365 a platformei 1C. Versiunea actuală actuală a platformei conține mecanisme de depanare mai bogate, dar acest lucru nu face ca informațiile prezentate să fie depășite, deoarece toate mecanismele și tehnicile de depanare descrise în articol au rămas aceleași.

Utilizarea depanatorului în sistemul 1C: Enterprise 8

Sistemul 1C: Enterprise 8 conține un depanator de cod de program încorporat.

Depanatorul este un instrument special al Configuratorului care vă permite să analizați funcționarea codului programului. Acest articol discută unele dintre funcțiile de depanare care sunt cele mai frecvent utilizate de dezvoltatori.

Pentru a analiza codul programului folosind un depanator, se folosește un instrument special numit punct de întrerupere.

Punctul de întrerupere este locul în care sistemul a încetat să mai funcționeze în codul programului, marcat cu un marker special (Fig. 1).

Orez. 1. Punct de întrerupere

Când este declanșat un punct de întrerupere, devine posibil să parcurgeți codul programului și să analizați valorile variabilelor.

Stabilirea punctelor de întrerupere

Setarea unui punct de întrerupere pe o anumită linie a codului programului se realizează făcând dublu clic pe butonul stâng al mouse-ului în zona din stânga modul software, care este evidențiat cu gri.

De asemenea, este posibil să setați un punct de întrerupere cu comanda pe bara de instrumente configurator sau folosind butonul F9... Ștergerea unui punct de întrerupere existent se face într-un mod similar.

Pentru a seta un punct de întrerupere la sfârșitul unei proceduri sau funcție, trebuie să setați un punct de întrerupere la cuvânt cheie Sfârșitul procedurii sau EndFunction.

Puteți dezactiva temporar un punct de întrerupere fără a-l elimina din cod. Pentru a dezactiva punctul de întrerupere, executați comanda Dezactivați punctul de întrerupere pe bara de instrumente sau apăsați comanda rapidă de la tastatură Ctrl + Shift + F9.

Pentru a vizualiza toate punctele de întrerupere, trebuie să executați comanda meniului principal Depanare - Listă puncte de întrerupere sau apăsați comanda rapidă de la tastatură Alt + F9... În formă deschisă Puncte de întrerupere puteți dezactiva sau elimina temporar punctele de întrerupere (Fig. 2).

Orez. 2. Lista punctelor de întrerupere

Pentru a șterge toate punctele de întrerupere, trebuie să executați comanda din meniul principal al configuratorului Depanare - Eliminați toate punctele de întrerupere.

Punct de întrerupere condiționat

Un punct de întrerupere condiționat este necesar pentru a opri execuția codului programului atunci când este declanșată o anumită condiție.

Pentru a seta un punct de întrerupere cu o condiție, trebuie să executați comanda din meniul principal al configuratorului Depanare - Punct de întrerupere condiționat... Se va deschide formularul de stare de oprire. În câmpul de introducere trebuie să introduceți conditie necesara(de exemplu, valoarea oricărei variabile din codul programului) și apăsați butonul O.K(Fig. 3).

După pornirea sistemului în modul de depanare, un punct de întrerupere va fi declanșat când condiția de întrerupere este îndeplinită. Puteți verifica acest lucru folosind formularul Tabloul de bord(Fig. 3). Lucrul cu un formular Tabloul de bord vor fi discutate mai jos.

Orez. 3. Setarea unui punct de întrerupere cu o condiție și rezultatul prelucrării acesteia

Pentru a începe depanarea codului programului, trebuie să setați puncte de întrerupere și să rulați aplicația în modul de depanare. Pentru a începe depanarea, trebuie să executați comanda din meniul principal al configuratorului Depanare - Începeți depanarea(F5).

După pornirea aplicației în modul de depanare, trebuie să vă asigurați că punctul de întrerupere este declanșat. Sunt posibile diferite scenarii aici. De exemplu, un punct de întrerupere este setat în modulul formular document în handlerul de evenimente standard OnOpen ()... În acest caz, punctul de întrerupere va fi declanșat atunci când forma oricărui document este deschisă în modul utilizator.

Un punct de întrerupere poate fi setat într-o procedură sau o funcție arbitrară pe care a creat-o un dezvoltator. În acest caz, punctul de întrerupere va fi declanșat după apelarea acestei proceduri sau funcție dintr-o anumită linie de cod.

După declanșarea punctului de întrerupere, sistemul oprește execuția codului programului și devine posibilă utilizarea diferitelor funcții de depanare, cum ar fi: execuția pas cu pas a codului programului, utilizarea formularului Tabloul de bord etc.

Execuția pas cu pas a codului programului

Pentru executarea pas cu pas a codului programului, utilizați comenzile care sunt disponibile în meniul principal al configuratorului din meniu Depanare... Este convenabil să utilizați taste rapide pentru aceste comenzi.

Intră în (F11)... Dacă următorul operator al codului programului apelează o procedură sau o funcție, atunci aceasta se execută pas cu pas, în caz contrar, se execută următorul operator.

Treceți prin (F10)... Dacă următoarea instrucțiune a codului programului apelează o procedură sau o funcție, atunci aceasta este executată complet fără a intra în interior. Apoi următoarea instrucțiune este executată.

Accesați cursorul (Shift + F10)... Operatorii sunt executați de la linia executabilă curentă la linia de cod de program în care se află cursorul.

Folosind formulare Tabloul de bordși Expresie

Pentru a vizualiza valorile variabilelor și a calcula valorile expresiilor în timp ce opriți codul programului, utilizați formularele Tabloul de bordși Expresie.

Formă Tabloul de bord invocat prin comanda meniului principal al configuratorului Depanare - Tabloul de bord sau o comandă rapidă de la tastatură Ctrl + Alt + W... Tabloul de bord poate înregistra valorile oricăror variabile și poate analiza modul în care acestea se schimbă în timpul execuției codului programului.

Tabloul de bord are patru file. În mod implicit, marcajele sunt dezactivate. Pentru a include marcaje într-un formular Tabloul de bord trebuie să apelați meniul contextual și să setați steag Marcaje(Fig. 4).

Orez. 4. Formular „Tablou de bord” cu file incluse

Pentru a calcula valorile expresiilor în momentul opririi codului programului, utilizați formularul Expresie... Pentru a deschide acest formular, utilizați comanda din meniul principal al configuratorului Depanare - Calculați expresie sau scurtătură de la tastatură Shift + F9(Fig. 5).

Orez. 5. Formularul „Expresie”

În caseta Expresie, introduceți o expresie în limba încorporată. Valoarea expresiei poate fi obținută făcând clic pe butonul calculati... În câmp Rezultat este afișată valoarea expresiei. Expresia poate fi afișată în tabloul de bord făcând clic pe butonul Includeți în tabloul de bord.

Pentru a vizualiza valorile unei colecții (de exemplu, tabel de valori, listă de valori, matrice), puteți utiliza comanda Spectacol valoare într-o fereastră sau cheie separată F2.

Vizualizarea stivei de apeluri

Stack de apeluri- un formular care vă permite să urmăriți apelurile reciproce ale procedurilor și funcțiilor în timpul execuției codului programului. Stiva de apeluri este afișată prin comanda meniului principal al configuratorului Depanare - Stivă de apeluri sau o comandă rapidă de la tastatură Ctrl + Alt + C... Iesit din forma Stack de apeluri puteți merge la procedura sau funcția corespunzătoare (Fig. 6).

În formular, trebuie să setați steagul Oprirea din greșealăși rulați aplicația în modul de depanare. Execuția codului programului va fi oprită la linia unde a apărut eroarea (Fig. 7).

Folosind capabilitățile de depanare descrise în acest articol, un dezvoltator poate analiza atât propriul nostru cod de program, cât și codul de program al soluțiilor tipice firma „1C”.

După cum arată practica, este nevoie de mult timp pentru a găsi erori în codul programului fără un depanator. Prin urmare, trebuie să acordați o atenție deosebită stăpânirii depanatorului.

După cum sa menționat mai sus, mecanismul de depanare a fost extins semnificativ în versiunile ulterioare ale platformei. Pentru cei care doresc să se familiarizeze cu descriere detaliata aceste inovații, vă recomandăm să citiți materialul relevant din blogul dezvoltatorilor platformei înșiși.

În concluzie, observăm că configuratorul este un mediu cu drepturi depline și, până de curând, singurul mediu de dezvoltare de aplicații pe platforma 1C: Enterprise 8. Are o funcționalitate foarte bogată concepută pentru a ajuta dezvoltatorul în rezolvarea sarcinilor sale zilnice.

În ediția 8.3, la configurator au fost adăugate multe mici utilități pentru dezvoltator. Și în următorul articol îi vom cunoaște cu siguranță.

Cum să începeți depanarea pe un server 1C...

În mod implicit, atunci când utilizați arhitectura client-server 1C: Enterprise, modul de depanare a codului 1C funcționează numai pe partea clientului. Procedurile și funcțiile serverului nu sunt vizibile pentru computerul client.

Pentru a activa utilizarea depanării pe serverul 1C, trebuie să efectuați următorii pași:

1. Găsiți și opriți serviciul 1C: Enterprise 8.3 Server Agent în Service Manager (pentru versiunea 8.3).

2. Deschideți editorul de registry de sistem. Poți să folosești Linie de comanda sau folosind instrumentul meniului Start - Run ... și comanda regedit.

3. Găsiți filiala în registru:

  • Pentru versiunea 1C 8.1
  • Pentru versiunea 1C 8.2
  • Pentru versiunea 1C 8.3

4. Schimbați proprietatea ImagePath, adăugați directiva „-debug” la sfârșitul liniei. Obțineți următoarea linie de proprietate: „C: \ Program Files (x86) \ 1cv8 \ 8.3.6.2152 \ bin \ ragent.exe” -srvc -agent -regport 1541 -port 1540 -range 1560: 1591 -d „C: \ Fișiere de program (x86) \ 1cv8 \ srvinfo " – Depanare

După aceea, codul serverului 1C poate fi verificat în siguranță cu un depanator și poate seta puncte de întrerupere oriunde este necesar.

În acest articol, voi acoperi elementele de bază ale lucrului cu depanarea. Ce este depanarea și pentru ce este? Este foarte adesea necesar să înțelegeți cum funcționează o anumită bucată de cod și ce valori conțin diferitele variabile. are un mecanism de depanare în aceste scopuri. În acest articol, vom acoperi principalele puncte de lucru cu depanarea.

Pentru ca programul să se oprească într-un anumit loc, trebuie să setați un punct de întrerupere. Pentru a face acest lucru, plasați cursorul pe linia dorită și faceți clic pe câmpul din stânga. Un cerc roșu a apărut în stânga. Un punct de întrerupere poate fi setat folosind meniul principal

Sau folosind meniul contextual

În acest moment, programul se va opri pentru a permite dezvoltatorului să se familiarizeze cu comportamentul său.

Vă atrag atenția că un punct de întrerupere trebuie setat în locul din cod în care este scris un anumit operator. Sau variabilele sunt declarate implicit.

Există mai multe opțiuni, le vom lua în considerare pe toate separat.

Prima opțiune, puteți doar să parcurgeți codul fără a intra în proceduri și funcții. Pentru a face acest lucru, utilizați butonul „Step Through” sau tasta F10.

Rețineți că, dacă depanarea transferă controlul către o funcție interactivă în care este necesară intervenția utilizatorului, atunci fie programul vă va transfera imediat la 1C Enterprise, fie depanarea se va îngheța și apoi va trebui să treceți la 1C Enterprise pe cont propriu.

În al doilea mod, puteți parcurge codul și accesați toate procedurile și funcțiile scrise pentru a vedea cum funcționează. Pentru a face acest lucru, apăsați butonul „Pasul B” sau apăsați tasta F11.

Dacă trebuie să părăsim o procedură sau o funcție fără a aștepta executarea acesteia, atunci trebuie să apăsăm butonul Step Out sau, în timp ce ținem apăsată tasta Shift, apăsăm tasta F11.

Dacă trebuie să sărim peste un anumit loc din program și să începem deja depanarea linie nouă, atunci o poți face în două moduri. Prima modalitate este să setați un nou punct de întrerupere și să faceți clic pe butonul „Continuați depanarea” sau pe tasta F5. Apoi programul va sări imediat la linia de cod necesară.

A doua modalitate: poziționați cursorul pe cel dorit și faceți clic pe butonul „Mergeți la cursor”, sau în timp ce apăsați tasta Shift apăsați tasta F10.

Dacă lucrezi cu codul, te pierzi în el și vrei să revii rapid la el linia curentă depanare, apoi faceți clic pe butonul „Linie curentă”.

Am învățat cum să trecem prin cod în depanare. Acum, cel mai important lucru este cum să aflați valorile variabilelor? Acest lucru ne va ajuta tablou de bord.

Există mai multe moduri de a-l deschide.

În primul rând: utilizarea meniului principal.

În al doilea rând: folosind panoul „Debug Configuration”.

În al treilea rând: folosind comanda rapidă de la tastatură Ctrl + Alt + W.

În partea de jos a apărut o tablă unde putem introduce orice variabile și le putem vedea valorile.

Pe lângă variabilele tipurilor primitive, aveți posibilitatea să introduceți variabile ale tipurilor de obiect în expresie și să vedeți compoziția acestora a acestei variabile (dacă nu depanați execuția codului din c).

De asemenea, puteți adăuga funcții (atât propriile, cât și contextul global) la tabloul de bord pentru a afla ce vor returna.

Puteți afla valoarea unei variabile fără a utiliza tabloul de bord. Este suficient să selectați această variabilă și să faceți clic pe butonul „Calculați expresia” (combinația de taste Shift + F9).

Urmăriți o lucrare vizuală cu depanare în acest videoclip.

Aflați elementele de bază ale configurării în 1C și învățați să programați în 1C: Enterprise folosind cărțile mele:

Un ghid excelent pentru dezvoltarea într-o aplicație gestionată 1C, atât pentru dezvoltatori începători, cât și pentru programatori experimentați.

  1. Limbajul de prezentare foarte accesibil și ușor de înțeles
  2. Cartea este trimisă către e-mail v format PDF... Poate fi deschis pe orice dispozitiv!
  3. Înțelegeți ideologia unei aplicații gestionate 1C
  4. Aflați cum să dezvoltați o aplicație gestionată;
  5. Învață să proiectezi formulare gestionate 1C;
  6. Veți putea lucra cu elementele principale și necesare ale formularelor gestionate
  7. Programare pentru aplicație gestionată va deveni clar

Cod promoțional pentru o reducere de 15% - 48PVXHeYu


Dacă această lecție te-a ajutat să rezolvi orice problemă, ți-a plăcut sau s-a dovedit a fi utilă, atunci îmi poți susține proiectul transferând orice sumă:

poti plati manual:

Yandex.Bani - 410012882996301
Web Money - R955262494655

Alăturați-vă grupurilor mele.

8 este nevoie (a se vedea mai jos) pentru o revizuire semnificativă a procedurii de depanare. Acest lucru se reflectă în versiunea 8.3.7.1759. În primul rând, a fost creată o interfață universală pentru această procedură, iar în al doilea rând, o astfel de modificare asigură dezvoltarea ulterioară a programului în sine. La urma urmei, acum puteți lucra cu depanarea nu numai prin Configurator, ci și folosind Instrumentele de dezvoltare. Să luăm în considerare cum să activați depanarea pe serverul 1C începând cu noua versiune.

Folosind noul protocol

Depanatorul anterior, care a fost implementat în versiunile anterioare, controla aplicațiile client și server folosind protocolul TCP / IP.

În prezent, utilizarea unui astfel de protocol a început să restricționeze accesul programului 1C: Enterprise la Internet și a cauzat inconveniente pentru funcționarea aplicațiilor mobile.

Prin urmare, pentru acces gratuit la bazele de informații care pot fi situate în afara rețelei locale, acum a fost adoptat protocolul HTTP flexibil.

Arhitectură nouă

Anterior, la efectuarea depanării configuratorului, un angajat trebuia să se conecteze la baza de informații. Acest lucru a necesitat acordarea de drepturi de administrator.

În noua versiune, nu este nevoie de o conexiune directă la bazele de date - trebuie doar să aveți aceeași bază de date ca și clientul. Și îl puteți descărca dintr-un fișier.

Aplicatii mobile

Prin protocolul HTTP, acum este posibil să depanați datele serverului, datele clientului și aplicațiile.

Alte modificari

CU versiune nouaîn procedura de depanare, este disponibilă modificarea valorilor pentru variabilele locale - în acest scop, a fost implementată o nouă fereastră de vizualizare rapidă.

Modul de calcul a fost schimbat în asincron, ceea ce vă permite să continuați să lucrați fără a aștepta rezultatele.

Depanator în instrumente de dezvoltare

Interacţiune procedura noua executat într-o interfață software universal proiectată special. Pe de o parte, această interfață este utilizată de Configurator. Pe de altă parte, a fost introdus în noul mediu 1C: Enterprise Development Tools.

Cum arată acum

După schimbarea programului, procedura urmează următorul scenariu:

Acum implică mai mult decât doar depanatorul și obiectele, așa cum era înainte. Un element suplimentar a fost adăugat acum în lanț - Server.

Nu numai că a fost adăugat, ci servește ca principală piesă de schimb de informații între depanator și elemente. Iar schimbul în sine are loc prin mesaje puse în coadă.

Și din moment ce acest schimb se realizează prin protocolul HTTP, acum nu contează unde exact pot fi localizate datele.

Apelurile de server sunt generate de depanator și obiecte sub formă de solicitări suplimentare de conectare. Dacă există, le sunt trimise răspunsuri adecvate.

Activarea depanării în diferite scenarii

Pentru dezvoltatorul aplicației, nu au existat modificări. Diferența semnificativă este că noul mecanism trebuie pornit. La urma urmei, acum este dezactivat implicit.

Luați în considerare ce se întâmplă când pornește modul dacă alegem unul dintre cele două scenarii.

Script de fișier

La începutul variantei de fișier, este necesar să specificați în setările configuratorului utilizarea noului mecanism - „Depanare prin protocolul HTTP”.

Apoi Configuratorul va oferi automat utilizarea server local... Această condiție trebuie acceptată și programul trebuie repornit în modul Configurator.

După aceea, Configuratorul nou lansat la următoarea sesiune va salva noua metodă pe care am ales-o. Dar pentru aceeași bază de informații. Prin urmare, atunci când accesați o altă bază de informații, aceasta trebuie de asemenea activată.

Mecanismul activat va lansa acum automat serverul de depanare, care este o aplicație specială dbgs.exe. Se reflectă în fereastra Task Manager.

Valoarea parametrului ownerPID va corespunde cu identificatorul aplicației care îi este asociată.

La pornirea unei sesiuni de depanare prin Configurator, conexiunea la server se va face automat. Și obiectele conectate se vor reflecta în el.

Dacă programul 1C a fost activat fără un mecanism nou, atunci va trebui să activați manual depanarea pe serverul 1C. Abia acum va trebui să specificați adresa serverului:

Accesați Service - Opțiuni

Poate fi găsit în setările articolului:

Mergem Conexiune - Setări

Când utilizați un script de fișier cu mai multe baze în același timp, trebuie să luați în considerare nuanță importantă, - fiecare dintre Configuratori (cu mecanismul activat prin HTTP) trimite Serverul său:

Prin urmare, dacă sunt deschise mai multe configuratoare, atunci pentru a conecta Clientul trebuie să specificați cel corect.

Script client-server

Depanarea pe serverul 1C conform scenariului client-server, ca și în cazul precedent, începe prin pornirea modului. Aceasta specifică utilizarea noului mecanism HTTP. Acest lucru se face în acest fel:

ragent.exe -debug -http

Când îl porniți, depanatorul pornește automat după el.

Valoarea parametrului ownerPID va corespunde cu numărul de identificare al managerului de cluster 1C.

Programul va genera o propunere de utilizare a serverului de depanare a clusterului acum (și nu pe cel local ca în scenariul anterior). Suntem de acord și repornim.

În viitor, totul va rula ca un script de fișier. Numai când porniți Server Base Configurator, serverul local de depanare nu va mai fi pornit.

Sperăm că publicația noastră v-a ajutat să înțelegeți problema cum să activați depanarea pe serverul 1C.