Overførsel af information fra serveren. Overførsel af information fra serveren Processtatusmeddelelse
I programmer på 1C:Enterprise platformen kan en besked vises til brugeren på forskellige måder.
1. Metode Vis Advarsel.
Vis Advarsel(< ОписаниеОповещенияОЗавершении> , < ТекстПредупреждения> , < Таймаут> , < Заголовок> )
Når du bruger dette design, vises et advarselsvindue i midten af programgrænsefladen.
Parametre:
BeskrivelseComplete Alerts(valgfri)
Type: BeskrivelseAlerts. Indeholder en beskrivelse af den procedure, der vil blive kaldt efter lukning af advarselsvinduet med følgende parametre: Yderligere parametre - den værdi, der blev angivet ved oprettelse af Alert Description-objektet. Hvis parameteren ikke er specificeret, kaldes ingen procedure efter afslutning.
Advarselstekst(påkrævet)
Type: String; Formateret streng. Advarselstekst.
Timeout (valgfrit)
Type: Nummer. Det tidsinterval i sekunder, hvor systemet venter på et brugersvar. Når intervallet udløber, lukkes advarselsvinduet. Hvis parameteren ikke er angivet, er ventetiden ubegrænset. Hvis parameteren har negativ værdi, vil der blive kastet en undtagelse. Standardværdi: 0.
Titel (valgfrit)
Type: String. Indeholder titlen på advarselsvinduet. Beskrivelse: Viser et advarselsvindue, men venter ikke på, at det lukker.
Tilgængelighed: Tynd klient, webklient, tyk klient, mobilapplikation (klient).
Bemærk: Hvis en kode skal udføres, efter at brugeren lukker advarselsvinduet, skal den placeres i en separat modulprocedure og beskrives i en parameter.
2. Metodeadvarsel.
Et advarselsvindue vises i midten af programgrænsefladen. Men hvis konfigurationsegenskaben BrugsmådeModaliteter er indstillet til Brug ikke, så virker metoden ikke.
Tilgængelighed: Tynd klient, webklient, mobil klient, tyk klient, mobilapplikation (klient).
3. Metode ShowUserAlert.
ShowUserAlert(< Текст> , < ДействиеПриНажатии> , < Пояснение> , < Картинка> , < СтатусОповещенияПользователя> , < КлючУникальности> )
Når du bruger denne metode, vises en meddelelse i nederste højre hjørne af grænsefladen.
Tilgængelighed: Tynd klient, webklient, tyk klient.
4. Rapporteringsmetode.
Rapport(< ТекстСообщения> , < Статус> )
Tilgængelighed: Tynd klient, webklient, mobilklient, server, tyk klient, ekstern forbindelse, mobilapplikation (klient), mobilapplikation (server).
5. Objekt Besked til bruger.
Designet til at gemme meddelelsesparametre, der skal vises for brugeren. Hvis beskeden endnu ikke er blevet vist til brugeren (dette kan ske, når du arbejder på serversiden, i et baggrundsjob, ekstern forbindelse eller webtjenester), kan du få de akkumulerede beskeder ved hjælp af metoden Modtag beskeder til bruger.
Egenskaber: Destinations-id(TargetID); DataKey; Felt; DataPath(DataPath); Tekst.
Metoder: Besked; Indstil Data(SetData).
Meddelelsen vises i bunden af grænsefladen på en linje.
Message = New MessageToUser(); Besked. Tekst ="Ikke nok nomenklatur" ; Besked. Felt =
Artiklen fortsætter serien af artikler "Første skridt i udviklingen på 1C".
I det vil vi se på metoderne til at informere brugeren, der er til stede i 1C:Enterprise-platformen 8, og også fokusere din opmærksomhed på nogle funktioner i driften af disse mekanismer, disse funktioner er relateret til modalitetens brugsmåde .
Anvendelighed
Artiklen diskuterer funktionaliteten:
- Interface i "Version 8.2" versionen til konfigurationen udviklet på 1C:Enterprise platformen 8.2.19.130
- Taxigrænseflade til konfiguration udviklet på 1C:Enterprise platformen 8.3.4.496 til 8.3.9+
- Taxigrænseflade til en konfiguration udviklet på 1C:Enterprise platformen 8.3.10-8.3.11
Sådan viser du en besked til brugeren i 1C
Visning af meddelelser i brugertilstand løser en række problemer:
- afspejling af forløbet af den aktuelle proces (viser stadiet for udførelse af processen; viser de beregnede værdier opnået under driften af algoritmen);
- visning af fejl til brugeren for mulig korrektion;
- udstedelse af anbefalinger;
Meddelelsestyper:
- Terminatorer, som stopper udførelsen af programmet og ikke tillader det at fortsætte, før brugeren læser denne besked og udfører visse handlinger. For eksempel vil brugeren blive præsenteret for et spørgsmål på skærmen, som de skal svare Ja eller Nej til. Indtil brugeren svarer, udfører programmet ikke yderligere handlinger;
- introduktionsmeddelelser, der blot vises for brugeren og tillader yderligere arbejde (dvs. bruges i alarmtilstand).
Opsigelsesmeddelelser skal være fejlmeddelelser og indledende meddelelser: anbefalinger, meddelelser om den aktuelle fase af processen og visning af beregnede værdier (fejlretningsudskrivning).
Introduktionsmeddelelser er beregnet til at give brugeren nogle oplysninger.
Det er nødvendigt, at brugeren gør sig bekendt med det og eventuelt foretager nogle handlinger, der er beskrevet i denne meddelelse.
Det er meget vigtigt, at brugeren rent faktisk læser disse beskeder, så de bør kun indeholde vigtige oplysninger.
Test- og fejlretningsmeddelelser bør ikke udsendes til brugeren, fordi før eller siden vil han begynde at ignorere absolut alle beskeder.
I konceptet med en administreret grænseflade har tilgangen til at udstede en besked ændret sig noget. Den er nu bundet til den form, den opstod i. Den kan ikke længere lukkes, så teksten er helt usynlig.
Du kan ikke frigøre en beskedboks fra en formular.
Funktionssyntaks:
Rapport (<Текст сообщения>, <Статус>)
Dem. den første parameter er selve teksten.
Den anden parameter (meddelelsesstatus) er valgfri. Du kan angive værdier for status: Normal, Vigtig, Meget Vigtigt osv.
Denne værdi bestemmer, hvilket ikon der skal være ved siden af beskeden. Dette virker dog kun i den normale grænseflade.
I det administrerede grænsefladekoncept er ikonet altid i form udråbstegn, kan det ikke omdefineres.
Faktum er, at hvis en besked genereres på tidspunktet for skrivning af et bibliotekselement, kan følgende situation opstå.
Brugeren klikker på en knap Gem og luk, i dette tilfælde vises meddelelsen i det tilsvarende vindue (til højre for formularen).
Men formularen lukker øjeblikkeligt, og brugeren vil ikke se, at der blev vist nogen information for ham.
Derfor anbefales det i konceptet med en administreret applikation at vise introduktionsmeddelelser ved hjælp af såkaldte alarmer. Et eksempel på forkert brug af en funktion Rapport præsenteret i figuren.
Men funktionen Rapport kan bruges til at vise information om visse fejl, for eksempel på tidspunktet for dokumentpostering.
I dette tilfælde kan systemet informeres om, at formularen ikke skal lukkes og vise brugeren, hvilke fejl der opstår ved bogføring af dokumentet.
Fungere Rapport fuldt understøttet i platform 8.3. Det kan bruges, og det vil virke (både i filversionen og i klient-serverversionen).
Men det skal også bemærkes, at funktionen Rapport Der er videreudvikling– dette er en meddelelsesklasse for brugeren, som gør det muligt, udover at vise en meddelelse, at binde den kontekstuelt til alle formelementer.
For eksempel kan en fejlmeddelelse knyttes til et formularelement, hvilket er meget tydeligt for brugeren. Vi vender tilbage til at overveje dette spørgsmål lidt senere. Fungere Rapport der er en interessant funktion.
Programkoden i Platform 8.3 kan således udføres både på klientsiden og på serversiden.
I dette tilfælde er klientprogramkoden ansvarlig for interaktion med brugeren, dvs. På klientsiden åbnes formularer og rapporter vises.
Forskellige dialogdokumenter vises også kun på klienten. De kan ikke udføres på serveren, fordi serveren ikke har mulighed for at interagere med brugere.
Men funktionen Rapport kan udføres både på klientsiden og på serversiden. I dette tilfælde brugen af metoden Rapport på serveren betyder slet ikke, at beskeden vil blive vist på serveren, der er simpelthen ingen steder at vise dem.
Dette betyder, at hvis vi viser en meddelelse i serverproceduren ved hjælp af denne metode, vil de akkumulere i en eller anden buffer, og de vil kun blive vist på skærmen, når serverproceduren slutter og vender tilbage til klienten.
På dette tidspunkt vil systemet anmode om data fra bufferen og vise dem på skærmen.
Det samme gælder for klassen Besked til bruger. Figuren viser et eksempel på brug af metoden Rapport på serversiden.
Som et resultat af at bruge metoden Rapport på serversiden blev meddelelser vist på skærmen på klientsiden.
En advarselsmekanisme er nødvendig for at informere brugeren om, at der er sket "noget" i systemet, og at "noget" kræver brugerens opmærksomhed. Advarsler genereres af to scenarier:
- Af platformen selv, når du interaktivt optager eller ændrer et objekt
- Af udvikleren, når en metode kaldes i koden .
Selve meddelelsen er et lille vindue, der som regel vises i nederste højre hjørne og informerer om den gennemførte handling. Inden for et par sekunder falmer den gradvist og forsvinder. På samme tid, hvis du holder musemarkøren over meddelelsen, forsvinder den ikke, og du kan læse den omhyggeligt.
Derudover kan advarsler tilgås i det tilsvarende område af informationspanelet (knappen "Historik" nederst til venstre i ansøgningsformularen i grænsefladeindstillingen "Version 8.2").
For at oprette dine egne advarsler skal du bruge den globale kontekstmetode ShowUserAlert(). Dens syntaks før version 8.3.10 er præsenteret nedenfor:
Vis brugeradvarsel (<Текст>, <НавигационнаяССылка>, <Пояснение>, <Картинка>)
Den første parameter indeholder den tekst, der vil blive vist i meddelelsen.
Derefter kan du som den anden parameter videregive et bestemt navigationslink til ethvert element i informationsbasen (det element, der svarer til teksten i vores besked). Når en bruger klikker på en advarsel, vil linket blive fulgt.
Ved hjælp af den tredje parameter kan du sende en forklaring til beskeden, dvs. lidt udvidet beskrivelse.
Du kan også tildele et billede, der viser meddelelsesstatus.
Det skal bemærkes, at alle disse parametre er valgfrie. Nedenfor er et eksempel på brug af denne metode (i konfiguratoren og i brugertilstand i "Version 8.2"-grænsefladeindstillingen).
I versionen af platformen 8.3.10.216 til "Taxi"-grænsefladen blev notifikationsmekanismen væsentligt forbedret for at forbedre anvendeligheden af både tynde klienter og webklienter. Af denne grund er de parametre, der overføres til metoden, også ændret ShowUserAlert(). Nu ser syntaksen sådan ud:
ShowUserAlert(<Текст>, <ДействиеПриНажатии>, <Пояснение>, <Картинка>, <СтатусОповещенияПользователя>, <КлючУникальности>)
Det kan ses, at den anden parameter, tidligere kaldet Navigationslink, fik et nyt navn HandlingNår der klikkes. Dette skyldes, at det nu er muligt at sende ikke kun en streng med et navigationslink, men også en beskrivelse af advarslen. Dette er illustreret på skærmbilledet nedenfor:
Som det kan ses af eksemplet, har vi nu mulighed for programmæssigt at behandle et klik på et notifikationsvindue, i henhold til den logik, der er nødvendig.
Næste parameter Brugeralarmstatus dukkede op for første gang. Det angiver status for advarslen (Oplysninger eller Vigtigt).
I tilfælde af vigtig mulighed, hvis brugeren ikke har svaret på beskeden, kan den læses gennem Notifikationscenteret, efter at den er skjult fra skærmen (mere om det nedenfor). I tilfælde af informationsmuligheden slettes meddelelsen uden at blive gemt i dette center. Lad os omskrive koden fra vores eksempel som nedenfor:
Efter at have udført kommandoen får vi omtrent denne visning af programvinduet:
En knap med et klokkeikon er dukket op i værktøjslinjen, som kalder det ovennævnte meddelelsescenter frem. Det akkumulerer nye vigtige advarsler, som brugeren endnu ikke har reageret på.
Hvis der er advarsler i centret, vises en lille orange prik ved siden af det for at tiltrække brugerens opmærksomhed. Brugeren kan åbne Notifikationscenteret, læse teksten og om nødvendigt foretage nogle handlinger.
Fra Centeret ryddes advarslen ved at klikke på ryd-knappen, men hvis der er en handling forbundet med advarslen, så forsvinder den også, så snart brugeren klikker på teksten i beskeden.
Og endelig var den sidste tilføjede parameter Nøglen til unikhed. Du kan bruge den til at finde advarslen, der vises på skærmen, og ændre den. Hvis der ikke er nogen advarsel med denne parameter, vil en ny advarsel blive vist.
Som du kan se, er mulighederne ved den tilsvarende metode blevet endnu større! Men det er ikke alle ændringerne i meddelelsesmekanismen.
Som du måske allerede har bemærket, har deres udseende ændret sig. Advarsler ser nu mere moderne og ergonomiske ud, men de kan ikke flyttes rundt på skærmen eller ændre størrelsen. Bemærk venligst, at i vores eksempel passede meddelelsesteksten simpelthen ikke helt ind i selve vinduet, og brugeren vil kun kunne læse den i sin helhed ved at åbne meddelelsescenteret. Derfor bør du ikke skrive en stor mængde tekst i notifikationsteksten.
Nye funktioner inkluderer også den samtidige visning af op til tre advarsler på skærmen.
Dette afslutter vores bekendtskab med softwaregenerering af advarsler. Husk dog, at advarsler ikke kun genereres af udvikleren programmatisk, men også af platformen selv på tidspunktet for interaktiv optagelse eller ændring af et objekt. Og ofte forårsager denne kendsgerning misforståelser primært blandt nybegyndere: hvorfor er disse serviceadvarsler nødvendige, som i øvrigt ikke kan deaktiveres?
Lad os forestille os dette simpel situation: Brugeren har indstillet et filter i en eller anden liste for nemheds skyld. Lad os sige, at han gjorde dette i form af en liste i nomenklaturbiblioteket. Så efter nogen tid besluttede jeg at introducere et nyt element kaldet "Stol", som ikke svarer til det tidligere installerede filter. Går ind i det, skriver det ned og...? Og han kan ikke se det på listen. Hvad vil den gennemsnitlige bruger gøre? Selvfølgelig vil han indtaste det en anden gang, men vil ikke se det igen. Dette kan efterfølges af en tredje, fjerde, femte gang. Når han bliver træt af at gå ind i det samme igen og igen, vil han endelig spørge dig: hvor bliver alting af?
Det er netop derfor, platformen viser disse serviceadvarsler, der informerer brugeren om, at deres handling er gennemført. I vores eksempel, på tidspunktet for interaktiv optagelse, vil brugeren se følgende meddelelse:
Opsigelsesmeddelelser
Opsigelsesmeddelelser er de meddelelser, der ikke vil tillade arbejde, før brugeren udfører bestemte handlinger, dvs. indtil den behandler beskeden.
Vi vil tale om muligheden for at bruge opsigelsesmeddelelser i Platform 8.3 lidt senere (i på det seneste De forsøger ikke at bruge dem, så det betragtede eksempel er mere relevant for platform 8.2).
Der er to metoder til at udstede opsigelsesmeddelelser Advarsel Og Spørgsmål. Advarsel forskellig fra Spørgsmål fordi den har en enkelt knap OK.
Et spørgsmål kan angive forskellige sæt svarmuligheder ( Ikke rigtig, JaNejAnnuller, OK, OKAnnuller, Gentag Annuller, Afbryd GentagSkip), som er angivet ved hjælp af parameteren.
Lad os vise en advarsel ved hjælp af linjen (for eksempel i et administreret applikationsmodul):
Advarsel(“Basen vil nu være åben”);
For at åbne et administreret applikationsmodul skal du vælge objektet i konfigurationstræet Konfiguration, ring kontekstmenu og vælg element Åbn et administreret applikationsmodul.
I dette tilfælde, når applikationen startes, vil der blive vist et vindue, der er modalt. Et modalt vindue overlapper alle vinduer, der findes i applikationen. Indtil vi behandler dette vindue, er der ingen yderligere handlinger mulige.
Funktionen fungerer på samme måde Spørgsmål.
Syntaks:
Spørgsmål(<ТекстВопроса>,<Кнопки>,<Таймаут>,<КнопкаПоУмолчанию>,<Заголовок>,
<КнопкаТаймаута>);
Kun de to første parametre er nødvendige. For den anden parameter er datatypen sammensat ( DialogtilstandSpørgsmål eller Listeværdier). Tredje parameter ( <Таймаут> ) karakteriserer det tidsinterval i sekunder, hvor systemet vil vente på et brugersvar.
Når intervallet udløber, lukkes spørgsmålsvinduet. Lignende parameter( <Таймаут> ) er også tilgængelig for funktionen Advarsel.
Som et eksempel på brug af funktionen Spørgsmål Du kan bruge følgende kode, skrevet i et administreret applikationsmodul:
Bemærk venligst, at disse metoder ( Advarsel Og Spørgsmål) er ikke tilgængelige på serveren. Og det er logisk, fordi grænseflademetoder ikke kan udføres på en server, hvor der ikke er nogen bruger.
Funktioner ved brug af modale vinduer i platform 8.3
I platform 8.3 er der driftstilstande med og uden modalitet. Standardindstillingen er Brug ikke modalitetstilstand.
I dette tilfælde er brugen af opsigelsesmeddelelser umulig. Hvis det er nødvendigt at bruge opsigelsesmeddelelser (funktioner Advarsel Og Spørgsmål) bør du ændre værdien af konfigurationsegenskaben på Bruge.
Modalvinduet vises helt øverst, og blokke fungerer med andre vinduer, indtil handlingerne med modalvinduet er afsluttet. Derudover stopper udførelsen af programkoden på det punkt, hvor dette vindue kaldes. Kodeudførelsen fortsætter kun, efter at det modale vindue er lukket.
For det første opstår der problemer med at bruge modale vinduer til mobilapplikation. For det andet implementeres vinduesmodalitet i browseren ved hjælp af separate pop op-vinduer.
Pop op-vinduer er ofte deaktiveret af standardbrowserindstillinger. Brugeren skal tvinges til at indstille tilladelsen for disse vinduer.
Browsere til tablet-computere og telefoner understøtter i de fleste tilfælde slet ikke pop-up-vinduer.
For at erstatte funktioner Spørgsmål Og Advarsel der er udviklet nye metoder: VisSpørgsmål, Vis Advarsel.
Disse metoder giver dig mulighed for at kalde et vindue, men stopper ikke udførelsen af programkoden. Teknisk implementeres dette ved at danne et pseudo-vindue inde i det overordnede vindue. Pseudo-vinduet overlapper ikke det overordnede vindue. Efter at have åbnet et sådant vindue, fortsætter koden med at udføre.
Modtagelse og behandling af brugerindtastede værdier udføres i en separat procedure, som kaldes, når dialogboksen lukkes.
Funktions syntaks Vis Advarsel:
Vis Advarsel(<ОписаниеОповещенияОЗавершении>, <ТекстПредупреждения>, <Таймаут>, <Заголовок>)
Parameter <ОписаниеОповещенияОЗавершении> (valgfri)
Datatype: BeskrivelseAlerts.
Indeholder en beskrivelse af den procedure, der vil blive kaldt, efter at advarselsvinduet er lukket.
Funktions syntaks VisSpørgsmål:
Vis spørgsmål(<ОписаниеОповещенияОЗавершении>, <ТекстВопроса>, <Кнопки>, <Таймаут>, <КнопкаПоУмолчанию>, <Заголовок>, <КнопкаТаймаута>)
De første tre parametre er nødvendige.
Nedenfor er et eksempel på brug af funktionen.
Klasse MessageToUser
Grundlæggende bekvemmelighed for beskedklassen Besked til bruger er, at dette er et kontekstuelt budskab (i modsætning til metoder Advarsel Og Spørgsmål).
Beskeder kan knyttes til et bestemt skærmelement. Dette objekt er også tilgængeligt på serveren.
Bemærk, at dette objekt først skal oprettes. For eksempel: Message = New MessageToUser;
Således skaber vi en instans af dette objekt.
For det andet skal du angive beskedteksten i en separat egenskab.
For det tredje i ejendommen Felt Du kan angive hvilket formularelement denne meddelelse skal knyttes til.
Opmærksomhed! For at binde til det ønskede formularfelt skal du være opmærksom på initialiseringen af egenskaber PathToData Og Datanøgle. For et dokument, når du placerer kode i et objektmodul, kan du skrive:
Message.DataPath = "Objekt";
Message.DataKey = ThisObject.Link;
For at åbne dokumentmodulet skal du i vinduet til redigering af objekt (dokument) gå til fanen Andre tryk på knappen Objektmodul.
Til eksperimentet vil vi placere koden i objektmodulet i et dokument.
Nedenfor er resultatet opnået i brugertilstand for Platform 8.3.
Det skal bemærkes, at meddelelser udsendes ved hjælp af det nye systemobjekt Besked til bruger i det almindelige tilfælde ophører de ikke. Dem. systemet vil tillade brugeren at fortsætte yderligere handlinger uden at reagere på de viste beskeder.
Men for det første er disse beskeder ret mærkbare. For det andet vises meddelelser sædvanligvis til brugeren på tidspunktet for registrering af elementer i mapper eller udsendelse af dokumenter, dvs. når nogle kontroller udføres. Og hvis der blev opdaget fejl, vil brugeren se de samme meddelelser.
Følgelig, når der opdages fejl, annulleres transaktionen, dvs. det er forbudt at skrive et bibliotekselement, eller at poste et dokument er forbudt.
Der opstår således en slags emulering af opsigelsesmeddelelsen. Fordi handlingen annulleres, indtil brugeren reagerer på den indtastede besked, vil det være umuligt at gennemføre handlingen, for eksempel at bogføre et dokument.
Men på den anden side er det muligt at lukke dokumentet uden at udføre det, uden at reagere på beskeden på nogen måde. Derfor afsluttes disse meddelelser til brugeren ikke.
Behandlingsstatusmeddelelse
Der er en speciel funktion, som du kan bruge til at vise det omtrentlige forløb af en proces.
Syntaks: Tilstand(<ТекстСообщения>, <Прогресс>, <Пояснение>, <Картинка>)
Parametre:<ТекстСообщения>Og<Пояснение>– valgfrit, skriv – Linje.
Teksten vises på en særlig statuslinje.
<Прогресс>Parameteren er også valgfri, men visuel.
Type: Antal. Fremskridtsindikatorværdi (fra 1 til 100).
<Картинка>også en valgfri parameter.
Ved behandling af enhver hændelse kaldes periodiske kald af en funktion som:
I dette tilfælde kan etiketterne ændre sig, og værdierne for parameteren Progress kan ændre sig.
En funktion kan kaldes fra én procedure (funktion) eller fra flere. På denne måde kan du spore processens udførelsesstatus.
Hvis du vil se nærmere på notifikationsmekanismen, skal du stoppe lige nu og læse vores ny artikel Visning af udviklingen af langvarige operationer i 8.3.10. Det forklarer, ikke længere på niveau med en begynder, alle finesser og faldgruber ved driften af denne mekanisme.
Vi er ved at afslutte vores introduktion til måder at informere brugeren på. Vi håber, at du har forståelse for, i hvilke situationer den ene eller anden metode skal bruges.
Jeg vil gerne endnu en gang henlede din opmærksomhed på, at hvis din konfiguration (version 8.3.3+) involverer arbejde ved hjælp af en webklient, så:
- på konfigurationsniveauet skal modalitetstilstanden indstilles til "Brug ikke"
- Koden skal bruge metoder fra den asynkrone brugerinteraktionsmodel. Sådanne metoder begynder med ordene Vise eller Begynde.
Du kan læse mere om at nægte at bruge modale vinduer i 1C:Enterprise 8.3-platformen i den sidste artikel i serien. Og vi går videre og begynder endelig at studere den længe ventede Taxi-grænseflade, som allerede er blevet nævnt mere end én gang i vores materialer.
Denne artikel er en meddelelse om ny funktionalitet.
Det anbefales ikke at bruge indholdet af denne artikel til at lære ny funktionalitet.
Fuld beskrivelse ny funktionalitet vil blive leveret i dokumentationen for den tilsvarende version.
Fuld listeændringer i ny version findes i filen v8Update.htm.
Implementeret i version 8.3.11.2867.
Under en lang serveroperation ønsker brugeren altid at se forløbet af dens eksekvering på klienten. For at estimere, hvor lang tid der er tilbage til det er færdigt, eller hvor hurtigt det er færdigt. For at implementere dette er det nødvendigt på en eller anden måde at overføre information fra serveren til klienten. Men både før og nu sker interaktion mellem klient- og serverdelene af 1C:Enterprise kun på klientens initiativ. 1C:Enterprise-serveren kan selv efter eget skøn ikke kalde nogen klientapplikation og overføre information til den.
Første ting først. For "normale" it-tjenester eksisterer dette problem ikke. Folk med erfaring finder i praksis ud af, hvorfor det er dårligt at placere andre opgaver på terminalservere og ikke gør det. Men vi forstår alle godt, at der er små virksomheder, og der er altid dem, der lige er startet og derfor ikke har denne erfaring. Derfor er det muligt, at selv en anden kan finde forklaringen banal, men den skal udtrykkes.
Lad os overveje at kombinere terminalen med andre serverroller på "begge" sider.
1. "Til kombination."
Hoved RIGTIG grund at kombinere roller betyder at spare penge. Og for at være præcis - TILSYNENDE besparelser ved start af drift.
Selvfølgelig fremfører mange tilhængere andre argumenter. Men som regel bliver de i sidste ende stadig "konverteret" til billighed. Forresten, hvad der vil ske efter operationens start i dette øjeblik, beregner fortalerne for kombinationen ikke godt - positionen er enkel - "vi vil bryde igennem på en eller anden måde."
Før vi går videre til den modsatte sides argumenter, lad os dykke lidt dybere ned i teorien.
Der er sådan noget som udstyrs strømreserve i spidsbelastningsmomenter. Desværre er det ikke indlysende for mange administratorer, at når han ser på task manageren, ser han et øjebliksbillede (adskillige minutter) af den aktuelle arbejdsbyrde og ser ikke "peaks". Og han vil ikke se det.
For forskellige serverroller kan den maksimale amplitude mellem "peak" og gennemsnitsværdien variere meget. I gennemsnit for et hospital er terminalserverrollen karakteriseret ved den største forskel mellem spidsbelastning og gennemsnitlig belastning. Du kan give en betinget forklaring, men den er betinget: Manuel indtastning af data (et dokument hvert femte minut) er meget svært at indlæse noget som helst på 1C klientsiden, da datamanipulation, beregning osv. kører på en anden server (1C server og DB). Dem. Brugere, der laver noget i hånden, og det er det meste af arbejdsdagen, belaster ikke terminalserveren meget. Men når en lokal opgave ikke opstår for hele dagen - kopier en film, download en distribution, download data til en klient eller download porno via torrent - alt dette æder ressourcer ret godt, omend ikke i lang tid, men ofte flere processorkerner er fuldstændig indlæst. Der er også et antivirus, som ikke skal være på 1C-serveren (hvor brugerne ikke har lokal adgang), men antivirussen skal være på terminalserveren. Også på terminalserveren i god form de seneste år der skal være en anti-kryptering installeret. Sådanne "ting", selvom ikke hele tiden, begynder nogle gange at tjekke noget - en ny fil, et portangreb osv. Generelt kalder du det, hvad du vil, men fra tid til anden er der situationer på terminaler, især når hardwaren er overbelastet. Dette er en terminal terminal pull - kun erfarne administratorer gør dette, balancerer forbindelser og belastning. Jeg taler ikke om dfss, ressourcekvoter, virtualisering osv. afbryde den maksimale hastighed for enhver strømning.
1. "Til nedrivning." Det viser sig, at vi ikke kun skal tale om at regulere belastningen mellem rollerne. Det er nødvendigt at regulere belastningen mellem terminalbrugere. Og hvis antallet overstiger, hvad der er rimeligt for én server, er det nødvendigt at bygge flere terminalservere, der spreder brugere mellem dem.
Ikke ligefrem en teori, men også interessant faktum. Vores praksis har vist (og vi laver omkring 100 revisioner om året), at spidsbelastninger på terminalservere, når de kombineres med en 1C-server, er en meget populær mulighed, og det viste sig, at terminalservere slet ikke overvåges, eller at dette bliver gjort betinget, men vigtigst af alt påvirker de i høj grad arbejdet i andre roller server (1C server i dette tilfælde). Desuden er dette ikke en teoretisk begrundelse - de overførte belastningen til en separat server, og klienten bekræftede det positive resultat.
2. "Til nedrivning." En anden faktor er licensering. For det samme antal brugere (det er klart, at vi ikke taler om tre personer), under hensyntagen stor forskel Med hensyn til omkostninger mellem standard og virksomhed er det mere rentabelt at samle flere billige servere end ét kraftfuldt stykke hardware. For eksempel, hvis du licenserer MS SQL Server, skal du licensere ALLE kerner på serveren, og ikke dem, du tildeler til brug med en affinitetsmaske. Det viser sig, at du vil betale for meget for brugere, der vil æde processorer op med terminalsessioner.
3. "Til nedrivning." Det egentlige argument er sikkerhed. Desuden er dette en mangefacetteret ting. Terminalservere bør overvåges aktivt med antivirus. Dette er det mest sandsynlige angrebspunkt for trojanske heste, ransomware, brute force-angreb osv. Men det er bedre slet ikke at logge ind på en server med rollen som 1C-server og DB lokalt. Det er bedre at køre bordkonsoller fra en anden server. Tjek aktivt 1C-servere med antivirus og deres forbindelser - brrrr. Du vil højst sandsynligt fortryde det. Og endnu mere er det en "synd" at arrangere et "fildump" på en 1C-server eller database. Men i Rusland tager de ikke lokket endnu - de beskæftiger sig ikke med sikkerhed, så vi går videre.
4. "Til nedrivning." Normalt, på tidspunktet for køb af en server, tages opgaven med "hvem skal håndtere problemerne med konkurrence om ressourcer" ikke alvorligt. Men i praksis kan du stadig forstå dem, der sætter 1C-serverens og databasens rolle på "fysik", og sætter en virtuel maskine ved siden af og sætter en "terminalserver" i den, så i det mindste har terminalbrugere mindre prioritet. i kampen om ressourcer, og det er nemmere at kvotere dem . Men hvorfor er det ikke indlysende, at du for at sætte kvoter skal forstå, BASERT PÅ HVILKE METRIKKER, HVILKE REGLER, DER SKAL ANVENDES. Hvem overvåger seriøst belastningen af terminalbrugere? Og dem, der kan konfigurere for eksempel Zabbix, kan stadig ikke fortolke de korrekt indsamlede værdier. Med andre ord er dovenskab et normalt træk ved en administrator, men du skal korrekt vurdere dine styrker. At isolere lasten fysisk er meget mere realistisk end at tro, at du under drift pludselig vil få en anden vind og finde hemmelige flåter, der vil bringe lasten tilbage til normal.
Tag analogien med skibe. De har "skotter", så i tilfælde af et sammenbrud under vandlinjen, spredes vand, der kommer ind, ikke over hele skibets volumen og fører ikke til oversvømmelse. Det er naivt at tro, at når denne nedbrydning sker, vil du begynde at oprette de samme partitioner. Der er ingen måde i helvede, at du vil have tid/penge/viden/lyst til denne aktivitet.
Og hvis du er en lille virksomhed, så er der ved siden af klient-server-muligheden ofte en filversion, for eksempel 1C: Regnskab. Og denne database skal ikke placeres på DB-serveren, men på terminalserveren på lokale diske og ikke over netværket. Ellers vil du forringe ydeevnen af filversionen.
Hvis du vil gøre det rigtige, er det bedre at bruge penge på en separat terminal.
Nå, hvis du vil dykke dybere ned i dette emne, så kom til vores træning http://www..
Hvis du ikke er enig i materialet, så skriv til slava@site med dine argumenter. Vi vil inkludere begge holdninger i gennemgangsmaterialet ovenfor.
Mekanismen for ressourceforbrugstællere er blevet forbedret - muligheden for at vælge baseret på forbrug er implementeret sikker tilstand arbejds- og sikkerhedsprofil (nye typer filtre tilføjet). For ressourceforbrug mod selektionsudtryk er muligheden for at sammenligne for ulighed implementeret.For ressourceforbrugstællerudtryk er muligheden for at kombinere "AND" flere betingelser for én filtertype implementeret.
Implementeret batch-tilstand til tynde og tykke klientapplikationer. Batch-tilstand strækker sig fra starten af klientapplikationen til slutningen af behandlerenFør du starter systemetapplikationsmodul. Når handleren er færdig med sit arbejde, deaktiveres batch-tilstanden automatisk. I batch-starttilstand undertrykkes output fra alle systemdialoger.Et tegn på en klientapplikations batchtilstand er kommandolinjekommandoen start/DisableStartupDialogs.
Interface 8.2 understøttes ikke længere
Tiden til fuldstændig genberegning af totaler for regnskabs- og akkumuleringsregistre er reduceret i følgende tilfælde:
- genberegning af totaler under operationen Test og fiksering fra konfiguratoren;
- ved hjælp af metoden RecalculateTotals() underlagt følgende betingelser:
- eksklusiv adgang til informationsbasen;
- tilstedeværelsen af administrative rettigheder for den bruger, på hvis vegne resultaterne genberegnes;
- metoden udføres i en session, hvor der ikke bruges nogen afgrænsning.
Omstruktureringen af informationsbasen er blevet fremskyndet ved brug af Microsoft SQL Server og IBM DB2 DBMS.
Sandsynligheden for, at flere forbindelser til Microsoft SQL Server lukkes på samme tid, er reduceret, hvilket har en positiv effekt på ydeevnen ved at arbejde med TempDB.
Der er implementeret et klyngeindeks på registratoren til beregningsregisteret. Genopbygningen af indekset vil blive udført, når beregningsregisteret omstruktureres eller ved re-indeksering under en test- og opdateringsoperation. Hvis der ved sletning af poster fra den faktiske gyldighedsperiodetabel ikke er sat en forbindelse til. hovedregistertabel er ikke dannet for sletteanmodningen. Reduceret sandsynligheden for tabellåsning ved sletning af registreringer af den faktiske gyldighedsperiode for beregningsregisteret.
I tynde, tykke og webklienter låser formularen objektet op 1 minut efter, at ændringsflaget blev fjernet (tidligere blev det fjernet, da formularen blev lukket) Når du arbejder under PostgreSQL DBMS, i den teknologiske log (hændelse.
Implementeret visning af kritiske fejl i den optimerede mekanisme til opdatering af databasekonfigurationen i konfiguratoren og i tilfælde
Teknologiloggen implementerer egenskaberne Dbms, Database, DBCopy for DBMS-adgangshændelser (DB2, DBMSSQL, DBPOSTGRS, DBORACLE), EXCP og SDBL hændelser.
Kategori: , | Tags: ,Optimering af arbejde med PostgreSQL
Driften af virtuelle tabeller over omsætning af akkumulerings- og regnskabsregistre er blevet optimeret ved brug af grupperinger efter dag, måned eller år, samt ved brug af forespørgselssprogfunktionen BeginPeriod(). Optimering bruges til enhver version af understøttet DBMS, undtagen Microsoft SQL Server, hvor optimering er effektiv fra version 2012.
Fakta om overskridelse af tælleren registreres i den teknologiske log (hændelse
Implementerede evnen til at evaluere CPU-brug under en session:
- for det aktuelle serverkald;
- i de sidste 5 minutter;
- for hele sessionens varighed.
Til et arrangement
Ændring af struktur.
For informationsregistre er dannelsen af et klyngeindeks efter dimensioner implementeret for de fysiske tabeller for det første udsnit og det sidste udsnit. Beskrivelse af indeksstrukturen (se). Indeksentydighedskontrol er deaktiveret.Forespørgsler til indhentning af data fra udsnitstabeller er blevet optimeret.Nye indekser bygges, når det tilsvarende informationsregister omstruktureres, eller når en databaseomstrukturering udføres under en test- og reparationsoperation.
Nye forespørgselsdesigns. Muligheden for at oprette et felt med unikke (inden for én tabel) og sekventielt stigende værdier er blevet implementeret. Sprogfunktion implementeret AUTONUMMERREKORD(), som kun kan bruges ved oprettelse af en midlertidig tabel. Brugen af funktionen er ikke understøttet AUTONUMMERREKORD():
- i forespørgsler, der indeholder JOIN på øverste niveau;
- i forespørgsler, der ikke danner en midlertidig tabel;
- uden for valglisten;
- i udtryk.
Objekt implementeret ConstantKeyValues.Der er implementeret metoder til den konstante leder CreateKeyValue().
Hvis forespørgslen bruger operator B med en underforespørgsel, vil der i stedet for subforespørgslen blive brugt en forbindelse til tabellen, der bruges i operator B. Denne erstatning anvendes kun, hvis erstatningen ikke ændrer forespørgselsresultatet. I kompatibilitetstilstand med version 8.3.12 er adfærden ikke ændret.
Cloud optimeret.
Reducerede størrelsen af midlertidige filer oprettet af platformen ved opdatering af fuldtekstsøgeindekset. Denne ændring er mest mærkbar i informationsbaser med et stort antal separatorer. Det nye midlertidige filformat vil blive brugt, efter at kompatibilitetstilstand er deaktiveret.I kompatibilitetstilstand med version 8.3.12 er adfærden ikke ændret.
Baggrundsfolk.
Implementeret muligheden for at vente på et eller flere baggrundsjob for at fuldføre i en bestemt periode. Implementeret metodeWaitCompleteExecution() for objekter Fo newTask og Baggrund Task Manager. Metode VentComplete()betragtes som forældet og anbefales ikke til brug.Det anbefales at analysere applikationsløsningen og ændre algoritmerne for at arbejde med baggrundsjob.
Optimeret start og afventning af baggrundsjob for at fuldføre
Kundestart.
Implementeret muligheden for at deaktivere visningen af splash-skærmen ved start af klientapplikationen. Implementerede kommandolinjeindstillingen DisableSplash-klientapplikationsstart. Muligheden er tilgængelig for tynd klient, tyk klient og webklient.
Gengivelsen af sidetitler (bogmærker) ved arbejde i webklienten er blevet optimeret og accelereret.
Opdatering af brugte biblioteker
- LibEtPan-biblioteket er blevet opdateret til version 1.8.
- WebSocket-biblioteket er blevet opdateret til version 0.7.0.
- Micosoft JDBC Driver til SQL Server er blevet opdateret til version 6.2.
Curl-biblioteket er blevet opdateret til version 7.57.0.
OpenSSL-bibliotek opdateret til version 1.1.0h
Forbedret opdatering af fuldtekstsøgning: Muligheden for at kontrollere antallet af baggrundsjob, der opdaterer fuldtekstsøgningsindekset, når der arbejdes i klient-server-versionen af infobasen, er blevet implementeret. Placeringen af fuldtekst-indeksopdateringsjob i baggrunden kan styres gennem funktionalitetstildelingskrav.
For Full-Text Search Manager-objektet er metoderne SetNumber of Indexing Jobs() og GetNumber of Indexing Jobs() implementeret.
For FTEXTUpd-teknologiloghændelsen implementeres følgende egenskaber: MinDataId, MemoryUsed, BackgroundJobCreated, JobCanceledByLoadLimit, TotalJobsCount, FailedJobsCount.
Klyngediagnostik er blevet forbedret: Sessions- og forbindelsesegenskaber har nu værdier, der angiver den tid, der bruges på at foretage opkald til klyngetjenester på vegne af sessionen eller forbindelsen. Disse værdier er implementeret for alle administrationsværktøjer: klyngekonsol, COM-forbindelse, administrationsgrænseflade fra Java-sproget, administrationsserver.
Følgende egenskaber er implementeret for IInfoBaseConnectionInfo- og ISessionInfo-objekterne:
durationCurrentService — nuværende driftstid for klyngetjenesten;
CurrentServiceName — navnet på den service, der udføres;
durationLast5MinService — driftstid for klyngetjenester over de sidste 5 minutter;
durationAllService — varigheden af driften af klyngetjenester fra begyndelsen af sessionen eller forbindelsen.
Lignende egenskaber er implementeret i klyngekonsollen for listen over sessioner, listen over forbindelser og dialogboksen for forbindelsesegenskaber.
For serverklynge-kommandolinjeværktøjet (rac) implementeres parametrene duration-current-service, current-service-name, duration-last-5min-service og duration-all-service for kommandoerne til forbindelseslisten og sessionslisten.
Linux: For at køre et klientprogram, der kører Linux OS, skal webkitgtk-3.0-biblioteket version 1.4.3 og ældre være installeret.
Support til Microsoft SQL Server 2017 DBMS er blevet implementeret
Muligheden for at bruge eksterne udbydere til at udføre OpenID-godkendelse er blevet implementeret.
Kategori: , | Tags:Ny funktionalitet "Interaktionssystem"
Det er blevet muligt at informere klientapplikationen om hændelser på 1C:Enterprise serversiden, herunder asynkront.
Muligheden for at implementere din egen interaktionssystemserver er blevet implementeret. Serveren leveres som en separat distribution og kræver separat installation.
.
Hændelsen er beregnet til at undersøge hændelser relateret til fejl i kontrol af gyldigheden af certifikater ved hjælp af Windows API. Hændelsen genereres kun, når den kører under Windows OS.
Det er nu muligt at starte mere end én webklientsession fra én webbrowser.
Søgehastigheden ved begyndelsen af en streng i forespørgselssproget er blevet øget, når du arbejder med PostgreSQL DBMS.
Når du arbejder med PostgreSQL DBMS, er konverteringen af en forespørgselssprogsoperation LIKE `TEXT%` til en mere optimal SQL-forespørgselsoperation blevet implementeret. I kompatibilitetstilstand med version 8.3.10 er adfærden ikke ændret.
Forbedret ydeevne og skalerbarhed ved brug af HTTPConnection- og FTPConnection-objekter på 1C:Enterprise-serversiden, når der bruges flere forbindelser fra forskellige sessioner.
Arbejdet med midlertidige tabeller er blevet fremskyndet ved brug af Microsoft SQL Server DBMS
følgende versioner:
- 2012, version 11.0.5548.0 og ældre.
- 2014, version 12.0.2430.0 og ældre.
- 2016.
Hastigheden på 1C:Enterprise-serveren er blevet øget, når dokumenter, der indeholder et stort antal (titusindvis) linjer, behandles samtidigt.
Arbejdet med store midlertidige tabeller, der kører PostgreSQL DBMS, er blevet optimeret.
Operationer til sletning af poster fra midlertidige tabeller er blevet optimeret, når der udføres nogle handlinger i PostgreSQL og IBM DB2 DBMS.
Afklarende visning i Linux
Når du kører under Linux OS, beregnes workflow-parameteren Hukommelse optaget baseret på VmRSS-værdien (resident set size). Værdien af parameteren Memory occupied er blevet mindre i absolutte tal og svarer mere nøjagtigt til virkeligheden. Det anbefales at revurdere parametrene for genstart af arbejdsprocesser i egenskaberne for den fungerende server.
Tilføjet platformmulighed for dataversionering (til revision) https://wonderland.v8.1c.ru/blog/istoriya-dannykh/
Kategori: , | Tags: ,Den teknologiske log afspejler hændelser relateret til:
- opnå og frigive licenser (både software og HASP nøgler);
- opnåelse af licenser til grundlæggende versioner;
- regelmæssig overvågning af overensstemmelsen af reelt udstyr og listen over udstyr, der er registreret i licensen.
Implementeret procesloghændelse
Teknologiloghændelse
Logning af hændelser, der opstår under den første forbindelse af 1C:Enterprise-serveren til Microsoft SQL Server DBMS, er blevet implementeret i en teknologisk log. Logning sker ved hjælp af en hændelse
Denne ændring er beskrevet i dokumentationen.
Tilgangen til lagring af eksekveringshistorikken for baggrunds- og rutineopgaver er blevet ændret. I klient-server-versionen gemmes historie i sammenhæng med informationsdatabaser. For hver informationsbase gemmes en historie:
- op til 1.000 baggrundsjob, skabt ud fra det indbyggede sprog;
- op til 1.000 rutineopgaver;
- op til 1.000 systembaggrundsjob (genereret af selve systemet).
For hvert job (baggrund, systembaggrund og planlagt) vil der blive gjort et forsøg på at gemme information om mindst de tre seneste kørsler. Dette antal (tre kørsler) vil blive reduceret, hvis grænsen på 1.000 poster for en bestemt type opgave overskrides.
Kategori: , | Tags: , Kategori: , | Tags: Kategori: , | Tags: , Kategori: ,Muligheden for at bruge logiske udtryk i beskrivelsen af valgfeltet og i udtryk til filtrering af forespørgselsresultater (WHERE-sætning) er implementeret.
ATTN-procesloghændelsen er blevet implementeret. Overvågning analyserer nogle klyngeparametre og giver dig mulighed for kraftigt at afslutte problematiske processer. Overvågning udføres af klyngens centrale serveragent. Overvågningsresultaterne registreres i den teknologiske log.
I den teknologiske log, i hændelserne SCALL og CALL, implementeres nye felter IName og MName, som indeholder yderligere oplysninger om interne systemopkald. Oplysningerne kan bruges af 1C-specialister, når de analyserer anmodninger sendt til supporttjenesten.
Implementeret afspejling af fuldtekst søgeindeksopdateringsoperationer i den teknologiske log. Teknologiske loghændelser FTEXTCheck og FTEXTUpd er blevet implementeret. Logelementet ftextupd teknologi er blevet implementeret.
På store mængder Brugere kan finde det værre end den gamle driftsform. For at vende tilbage til den gamle optagetilstand - til dette (med 1C-serveren stoppet):
Find i databasemappen (...\srvinfo\reg_
i mappen 1Cv8Log opret en tom fil 1Cv8.lgf.
Gentag disse trin for hver base.
For at reducere belastningen er det nyttigt at reducere detaljerne i logningen af den tekniske dokumentation (efterlad for eksempel kun fejl)
Kan bruges til at opbevare en logbog
Fejlen i det nye format til store skalaer anerkendes af 1C som det faktum, at det siden version 8.3.12 er muligt interaktivt at vælge logformatet (dvs. erfarne mennesker vælger det gamle format).
Overskrift: