Reparere Design Møbler

Deklinasjonsnavn. Navneforbevisning Tjenesten "Begling etter saker"

Filen inneholder prosedyrer for 7.7 og 8.x. En streng i formatet Etternavn Fornavn Patronymic sendes til prosedyren.

UPD 26.11.10: med takknemlighet - ny versjon av funksjonen. Jeg har ikke testet det! Spørsmål om bruken av denne versjonen bør rettes til ham; av en eller annen grunn vil han ikke legge dem ut :)

Funksjon CaseFull Name (Fullt navn Verdi, Stor bokstav = 1, Kun initialer = False, Separator Verdi = ".")
If TypeValue (fullt navn)<>Skriv("String") Deretter
Report("Ugyldig linje sendt til ""tilfelle av fullt navn!"""); Returner fullt navn;
slutt om;

// fjern flere mellomrom
Mens 1=1 syklus
Fullt navn=ScrLP(StrReplace(fullt navn," "," "));
If Find(fullt navn," ")=0 Avbryt deretter EndIf;
EndCycle;

Hvis TypeValue(Case)=Type("String") Da
pad=ScrLP(NReg(Lev(Case,1)));
Hvis Finn("irdvtp",pad)=0 Da

slutt om;
OtherwiseIf TypeValue(Case)=Type("Tall") Deretter
Hvis (tilfelle<1) или (Падеж>6) Deretter
Report("Feil sak overført til ""full navn sak""!"); Returner fullt navn;
slutt om;
pad=case-1;
slutt om;

Fullt navn=ScrLP(NReg(fullt navn)); // det er mer behagelig

// komposisjonsanalysatoren din
Etternavn="";
For th=1 By StrLength(fullt navn) Cycle
symbols=Avg(fullt navn, th, 1);

Etternavn=Etternavn+tegn;
EndCycle;
ы=й+1; // passerte mellomrom
Navn="";

symbols=Avg(fullt navn, th, 1);
If symbols=" " Then Abort EndIf;
Navn=Navn+tegn;
EndCycle;
ы=й+1; // passerte den andre plassen
Mellomnavn="";
For y=y By StrLength(fullt navn) Syklus
symbols=Avg(fullt navn, th, 1);
If symbols=" " Then Abort EndIf;
Mellomnavn=Mellomnavn+symbol;
EndCycle;

// nå har vi separate Etternavn, Fornavn og Patronym.
// selve blokken for å analysere innhold og saker begynner

// returner hvis seg selv er nominativ. Hvis retur OnlyInitials er satt, konverter til initialer
If (Lev(Case,1)="I") eller (Case=1) Then
Hvis IKKE bare initialer eller Finn(Fullt navn, ".") Deretter
Returner fullt navn; // enten er strengen allerede konvertert eller det er ikke nødvendig å konvertere
slutt om;
NewFull Name = TRreg(Etternavn) + " " + Vreg(Lev(Fornavn, 1)) + pSeparator + Vreg(Lev(Mellomnavn, 1)) + pSeparator;
Returforkortelse (nytt fullt navn); // i tilfelle skilletegnet er et mellomrom. Vi kutter av den siste
slutt om;

// analysere kjønnet M/K
If Right(Middle name,1)="a" Then Gender="F" Ellers Gender="M" EndIf;

// lag en tabellstruktur som lagrer avslutningene på ord
gjeldende=Nyverditabell;
RowType=NewTypeDescription("String", NewStringQualifiers(3));
NumberType=NewTypeDescription("Tall", NewNumberQualifiers(1,0));
current.Columns.Add("StarOk",RowType); // gammel slutt 2 tegn
// kolonner som lagrer nye ordavslutninger
current.Columns.Add("p"); // forelder
current.Columns.Add("d"); // dativ
current.Columns.Add("to"); // akkusativ
current.Columns.Add("t"); // instrumental
current.Columns.Add("p"); // preposisjon
// for å indikere hvor mange bokstaver fra slutten av ordet som skal kuttes av,
current.Columns.Add("NumberSlice",NumberType); // antall bokstaver som skal kuttes av

Vokaler="aeeouiiiyyay"; // liste over vokaler som en streng

// ======== behandle etternavnet ==========
// fyll tabellen med data for etternavnet

Hvis kjønn="M" Da
string=current.Add(); // Ivanov
line.StarOk="*s";

lines.NumberSlice=0;

String=current.Add(); // Krasinski
line.StarOk="*th";
string.r="go"; string.d="om"; string.v="go"; string.t="im"; string.p="om";
lines.NumberSlice=2;

