1c ekstern behandling i henhold til tidsplan. Universell reguleringsoppgave. Mer om konfigurasjonsutvidelser

I dag ønsker vi å fortelle deg om bruk av tilleggsrapporter og behandling, og spesielt konfigurasjonsutvidelser i tjenestemodellen. Teknologier står ikke stille; å betjene 1C-databaser i skyen blir en stadig mer attraktiv tjeneste. Hva du trenger å vite for at funksjonaliteten som kreves for din bedrift skal implementeres i en leid database, og hvordan denne prosessen ser ut fra tjenesteleverandørens side - du kan finne ut om dette under kuttet.

Hva er eksterne rapporter og behandling

1C-behandlinger er forskjellige, men i alle fall utvider de funksjonaliteten til konfigurasjonen og lar deg raskt få tilgang til informasjon som er lagret i databasen uten å endre konfigurasjonen og uten å fjerne støtte. De kan bygges direkte inn i konfigurasjonen, legges til som en konfigurasjonsutvidelse eller være eksterne filer.

Basert på funksjonalitet er behandlingen delt inn i de som kan endre data og de som enkelt analyserer informasjon og viser resultatet i en brukervennlig form (rapporter). For ikke å endre standard dokumentutskriftsoppsett, utvikles eksterne utskriftsskjemaer. Også ekstern behandling kan utføres i henhold til en gitt tidsplan på 1C-applikasjonsserveren - dette er rutineoppgaver.

Flere dusin behandlingsløsninger er utviklet i Button som lar våre regnskapsførere bruke "praktisk magi." For eksempel, for å analysere riktigheten av regnskapet i knappen, brukes den eksterne rapporten "Database Auto Audit". Lettleste tabeller gir en analyse av 120 kriterier for kontosaldo og omsetning, samsvar av data fra selvangivelse og regnskapsinformasjon, analyse av anleggsmidler mv.

Et eksempel på et eksternt trykt skjema "låneavtale" i henhold til skjemaet utviklet av våre advokater. Det er tilfeller når en gründer tar opp et rentefritt lån fra selskapet sitt som privatperson, eller omvendt, overfører egne midler til selskapet, da er det mulig å umiddelbart skrive ut avtalen.

Et skjema åpnes for å fylle ut de nødvendige detaljene:

Og den trykte formen for kontrakten vises:

Vi bruker planlagt behandling (rutineoppgaver), for eksempel for å korrigere utsagn. Knapper har satt opp integrasjoner med store banker og spesielle roboter laster erklæringer direkte inn i 1C. Takket være maskinlæringsteknologi ble prosentandelen feil under utskrivning redusert til 3 %. Men som alltid er det unntak, for eksempel kunder som bruker en agentordning for å selge varer; i dette tilfellet er reglene for å utføre en kontoutskrift individuelle. For ikke å omprogrammere roboten for et bestemt tilfelle, før ankomsten av konfigurasjonsutvidelser, ble en rutineoppgave brukt for å korrigere robotens uttalelse hvert 10. minutt.

Hva er konfigurasjonsutvidelser

En utvidelse er en minikonfigurasjon som arver objekter fra hoveddatabasekonfigurasjonen og inneholder kode med tillegg eller rettelser til objekter og moduler. I dette tilfellet forblir hovedkonfigurasjonen støttet; det er ikke nødvendig å aktivere redigering, noe som i stor grad forenkler oppdateringsprosessen.

Mekanismen forutsetter tre typer bruk, som faktisk er angitt i "Formål"-feltet når du oppretter en utvidelse:

Den sentrale komponenten i teknologien er Serviceleder, den lagrer all informasjon om abonnenter, brukere, applikasjoner, informasjonsbaser og forbindelser mellom dem, og med dens hjelp administreres ekstern behandling og konfigurasjonsutvidelser.

Alle filer med prosessering lastes opp til en spesiell katalog til service manager. Men før du laster opp en fil til katalogen, med andre ord "publiser den til tjenesten", må den forberedes på en spesiell måte.

Utarbeidelse av eksterne rapporter og behandling for publisering i tjenestemodellen

En tilleggsrapport eller behandling opprettes i 1C: Enterprise 8-konfiguratoren som standard eksterne rapporter og behandling og lagres i en fil med filtypen - .epf (for tilleggsbehandling) eller .erf (for tilleggsrapporter).

Objektmodulen må ha prosedyrer og funksjoner for å definere registreringsparametere.

Vær oppmerksom på at den viktige parameteren er "Versjon". Hvis du har gjort endringer i en behandling som tidligere ble lastet opp til tjenesteadministratorkatalogen, må du huske å endre versjonsnummeret, ellers vil tjenesteadministratoren nekte å laste inn filen. Når du utvikler en rapport eller bearbeiding, må du ta hensyn til at brukere jobber i en tjenestemodell gjennom en nettklient (god artikkel på 1C-bloggen). Hvis behandlingen inneholder skjemaer, må de fungere i nettklienten under alle nettlesere som støttes av teknologiplattformen 1C: Enterprise 8.

I henhold til standardene til 1cfresh.com-tjenesten, må en ekstra rapport eller behandling være fullt funksjonell når den utføres i sikker modus, det vil si arbeide uten tilgang til objekter utenfor konfigurasjonen.

En tilleggsrapport eller behandling må utarbeides for opplasting til tjenesten som et leveringssett. Leveringssettet er et arkiv (zip-fil) som inneholder:

  • tilleggsrapport eller behandlingsfil;
  • xml-manifestfil, som inneholder ytterligere metainformasjon som er nødvendig for at tjenestelederen skal publisere en tilleggsrapport eller behandle den i tjenesten.
Klargjøring utføres i en lokalt distribuert infobase for konfigurasjonen som tilleggsrapporten eller behandlingen er ment for. Vi bruker en spesialassistent for å lage et leveringssett, ekstern behandling Utarbeidelse av tilleggsrapporter og Behandling av publikasjoner i Tjenestemodellen.epf. Du kan lese mer i dokumentasjonen om Teknologi for publisering av 1C Fresh-løsninger.

Installere tilleggsrapporter og behandling i tjenestemodellen

Et særtrekk ved 1C Fresh-teknologi er at en ekstern rapport eller prosessering ikke kan lastes direkte inn i dataområdet. Tillegging kan kun gjøres av tjenesteadministratoren gjennom tjenesteadministratoren. Etter at zip-arkivet med behandlingsfilen er klargjort, må det lastes opp til service manager-katalogen og installeres for en bestemt tjenesteabonnent.

En tjenesteabonnent er en gruppe brukere som er forent etter et eller annet prinsipp. Følgelig kalles informasjonsbaser tilgjengelig for en viss gruppe brukere abonnentapplikasjoner.

Applikasjoner kan ha forskjellige 1C-konfigurasjoner (Enterprise Accounting, Lønn og Personalledelse, Ledelse av vårt selskap, etc.), som det er mulig å bruke det til i tjenestemodellen. Ytterligere rapportering eller behandling kan kun installeres i abonnentens applikasjoner som er spesifisert ved nedlasting av filen.

Slik ser egenskapsskjemaet for en tilleggsrapport med versjoner ut. Ved å bruke hyperkoblingen "Installer/fjern" kommer vi til listen over applikasjoner og velger de nødvendige databasene.

Etter at behandlingen er lastet inn og applikasjonen er valgt, kontakter serviceleder applikasjonsadressen og gir kommandoen om å installere den i informasjonsbasen.

Vi setter i gang behandling i henhold til tidsplan

Ved arbeid med et stort antall regnskapsdatabaser må det utføres en del behandling med jevne mellomrom. For eksempel en gang i måneden eller en gang med noen få minutter. Det er også viktig å automatisere manuelle og rutinemessige brukeroperasjoner. For å gjøre dette bruker vi aktivt rutineoppgaver.

Behandling som skal utføres i henhold til tidsplanen har ikke skjema. All logikk er skrevet i objektmodulen og ser slik ut.



Når vi utarbeider leveringssettet setter vi en tidsplan. Nå vil vår behandling utføres hver time.

Mer om konfigurasjonsutvidelser

Parallelt med eksterne rapporter og behandling som må utarbeides og administreres «på gammeldags måte», begynte vi aktivt å brukeen. Fra og med 1C Enterprise-plattformen 8.3.10, har denne mekanismen gjort livet vårt ganske enkelt og har gjort det mulig å forenkle tilpasningen av konfigurasjoner til funksjonene til knappen.

For eksempel skrev vi ovenfor om rutineoperasjoner for å korrigere dokumenter av roboter som ble lansert en gang hvert 10. minutt. Nå kan du bruke utvidelsen til å redefinere driften av moduler. Dermed kan vi umiddelbart utføre de nødvendige handlingene når vi registrerer eller poster et dokument. Dette er mye mer optimalt, fordi oppgavekøen i databasen ikke er tilstoppet med handlinger utført hvert 10. minutt, og det er mer effektivt, siden endringer gjøres umiddelbart.

Det er ganske enkelt å forberede en ny utvidelse. La oss se på prosessen med å lage utvidelser ved å bruke spesifikke eksempler.
Basert på arbeidserfaring er leder i forespørsler om justeringer TORG-12 trykt skjema. For eksempel må vi lage en utvidelse for å kunne skrive ut en følgeseddel i utenlandsk valuta (som standard kan den kun genereres i rubler).
Åpne Meny → Konfigurasjon → Konfigurasjonsutvidelser
Vi oppretter en ny utvidelse med formålet "Tilpasning".

Utvidelsen ser ut som et kjent konfigurasjonstre, men uten objekter ennå. Først av alt, la oss legge til en ny layout TORG-12, der vi satte inn kolonner med beløp i valuta.

Siden fakturaen skrives ut fra dokumentet "Salg av varer og tjenester", vil vi legge til dette dokumentet i utvidelsen vår fra hovedkonfigurasjonen og gjøre de endringene vi trenger i managermodulen. For å gjøre dette, velg "legg til utvidelse" i kontekstmenyen til implementeringen.

Nå kan du endre implementeringsledermodulen. Vi må legge til et nytt skjema i listen over utskrivbare skjemaer og fylle ut valutabeløpene.

For å endre standardprosedyrer bruker vi &Etter merknaden; vi trenger også et par av våre egne funksjoner og en prosedyre.

La oss se nærmere på merknadene. I utvidelser kan du bruke: &Før, &Etter, &I stedet (veldig nøye). Driftsprinsippet er enkelt: vi vil at algoritmene våre fra utvidelsen skal kjøres først, sett &Før-kommentaren og i parentes angi navnet på prosedyren fra standardkonfigurasjonen. Hvis en standardmodul behandles først, og deretter vår, bruker vi &Etter.

&Før- og &Etter-kommentarene kan ikke brukes til funksjoner. Derfor, hvis vi trenger å endre algoritmen til en funksjon fra hovedkonfigurasjonen, bruker vi merknaden &I stedet.

