Jak se ukázalo, ne všichni vývojáři 1C jsou si vědomi, že ladění je také možné při spuštění konfigurace v režimu webového klienta. Nakonec, jak se to stane, u tlustého a tenkého klienta vše funguje dobře a při práci v prohlížeči se začnou objevovat nejrůznější úskalí.

Pokud takové problémy najdete, nejlepším způsobem, jak se jich zbavit, je projít si kód pomocí debuggeru. Je pravda, že zde existuje jedna nuance. Po publikování aplikace na webový server okno Debug Connection nezobrazí relaci otevřenou z webového klienta.

Můj přítel čelil podobnému problému a byl si jist, že ladění při práci v režimu webového klienta v 1C: Enterprise je v zásadě nemožné. Ale ve skutečnosti jde o bludy. Ladit můžete pomocí standardních nástrojů.

Jak ladit v režimu webového klienta

Nejprve publikujeme na webovém serveru (pro vývoj používám Apache). Dalším krokem je spuštění prohlížeče a spuštění adresy URL pro přístup do databáze:

Http: // localhost / ServerPublishName? Debug

Http: // localhost / test? Debug

Pokud je vše v pořádku, dostanete se do počáteční podoby vaší konfigurace. Zadejte své uživatelské jméno / heslo a poté se vraťte do konfigurátoru. V hlavní nabídce vyberte položku „Debug“ -\u003e „Connection“ a vyberte položku „Web Client“. Potom provedete proces ladění jako obvykle.

A můžete to udělat jinak

To není zdaleka jediný způsob ladění webového klienta. Můžete zadat parametry pro debugger:

  • V okně publikování IB na webovém serveru. Podíváme se na skupinu „Debug“. Zde musíte zaškrtnout políčko a zadat adresu debuggeru: http: // localhost / demo? Debug & debuggerurl \u003d 127.0.0.1
  • Provedením změn v souboru vrd. Ve skutečnosti děláte totéž v okně publikování.
  • Pokud to nefunguje

    První metoda pro mě vždy funguje. Při zadávání adresy URL v publikačním okně řešení často vznikly mystické zvláštnosti. Konfigurátor pravidelně odmítal najít položku ladění. Problém pomohlo vyřešit restartování webového serveru. Ve výsledku často používám první metodu.

    Ach ano, skoro jsem zapomněl. Li pracujete v režimu klient-server, pak se ujistěte, že server " 1C: Enterprise"Spuštěno v režimu ladění (klíč ladit).

    Ladění 1C - velmi výkonný a funkční mechanismus platformy 1C 8.3, který vám umožní rychle najít chyby v programovém kódu (v jiných programovacích jazycích se tomu říká „debug“, z angličtiny „debug“).

    Níže budeme uvažovat o hlavních metodách používání ladicího mechanismu ve formě praktické instrukce s konkrétním příkladem.

    Pozornost! Pokud používáte režim provozu klient-server (na serveru), potřebujete.

    Nejjednodušší způsob, jak spustit ladění v 1C, je otevřít 1C v režimu a z něj spustit režim ladění v požadovaném provozním režimu (tenký / silný, spravovaný / normální):

    Ladění úloh 1C na pozadí

    Abyste mohli ladit úlohy na pozadí, musíte přejít do nabídky „Debug - Připojit“. V okně, které se otevře, klikněte na tlačítko „Automatické připojení“:

    V tomto okně můžete nastavit odpovídající příznak.

    Kromě úkolů na pozadí můžete v tomto okně povolit ladění externích připojení, http a.

    Nastavení zarážky (zarážky)

    Druhým krokem při ladění je nastavení zarážky (v jiných programovacích jazycích zarážka).

    Jako příklad jsem pro ladění vybral obslužnou rutinu "Při změně" ve formuláři dokumentu:

    Chcete-li nastavit zarážku, musíte najít požadovaný programový kód a poklepat na pole nalevo od pole pro zadání kódu (nebo stisknout tlačítko F9):

    Chcete-li zobrazit seznam všech nainstalovaných, musíte přejít do nabídky Debug - Seznam zarážek (alt + F9):

    Získejte zdarma 267 1C videonávodů:

    Bod zlomu 1C s podmínkou (modrý)

    Kromě obvyklého bodu zlomu v 1C existuje další typ bodu zlomu - s podmínkou. Graficky je takový bod zobrazen modře. Takový bod zlomu je velmi užitečný, když potřebujete zachytit jakoukoli konkrétní iteraci při procházení smyčkou. Ladění bude zapnuto v okamžiku, kdy je splněna určitá podmínka.

    Zastavme například smyčku na řádku 25:

    Neaktivní zarážka (šedá)

    Šedá zarážka znamená, že není aktivní, systém se v tomto bodě nezastaví. Můžete jej deaktivovat stisknutím speciálního tlačítka na panelu „Zakázat zarážku“ (shift + ctrl + F9):

    Bod zlomu omylem

    Systém se může zastavit kvůli chybě, proto musíte v nabídce Debug - Zastavit omylem nastavit příslušný příznak:

    Zastavení omylem má také podobnou funkci jako bod zastavení s podmínkou - umožňuje vám odfiltrovat výjimky s konkrétním textem chyby.

    Krokový krok programovým kódem 1C

    Po nastavení zarážky je nutné zahájit provádění požadovaného programového kódu, aby systém mohl zadat postupné provedení kódu. Šipka označuje, že je spuštěn režim krokování kódu:

    Chcete-li přejít na další řádek, musíte stisknout klávesu „F11“ (krok do).

    Pokud krok za krokem procházíte řádky programového kódu a na řádku je procedura nebo funkce, pak do této procedury (nebo funkce) „spadnete“.

    Aby nedošlo k „propadnutí“, stačí místo F11 (Step into) přejít řádky pomocí tlačítka F10 (Step through), toto tlačítko umožňuje procházet postupy v programovém kódu.

    Chcete-li se přesunout z aktuální pozice kurzoru na požadovanou a obejít mezilehlé řádky kódu, musíte umístit kurzor na požadovaný řádek a stisknout Shift + F10 (Přejít na kurzor).

    Analýza hodnot v režimu ladění 1C

    Hodnoty určitých hodnot můžete zobrazit různými způsoby:

    Zobrazit hodnotu při najetí myší

    Když umístíte ukazatel myši na proměnnou, systém „zvýrazní“ hodnoty proměnné:

    Pomocí Vyhodnotit výraz nebo hodnotící zprávu

    • Tvar Vyhodnoťte výraz lze vyvolat pomocí kontextové nabídky nebo stisknutím klávesových zkratek - (Shift + F9) nebo nabídky (Debug - Vyhodnotit výraz).
    • Srovnávací přehled volána pomocí klávesových zkratek Ctrl + Alt + W nebo z nabídky (Debug - Scoreboard).

    Tyto dvě analytické metody jsou si velmi podobné, hlavní rozdíly jsou v rozhraní. Je vhodnější použít srovnávací přehled pro skupinu indikátorů, výrazů - pro jednotlivé ukazatele.

    Tyto metody se velmi snadno používají. Do displeje stačí zadat název požadované proměnné. Velkou výhodou libovolných výpočtů je, že do výrazu můžete přidat vlastní data.

    Například:

    Je velmi užitečné použít vyhodnocení výrazu a provést dotaz, uložit jej do tabulky hodnot a zobrazit jej.

    Jak zjistit, odkud se volá procedura v ladění - Call stack

    Velmi často musíte pochopit, odkud byl ten či ten postup nebo funkce volána a s jakými parametry. Za tímto účelem poskytuje 1C speciální funkci - „Call stack“. Chcete-li spustit zásobník hovorů, stiskněte horké klávesy - Ctrl + Alt + C nebo pomocí nabídky (Debug - zásobník hovorů).

    Pomocí něj můžete podrobně zjistit, odkud byla procedura volána a s jakými parametry:

    Pokud vás zajímá hodnocení výkonu během ladění -.

    Viz také přehled videa o ladění v 1C:

    Při navrhování a testování typických a nezávisle vyvinutých konfigurací jakékoli složitosti je nutné použít režim ladění v 1C. Tento mechanismus pomáhá vývojářům nejen eliminovat zjištěné chyby, ale také předvídat mnoho úzkých míst před uvedením systému do provozu. Abyste mohli využívat všechny funkce tohoto režimu platformy 1C: Enterprise 8.3, musíte jej nejen povolit, ale také znát účel jeho hlavních nástrojů.

    Povolení režimu ladění na serveru 1C

    Pokud pracujete ve verzi klient-server, musíte projít postupem pro povolení ladění na serveru, abyste mohli využívat všechny funkce ladicího programu 1C. Netrvá to moc času a nevyžaduje rozsáhlé znalosti, ale stále musíte být opatrní, protože tento proces ovlivní změnu registru na serveru.

    Ladění v 1C můžete povolit pomocí následujícího algoritmu:

    • Přejděte na server 1C a otevřete registr pomocí funkce „Spustit“ z nabídky „Start“. Můžete také použít klávesy Windows a R na klávesnici současně. Zadejte příkaz k otevření registru - "regedit";
    • V okně, které se otevře ve stromu vlevo, postupujte podle následujících pokynů: „HKEY_LOCAL_MACHINE“, „SYSTEM“, „ControlSet001“, „services“, „1C: Enterprise 8.3 Server Agent“;
    • Když vybereme spodní položku, na pravé straně najdeme atribut s názvem „ImagePath“ a změníme jej pomocí kontextové nabídky. Chcete-li povolit ladění na serveru, přidejte do existující cesty řádek „-debug“;
    • Zbývá pouze restartovat agenta serveru 1C a můžete použít režim ladění na serveru.

    Chcete-li zahájit ladění prostřednictvím klientské aplikace, přejděte v konfigurátorovém režimu na 1C a v nabídce „Debug“ vyberte požadovaný režim. Většina moderních konfigurací pracuje v režimu tenkého klienta a u tohoto typu klienta je lepší ladit výkon. Pokud vaše konfigurace používá různé typy klientů, můžete pro větší klid otestovat funkčnost ve všech režimech. V okamžiku spuštění režimu ladění 1C otevře režim „Enterprise“.


    Jakmile je 1C spuštěn v režimu ladění, uvidíte téměř podobné okno programu. Jediný rozdíl bude dole - 1C zobrazuje statistiku počtu hovorů na šedém pozadí. Pokud ale v tomto okamžiku přepnete na konfigurátor, zjistíte, že se horní panel změnil. K dispozici jsou nová tlačítka, pomocí kterých budete ovládat režim ladění.

    Chcete-li z ladění serverových postupů vytěžit maximum, musíte znát hlavní rysy tohoto režimu, jejich účel a způsob jejich použití. Samozřejmě není možné pochopit všechno na teoretické úrovni, ale když se seznámíte se základními znalostmi, bude to pro vás v praxi mnohem jednodušší. Kromě toho se většina funkcí ladění používá jen zřídka, takže hluboká znalost tohoto mechanismu se může hodit až po několika letech práce.

    Mezi funkcemi ladicího režimu „Enterprise“, které vývojáři 1C pravidelně používají, lze rozlišit následující:

    • Hraniční body;
    • Podrobné ladění kódu;
    • Zobrazit hodnoty;
    • Zásobník volání.

    Ladicí funkce 1C

    Hlavní funkcí ladění je spuštění ladění a kontrola práce kódu při práci v režimu 1C Enterprise. Za tímto účelem vývojáři 1C nastavili zarážku na řádku algoritmu. Chcete-li to provést, vyberte čáru myší a stiskněte tlačítko s obrázkem červeného kruhu. Případně můžete dvakrát kliknout na lištu vlevo od textu modulu nebo použít klávesovou zkratku F9.

    Pomocí nabídky Debug zobrazíte nastavené zarážky. Zde můžete odebrat všechny body, deaktivovat je, přidat nový a seznámit se s „horkými“ klávesami. Také v této nabídce můžete nastavit zarážku s podmínkou (ve formě modrého kruhu). Je to užitečné v situacích, kdy potřebujete zkontrolovat kód, když je splněna podmínka, kterou musíte napsat při nastavování bodu.


    Dalším užitečným mechanismem z této nabídky je „Zastavte omylem“, který vám umožní zastavit pouze v nepřijatelných situacích. Po zastavení se dostanete do konfigurátoru a můžete použít další možnosti ladění. Například můžete procházet řádky kódu pomocí speciálních kláves popsaných v nabídce Debug, kde se v horní části zobrazují populárnější funkce. Rozdíl mezi F10 a F11 spočívá v tom, že v prvním případě skončíte ve vnořených funkcích a postupech.


    Ladění na straně serveru v 1C je také dobré v tom, že po provedení každého řádku kódu můžete vidět hodnotu proměnných. Nejjednodušší možností je jednoduše umístit kurzor myši a 1C zobrazí hodnotu ve vyskakovacím okně. Ale na platformě jsou v nabídce Debug zabudovány další dva nástroje:

    • Při volání se otevře okno, ve kterém můžete přetáhnout proměnné poklepáním na ně v kódu. Okno zobrazuje jejich hodnotu a typ během celého ladění - můžete sledovat změnu během provádění algoritmu;

    • Mechanismus pro situace, kdy chce vývojář modelovat, jaká data může získat při aktuálním běhu algoritmu. Umožňuje psát jakékoli výrazy a ukazuje jejich význam.


    Někdy vývojáři potřebují znát posloupnost volacích procedur v algoritmu. K tomu je potřeba použít mechanismus zásobníku volání z nabídky Debug. Když jej zavoláte, otevře se okno, ve kterém uvidíte, z kterého postupu je ten, kde je umístěn ladicí kurzor.


    Znalost a použití všech těchto nástrojů je důležité k provedení testů před přenosem vašich vylepšení do produkční základny. Výše uvedená sada mechanismů je více než dost pro úspěšnou produktivní práci vývojáře v 1C. Je ale také důležité dávat pozor na nové funkce, protože ladění na serveru 1C 8.3 může za pár let získat nové funkce.

    Zdravím všechny čtenáře portálového webu, v tomto článku budeme hovořit o zarážkách v 1C, nebo spíše o jejich nesprávném fungování v určitých verzích platformy 1C.

    Na konci května 2015 nový platforma 1C 8.3.6.2014... Při práci s touto platformou narazilo mnoho programátorů na problémové situace. Zejména správně breakpoints nefungovaly v konfigurátoru při ladění aplikace... Jak se ukázalo, byly zaznamenány problémy při ladění externích procesů pomocí zpracování „Testování externích tiskových desek“.

    Nejprve se podívejme na to, jak funguje zpracování „Testování externího tisku“. S pomocí tohoto zpracování jsme označili naše externí zpracování (například externí tiskovou desku) (1) a poté jsme otevřeli stejnou tiskovou desku v konfigurátoru a nastavili zarážky, poté jsme zahájili ladění podniku. Stisknutím tlačítka (2) byl spuštěn náš externí tisk, nikoli systém vygenerovaný ve výchozím nastavení v adresáři tmpjako výsledek byl v našem zpracování otevřeném v konfigurátoru spuštěn bod zlomu. Všechno fungovalo podle očekávání. Ale to bylo předtím ... Pokud provedeme tyto akce v platformě 1C 8.3.6.2014 nebudou zarážky v externím zpracování aktivovány! Jak se ukázalo, tato situace nastala, protože platforma 1C 8.3.6.2014 nahrála externí zpracování do RAM, zatímco mladší verze platformy ji uložily do dočasného souboru, který byl umístěn ve výchozím adresáři dočasných souborů 1C.

    Řešení problému s hraničními body v externím zpracování na platformě 1C 8.3.6.2014

    Bohužel v tuto chvíli na platformě 1C nebylo možné vyřešit problém s hraničními body v externím zpracování 8.3.6.2014... Jde o to, že tato verze platformy ukládá zpracování v RAM a debugger se tam nedostane, protože nemůžeme otevřít zpracování v konfigurátoru a nastavit zarážku. Doufejme, že specialisté z 1C umožní vstoupit do RAM pomocí debuggeru nebo přijít s alternativními metodami ladění.

    Ve skutečnosti se modul skládá z funkcí a postupů. Jedná se o řádky programu, spojené jménem. V rámci jedné funkce lze volat další, včetně jedné v jiném modulu.

    Program je psán v režimu 1C Configurator. Program se provádí v režimu Enterprise 1C.

    Jak se program provádí?

    Jak se program provádí?

    Nejprve při prvním přístupu k modulu se provedou programové řádky umístěné na samém konci modulu, které nejsou uzavřeny ve funkci nebo proceduře (pokud existují).

    Zadruhé musí dojít k volání funkce nebo procedury. Toho lze dosáhnout spuštěním nějakého jiného modulu. Pokud se jedná o modul formuláře nebo modul objektu, má modul obslužné rutiny. Obslužné rutiny jsou funkce, které platforma 1C volá automaticky, když dojde k určité události. Například „při otevření formuláře“ je spuštěn odpovídající obslužný program (pokud byl přiřazen).

    Když je nutné provést funkci, platforma zahájí provádění od prvního řádku programu uvnitř funkce a jde dolů postupně na konec funkce, řádek po řádku.

    Výjimka - pokud je volána jiná funkce, platforma ji provede a až poté se vrátí zpět, odkud pochází.

    Co je ladění 1C?

    Při psaní programu může programátor jen hádat, jak by měl fungovat. Když to skutečně začne fungovat, uživatel zadá některá data do polí formuláře, projeví se určité podmínky a nastavení a program může náhle začít fungovat ne zcela tak, jak programátor očekával.

    Současně jsou zajímavá konkrétní rozhodnutí učiněná programem, výsledky porovnání v podmínkách „If“ atd.

    Pro tyto účely se používá ladění 1C. Jeho obecná myšlenka je, že programátor může nastavit zarážku na požadovaném řádku programu a program na něm zastaví provádění - pauza. V tuto chvíli můžete vidět, jaké hodnoty proměnné a další parametry získaly.

    Programátor může stisknout tlačítko v debuggeru 1C a program bude pokračovat ve svém provádění, ale ne úplně, ale pouze na jednom řádku. A pak se znovu pozastaví.

    Takto můžete zachytit problémové oblasti programu.

    Začněte ladit 1C

    Vzhledem k tomu, že program je zapsán (a je) v konfigurátoru a je spouštěn v režimu Enterprise, abyste mohli používat ladění 1C, musíte mít 1 konfigurátor a 1 laděný režim Enterprise:

    • zanedbané
    • příbuzný.

    Režim Enterprise lze spustit okamžitě s laděním 1C. K tomu můžete použít odpovídající tlačítko v konfigurátoru jako na obrázku.

    Nebo použijte nabídku Debug / Start debugging nebo Debug / Start debugging / Select 1C client option.

    Pokud již máte 1C spuštěný v režimu Enterprise a chcete se k němu připojit, musíte udělat následující:
    1) V klientovi 1C v režimu Enterprise zaškrtněte v nabídce Služba / Možnosti na kartě „Služba“ políčko „Ladění v aktuální relaci je povoleno“

    2) V konfigurátoru vyberte položku nabídky Debug / Connect
    3) V okně, které se otevře, vyberte kurzorem požadovaného klienta a klikněte na tlačítko Připojit.

    Bod zlomu 1C (bod zlomu)

    Poté, co jste propojili konfigurátor a běžícího klienta s laděním 1C (tj. „Spojeno s 1C debuggerem“) - všechny akce programu z modulů tohoto klienta jsou prováděny pod kontrolou tohoto konfigurátoru.

    Chcete-li začít sledovat, jak probíhá provádění, musíte nastavit zarážku na správném místě.

    Chcete-li to provést, musíte otevřít modul, který chcete ladit. Dále najděte požadovaný postup. Bod zlomu lze nastavit následujícími způsoby:

    • Klikněte levým tlačítkem na šedou lištu nalevo od textů modulu
    • Stiskněte klávesu F9
    • Vyberte položku nabídky Debug / Breakpoint.

    Ve výsledku se objeví červený kruh, jako na obrázku. Toto je bod zlomu. Jakmile program spuštěný v režimu Enterprise dosáhne tohoto řádku, zastaví se provádění a pozastaví se.

    Když k tomu dojde (program pozastaven), na řádku, kde je nyní spuštěno, bude žlutá šipka.

    Chcete-li zobrazit hodnotu proměnné v tomto okamžiku - vyberte požadovanou proměnnou kurzorem a stiskněte Shift + F9.

    Chcete-li provést jeden řádek (to znamená přejít na další řádek) - stiskněte odpovídající tlačítko jako na obrázku nebo vyberte položku z nabídky 1C Debug.

    Podmíněný bod zlomu

    Kromě obvyklého zarážky můžete nastavit ten, který se spustí, pouze pokud je splněna podmínka v něm uvedená. Říká se tomu „Podmíněný bod zlomu“ - viz stejnojmenná položka v nabídce 1C Debug.

    Například program má smyčku, která se mnohokrát opakuje. Můžeme nastavit zarážku, která bude střílet při konkrétní iteraci smyčky („iterace smyčky“).

    Bod zlomu omylem

    Pro takové účely existuje zarážka, která se aktivuje, když při práci „v ladicím programu 1C“ dojde k jakékoli chybě nebo chybám určitého typu.

    Všimněte si, že tento zarážka zachycuje i chyby, ke kterým dochází v.