String=current.Add(); // allmektig
line.StarOk="shiny";
string.r="ham"; string.d="ham"; string.v="hans"; string.t="im"; string.p="spise";
lines.NumberSlice=2;

String=current.Add(); // hvit
line.StarOk="th";
string.r="go"; string.d="om"; string.v="go"; string.t="th"; string.p="om";
lines.NumberSlice=2;

String=current.Add(); //paley
line.StarOk="*th";

lines.NumberSlice=1;

String=current.Add(); // rabinovich
line.StarOk="*h";

lines.NumberSlice=0;

String=current.Add(); // fikse, glatt
line.StarOk="*k";
string.p="ka"; string.d="ku"; string.v="ka"; string.t="com"; string.p="ke";
lines.NumberSlice=2;

String=current.Add(); // shinkar
line.StarOk="*ь";
string.p="i"; line.d="yu"; string.v="i"; string.t="em"; string.p="e";
lines.NumberSlice=1;

String=current.Add(); // perelman, oganesyan
line.StarOk="*n";

lines.NumberSlice=0;

String=current.Add(); // barankin
line.StarOk="in";
string.p="a"; string.d="y"; string.v="a"; string.t="th"; string.p="e";
lines.NumberSlice=0;

EllersIf Gender="F" Da
string=current.Add(); // Sklodovskaya
line.StarOk="aya";
string.p="oh"; string.d="oh"; line.v="y"; string.t="oh"; string.p="oh";
lines.NumberSlice=2;

String=current.Add(); // Ivanova
line.StarOk="*a";
string.p="oh"; string.d="oh"; string.v="u"; string.t="oh"; string.p="oh";
lines.NumberSlice=1;
slutt om;


Hvis ikke EmptyString(LastName) Da
pb=Høyre(Etternavn,3); count="StarOk"; // søk etter det
newLastName=Etternavn; // hvis ingenting endres, vil det være slik
str=gjeldende.Finn(pb,antall);
Hvis<>


Ellers
// Finnes strengt tatt ikke av de tre siste tegnene, søk med to tegn kun etter de siste
pb=Høyre(Etternavn,2);
str=gjeldende.Finn(pb,antall);
Hvis<>Udefinert Da
Basis=Lev(Etternavn,StrLength(Etternavn)-streng.QuantitySlice);
newLastName=Base+AbbrLP(streng[pad]);
Ellers // hvis vi ikke fant to, ser vi etter en om gangen
pb="*"+Høyre(pb,1);
str=gjeldende.Finn(pb,antall);
Hvis<>
Basis=Lev(Etternavn,StrLength(Etternavn)-streng.QuantitySlice);
newLastName=Base+AbbrLP(streng[pad]);


str=gjeldende.Finn(pb,antall);
Hvis<>Undefined Deretter // funnet etter type
Basis=Lev(Etternavn,StrLength(Etternavn)-streng.QuantitySlice);
newLastName=Base+AbbrLP(streng[pad]);
slutt om;
slutt om;
slutt om;
slutt om;
Ellers
newLastName="";
slutt om;

// ======== behandle navnet ==========
// fyll tabellen med data for navnet
gjeldende.Slett();

Hvis Kjønn = "M" Da
// håndtere unntak
If Name="lion" Then Name="lion" EndIf;
If Name="paul" Then Name="paul" EndIf;

String=current.Add(); // Sergey
string.starok="*th";
string.p="i"; line.d="yu"; string.v="i"; string.t="em"; string.p="e";
line.barcut=1;

String=current.Add(); // ivan + løve + paul
string.starok="*s";
string.p="a"; string.d="y"; string.v="a"; string.t="om"; string.p="e";
line.columncut=0;

String=current.Add(); // nikita
string.starok="*a";

line.barcut=1;

String=current.Add(); // løk
string.starok="ka";

line.barcut=1;

String=current.Add(); // Jeremia
string.starok="iya";

line.barcut=1;

String=current.Add(); // ilya
string.starok="*i";

line.barcut=1;

String=current.Add(); // igor
string.starok="*ь";
string.p="i"; line.d="yu"; string.v="i"; string.t="em"; string.p="e";
line.barcut=1;

EllersIf Gender="F" Da
// håndtere unntak
//If Name="olga" Then Name="olga" EndIf;

String=current.Add(); // Irina
string.starok="*a";
string.p="s"; line.d="e"; string.v="u"; string.t="oh"; string.p="e";
line.barcut=1;