&I stedet-kommentaren bør brukes så sjelden som mulig, siden den fullstendig erstatter utførelsen av en prosedyre og funksjon fra hovedkonfigurasjonen med en utvidelsesprosedyre/funksjon. Med denne avskjæringsmetoden vil prosedyren/funksjonen fra hovedkonfigurasjonen slutte å bli utført i det hele tatt mens utvidelsen er installert, selv oppdatering av versjoner vil ikke hjelpe.

Konklusjon

Det er mange ulike meninger om bruk av utvidelser og eksterne rapporter/behandlinger. Basert på vår erfaring er vi begge for utvidelse. Dette er en moderne og mer adaptiv teknologi, den har mange flere muligheter, og det er mye enklere å publisere dem. Bare den nødvendige delen av koden er plassert i utvidelsen; det er heller ikke nødvendig å skrive prosedyrer og funksjoner i tillegg for å bestemme registreringsparametere, spore versjoner og lage et leveringssett.

Du kan bruke flere utvidelser for ett dataområde.
For detaljene til 1C Fresh som arbeider i dataseparasjonsmodus (én konfigurasjon, mange uavhengige områder), er utvidelsesmetoden en utmerket løsning.

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

Til oppdateringsprogrammet ikke obligatorisk være åpen hele tiden eller kjøre som en tjeneste slik at planlagte operasjoner kan startes.

Planlagt lansering fungerer gjennom en standard Windows-mekanisme kalt "Task Scheduler".

Og når brukeren angir tidsplaninnstillingene...

Oppdateringsprogrammet oppretter automatisk de nødvendige oppgavene i planleggeren:

Hva du ikke bør glemme

Brukervalg

Vi må ikke glemme at brukeren vi spesifiserer for å kjøre planlagte operasjoner...

Må ha systemrettigheter til "Logg inn som en batchjobb".

Hvordan sjekke om en bruker har de nødvendige rettighetene?

Det enkleste alternativet er å høyreklikke på den opprettede oppgaven i planleggeren og velge "Kjør":

Hvis resultatet av lanseringen er vellykket etter at oppgaven er fullført...

Hvis dette ikke er tilfelle, kontakter vi systemadministratoren slik at han i sikkerhetspolicyen angir (vår bruker eller hans gruppe) i elementet " Innlogging som en batchjobb", og også ekskludert fra avsnittet " Nekt pålogging som en batchjobb".

Må ha et ikke-tomt passord. Dette er et sikkerhetskrav for Windows. Hvis du står overfor denne spesielle begrensningen, vil den mest korrekte løsningen være:

  • eller tilordne et passord til gjeldende bruker som du skal kjøre oppdateringsprogrammet under etter en tidsplan
  • eller opprett en egen bruker i systemet med et passord, som vil bli registrert i oppdateringsplanen

Vel, den enkleste (men feil fra et sikkerhetssynspunkt) løsningen på denne begrensningen ville være å deaktivere alternativet "Tillat bruk av tomme passord bare under konsollpålogging" i den lokale datamaskinens sikkerhetspolicy.

Velge baser

Vi må heller ikke glemme at bare de databasene som er valgt i listen over databaser som deltar i planen, deltar i planlagte operasjoner:

I dette tilfellet spiller det ingen rolle om haken er ved siden av basen i den generelle listen:

Disse avmerkingsboksene (i den generelle listen) er kun ment for manuell oppstart av operasjoner og påvirker ikke planlagt oppstart på noen måte.

Oppstartsordre

Og til slutt, enda et poeng som ikke er åpenbart. Når du kjører en planlagt oppgave, sjekker oppdateringsprogrammet først om en annen planlagt oppgave kjører. Og hvis den blir utført, vil den først vente på at den er ferdig, og først da vil den utføre en ny.

Dette betyr at hvis vi for eksempel må konfigurere arkivering til å finne sted kl 22-00, og databaser som skal oppdateres umiddelbart etter at den er ferdig, så er det nok å spesifisere starttidspunkt for arkivering kl 22-00, og for oppdatering , for eksempel 22-01.

Hva om du trenger en mer kompleks timeplan?

Hva om vi ikke bare trenger en vanlig lansering på et bestemt tidspunkt på bestemte dager? Hva om vi for eksempel vil sette den til å starte klokken 5 hver halvtime, eller noe sånt?

I dette tilfellet må vi dra nytte av den fulle kraften til oppgaveplanleggeren.

Først setter vi opp tidsplanen gjennom oppdateringsprogrammet, noe som indikerer at en spesifikk tidsplan vil bli konfigurert i planleggeren:

Og først da åpner du egenskapene til oppgavene opprettet av oppdateringsprogrammet i Windows Scheduler:

Og på de aktuelle fanene konfigurerer vi alt vårt hjerte ønsker:

Hvordan ekskludere en database fra noen planlagte operasjoner

La oss anta at vi har en tidsplan konfigurert for oppdatering og arkivering:

Men samtidig ønsker vi at én database skal delta i planlagt arkivering, men ikke delta i planlagt oppdatering.

Hvordan oppnå dette - vi har tross alt den samme listen over baser som deltar i timeplanen:

Og det er veldig enkelt å gjøre.

Gå til egenskapene til databasen du vil ekskludere fra planlagte oppdateringer, og helt nederst i vinduet finner du elementet "Ekskluder noen operasjoner...":

Klikk på den og ekskluder oppdatering av denne databasen fra planlagt lansering:

Det skal se slik ut:

Er det mulig å kjøre på en tidsplan med andre parametere?

Jeg vil trekke spesiell oppmerksomhet til det faktum at oppgaven i oppgaveplanleggeren er en vanlig lansering av oppdateringsprogrammet med visse kommandolinjeparametere:

Og oppdateringsprogrammet har mange parametere for å starte via kommandolinjen.

Ved å bruke dem kan du tilpasse automatisering mye mer subtilt og i henhold til dine behov. Bare ikke endre kommandolinjeparametrene i en allerede opprettet oppdateringsoppgave - ellers vil den fortsatt tilbakestille dem til de opprinnelige når du oppdaterer de planlagte lanseringsinnstillingene. Kopier i stedet den opprettede oppgaven i planleggeren (slik at den har sitt eget navn) og endre den.

Om allee.

Hvordan finne ut om oppdateringsprogrammet ble lansert i henhold til tidsplanen

Det hender at timeplanen ser ut til å være satt opp, men noe går galt.

Og vi er slett ikke sikre på om oppdateringsprogrammet ble lansert den kvelden.

Først av alt vil jeg trekke oppmerksomheten din til området i hovedoppdateringsvinduet der statusen for planlagte operasjoner vises:

Her ser vi hvor mange dager siden den tilsvarende ble lansert. planlagt operasjon; hvor mange databaser som var involvert og om det var noen feil. Dessuten, hvis vi venstreklikker på disse koblingene, åpnes den tilsvarende rapporten.

Vi kan også gå til hele oppdateringsrapportloggen...

Og se om oppgavene ble fullført.

Men den mest pålitelige måten å finne ut om et program startet og forstå årsakene til at det ikke starter eller plutselig avsluttes, er å aktivere loggen over alle oppgaver i Windows Scheduler. Som standard er den deaktivert, og jeg anbefaler å slå den på slik at du alltid kan finne ut av problematiske situasjoner.

For å aktivere Windows Scheduler-loggen, gå til "Kjør i henhold til tidsplan"-dialogen og klikk på "Åpne Windows Scheduler"-knappen:

Dette kan også gjøres fra Windows Kontrollpanel (Administrasjonsdelen).

Her finner vi og klikker på elementet "Aktiver logg over alle oppgaver":

Klar! Nå kan vi se historien til enhver oppgave i planleggeren.

La oss for eksempel fremheve en av oppdateringsoppgavene:

Hvordan sette opp et skyovervåkingssystem for å kjøre oppdateringsoppgaver

Nå vil jeg fortelle deg om en måte å forsikre deg mot situasjonen - "åh, det viser seg at databasene våre ikke har blitt arkivert (oppdatert, testet..) på en hel uke."

Denne situasjonen er svært mulig hvis vi konfigurerte arkivering til å starte etter en tidsplan, og deretter:

  • en annen serveradministrator tok rettighetene fra kontoen vår til å begynne å arkivere fra planleggeren, og i dette tilfellet vil ikke oppdateringsprogrammet kunne sende oss et varsel på e-post, fordi for dette må den starte, men det er ingen rettigheter å gjøre så...
  • eller det har oppstått andre feil og det er ikke noe Internett på serveren slik at oppdateringsprogrammet kan sende oss en feilmelding...
  • eller vi har selv feilaktig slått av planlagt arkivering i oppdateringsprogrammet...
  • man vet aldri hva som kan skje...

Og i tillegg til å sette opp feilmeldinger på e-post, trenger du bare å sette opp et skysystem for å overvåke lanseringen av oppdateringsprogrammet vårt. Hva er det og hvordan fungerer det?

Dette er etter min mening en helt genial ting som heter healthchecks.io. Disse gutta har også betalte planer, men gratisplanen deres er bra for oss.

Ideen er som følger. Vi registrerer oss på deres nettside og i vår personlige konto har vi muligheten til å si:

  • Hei, HealthChecks, gi meg en unik URL (adresse til en Internett-ressurs).
  • HealthChecks, hvis ingen banker på (forespørsler) på denne adressen i en slik og en slik periode, gi meg beskjed om dette på en slik e-post.

Deretter vil vi spesifisere denne adressen i oppdateringsprogrammet, og den vil be om den, for eksempel på slutten av hver planlagte arkivering. Og hvis det på et tidspunkt plutselig slutter å starte eller krasjer, vil HealthChecks-tjenesten varsle oss om dette. Selv om serveren vår brenner ned, vil den bli stjålet og demontert i små biter..., vi vil være de første som får vite om dette fra HealthChecks

Jeg synes dette er en genial idé. Hvis du ikke tror det, ser det ut til at du ikke helt har forstått betydningen av denne tingen - les den vanskelige teksten min på nytt.

Jeg vil nevne separat at det beskrevne overvåkingssystemet ikke avbryter, men supplerer, e-postvarsler om feil, som også må konfigureres i oppdateringsprogrammet for full kontroll over situasjonen.

Det enkleste scenariet for å sette opp HealthChecks med en oppdatering

La oss sette opp daglig arkivering på en server som heter DataServer som tilhører selskapet LLC "Romashka":

Og vi vil at HealthChecks skal varsle oss hvis oppdateringsprogrammet plutselig slutter å kjøre for arkivering eller slike lanseringer avsluttes unormalt.

3. Registrer deg med e-postadressen du ønsker å motta varsler til.

3. Gå til "Sjekker"-delen og klikk på den store grønne "Legg til sjekk"-knappen.

5. La oss endre navnet på denne sjekken til OOO "Romashka" (DataServer, arkivering). Dette må gjøres slik at vi forstår nøyaktig hva denne sjekken er relatert til (arkivering på en server som heter DataServer i selskapet Romashka LLC):

6. Spesifiser bekreftelsesperioden (arkivering bør startes én gang om dagen, selve arkiveringsprosessen kan ta opptil 12 timer):

Den andre glidebryteren (nåde) er nøyaktig det tillatte overskuddet av perioden, det vil si tiden som arkiveringsprosessen kan vare.

Jeg indikerte den ekstra grensen på 12 timer (grace) med vilje, fordi oppdateringsprogrammet sender en forespørsel til overvåkingssystemet på slutten av arbeidet, og slutttiden kan variere avhengig av forskjellige forhold.

For eksempel, hvis vi planlegger at en oppdatering skal starte kl. 22.00, kan denne oppdateringen i dag avsluttes kl. 23.00, og i morgen (mange nye oppdateringer har blitt utgitt) vil den vare til kl. 04.00.

Derav den ekstra marginen på 12 timer for å unngå falske positiver fra HealthChecks.

Resultatet av å sette perioden vil være slik:

7. Men som du kan se, er siste ping-feltet tomt (Aldri). Den vil bli oppdatert ettersom denne adressen blir åpnet av oppdateringsprogrammet under arkivering. Og hvis det ikke er noen forespørsel på mer enn 1 dag og 12 timer, vil HealthChecks slå alarm og varsle oss på e-post.

Spørsmål: Problem med tilgang til tilleggsbehandling i Zup3


opprettet tilleggsbehandling og plassert den i lønnsdelen. En bruker med rettighetene til en seniorpersonelloffiser kan ikke starte regnskapsføreren, den sier "utilstrekkelige tilgangsrettigheter." Hvordan angi tillatelser for å kjøre ytterligere behandling?

Lønn og personalledelse, utgave 3.0 (3.0.24.115) ()
Copyright © LLC "1C", 2007-2014. Alle rettigheter forbeholdt
()

Svar:

Spørsmål: Kjøre tilleggsbehandling etter en tidsplan


Hei alle sammen. Jeg lærer bare å programmere, så ikke skjenn ut meg for mye for å stille feil spørsmål. 1C Retail 2.2.5.27 Laget en ekstern prosessering som, når du klikker på en knapp, laster data fra en fil inn i informasjonsregisteret. Alt fungerer bra manuelt, men nå er oppgaven å sørge for at denne behandlingen starter etter en tidsplan og uten å åpne skjemaet. Altså i bakgrunnen slik at det fungerer.
Behandling kobles i skjemaet "Tilleggsrapporter og behandling".

Kode i skjemamodulen

Funksjon InformationOnExternalProcessing() ExportRegistrationParameters = Ny struktur; Registreringsparametere.Insert("View", "AdditionalProcessing"); Registreringsparametere.Insert("Navn", "Loading balances (PCService(C))"); Registreringsparametere.Insert("Versjon", "1.0"); Registreringsparametere.Insert("SafeMode", False); Registreringsparametere.Insert("Informasjon", "Laster gjenværende"); Registreringsparametere.Insert("BSPVersion", "2.3.2.33"); CommandTable = GetCommandTable(); AddCommand(CommandTable, "Loading balances (PCService(C))", "1", "OpenForm", True,""); AddCommand(CommandTable, "Load balances (PCService(C))", "2", "CallServerMethod", True,""); TeamId = "2"; Registreringsparametere.Insert("Kommandoer", CommandTable); ReturnRegistration Parameters; EndFunction Funksjon GetTableCommands() Commands = NewValueTable; Commands.Columns.Add("View", NewTypeDescription("Row")); Commands.Columns.Add("Identifier", New TypeDescription("String")); Commands.Columns.Add("Bruk", New TypeDescription("Row")); Commands.Columns.Add("ShowAlert", NewTypeDescription("Boolean")); Commands.Columns.Add("Modifier", New TypeDescription("Row")); Return Team; EndFunction-prosedyre AddCommand(CommandTable, View, Identifier, Usage, ShowAlert = False, Modifier = "") NewCommand = CommandTable.Add(); NewCommand.View = Vis; NewCommand.Identifier = Identifikator; NewCommand.Use = Bruk; NewCommand.ShowAlert = ShowAlert; NewCommand.Modifier = Modifikator; Slutt på prosedyre &På serverprosedyre Utfør kommando (kommandoidentifikator, tilordningsobjekter) Eksporter prosedyreslutt

Når du klikker på utfør-knappen med startalternativet "Åpne skjema", åpnes skjemaet og programmet kjøres umiddelbart (det kjøres umiddelbart fordi på skjemaet i "When CreatedOnServer"-hendelsene er det indikert at hovedkoden til programmet vil bli utført)
Når du klikker på Utfør-knappen med startalternativet "Call ServerMethod" gir det ingen feil, men ikke noe resultat.
Hva gjør jeg galt??

Svar:

Jeg røykte alt. Her måtte jeg kopiere koden som jeg ønsket å bli utført uten å åpne skjemaet

Spørsmål: Retail 2.2 lansering av tilleggsbehandling i henhold til tidsplan


Hilsener. Retail 2.2, tilleggsbehandling er aktivert og planlagt utførelse er satt. Jeg ser på utførelsen gjennom - Support og vedlikehold - rutineoppgaver, oppgaven min enten kjører eller slutter å kjøre i henhold til tidsplanen, en stund fungerer den nøyaktig i henhold til tidsplanen og slutter å kjøre av seg selv. Det er ikke et spørsmål om selve behandlingen fordi den ikke gir en feil, men oppgaven starter rett og slett ikke. Så begynner den å fungere normalt av seg selv. Hva kan påvirke starten på en rutineoppgave?
Jeg prøvde å sette forskjellige tidsplaner, men det fungerte ikke.

Svar:

Problemet ble løst ved å reinstallere plattformen på alle datamaskiner

Spørsmål: Ytterligere behandling


Ha en fin dag alle sammen.
Administrere selskapet vårt, versjon 1.6 (1.6.12.4)

Fortell meg, er det mulig å legge til ytterligere behandling i delsystemet uten å berøre konfiguratoren?
De. Jeg trenger at behandlingen kalles ikke gjennom tilleggsbehandling, men som en ekstern rapport, umiddelbart i undersystemlisten.

Svar:

Lag en rapport i utvidelsen, legg til ønsket (eksisterende) delsystem til utvidelsen, lag en lenke til den opprettede rapporten i det "utvidede" undersystemet.

Spørsmål: Bruk av webtjenester i tilleggsbehandling ved bruk av BSP


God ettermiddag
I det ferske er det nødvendig å bygge inn ytterligere behandling som vil få tilgang til webtjenesten til en annen database. Behandling er selvfølgelig i sikker modus, men "det er tillatt å bruke sikkermodusutvidelsen av biblioteket av standard delsystemer (evnen til å jobbe med filer, Internett-ressurser, etc.) gjennom et spesialisert programvaregrensesnitt med registrering av tillatelser kreves for ytterligere rapportering/behandling." Jeg kan imidlertid ikke finne i gjeldende versjon av BSP hvordan du konfigurerer dette. hjelp, vennligst Fersk versjon av databasen: Enterprise Accounting, utgave 3 .0 (3 .0 .59 .45) BSP 2 .4 .5 .31

Svar: oO

Spørsmål: ZUP krasjer når en bestemt behandling starter, hva skal jeg gjøre?


Det er et tillegg som oppdaterer oppgjørsdokumentene som legges inn på grunnlag av oppsigelse. Når denne behandlingen startes, lukkes programmet dumt uten noen meldinger. Jeg kan ikke se noe i debuggeren. På testdatoen som 1 dokument ble laget for, består det. Hva annet bør jeg gjøre? Jeg kjørte testing og det så ut til at det ikke var noen feil.

Svar: bra, men hvorfor var syklusen nødvendig? Hvis du har noen oppføringer, så skriv, jeg vet ikke, i en journal eller noe annet, nei, så endre eller gjør ingenting

Spørsmål: Planlagt oppgave med tilleggsbehandling


Alfa-Auto-konfigurasjon: Bilutstillingslokale + Bilservice + Bildeler CORP. Utgave 6.
Opprettet ekstern behandling. Jeg koblet den til som tilleggsbehandling.
Sett opp planlagt utførelse. Men det starter ikke med feilen:
Rutineoppgaven "Start tilleggsbehandling" kan ikke utføres på grunn av mangel på innstillinger i prosedyren RoutineTasksOverridden.WhenDefiningRegularTaskSettings(). Kontakt din systemadministrator!
Hvem kan fortelle meg hva som er galt med behandlingen eller oppsett av basen.

Svar:() Så du ser på hva som finnes i RoutineTasksOverridden.WhenDefiningSettingsofRoutineTasks()
I BSP er denne prosedyren vanligvis tom. I Alpha kan noe ha blitt forbedret.

Spørsmål: Automatisk start av ekstern behandling


Ha en fin dag alle sammen. Vennligst hjelp, kjære 1C-utviklere, løse dette problemet.
Det er ekstern behandling, den har to knapper, "Kjør" og "Send". Når du klikker på "Kjør"-knappen, fylles tabelldelen ut.
Når du klikker på "Send"-knappen, sendes en e-post med dataene fra tabelldelen og en vedlagt fil.

Spørsmål: er det mulig å gjøre denne behandlingen automatisk utført hver dag? DE. for eksempel: klokken 08:00 om morgenen hver dag, ble prosedyren "Kjør" og "Send" utløst? Serverbase. Jeg vil være glad for all hjelp og alle alternativer.

Svar:() Og med dette lanseringsalternativet, vil 1C-prosessen lukkes etter behandling? eller må den avsluttes fra behandling via ShutdownSystem(False)?

God morgen, fortell meg et skript som skal kjøres i henhold til behandlingsplanen, eller rettere sagt problemet er at du trenger et skript (batchfil) som starter 1s 77, men etter å ha sjekket, hvis den normale lanseringen mislykkes, vil den være eksklusiv med reindeksering. Og gjerne med åpning av ekstern behandling. Det er nødvendig for automatiske opplastinger, men sendetidene settes forskjellig overalt. og mest om natten.

Svar: hvilken som helst nncron xstarter-planlegger

Ekstern behandling er et veldig praktisk verktøy for selskaper som bruker standardkonfigurasjoner på 1C:Enterprise 8.3. De lar deg ikke kaste bort krefter og penger på 1C-oppdateringer, noe som gjør det mulig å oppdatere databaser med én knapp i enkel brukermodus. Ved å bruke standard delsystembibliotekmekanisme kan du legge til forskjellige knapper i dokumenter og oppslagsverk uten å endre standardkonfigurasjonen. La oss vurdere et eksempel på å lage og koble til ekstern prosessering i en av 1C-konfigurasjonene.

Vi lager ekstern behandling i 1C 8.3

For å lage en ny ekstern prosessering bruker vi konfiguratoren. Gjennom "Fil"-menyen velger du opprettelseskommandoen "Ny..." og bestemmer at vi skal lage ekstern behandling. Angi navnet i vinduet som åpnes, og når du trykker "Enter", fylles det ut automatisk. Systemet vil også tilby deg dette navnet som filnavn når du lagrer.

La oss legge til et behandlingsskjema ved å klikke på knappen med et forstørrelsesglass i det tilsvarende vinduet. La oss for eksempel lage en behandling som viser hvilke kundeordrer som bruker en bestemt vare. For å gjøre dette, må vi plassere på skjemaet:

  • Attributter – felt for innstilling av nomenklaturen;
  • En knapp som vil ringe koden.

Legg til «Nomenclature»-attributtet med datatypen «DirectoryLink.Nomenclature» i den tilsvarende delen og «Vis»-knappen i «Kommandoer» -> «Skjemakommandoer»-menyen.

For at de tilførte dataene skal reflekteres på skjemaet, må du dra det inn i skjemaelementene som ligger øverst til venstre. Det er mulig å bytte elementer ved hjelp av de blå pilene. For at knappen vi opprettet skal gjøre det den har tenkt, må den tildeles en prosedyre. Gjennom kontekstmenyen, velg "Kommandohandling", og på spørsmål om hvor behandleren er nødvendig, vil vi svare: "Opprett på klienten og en prosedyre på serveren."


Fragment 1

&OnClient-prosedyre Vis(kommando) ShowOnServer(); Slutt på prosedyre &OnServer Prosedyre ShowOnServer() //Sett inn innholdet til behandleren. Slutt på prosedyre

Vi valgte å lage en prosedyre på serveren fordi vi ønsker å motta en prøve fra databasen som et resultat. Vi har ikke dette alternativet på klienten, så vi må koble til serveren, som utveksler data med databasen. Nå må vi skrive kode som implementerer det vi har planlagt. Forespørselen og utgangen av alle dokumenter gjennom "Report()"-funksjonen vil bli brukt.


Fragment 2

&OnClient-prosedyre Vis(Kommando) ShowOnServer(Nomenklatur); EndProcedure &OnServer Prosedyre ShowOnServer(Nomenclature) Request = Ny forespørsel; Query.Text = "SELECT VARIOUS | Customer OrderComposition.Link AS Link | FROM | Document.Customer Order.Composition AS Customer OrderComposition | WHERE | Customer OrderComposition.Nomenclature = &Nomenclature"; Request.SetParameter("Nomenklatur", Nomenklatur); RequestResult = Request.Execute(); SelectionDetailRecords = QueryResult.Select(); While SelectionDetailedRecords.Next() Loop Report(SelectionDetailedRecords.Link); EndCycle; Slutt på prosedyre

På det nåværende stadiet kan vi åpne ekstern behandling i en løpende 1C-database som en ordinær fil, og den vil allerede være operativ. Men hvis vi har mange brukere, må vi sende denne filen til dem alle, og gi dem instruksjoner om hvordan de faktisk åpner den i 1C, noe som er ekstremt upraktisk. For å unngå dette bør behandlingen vår være plassert inne i en av 1C-seksjonene. For å gjøre dette, må vi endre den litt mer gjennom konfiguratoren, spesifisere visse innstillinger.

For å plassere ekstern behandling i seksjon 1C, er det nødvendig å registrere prosedyren "Informasjon OM ekstern behandling" i objektmodulen. Fra hovedbehandlingsmenyen klikker du på Handlinger og velger Objektmodul. Her må du registrere alle innstillingene som er nødvendige for 1C slik at systemet forstår hva som kreves av det og hva slags fil som ligger foran det. Skjermbildet viser koden for funksjonen "Informasjon OM ekstern behandling".

Funksjon InformationOnExternalProcessing() Export DataForReg = New Structure(); DataForReg.Insert("Navn","Ny ekstern behandling"); DataForReg.Insert("SafeMode", True); DataForReg.Insert("Versjon", "ver.: 1.001"); DataForReg.Insert("View", "Additional Processing"); CommandTable = NewValueTable; TabZnCommands.Columns.Add("Identifier"); TabZnCommands.Columns.Add("Bruk"); TabZnCommands.Columns.Add("Vis"); NewRow = TabZnCommands.Add(); NewString.Identifier = "NewExternalProcessing"; NewRow.Use = "OpenForm"; NewRow.View = "Ny ekstern behandling"; DataForReg.Insert("Kommandoer", TabZnCommands); Returner DataForReg; EndFunction

Fragment 3

Koble til ekstern prosessering i 1C

Før du kobler ekstern behandling til en standardkonfigurasjon, må du aktivere bruken av dette verktøyet. I "Administrasjon", i underpunktet "Utskrevne skjemaer, rapporter og behandling", sett flagget motsatt mekanismen vi trenger. En knapp for å gå til katalogen over tilleggsbehandling og rapporter blir tilgjengelig for oss.


Når vi går til listen, vil vi opprette en ny linje i den, og systemet vil be deg om å velge en fil. Vi velger behandlingen vi har laget og lagret, og 1C-konfigurasjonen fyller uavhengig ut de fleste feltene. Ved å bruke "Kjør"-knappen kan vi allerede sjekke funksjonaliteten til behandlingen vår, men dette er ikke veldig praktisk for andre brukere. For at brukere skal ha vår kommando og kunne ringe, må vi:

  • Angi plasseringen av objektet. Ved å klikke på "Udefinert" åpner vi seksjonsvinduet og indikerer i hvilke seksjoner operasjonen vil være tilgjengelig;
  • Velg brukere som denne kommandoen skal vises for i "Ytterligere behandling"-menyen i de valgte delene uten unødvendige innstillinger. For å gjøre dette, i tabelldelen må du velge elementet "Rask tilgang" og legge til ansvarlige brukere til høyre halvdel;
  • På fanen "Tilleggsinformasjon" kan du spesifisere mappen der den nedlastede behandlingen skal ligge;
  • Etter å ha trykket på "Skriv"-knappen i den valgte delen i menyen "Ytterligere behandling", vil brukerne finne kommandoen vår og kunne bruke den.

Hvis vi ønsker å gjøre endringer i behandlingen vår, må vi først laste den ut av databasen. For å gjøre dette, finn den nødvendige linjen i katalogen "Ytterligere behandling og rapporter" og bruk kommandoen "Last opp til fil...". Gjør endringer, lagre behandlingen og bruk "Last fra fil..."-knappen for å finne den endrede epf-filen uten å endre parametrene. Etter opptak vil alle brukere se endringene som er gjort.

Hvis du bruker en ikke-standard eller utgått 1C-database, så dra nytte av muligheten til å laste ned behandling gjennom konfiguratoren. I objekttreet, i delen "Behandlinger", oppretter du en ny behandling og velger "Erstatt med ekstern behandling, rapporter..." gjennom kontekstmenyen. Alt som gjenstår er å konfigurere lanseringen av ekstern behandling fra ønsket seksjon, inkludert den ekstra behandlingen i ønsket delsystem.


Å jobbe med ekstern prosessering er veldig praktisk og lar deg unngå mange konflikter. Deres eneste betydelige ulempe er at de ikke oppdateres automatisk sammen med konfigurasjonen. Det vil si at hvis utviklerne endret navnet på dokumentet eller referanseboken i hovedkonfigurasjonen, må vi konfigurere behandlingen manuelt.

Opprette en rutineoppgave

La oss lage en rutineoppgave "Utfør behandling".

La oss deaktivere bruken av den planlagte oppgaven slik at den ikke kjører automatisk når du oppdaterer konfigurasjonen.

La oss tilordne en prosedyre som vil bli utløst når en rutineoppgave startes:Modul av RoutineTasks.RoutineTaskExecutionProcessing.

Selve prosedyren ser slik ut:

Prosedyre RutineTaskExecutionProcessing(Key) Export

Parametre for RutineTasks.PerformProcessingWithParameters(Key);

Slutt på prosedyre

Vi lager en oppslagsbok for rutineoppgaver

Vår rutineoppgave kan skape mange bakgrunnsprosesser - en for hver prosessering. Hver oppgave i 1C8-plattformen har en nøkkel. Men den planlagte jobbmetoden kjenner ikke bakgrunnsjobbnøkkelen, så du må bruke bakgrunnsjobbparameterne. Som et resultat kan vi se bakgrunnsjobben i jobbkonsollen, men vi kan ikke manuelt opprette en bakgrunnsjobb fra denne konsollen, fordi jobber med parametere opprettes ikke manuelt.

Oppslagsbok "Parametere for planlagte oppgaver" :

Forutsetninger :

· Kode før lansering- ubegrenset streng - kode på 1C-språk som må kjøres før lansering.

· Behandling fra konfigurasjonen - linje (100) - behandler identifikator fra konfigurasjonen

· Behandling fra katalogen - linje (100) - lenke til katalogelementet "Ekstern behandling", hvis det er en i konfigurasjonen

· Kjør gjennom 1C-applikasjonen - Boolean - en separat 1C-applikasjon vil bli opprettet og en rutineoppgave vil bli lansert i den. Laget for 8.1, der ikke alle applikasjonsmetoder er tilgjengelige på serveren der den planlagte jobben kjører.

· Lanseringskode- - ubegrenset linje - kode på 1C-språk som vil bli utført når en planlagt oppgave startes.

La oss lage elementets form :

Ved å klikke på "Opprett reg. oppgave" en rutineoppgave med en nøkkelkode opprettes programmatisk:

Prosedyre BasicActionsFormCreateReglTask(Button)

Variabel jobb;

Key = AbbrLP(Kode);

Task = RoutineTasks.CreateRoutineTask("Utfør prosessering");

Task.Name = Nøkkel;

Task.Key = Key;

Parametere = New Array();

Parameters.Add(Key);

Task.Parameters = Parametere;

Oppgave.Skriv();

Slutt på prosedyre

Starter en planlagt oppgave

Hver rutineoppgave vi lager har en nøkkel:

Denne nøkkelen tilsvarer koden i "Parameters of routine tasks"-katalogen; den brukes til å søke når du starter en oppgave. Hvis katalogoppføringen ikke blir funnet, utføres ikke oppgaven.

Neste, hvis koden er gittKode før lansering da vil denne koden bli utført. Neste, hvis variabelen Innfri vurderes til falsk, vil oppgaven ikke bli fullført. Variabel tilgjengelig for analyse Alternativer, hvor en lenke til det funnet katalogelementet "Parametere for rutineoppgaver" er lagret.

Avhengig av de valgte verdiene for detaljene, vil enten koden på 1C-språket kjøre, eller behandlingen fra konfigurasjonen vil starte, eller behandlingen fra standard referanseboken "Ekstern prosessering" vil starte.

For 1C81 leveres utførelse i en ny applikasjon - slik at du kan bruke kode som kun er tilgjengelig på klienten, inkludert bruk av ekstern prosessering. For å gjøre dette må du merke av for "Kjør gjennom 1C-applikasjon". Ellers vil den planlagte oppgaven bli utført på serveren.

Jeg anbefaler å sette en bruker i "Bruker"-feltet for en nyopprettet rutineoppgave, slik at oppgaven utføres under visse rettigheter. Jeg anbefaler å gi en slik bruker fulle rettigheter. Jeg bruker brukeren "robot».

Rutineoppgaveplanen opprettes ved å bruke hyperkoblingen "Schedule" fra rutineoppgaveskjemaet. Du kan bruke "Rutine Task Console"-behandlingen.