Čo je to skript pre 1s. "Dohodnite si hovor!" umožňuje vybudovať uzavretý cyklus interakcií s klientom

V tomto článku sa pokúsim poskytnúť niekoľko tipov na nastavenie aktivácie skriptov na stránkach pomocou 1C.

Prečo by to mohlo byť potrebné? V mojom príklade som potreboval spustiť php skript na aktiváciu sťahovania na webe, ktorého cms je 1C-Bitrix. Tie. súbor sa uvoľní z 1C a signalizuje stránke, aby súbor prevzala. Tým sa dosiahne vysoká účinnosť výmeny s miestom.

V skutočnosti v tomto procese nie je nič ťažké, ale vzhľadom na špecifiká tohto postupu môže mať programátor s touto akciou určité problémy.

Popis úlohy:

Po nahratí dátového súboru z 1C bolo potrebné čo najskôr nahrať súbor do databázy stránok. Za týmto účelom programátor, ktorý stránku vyvíja, vytvoril skript, ktorý vykonal dve akcie - skontroloval autorizáciu a aktivoval výmenu zo stránky. Samotný php skript vyzeral takto: "http:// /1c_prices_import_run.php“.

Pozrime sa, ako bol tento skript spustený.

GET žiadosť od 1C

Najprv sa vytvorí objekt HTTP pripojenie“, pomocou ktorej vykonávame autorizáciu:

Získajte 267 1C video lekcií zadarmo:

HTTP = Nové pripojenie HTTP(" /1c_prices_import_run.php

V parametroch prejdem adresa skriptu php, heslo a prihlasovacie meno. To stačí, ak nemáte ďalšie zložité podmienky, ako je zabezpečená autorizácia a proxy server.

Mojím druhým krokom bola kontrola pripojenia, v prípade úspešnej autorizácie mi tento skript vrátil slovo „úspech“:

HTTP.Get(" http:// /1c_prices_import_run.php?mode=checkauth", ResponseFileName); // kontrola autorizácie

V parametroch metódy Get (podobne ako GET) špecifikujeme parameter " ?mode=checkauth",čo ukazuje, že je to len ping. Druhý parameter, "ResponseFileName", je súbor, do ktorého sa zapíše odpoveď servera.

HTTP.Get(" http:// /1c_prices_import_run.php?mode=query", RequestFileName);

To je všetko. Všetko je celkom jednoduché a na strane 1C funguje perfektne.

No a nakoniec ukážem celý kód v celom rozsahu:

RequestFileName= GetTempFileName();

HTTP = Nové pripojenie HTTP(" http:// /1c_prices_import_run.php«,NastavenieDataExchange.HTTPExchangeUserName,SettingDataExchange.HTTPExchangePassword,); //pripojenie

Výnimka

Koniec pokusu;

HTTP.Get( http:// /1c_prices_import_run.php?mode=checkauth", RequestFileName); // kontrola autorizácie

Výnimka

Koniec pokusu;

ResponseFile = Nový súbor(ResponseFileName);

Ak ResponseFile.Exists() Potom

Téza, že open-source vytvárajú nadšení geekovia, v našej dobe stratila na aktuálnosti. Napriek tomu sa práve tak zrodila ideológia open source. Skvelé programy napísané v noci bradatými (a nie takými) podivínmi, bez záujmu, len aby bol svet lepším miestom - zmenili svet vývoja softvéru.

Každý programátor tajne sníva o tom, že urobí niečo veľké a jasné, čo sa bude páčiť každému. Ak mi poviete, že nie ste jedným z tých ľudí, že radi zatvárate lístky iba do fungujúceho bug trackera a nesnívate o tom, že svoj projekt vypustíte do veľkého sveta, tak vám neuverím. Alebo by som navrhol zmenu kariéry. Som presvedčený, že programátor je umelec a pre umelca je dôležité robiť niečo svoje, možno len „na stole“ – ale robiť to.

Jedného dňa mi v hlave skrsol nápad na projekt. Myšlienka bola čisto výskumná a nechystal som sa z toho urobiť nejaký „produkt“. Navyše som nikdy predtým neprevádzkoval open source projekty a veľmi som si chcel vyskúšať, ako to celé funguje. Čo z toho vyšlo - pod rezom.

Na samom začiatku životnej cesty projektu som o ňom už písal na Habré. Potom to boli prvé kroky, kód bol surový, ale fungoval. Chcel som, aby projekt vzbudil záujem u iných autorov, keďže by som ho zjavne nevytiahol sám a vo všeobecnosti by som ho opustil. V zásade by sa to stalo, keby som nedostal svoju prvú žiadosť o stiahnutie od cudzieho človeka. Najprv však…

O čom to je?

Vytvoril som vlastnú implementáciu zásobníkového stroja, ktorý vykonáva skripty v jazyku 1C: Enterprise. Alebo, jednoduchšie povedané, otvorený tlmočník jazyka 1C a otvorená implementácia niektorých štandardných tried 1C. Zároveň bol stanovený jasný aplikovaný cieľ projektu – dať 1C-prezývkam nástroj na automatizáciu skriptovania, ktorý by sa dal ľahko naučiť. Projekt dostal názov 1Script.

A tak je projekt zverejnený na Habré a na špecializovanom portáli 1C infostart.ru. Čakám na spätnú väzbu. Dostal som prvú odpoveď na miste a srdečne som sa zasmial. Téma na fóre bola tzv „Tlmočník 1C na Habrého. Držme hubu?" Na hmle je veľa dobrých ľudí, potešilo ma to :)

Potom prišli viac-menej adekvátne otázky, na ktoré som usilovne odpovedal, po ktorých články v bežnom režime išli od prvých strán niekam dole a záujem o projekt opadol. No bol to očakávaný koniec, trošku ma to štvalo, ale nie moc. Vlastne som nerátal so žiadnym špeciálnym výsledkom. Pokecané a v poriadku. Dni plynuli, niečo som dokončil, dokonca som zverejnil ďalšiu verziu, ale nikto okrem mňa to nepotreboval. Môj oheň vyschol. Aj keď som nebol sklamaný, prestal som písať nový kód.

Druhý vietor

Asi dva mesiace po zverejnení ma kontaktoval Sergej Batanov (Serega, ahoj! :) - prominentný chlapík v komunite 1C, ktorý mi ponúkol pomoc pri vývoji štandardnej knižnice. Bola to trieda 1C-ovsky "Tabuľka hodnôt". Samozrejme, súhlasil som. A keď som videl skutočný kód, ktorý poslal Sergej, bol som naozaj šťastný ako dieťa. Na internete sa to často stáva, keď niekto niečo ponúka slovami, ale často to nejde k pointe. A tu funguje skutočný live kód, ktorý je úplne adekvátny, ktorý je možné vložiť do projektu!

Úloha je zároveň dosť veľká, sám by som bol lenivý. A tu - hmatateľný, skutočne užitočný, merateľný riadkami kódu príspevok k celkovému projektu! Stručne povedané, nebudem nečestný, ak poviem, že to urobil Sergej, aby som projekt neopustil. Je to úžasná inšpirácia získať pomoc od neznámeho človeka. Len tak, pretože ho zaujímalo, čo ste začali.

Postupne som začal dostávať spätnú väzbu od ľudí, ktorí motor vyskúšali a pýtali sa „kde je táto funkcia?“, „Ale ako to urobiť?“ Na všetky tieto otázky som musel odpovedať s tým, že ide o prototyp, a sám som tieto funkcie musel naliehavo doplniť. Nadšenie sa však vytratilo: „Ľudia sa zaujímajú a snažia sa uplatniť,“ takže nové funkcie boli pridané pomerne rýchlo. Štandardná knižnica spočiatku nemala ani funkcie na prácu so súbormi.

Ďalej viac

Po nejakom čase mi Alexander Kuntashov napísal s otázkou o integrácii 1Scriptu a projektu Snegopat (www.snegopat.ru). Kto nevie - toto je taká ostrica pre 1C. Umožňuje vám vytvárať skriptové pluginy pre 1C Configurator a existuje celá komunita autorov takýchto pluginov.
Tieto doplnky boli napísané v JavaScripte, a preto vyžadovali kvalifikáciu, ktorá presahovala štandardného programátora 1C. Kvôli tomu sa nakoniec spomalil aj vývoj pluginového ekosystému. Počet ľudí, ktorí chcú Konfigurátor vylepšiť, sa približne rovná celkovému počtu prezývok 1C, avšak nutnosť naučiť sa JavaScript autorov potenciálnych majstrovských diel odstrašuje.

Opäť som bol veľmi potešený dopytom po mojom duchovnom dieťati, prosil som autora o distribučnú sadu Snegopat a striasol som prach z mojich znalostí C++. Bolo tam oveľa viac prachu ako vedomostí, ale tvorivé svrbenie urobilo svoje a ja som sa vrhol do MSDN.

Asi o mesiac neskôr bolo v konfigurátore 1C možné písať doplnky priamo v jazyku 1C bez prepínania do okna editora JavaScript. Zároveň boli opravené prvé kritické chyby motora a vnútorná architektúra bola výrazne prepracovaná.
Po mnohých rokoch práce výlučne s 1C som mal opojnú radosť z komunikácie s C ++, COM, ATL a všetkými týmito vecami. No a tiež z toho, že urobil niečo užitočné, hmatateľné pre komunitu 1C-nick.

Prvá skúsenosť s bojovým použitím

Približne v rovnakom čase (nepamätám si presne) sa projekt dostal do pozornosti Alexeja Lustina () (Lech, ahoj aj tebe!) - medzi prezývkami 1C známeho a rešpektovaného človeka. To sa zhodovalo s mojím hľadaním novej práce. Hľadal som zaujímavé spoločnosti na trhu a Alexey hľadal špecialistov pre projekt Continuos Integration / Continuos Delivery pre prezývky 1C. Potom už Lesha videl môj projekt (a nick) na Habré a už som vedel, že istý tím pokročilých 1C nickov robí na sieti zaujímavé neštandardné veci.

V tom momente už komunita poznala také veci ako testovanie jednotiek, ukladanie 1C kódu do git, BDD + uhorka za 1C atď. Alexej sa mi zdal najdostupnejší z týchto týpkov a napísal som mu list, či má zaujímavú prácu. Spolu s mojím projektom som sa teda dostal do veselej spoločnosti geekov, ktorí sa dovtedy zhromaždili v spoločnosti, kde pracoval Alexey.

Engine už vtedy disponoval minimálnou sadou schopností potrebných pre skript a dal sa (ako sa mi zdalo) v princípe použiť ako skript na zostavovanie a nasadzovanie databáz 1C.

Prečo na to vôbec používať nový motor?

V skutočnosti existuje milión skriptovacích jazykov, nie je jasné, prečo je potrebný ešte jeden, a dokonca aj neznámy - opýta sa čitateľ Habr - a nebude mať celkom pravdu. Strategicky bol budúci produkt určený pre prezývky 1C a musel by žiť od vývojára k vývojárovi, bez ohľadu na personálne zmeny v spoločnosti. V komunite 1C-nick je objektívny problém: je medzi nimi veľa skvelých špecialistov, ale z nejakého dôvodu sa priemerný 1C-nick nechce učiť žiadny iný jazyk, keď sa dobre zorientoval v 1C. Neviem, aký je dôvod tohto javu, pravdepodobne preto, že pravidlá 1C (irónia)? Ľudia prichádzajú do 1C so znalosťou jazyka Java, C/C++, mikrokontrolérov, Delphi alebo ničoho, ale často zostávajú v 1C a neradi sa vracajú späť do svojich pôvodných ekosystémov.
Teraz predvídam vlnu hnevu, ale prosím, vypočujte si tézu až do konca. Existujú výnimky z akéhokoľvek pravidla, avšak pri plánovaní systému, ktorý musí prežiť niekoľko generácií vývojárov (nie biologických, ale ľudských generácií, samozrejme), potom s najväčšou pravdepodobnosťou nájdete špecialistu, ktorý ho dokáže vyvinúť, ak je napísaný v 1C. . Ak je to python (alebo vložte svoj obľúbený jazyk), budete si musieť najať pythonistu, ktorý veľmi dobre pozná 1C. A po jeho prechode k veľkým šéfom si budete musieť hľadať ďalšieho rovnakého, s kompetenciami v oblasti 1C. A ak je to hneď jazyk 1C, tak si budeš musieť nájsť iba prezývku 1C, ktorá dobre pozná 1C a to bude stačiť.
Inými slovami, systém bude húževnatejší a bude ho môcť vyvinúť viac špecialistov, ak bude napísaný v jazyku, ktorý všetci poznajú.

Tým sa objasnil rozsah 1Script: ide o DevOps a podobné úlohy na účely projektov 1C.

Prvé nárazy a správny vývoj

Prvý viac-menej veľký skript, ktorý som napísal (predtým tam boli texty maximálne sto riadkov), spôsobil pád motora. Pri určitej kombinácii parametrov a volacích reťazcov sa ovládanie prenieslo na neznáme miesto v kóde a aplikácia spadla. Musel som takmer úplne prepísať implementáciu zásobníka hovorov a spracovania výnimiek. Bola to výzva v štýle „Ach ty si taký! Tak ja ťa opravím!" Bojová poistka umožnila za jeden deň prepísať potrebné moduly a navyše identifikovať pár chýb. Kód začal bežať stabilne. Vydal som nové vydanie. Po ceste, keďže som sa teraz zaoberal nepretržitou integráciou, som si uvedomil, že projekt potrebuje aj zostavovací server a automatizáciu vydania. Okrem toho sa zapojil do projektu, ktorý je medzi prezývkami 1C známy ako koryfeus a guru testovania 1C. Urobil mi sadu nástrojov na testovanie motora na základe jeho rámca xUnitFor1C. Tak som dostal akceptačné testy správania, tiež napísané v jazyku 1C. Zobral som TeamCity na svojom domácom serveri a nastavil som nočné zostavy s testovacími prevádzkami. Po ceste ma nabilo nadšenie – projekt žije a získava nových prispievateľov. Bolo to divoko inšpirujúce.

Na tri-štyri mesiace knižnica tried motora konečne získala všetko potrebné pre väčšinu úloh skriptovania: objavili sa sieťové funkcie, práca s archívmi, XML atď. Náš projekt CI pre 1C bol úspešne spustený.

Približne v rovnakom čase, vďaka, opäť začali do projektu prichádzať noví záujemcovia. Požadovali funkcie, našli chyby, požadovali nové vydania.
Tok funkcií, prideľovanie kódu knižnice spolu s potrebou jednoduchej schémy vydania ma priviedli k takej zaujímavej veci, ako je problém rastu. Ale o nej trochu neskôr.

V novembri 2014 som bol pozvaný vystúpiť na prestížnej konferencii 1C Infostart Event v Petrohrade. Samozrejme som súhlasil a ako tému prejavu som si zobral 1Script. Téma bola schválená, čo pre mňa znamenalo v prvom rade fakt určitej obľúbenosti projektu (t.j. poslucháči asi prídu, lebo o ňom aspoň niečo počuli) a v druhom rade som dúfal, že prilákam prispievateľov , keďže tu bolo takmer žiadny čas na vývoj motora.
Špeciálne pre konferenciu som dokonca urobil špeciálnu zábavu - CGI režim, v ktorom sa dali spúšťať skripty pod kontrolou HTTP servera a generovať HTTP výstup. Stránky v jazyku 1C už nie sú nočnou morou hostiteľa, ale krutou realitou (len srandu).
Vystúpenie na Infostarte možno považovať za prvé verejné oznámenie, kde sa už 1Script nedal rozpačito nazvať produktom, nástrojom schopným riešiť špecifické problémy. Už to nebol experiment, ale bojový produkt. Aj keď stále v beta stave.

Problém rastu alebo úskalia podpory projektu

Ako sa ukázalo, prítomnosť žiadaného projektu, hoci aj malého, vo vašom oddelení nesie so sebou značnú záťaž režijných nákladov. Na začiatok je to stream funkcií. Priania prichádzajú oveľa častejšie ako záväzky, ktoré tieto priania realizujú. Je potrebné prísne brať do úvahy verzie, v ktorých boli opravené určité chyby. Je potrebné nejakým spôsobom upozorniť používateľov, že od verzie X bola opravená chyba alebo sa objavila nová funkcia. Rast funkčnosti vyžaduje dokumentáciu a dokumentácia má tendenciu zastarávať.
No, vtipné je, že je potrebná technická infraštruktúra aktuálnej „podpory“. Potrebovali sme webovú stránku, generátor dokumentácie, server na zostavenie/nasadenie, atď.
Pri rozbiehaní výskumného projektu som si ani len nepredstavoval toľko organizačných a technických problémov, ktorým budem musieť čeliť, keď sa projekt rozrastá. Prechod na techniku ​​git-flow v tomto smere veľmi pomohol, bolo jednoduchšie na to prísť a komunikovať s používateľmi o verziách a vetvách.

Skúsenosť s crowdfundingom (strašné slovo)

Začiatkom tohto roka som sa pokúsil uskutočniť experiment – ​​zorganizoval som zbierku darov na infraštruktúru – názov domény a hosting. Bol som zvedavý, koľko môže projekt zaplatiť za svoju existenciu. Výsledkom bolo, že mne neznámi ľudia skutočne poslali asi 100-500 rubľov. čo stačilo na zaplatenie názvu domény v zóne .io. Potom bola kampaň obmedzená a tok financií zastavený. Nedosiahlo úplnú návratnosť, aj keď bola prijatá určitá finančná podpora.
Najdôležitejšie je, že téza o efektívnosti darcovského modelu ako takého bola testovaná v prírode. Záver - darcovstvo sa v mojom prípade len ťažko dá nazvať efektívnym, hoci nebolo nulové.

Knižnica užitočných skriptov

Za rok a pol kódovania v 1Script vznikli knižničné bloky, ktoré môžete sami používať a odporúčať ostatným. Prirodzeným spôsobom som nahromadil množstvo vývojov, ktoré boli vhodné na opätovné použitie.
To viedlo k tomu, že do enginu bola pridaná možnosť pripojiť „balíky“ tretích strán napísané aj v 1Scripte. Výsledkom bol ďalší projekt s názvom oscript-library. (https://github.com/EvilBeaver/oscript-library) Táto knižnica si samozrejme vyžadovala aj infraštruktúru, dokumentáciu, aktualizácie pre koncových používateľov a ďalšie. Ale tok prispievania z 1C-prezývok výrazne vzrástol. Koniec koncov, balíky sú vyvíjané v už známom jazyku, čo znamená, že môžete okamžite využívať výhody, portovať existujúci vývoj atď. Komunita „1C scenáristov“ sa začala rozrastať, k čomu výrazne prispela druhá správa na Infostart Event v roku 2015.

Ako to vyzerá

Import používa špeciálnu direktívu preprocesora #Use (#Use) Nie je v pôvodnej platforme 1C, ale kvôli jednoduchosti importu knižníc sme museli upustiť od kanonickej syntaxe a požičať si riešenie z iných ekosystémov.
#Use json // classReaderJSON je deklarovaný v knižnici a je dostupný vďaka direktíve #UseReaderObject = NewReaderJSON(); // nasleduje nejaký kód // ...
Tím autorov už vyvinul konkrétne riešenie, premyslené boli scenáre aplikácií, úskalia atď.. Ako brainstormingový nástroj bol použitý Google Docs.

správca balíkov

Na správu balíkov bol na kolene napísaný jednoduchý správca balíkov s názvom OPM (OneScript Package Manager). Je tiež napísaný v 1Script a je to nástroj na správu balíkov založený na konzole. V súčasnosti prehodnocujeme infraštruktúru balíkov a pracujeme na verzii opm pripravenej na výrobu.

Projekt dnes

Dnes je 1Script stabilný, úspešne používaný v desiatkach spoločností automatizačný nástroj pre 1C-prezývky. Navyše OneScript je už akási značka, toto meno je v komunite známe, nástroj sa aktívne používa, píše, kladie otázky, diskutuje a čo je hlavne fajn, finalizuje.
Okrem toho je takmer neoddeliteľnou súčasťou projektu knižnica opakovane použiteľných balíkov kódov. Je malý, ale pokrýva významnú časť úloh, ktoré denne rieši typická prezývka 1C.
Toto už nie je len „tlmočník 1C“. Komunita vytvorila ekosystém užitočných a obľúbených nástrojov.
Pre mňa to bol jedinečný zážitok, dostal som slová (a skutky) podpory od desiatok ľudí, ktorých som nepoznal (a teraz to už viem). Program, ktorý som začal len preto, aby som si ho „vyskúšal“, sa zmenil na fungujúci projekt používaný v skutočných bojových misiách. Okrem toho sa získali obrovské skúsenosti s riadením takéhoto open-source projektu - podpora, údržba, infraštruktúra atď ...
A čo je najdôležitejšie – získate to potešenie robiť niečo, čo potrebujete.

Čo plánujeme ďalej

Aktívne používanie knižnice balíkov odhalilo množstvo nedostatkov a nepríjemností. Plánujeme vykonať úpravy infraštruktúry balíkov a rozšírenie funkcionality správcu balíkov. Plánujeme aj rozšírenie sady knižníc, napríklad momentálne pracujeme na obale pre Docker API. Spravujeme dokovacie kontajnery pomocou skriptov 1C a vývoj na túto tému bude pravdepodobne tiež zverejnený, keď si ich spomenieme. Výsledkom bude zjednodušené DSL pre manipuláciu s kontajnermi zo skriptu 1.

technické zhrnutie

  • Programovací jazyk - C#, .NET v4.0/Mono 3.1x
  • Vývojové prostredie - VS 2013-2015
  • Názov interpreta je oscript.exe (spustenie na vykonanie - oscript )
  • Prípona súboru skriptu je .os
  • Prípona súboru balíka je .ospx
  • Výkon kódu - vo väčšine meraní až 4-krát rýchlejší ako pôvodná platforma 1C. Aspoň nie pomalšie ako ona.
  • Úložisko motora - github.com/EvilBeaver/OneScript
  • Úložisko knižnice - github.com/oscript-library
Webovú stránku projektu nepíšem, po prvé, aby to nevyznelo ako PR, a po druhé, jednoducho neznesie habraefekt. Ak máte svoj vlastný projekt, ktorý by ste chceli priblížiť, dovoľte mi, aby som vám dal pár tipov na základe osobných skúseností.
  • Odvážte sa! Ak necháte svoj projekt na stole a nikomu o ňom nepoviete, nikto sa o ňom nedozvie. Začnite článkom o Habr. Jeden článok nebude stačiť. Uveďte svoj projekt na fórach venovaných predmetnej oblasti vášho projektu, uveďte príklady úspešnej aplikácie.
  • Buďte pripravení na to, že existuje veľa návrhov od ľudí a oveľa menej skutočných záväzkov. Prístup v štýle „Je to open-source, potrebuješ to, spravíš to,“ bohužiaľ nebude fungovať.
  • Myslite dopredu, aby ste vyriešili „problém rastu“. Rast je zvyčajne výbušný a je dosť ťažké vyrovnať sa s prudko zvýšeným množstvom úloh.
Pridať značky

pozadie

Počas implementácie jedného projektu bolo potrebné spustiť javascriptový (ďalej len JS) kód pod kontrolou objektu HTML Document Field s výsledkom získaným v 1C. Príklady uvedené v nájdených článkoch sa nezdali byť veľmi vhodné na použitie (čisto osobný názor). Bolo rozhodnuté, že sa pokúsime nájsť iné, jednoduchšie riešenie, pričom na hľadanie nebol pridelený viac ako 1 deň.

DIV.setAttribute("onclick", "alert("Coordinates");");

Spustite skript

DIV.click();

TA-DAH. všetko funguje

Procedure ExecuteScript(TextScript) DIV = Elements.doc.Document.getElementById("TEST"); DIV.setAttribute("onclick", TextScript); DIV.click(); EndProcedure

Aktualizácia k 8.2.2016

Ďalší spôsob volania JS bol navrhnutý v komentároch (vďaka), ak máte možnosť zmeniť HTML kód dokumentu, môžete do neho napísať funkciu a potom ju zavolať. odovzdať mu kód JS.

a potom v 1C:

Elements.DocumentHTMLField1.Document.parentWindow.exec("alert("OK")");

Vrátenie výsledku JS v 1C

Na prenos výsledku skriptu do 1C z objektu FieldHTMLDocument použijeme udalosť. Spojme udalosť OnClick s poľom HTMLDocument, ktoré prijíma 3 parametre ako vstup:

  1. Prvok, v ktorom sa udalosť vyskytla (samotné pole HTMLDocumentu)
  2. objekt udalosti
  3. Znak implementácie štandardného správania

Ak chcete spustiť udalosť kliknutím, musíte spustiť nasledujúci kód js

Varevt = document.createEventObject(); // vytvorenie prázdneho objektu udalosti evt.propertyName = "funkcia1"; // Navrhujem vlozit do vlastnosti propertyName prop meno vysledku (nieco ako typ, alebo nazov funkcie, z ktorej boli prijemne udaje) evt.data = "156"; //výsledné dáta odošleme do dátovej podpery document.body.fireEvent("onclick", evt); // spustiť udalosť v clickHtmlDocumentField

Po vykonaní tohto kódu js v procedúre, keď sa klikne na druhý parameter, príde objekt udalosti, ktorý sme vytvorili. Čo sa dá celkom ľahko zvládnuť.

Príklad analýzy odpovede.

&OnClient // získanie názvu a výsledku udalosti Procedure DocOnClick(Element, EventData, StandardProcessing) OperationName = EventData.Event.propertyName; OperationData = EventData.Event.data; If OperationName = "" Then //nie naša udalosť Return; Koniec Ak; If OperationName = "Function1" Then // výsledok procesu ElseIf OperationName = "function2" Then // výsledok procesu //...... EndIf; EndProcedure

Táto metóda sa zbavuje používania obsluhovačov čakania a poskytuje pohodlný identifikátor udalosti. Podľa identifikátora presne vieme, aké údaje sme dostali a ako ich analyzovať.

Dodatky od 26.03.2016

A aj na tomto mieste došlo k nedorozumeniam (chyba sa reprodukuje iba na platforme 8.3.5.1570, ale aby sa predišlo týmto situáciám v budúcnosti, dám riešenie) Samotný dôvod - pri opätovnom spustení formulára s poľom HTML dokumentu v čase volania procedúry, pri kliknutí na pole HTML sa volanie platformy zaseklo a zložilo celý objekt COM (Vyskytla sa výnimka (súbor html): Nedefinovaná chyba). Riešením bolo zakázať štandardné vykonávanie udalosti kliknutia a vypnúť režim prebublávania udalosti. Ako to urobiť, pozri nižšie.

// zakáže prebublávanie udalostí

Evt.cancelBubble = true;

// zakáže predvolené správanie

Evt.returnValue = nepravda;

V dôsledku toho získame funkciu na prenos údajov do 1s z JS.

Funkcia return1c(názov,údaje)( var evt = document.createEventObject(); evt.propertyName = názov; evt.data = údaje; evt.cancelBubble = true; evt.returnValue = nepravda; document.fireEvent("onclick",evt ););

Záver.

Kombináciou týchto metód môžete pomerne ľahko spustiť potrebný kód js a prijímať údaje v 1C na ďalšie spracovanie.

Príklad implementácie v

Operátor : "Dobrý deň! Moje meno je Maria, spoločnosť "Windows-všetko-na-svete."

Zákazník : "Nič nepotrebujem"

Operátor : "Ale máme najlepšie podmienky a..."

Zákazník (preruší):"Mária, zbohom!"

Operátor (hovorí):"Na trhu pôsobíme od roku 2003 a odvtedy..."

Zákazník (zložiť telefón):...

Mária vytočí ďalšie číslo.

Každý pozná nepríjemný príbeh. Po takomto dialógu bude mať klient negatívnu pachuť a OknaVsemNaSvete hlúpo stratil vzácny kontakt. Aj keď operátorka Mária dostane mzdu na konci mesiaca, takže v tejto situácii nie je každý porazený.

Najurážlivejšie na tejto situácii je, že Mária sa naozaj snažila, úprimne si myslí, že „len klientov nepotrebujú – neberú“ a vo všeobecnosti „ale ako ho prinútiť, aby nezavesil?“. To, že niekto považuje KPI, Mary za žiarovku - ZP sa dá aj tak. Na konci mesiaca si šéf Aleksey preštuduje 1001 záznamov konverzácie svojich operátorov (trvá to aspoň 2-3 dni v mesiaci), pokarhá svojich zverencov – v odpovedi si vybaví výhovorky, že „zasa hovor základňa nebola zameraná...“. Alexej si smutne povzdychne a všetkým rozdá platy. Začína ďalší mesiac.

Tím sa vyvinul priateľsky, urobilo sa veľa práce, ale takto to ďalej nemôže ísť. (s)

Čo je v tomto prípade zlé (ale vyriešené malou krvou):

Prístup operátorov pri práci

  1. Volajú automaticky. Ale bez jasného cieľa je ťažké vybudovať dobrý dialóg;
  2. Nevedia reagovať na klientovu námietku alebo odpovedajú neúspešne;
  3. Zavesia, len čo začnú pochybovať o úspechu rozhovoru;
  4. Som si istý, že za proces dostane plat - preto všetko robí pomaly, s prestávkou na oddych, bez potrebnej motivácie;
  5. Všetci potláčajú existujúce pravidlá telefonovania zákazníkov, sťažujú sa na zložitosť a objem pokynov;

Vedúca pozícia


Všetky tieto problémy sú vyriešené v podsystéme "Dohodnúť si hovor!"

(dá sa „vložiť“ do vášho 1C, môžete ho použiť samostatne).

"Nastav hovor!" môcť:

  • Vytvárajte skripty - rečové moduly pre operátorov
  • Priraďte dostupnosť skriptov rôznym skupinám a vetvám
  • Zbierajte štatistiky o používaní blokov skriptov, dosahovaní cieľov a neúspechov, merajte konverziu
  • Stiahnite si základňu hovorov z Excelu alebo použite čísla zákazníkov, ktorí už boli volaní
  • Zobrazenie štatistickej tabule pre operátorov
  • Vytvárajte objednávky, reklamácie počas prechodu skriptu, vyplňte ľubovoľné objekty vašej databázy.
  • Obmedzte „kliknutie“ na príkazy skriptu bez rozdielu
  • Pracujte so sip telefóniou
  • Pracujte s e-mailom
  • Premeňte e-maily, požiadavky stránok na potenciálnych zákazníkov a potreby zákazníkov ich nahraním do systému
  • Spravujte klientov, potenciálnych zákazníkov a ponuky

"Dohodnite si hovor!" umožňuje vybudovať uzavretý cyklus interakcií s klientom.

Fázy takejto práce sú prispôsobené vášmu vkusu. Napríklad takto:

Možnosť číslo 1

  1. Systém získal nového potenciálneho klienta
  2. Operátor zavolal podľa algoritmu a objasnil potrebu služby
  3. Cieľový kontakt bol presunutý na obchodné oddelenie
  4. Manažér buduje vzťah s klientom
  5. Manažér uzatvára dohodu

Možnosť číslo 2

Alebo takto:

  1. Operátor prijme prichádzajúci hovor
  2. Pri telefonáte sa spustí scenár určenia potrieb klienta, určí sa požadovaná spoločnosť
  3. V procese práce prevádzkovateľ vypracuje objednávku zákazníka, upresní termín dodania
  4. Objednávka je odovzdaná oddeleniu zásobovania na montáž

Možnosť číslo 3

No, alebo iná možnosť:

  1. Na stránke bola vytvorená nová aplikácia, stránka presmeruje list do databázy tejto aplikácie
  2. Báza analyzuje list, „získa“ z neho údaje o protistrane, text správy, vytvorí potrebu a úlohu
  3. Bezplatný operátor zdvihne úlohu, zavolá klientovi a vyrieši problém
  4. Ak sa klientovi všetko páčilo, buď sa vytvorí objednávka, alebo sa klient presunie k manažérom

Možnosť číslo 4

Vymyslite niektorú z vašich možností!

Na konci mesiaca dostane manažér správy:

  1. Podľa rozšírených štatistík potrieb zákazníkov - koľko bolo, koľko bolo kvalifikovaných, koľko bolo odmietnutých - podľa akéhokoľvek stavu
  2. O práci konverzačných skriptov a operátorov
  3. Podľa kontaktov s klientmi – o čom sa rozprávali, koľkokrát. Koľko sa ozvalo, koľko bolo napísaných listov.

Ako to funguje

V časti „Nastaviť hovor!“ vstavané podsystémy (klikateľné):

Skriptá

Pod skriptami rozumieme niektoré súvisiace akcie podľa algoritmu. Napríklad,

  1. Odchádzajúci hovor- predať produkt alebo službu, pozvať na propagáciu, vyplniť dotazník
  2. Prichádzajúci hovor- pre správne vybavenie objednávky nezabudnite na zľavu a doručenie
  3. Vyplnenie dokumentu- štandardná forma vo forme asistenta

Ako použiť

  • Vytvorte vzory konverzácie operátora v konštruktore
  • Kompletná prispôsobiteľnosť - zobrazenie ľubovoľných polí na vyplnenie skriptu hovoru (údaje z dotazníka, na zadanie objednávky atď.)
  • Uverejnite odkazy na články internej databázy znalostí, aby operátor mohol odpovedať na akékoľvek technické otázky
  • Vytvárajte objednávky počas skriptu hovoru, zbierajte reklamácie, posielajte listy a meňte status potenciálnych zákazníkov
  • Dajte hviezdnym manažérom viac slobody v skripte hovoru. Takíto zamestnanci nemajú radi obmedzenia, ich výkon je vyšší, keď konverzácia nie je 100% obmedzená - vytvorte pre takýchto manažérov konverzačný skript, ktorý sa použije ako prompt-dotazník a prechod medzi blokmi bude voľný. Štatistiky dostanete aj za tieto hviezdy a nebudú sa cítiť „vyžmýkané“ konverzačným scenárom
  • Skontrolujte prácu operátorov podľa scenárov hovorov a výsledky kontroly zaznamenajte do osobitného dokumentu
  • Zbavte sa hackerských hovorov pomocou konkurenčných nastavení vykonávania skriptov
  • Posielajte listy s cenovými ponukami počas procesu volania, počas procesu vytvárajte sťažnosti od nespokojných zákazníkov

Skripty sú hlavným podsystémom "Usporiadať hovor!". Nižšie je trochu viac o jeho nastaveniach pomocou príkladu.

Príklad

Pre operátorov môže byť napríklad takáto úloha: „Musíte zavolať na zoznam čísel, vyradiť necielené kontakty a preniesť potenciály manažérom.“ K tomu si v systéme vytvoríme skript, načítame potenciálne obchody z xls, operátori budú prechádzať obchody podľa skriptu, vyradíme necieľové a cieľové presunieme na prácu manažérom. Najprv vytvoríme skript.

Vytvorte nový skript

  1. Vytvárame vývojový diagram tohto skriptu - čo povie operátor, aké hodnoty zvoliť a čo mu systém ponúkne ďalej
  2. Nastavili sme ďalšie polia skriptu - napríklad na každom bloku skriptu by malo byť viditeľné celé meno klienta a jeho spoločnosti
  3. Zadajte rýchle prechody z každého bloku. V každom bloku sa zobrazia tlačidlá na rýchle prechody (obsluha sa môže kedykoľvek opýtať „Aká ste firma?“ – v tomto prípade obsluha klikne na rýchly prechod, prečíta text bloku o firme a vráti sa na predchádzajúci blok)
  4. Nastavíme skript - bude skript logovaný, bude viditeľná schéma, či je potrebné použiť SIP, aké úlohy je potrebné vykonať počas skriptu atď.
  5. Prideľujeme mu prístupové práva – kto môže tento skript vidieť, vytvoriť pomocou neho nový hovor atď.

V blokovej schéme skriptu uvádzame, čo má operátor povedať, aké má klient možnosti odpovede a aké polia musí operátor v tejto fáze vyplniť.

  1. Text prejavu operátora. Môžete vložiť ďalšie podrobnosti z predchádzajúcich blokov skriptov alebo bežných polí. Dokáže formátovať text
  2. Tu sa nastavujú textové parametre – na snímke obrazovky je vidieť, že [Názov] sa bude vypĺňať z názvu firmy
  3. Nastavíme, či bol dosiahnutý cieľ, ak bol dosiahnutý tento blok, do akej fázy blok patrí („nadviazanie kontaktu“, „dosiahnutie sekretárky“ atď.) a aký výsledok sa dosiahol, ak sa tento blok dosiahol.

Blok skriptu môže mať ďalšie sémantické významy:

  • Môžete naň umiestniť ľubovoľné polia. Operátor si napríklad musí vybrať spôsob doručenia tovaru klientovi – vyzdvihnutie, kuriér v meste alebo medzimestská doprava. Kým operátor toto pole nevyplní, skript ďalej nepôjde. V schéme môžete uviesť, že ak ste vyplnili medzimestské, musíte ukázať jeden blok, ak kuriérom, potom ďalší.
  • Vytvorené atribúty bloku je možné niečím vyplniť. Napríklad v prvom bloku scenára nám bolo povedané meno režiséra a v poslednom bloku môžeme tieto informácie získať a zobraziť ich vo formulári operátorovi
  • Pri pohybe ďalej od bloku môžete vykonať niektoré akcie. Napríklad, ak klient povedal, že o nás vôbec nemá záujem a nemá zmysel „bojovať“, tak v potrebe nastavíme stav „Necielené“. Ak sme sa dostali na koniec skriptu a sme pripravení presunúť klienta na ďalšie oddelenie, potom nastavíme stav spoločnosti na „Vedieť“ namiesto „Nový“. Môžete zmeniť ľubovoľné polia, nielen tie, ktoré sú uvedené vyššie
  • Pre blok je možné nastaviť možnosti reakcie zákazníka – „Áno“, „Nie“, „Zavolať neskôr“, „Máme výberové konanie“, „Nemám záujem“ atď. V závislosti od možností môžete schému skriptu vetviť
  • Kým je spustený blok skriptu, môžete vytvoriť ďalšie prvky. Napríklad klient súhlasil s uvedením svojej e-mailovej adresy - potom mu obratom pošleme list z KP. Jednoducho naznačíme, že treba vytvoriť list, vyplniť ho podľa šablóny a odoslať na adresu klienta.

Nakoniec skončíme s niečím takýmto:

Operátorovi sa zobrazí formulár na spracovanie skriptu v ľudskej podobe " asistent". Napríklad jeden z blokov obvodu môže vyzerať takto:

  1. Text, ktorý sme napísali operátorovi
  2. Podrobnosti, ktoré musí vyplniť v tomto kroku
  3. Možnosti odpovede klienta
  4. Účel a úlohy scenára
  5. K dispozícii na každom bloku prechody do iných blokov
  6. Bežné polia skriptov
  7. Záznam vybraných odpovedí

Po vytvorení schémy skriptu môže operátor už začať volať – na pracovisku operátora (ak má skript oprávnenie vytvárať) klikneš na tlačidlo „Vytvoriť“, vyberieš požadovaný skript a napr. ďalšie telefónne číslo z tabuľky xls, pracujte na ňom:

V tejto fáze už operátori môžu pracovať podľa skriptu, ale je tu nepríjemnosť s preberaním kontaktov zo stola - to vedie k sérii typických chýb.

Stiahnite si kontakty z tabuľky Excel na všeobecné volanie

Nahráme nielen spoločnosti s ich kontaktnými údajmi, ale aj „potenciálne ponuky“ (aka „Potenciálni zákazníci“) v stave „Kvalifikovaný“. Nastavme skript tak, aby priebežne menil stav potenciálnych zákazníkov – z „Odmietnuté“ na „Vymenovaný“. Preto sa pozrieme na lievik pre túto základňu hovorov.

Vytvorme nastavenie načítania údajov:

  1. Súbor, z ktorého zhromažďujeme údaje
  2. Údaje, ktoré sa majú načítať do databázy
  3. Ako sa budú načítavať údaje?

V nastaveniach môžete určiť vyplnenie ľubovoľných detailov vytvorených objektov. Vytvoríme potenciálny obchod od firmy v stave "Kvalifikácia" a "Spustenie skriptu" - objekt pripravený pre operátora pracovať podľa skriptu, vyplníme projekt, aby sme neskôr mohli filtrovať výsledky hovoru do tejto databázy:

Operátor nevypĺňame, aby každý videl vytvorené prvky a mohol si ich vziať do práce. Vytvorené skripty budú dostupné prostredníctvom pracovisko operátora:

Operátor stlačí tlačidlo " Ďalšie" - systém vyberie ďalší skript v poradí a začne ho spracovávať. Takto:

  • Operátori majú vždy na očiach „aktuálne informácie“ – nedochádza k duplicitným hovorom
  • Klienti, ktorí po určitom čase požiadali o spätné zavolanie, sú pozastavení - takéto skripty sa zobrazujú v rovnakom okne s dátumom ďalšieho kontaktu.
  • Operátori vidia štatistiky kolegov o hovoroch - to ich motivuje k práci:

Operátori vidia svoje štatistiky podrobnejšie:

Ak sú operátori prefíkaní, predbiehajú zložité hovory alebo sa snažia „rezervovať“ čo najviac skriptov, potom môžete obmedziť vydávanie skriptov pomocou konkurenčných pravidiel. Môžete nastaviť nasledujúce obmedzenia:

  • Nie viac ako X skriptov za Y minút
  • Po vykonaní skriptu počkajte X minút
  • Nemôžete ponechať viac ako X skriptov čakajúcich na spracovanie

V tejto fáze budeme mať dobre rozvinutú základňu potenciálnych zákazníkov – vedľajších potenciálnych zákazníkov sa vylúči výber a relevantný stav sa pridelí tým hlavným. Práca operátorov je tu ukončená, teraz sú zaradení aj manažéri predaja.

Napojenie na manažérov procesov.

Vedúci obchodného oddelenia vstúpi do adresára spoločností, zavolaním vyberie len tie, ktoré sú kvalifikované a vymenuje zodpovedných manažérov v transakciách:

Manažér zadá potrebu jemu prideleného klienta a začne pracovať podľa potrieb klienta. Všetky interakcie sú zaznamenané na karte potreby:

Analýza výsledkov

Manažér vidí štatistiku každého operátora a konverziu každého skriptu:

Podľa stavu spracovaných potrieb môžete zostaviť lievik:

Vedomostná základňa

Do databázy znalostí môžete umiestniť články kategorizované. Pre každú kategóriu môžete nakonfigurovať prístup na zobrazenie a vytvorenie jednotlivých používateľov. Odkaz na článok možno umiestniť do obslužného programu skriptu.

Ako použiť

  • Vytvorte materiály o svojich produktoch a umiestnite na ne odkazy do konverzačného skriptu – vaši operátori potom budú môcť odpovedať na technické otázky zákazníkov
  • Umiestnite popisy použitia konverzačného skriptu do článkov a dajte ich novým zamestnancom na kontrolu

CRM

Malý systém pre prácu so vzťahmi so zákazníkmi. Obsahuje adresár spoločností (obsahuje odkaz na protistranu, ak je potrebné načítať „Dohodnúť hovor!“ do funkčnej konfigurácie), kontakty na tieto spoločnosti a potenciálne obchody. Manažéri pracujú na potenciálnych transakciách protistrán a zverejňujú ich podľa rôznych stavov. Predaje sa vytvárajú pre dokončené obchody a platba je kontrolovaná. Manažér na konci mesiaca vyhodnotí, koľko kontaktov bolo uskutočnených, aká odmena patrí generátorom olova a aké ukazovatele má každý z manažérov.

Ako použiť

  • Sledujte štatistiky a analýzy zákazníckych transakcií
  • Reflektujte všetky možnosti práce s klientmi
  • Nahrajte nových potenciálnych zákazníkov do hovoru
  • Riešte „zabudnutých“ a „stratených“ zákazníkov
  • Kontrolujte výkon služieb

Každá spoločnosť môže obsahovať jedinečné podrobnosti podľa typu činnosti:

Pre každú spoločnosť (a potenciálnu dohodu) sa zobrazuje história interakcií:

Všetky nadchádzajúce interakcie sa zobrazujú v „Feed“, každý manažér k nim má kedykoľvek rýchly prístup. Feed zobrazuje aj komentáre, ktoré vám boli zaslané – napríklad logistik zanechá v požiadavke klienta komentár „Keď doručujeme“ a osoba zodpovedná za dodávku to vidí vo svojom feede.

Manažér môže hodnotiť prácu svojich podriadených z hľadiska počtu kontaktov s klientmi. Koľkokrát kto volal, písal listy, komunikoval v messenger, s akými typmi kontaktov sa interagovalo.

Poštový klient

Subsystém zabezpečuje nielen odosielanie a prijímanie pošty. Existuje niečo ako poštový filter, ktorý pomáha určiť, čo je potrebné urobiť s konkrétnym listom. Na svojej stránke máte napríklad formulár spätnej väzby, akonáhle ho používateľ vyplní, na vašu e-mailovú adresu bude odoslaný email s textom odvolania. Filter v "Dohodnúť hovor!" možno nakonfigurovať týmto spôsobom - "ak list prišiel z adresy [chránený e-mailom], potom je potrebné z textu listu získať celé meno, potrebu klienta a na základe týchto údajov vytvoriť nový potenciálny obchod.“ Môžete teda určiť pravidlo, že list spadá pod filter a filter akcie pre tento list.

Na to slúžia:

  • Podrobnosti listu - ďalšie polia listu, napríklad „Meno“, „Doručovacia adresa“, „Telefón“, „Text správy“
  • Vyplnenie údajov z listu – pravidlá, podľa ktorých systém „dostane“ informácie z textu listu do detailov
  • Akcie filtra – aké nové e-mailové objekty je potrebné vytvoriť a ako ich vyplniť

Ako použiť:

  • Pre týchto potenciálnych zákazníkov nastavte automatický zber aplikácií zo stránky a priraďovanie manažérov hovorov podľa scenára konverzácie
  • Premeňte požiadavky na produkty (napríklad prichádzajú na konkrétny e-mail) na dokument „Požiadavka zákazníka“, postupujte podľa dokumentu správnym smerom
  • Ovládajte prácu manažérov s klientmi poštou priamo z databázy

Účtovanie dokladov

Umožňuje opraviť dokumenty v systéme podľa ich typov, obmedziť prístupové práva k nim. Môžete napríklad vytvoriť dokument typu „Reklamácia kvality“ a poskytnúť k nemu prístup iba oddeleniu „QC“. V tomto dokumente budete mať niekoľko nových detailov, ako napríklad „Text nároku“, „Dátum podania“, Výsledok“ a iné. Alebo môžete od klientov zbierať „Žiadosti o zamestnanie“, prikladať k nim súbory a preposlať ich stavy („Nespustené“, „Prebieha“, „Vypočítané“, „Súhlasené“, „Odmietnuté“).

Ako použiť

  • V nastaveniach poštových filtrov môžete vytvárať žiadosti a požiadavky na produkty priamo z listov klienta
  • V spojení s konverzačnými scenármi môžete generovať dokumenty priamo počas scenára hovoru (napr. klient je nespokojný s kvalitou služieb – vytvoríme „Reklamáciu“, ktorú následne spracuje oddelenie QCD)

Vyzerá to takto:

  1. Stavy dokumentov
  2. Typ dokumentu, ktorý určuje prítomnosť podrobností v dokumente
  3. Ďalšie podrobnosti o dokumente

Virtuálny stroj, ktorý vykonáva skripty v 1C:Enterprise.

Inými slovami, toto je schopnosť písať programy v 1C bez použitia platformy 1C:Enterprise.

A to nám umožňuje nakoniec vziať hotové kusy kódu napísané v konfigurátore a preniesť ich do programu OneScript s minimálnou adaptáciou.

A hoci to podľa vývojárov nie je hlavným cieľom projektu, ale vidím záujem pripojiť sa z programu OneScript k databáze 1C prostredníctvom externého pripojenia a spustiť nejaký užitočný kód.

Pýtate sa – prečo je to vôbec potrebné? Prečo nenapísať rovnaký kód pri spracovaní a nespustiť ho cez 1s štandardným spôsobom?

Ale hovoríme o automatizácii a tu sú základné problémy:

  • neexistuje spôsob, ako zaručiť, že základňa spustí a vykoná v nej kód nejakého externého spracovania (kto sa s tým v praxi stretol, vie, že pokaziť sa môže príliš veľa, počnúc tým, že spracovanie jednoducho nedosiahne spustenie do nejakého modálneho okna)
  • neexistuje jednoduchý spôsob, ako generovať takéto spracovanie programovo, ale možno to budeme potrebovať, keď príde na spustenie užitočného kódu cez skupinu báz
  • neexistuje jednoduchý spôsob, ako zaznamenať vykonanie tohto spracovania

Všetky tieto problémy rieši OneScript.

Prečo písať a spúšťať tieto skripty v aktualizátore?

Pretože aktualizátor preberá množstvo zložitých vecí na zjednodušenie písania takýchto skriptov z hľadiska interakcie s databázami.

Totiž.

Zoznam podkladov na spracovanie

Priamo v aktualizátore si vyberieme, pre koľko databáz potrebujeme spustiť skript, ktorý sme napísali:

Odovzdanie základných parametrov

Pri spustení skriptu mu samotný aktualizátor odovzdá potrebné parametre s informáciami o aktuálnej databáze:

Všetky tieto parametre môžeme použiť v našom skripte, vďaka čomu je univerzálny na spustenie na ľubovoľnom počte vybraných báz.

Príklady takýchto skriptov nájdeme v zozname aktualizačných šablón:

Predarchivácia databázy

Ak je to potrebné, aktualizátor zabezpečí vytvorenie záložnej kópie pred spustením skriptu:

Táto záloha bude konzistentná so všeobecným systémom archivácie, to znamená, že ju možno „vyladiť“ aj v pokročilých nastaveniach aktualizátora. Takáto kópia bude vždy označená ako „pred nebezpečnou operáciou“.

Zamknúť, odomknúť základňu

Ak je to potrebné, aktualizátor vykoná úplné uzamknutie databázy pred spustením skriptu a odomkne sa po:

A to je jedna z kľúčových „funkcií“ aktualizátora - koniec koncov, napríklad správne vykonanie blokovania databázy servera je vo všeobecnosti dosť netriviálna úloha.

Je potrebné „vyriešiť“ aktuálne pripojenia používateľov, administratívne pripojenia, úlohy na pozadí. A to všetko prostredníctvom komunikácie priamo s klastrom 1s.

Ukladanie prehľadov

Aktualizátor ukladá históriu vykonávania takýchto skriptov do správcu zostáv.

Ako vo všeobecnosti:

Takže podrobne:

Upozornenie e-mailom

Ak máte nakonfigurované e-mailové upozornenia (všetky alebo iba na chyby)...

Potom vám prídu informácie o vykonávaní skriptov (vrátane podrobných správ) rovnako ako informácie o vykonávaní iných operácií z aktualizátora:

Spustite skript podľa plánu

Cloud Monitoring

Pri ukladaní skriptu máme aj možnosť sledovať jeho prácu v cloude – podľa mňa úplne úžasná príležitosť. To je o cloudovom monitorovaní.

Spustenie viacvláknového skriptu

Ako spustiť skript paralelne pre niekoľko databáz je podrobne popísané.

Čo je ešte užitočné naučiť sa pred písaním scenárov?

No, samozrejme, samotný jazyk 1C. Kde bez neho...

V prvom rade je tu táto jazyková príručka 1C s príkladmi:.

Tiež stojí za to prejsť si rozdiely medzi OneScript a štandardným jazykom 1C. Je ich málo (odkaz).

Ako vymyslím vlastné scenáre?

Pre inšpiráciu vám najprv odporúčam analyzovať a pochopiť skripty zo šablón aktualizátora. To vám dá veľa.

A ak potrebujete nápad na napísanie skriptu, ktorý bude užitočný pre stovky ďalších používateľov, potom vás žiadam - napíšte mi o tom akýmkoľvek spôsobom, ktorý vám vyhovuje. Mám obrovské množstvo nápadov, ale času a možností je málo.

Za týmto účelom som na githube rozbehol špeciálny projekt, kde zbieram užitočné skripty od používateľov updateru, aby ich pri svojej práci mohlo využiť čo najviac ľudí.

Chceli by ste mi poslať váš scenár? Prosím ťa o .

s pozdravom Vladimír Milkin(učiteľ a vývojár).