String=current.Add(); // Inga, Olga
string.starok="ha";
string.p="og"; line.d="e"; string.v="u"; string.t="oh"; string.p="e";
line.barcut=1;

String=current.Add(); // Esther
string.starok="*ь";
string.p="og"; string.d="og"; line.v="b"; string.t="ju"; string.p="og";
line.barcut=1;

String=current.Add(); // Maria
string.starok="iya";
string.p="og"; string.d="og"; line.v="yu"; string.t="ey"; string.p="og";
line.barcut=1;

String=current.Add(); // sophia
string.starok="*i";
string.p="og"; line.d="e"; line.v="yu"; string.t="ey"; string.p="e";
line.barcut=1;
slutt om;

// bordet er fullt. tell de to siste bokstavene og se etter dem
Hvis ikke EmptyString(Name) Then
pb=Høyre(Navn,2); count="StarOk"; // søk etter det
newName=Navn; // hvis ingenting endres, vil det være slik
str=gjeldende.Finn(pb,antall);
Hvis<>Undefined Deretter // funnet streng umiddelbart


Ellers // ikke funnet, søk kun etter den siste
pb="*"+Høyre(pb,1);
str=gjeldende.Finn(pb,antall);
Hvis<>Undefined Deretter // funnet med den siste
Base=Left(Name,StrLength(Name)-string.QuantitySlice);
newName=Base+ScrLP(streng[pad]);
Ellers // fant vi ikke den siste, vi ser etter bokstavtypen
pb="*"+?(Finn(Vokaler,Høyre(pb,1))=0,"s","g");
str=gjeldende.Finn(pb,antall);
Hvis<>Undefined=1 Deretter // funnet etter type
Base=Left(Name,StrLength(Name)-string.QuantitySlice);
newName=Base+ScrLP(streng[pad]);
slutt om;
slutt om;
slutt om;
Ellers
newName="";
slutt om;

// ======== la oss behandle mellomnavnet, det er lettere her ==========
gjeldende.Slett();

Hvis Kjønn = "M" Da
string=current.Add();
string.p="a"; string.d="y"; string.v="a"; string.t="em"; string.p="e";
line.columncut=0;
EllersIf Gender="F" Da
string=current.Add();
string.p="s"; line.d="e"; string.v="u"; string.t="oh"; string.p="e";
line.barcut=1;
slutt om;
Hvis ikke EmptyString(Mellomnavn) Da
Base=Lev(Mellomnavn,StrLength(Mellomnavn)-current.QuantitySlice);
new Patronymic = Base + AbbrLP(current[pad]);
Ellers
new Patronymic="";
slutt om;

Om bare initialer da
nyttNavn=Lev(nyttNavn,1); ny patronym = Leo (ny patronym, 1);
slutt om;

// sett de første bokstavene til store bokstaver
newLastName=ВReg(Lev(nyttEtternavn,1))+Avd(nyttEtternavn,2);
newName=ВReg(Lev(nyttNavn,1))+Gjennomsnitt(nyttNavn,2);
new patonymic = VReg(Lev(new patonymic, 1))+Avg(new patonymic, 2);

// og nå er alt sammen
If Initials Only Then // hvis initialformatet er spesifisert
nytt fullt navn = nytt etternavn + " " + nytt fornavn + n skilletegn + nytt patronym + n skilletegn;
Ellers
nytt fullt navn = nytt etternavn + " " + nytt fornavn + " " + nytt patronym;
slutt om;

Hvis Finn(Fullt navn, ".") Så // I tilfelle inngangsparameteren er Etternavn med initialer. Vi rører ikke initialene
nytt Fullt Navn = nytt Etternavn + " " + Treg(Fornavn) + Treg(Mellomnavn);
slutt om;

Return Forkortelse (nytt fullt navn);
EndFunction

Deklinasjon av fullt navn i 1C 8.3

Under driften av 1C-programvarekomplekset har brukere ofte spørsmål angående 1C 8.3-avvisningen av fullt navn. 1C funksjon av deklinasjon av fullt navn utføres av en spesiell komponent, som kalles "NameDecl.dll". For å begynne å bruke komponenten, må du kopiere den fra informasjons- og teknisk støttedisken til mappen der hovedbin-plattformen er plassert, og også registrere den i operativsystemet. Kopiering utføres gjennom kommandoen "resvr32 NameDecl.dll". For å gjøre dette, åpne "Start" og ring "Run"-direktivet, som vist i figuren.

Åpne et vindu og skriv inn "resvr32.exe", som indikerer banen til det nødvendige biblioteket. Biblioteket velges ved å bruke "Bla gjennom"-knappen. Deretter må du velge "OK" og bekrefte bibliotekregistreringen.

1c avvisning av fullt navn utføres i henhold til 2 parametere:

  • Sak, type - nummer. Dette er en nødvendig parameter.
  • Fullt navn, type - streng. Dette er også en nødvendig parameter.

Siden det er seks saker på russisk språk, tildeles en sak et nummer fra 1 til 6 i henhold til tabellen nedenfor:

En tredje, valgfri parameter er også identifisert for deklinasjonskomponenten til Fullt navn 1C - kjønn (type - tall). Det er 3 alternativer her: 0 - auto, 1 - mann, 2 - kvinne.

Tjeneste 1C 8 deklinasjon fullt navn

Programversjon 1C 8.3 har en spesiell tjeneste for deklinasjon av fullt navn etter tilfeller 1C 8.3, som fungerer gjennom konfiguratoren. Derfor, for å avvise ditt fulle navn, åpne konfiguratorvinduet og bruk "Avslå"-funksjonen, som vist nedenfor:

Vi legger inn detaljene fra katalogen, der de vises i nominativ kasus. Dokumenter skrives ut og vises i skjemaer i ønsket deklinasjon. For eksempel ser det slik ut i kontraktsskjemaet:



Som et eksempel, nedenfor er en ansettelsesordre, der i spesialistens kort hans etternavn, fornavn og patronym er skrevet i I.P., men i trykt form vises de i R.P.

1C gjør det automatisk mulig å lage trykte skjemaer og dokumentasjon under hensyntagen til gjeldende lovkrav. Behovet for deklinasjon etter saker, kjønn og tall er diktert av standardene for forretningsdokumenthåndtering, i henhold til hvilke ethvert dokument er utarbeidet estetisk, kompetent og tilsvarer statusen til selskapet.

Bruk av autodecline-funksjonen minimerer sannsynligheten for feil ved generering av dokumenter, noe som beskytter mot negative konsekvenser i fremtiden. Dette gjelder spesielt for tilfeller der et stort antall dokumenter genereres på en gang. Autodeclension effektiviserer arbeidet med dokumentasjon og sparer tid, noe som har en positiv effekt på produktiviteten.

Vi har analysert 2 måter å deklinere et etternavn, et patronymisk navn etter kasus, tall og kjønn - ved å bruke en spesiell komponent for deklinering av Fullt navn 1C 8.3 og gjennom konfiguratortjenesten. Prøv begge og se hvilken som fungerer best for deg.

Når han jobber i 1C, står brukeren overfor spørsmålet om forlengelse av etternavnet eller stillingen til en ansatt i trykte former for dokumenter, det vil si med en situasjon når det er nødvendig å forkaste etternavn i sak.

For avvisning av et fullt navn i 1C-programmer, er en ekstern komponent gitt - NameDecl.dll, som inneholder deklinasjonsfunksjonen. Du kan ta den fra ITS-disken og kopiere den til mappen med den installerte 1C-plattformen - bin, registrer den i operativsystemet. Denne prosedyren utføres med kommandoen resvr32 NameDecl.dll (under en administratorkonto). For å gjøre dette, må du ringe kommandoen "Kjør" gjennom "Start" -knappen, ved å bruke søket eller Windows + R-tastkombinasjonen.

Fig.1 Søkevindu. Finne Kjør-kommandoen

I vinduet som vises, skriv inn kommandoen resvr32.exe og spesifiser banen til biblioteket som skal kobles til ved å bruke "Bla gjennom"-knappen.


Fig.2 “Kjør” kommandovindu

Etter å ha klikket på "Ok", vises en melding om at biblioteket er registrert.


Fig.3 Meldingsvindu

Beskrivelse av deklinasjonsmetoden i 1C

Avslå (fullt navn, kasus, kjønn) i henhold til parametrene:

  • Fullt navn (påkrevd), skriv – streng
  • Sak (obligatorisk), type – nummer

Tilfellet der det fulle navnet må plasseres er spesifisert med et tall fra 1 til 6.

Tabell over kasus: spørsmål, preposisjoner og deres betydning i programkode

Det skjer at en tvetydig situasjon oppstår når programmet trenger å bestemme kjønnet til et etternavn, for eksempel Sigida, Chepko, Sushko, Oganezyan, etc.

I dette tilfellet, bruk en ekstra parameter:

  • Kjønn (valgfritt), type - nummer

Den viser om du skal avslå etternavnet eller ikke. I andre tilfeller er denne parameteren utelatt eller verdien 0 ("auto") brukes, fordi feil kjønnsindikasjon kan påvirke riktig deklinasjon. Her er de mulige verdiene: 0 – auto, 1 – mann, 2 – kvinne.

Tjenesten "Avvisning etter saker"

1C 8.3-programmer inkluderer allerede en tjeneste for deklinering av data fra ansatte eller kontraktører i samsvar med tilfellene som brukes i dokumentet.



Fragment 1

#ProgramInterface Area // Avviser hele navnet // Fungerer bare på Windows OS. // // Parametere: // Fullt navn - Linje - Linje som inneholder det fulle navnet for deklinasjon. // Case - Number - tilfellet der det er nødvendig å avvise representasjonen av objektet. // 1 - Nominativ. // 2 - Genitiv. // 3 - Dativ. // 4 - Akkusativ. // 5 - Kreativt. // 6 - Preposisjon. // Objekt - Deklinasjoner - Link til objektet, hvis detaljer er avvist // Kjønn - Antall - Antall - kjønn på den fysiske hovedrollen, // 1 - mann, // 2 - kvinne. // // Returverdi: // String - Resultatet av deklinasjonen av hele navnet i store og små bokstaver. // Funksjon DeclineFull Name(Fullt navn, Sak, Objekt = Ubestemt, Kjønn = Udefinert) Eksporter // Avviser representasjonen av et objekt. Funksjon DeclensionRepresentations(Representation, Case, Object = Undefined) Export // Utfører handlinger på skjemaet som er nødvendig for å koble til deklinasjonsundersystemet.

Fig.4 Konfiguratorvindu



Fragment 2

// Avviser objektets representasjon. Funksjon DeclineRepresentation(Representation, Case, Object = Undefined) Export Return Decline(Representation, Case, Object); Slutt på funksjon // Utfører med skjemaet handlingene som er nødvendige for å koble til deklinasjonsundersystemet Prosedyre When CreatedOnServer(Form, View, MainFormAttributeName = "Object") Eksporter // Event handler When RecordedOnServer av et administrert objektskjema for deklinasjon Prosedyre When RecordedOnServer(Form , Vis, Objekt, ThisFullName = False , Kjønn = Udefinert) Eksporter // Setter tegnet på tilgjengelighet av avvisningstjenesten Prosedyre SetTilgjengelighet for deklinasjonstjeneste (Tilgjengelighet) Eksporter SetPrivilegedMode (True); CurrentParameters = New Match(SessionParameters.ClientParametersOnServer); CurrentParameters.Insert("DeclinationServiceAvailable", Tilgjengelighet); SessionParameters.ClientParametersOnServer = New FixedCompliance(CurrentParameters); SetPrivilegedMode(False); Slutt på prosedyre

Fig.5 Bruke "Slope"-funksjonen

Ved å bruke detaljer i dokumentet som er valgt fra katalogen der de er presentert i nominativ kasus, vil de vises i den trykte formen av dokumentet med den nødvendige deklinasjonen.

La oss se på deklinasjonsfunksjonen ved å bruke eksemplet på en kontrakt i 1C: Regnskap 3.0. (1C:Enterprise 8.3). Dette sørger for avvisning av navn og stilling.



Fig.6 Kontraktsskjemavindu. Sette opp etternavn og stillingsavvisning

Programmet vil automatisk legge det riktige alternativet inn i det trykte skjemaet.



Fig.7 Programvindu – "Avvisning per sak"

Et eksempel på saksavvisning kan sees i "Ordre for innleie". På arbeidstakerens kort er hans fulle navn angitt i Nominative case, og i trykt form - i Genitive case.



Fig. 8 Eksempel på avvisning av fullt navn i det trykte skjemaet "Ordre for ansettelse"

1C-programmet, som tar hensyn til kravene i lovgivning og standarder, lar deg overholde den godkjente prosedyren for å utarbeide dokumentasjon og generere trykte skjemaer.

Deklinasjon av saker skyldes også forretningsstandarder, som fastsetter at ethvert dokument må utarbeides ikke bare kompetent, men også estetisk kompetent, noe som gjenspeiler organisasjonens status.

I tillegg reduserer bruk av funksjoner i programmet som autodeklinasjon betydelig sannsynligheten for feil i dokumentforberedelsen.