Deklinatsioon fio. Deklenatsioon fio Deklinatsioon 1s

Täisnime kääne punktis 1C 8.3

1C tarkvarakompleksi töötamise ajal on kasutajatel sageli küsimusi täisnime 1C 8.3 deklinatsiooni kohta. 1C, perekonnanime deklinatsiooni funktsiooni teostab spetsiaalne komponent, mida nimetatakse "NameDecl.dll". Komponendi kasutamise alustamiseks tuleb see info- ja tehnilise toe kettalt kopeerida kausta, kus asub peamine prügikasti platvorm, ning registreerida see ka operatsioonisüsteemis. Kopeerimine toimub käsu "resvr32 NameDecl.dll" kaudu. Selleks avage "Start" ja kutsuge käsk "Käivita", nagu joonisel näidatud.

Avage aken ja kirjutage "resvr32.exe", näidates soovitud teegi teed. Teek valitakse nupu "Sirvi" kaudu. Järgmiseks tuleb valida "OK" ja kinnitada raamatukogu registreerimine.

Täisnime 1 s deklinatsioon tehakse vastavalt kahele parameetrile:

  • Juhtum, tüüp - number. See on nõutav parameeter.
  • Täisnimi, tüüp - string. See on ka nõutav parameeter.

Kuna vene keeles on kuus juhtumit, määratakse juhtumile number 1 kuni 6 vastavalt allolevale tabelile:

Samuti eristatakse FIO 1C käändekomponendi kolmandat, valikulist parameetrit - sugu (tüüp - number). Siin on 3 võimalust: 0 - auto, 1 - abikaasa, 2 - naised.

Teenus 1C 8 käände täisnimi

Versiooni 1C 8.3 programmidel on spetsiaalne teenus täisnime käänamiseks juhtudel 1C 8.3, mis töötab konfiguraatori kaudu. Seetõttu avage täisnimest keeldumiseks konfiguraatori aken ja kasutage funktsiooni "Keeldu", nagu allpool näidatud:

Üksikasjad sisestame kataloogist, kus need kuvatakse nimetavas käändes. Dokumendid prinditakse välja ja kuvatakse vormidel juba soovitud käändes. Näiteks näeb see lepingu kujul välja järgmine:



Näitena on allpool toodud tellimus töökoha võtmiseks, kus spetsialisti kaartidel on tema perekonnanimi, eesnimi ja isanimi registreeritud I.P-s, kuid trükitud kujul kuvatakse need R.P.

1C võimaldab automaatselt vormistada trükitud blankette ja dokumentatsiooni, arvestades kehtivaid seaduse nõudeid. Tähtede, sugude ja numbrite käändevajaduse dikteerivad äridokumentide haldamise standardid, mille kohaselt on iga dokument koostatud esteetiliselt, asjatundlikult ja vastab ettevõtte staatusele.

Automaatse keeldumise funktsiooni kasutamine minimeerib vigade tõenäosust dokumentide moodustamisel, mis kaitseb tulevikus negatiivsete tagajärgede eest. See kehtib eriti nende juhtumite kohta, kui korraga genereeritakse suur hulk dokumente. Automaatne tagasilükkamine lihtsustab tööd dokumentatsiooniga ja säästab aega, mis mõjutab jõudlust positiivselt.

Analüüsisime 2 perekonnanime, isanime käändeviisi juhtumite, numbrite ja soo järgi - kasutades täisnime 1C 8.3 spetsiaalset käändekomponenti ja konfiguraatoriteenuse kaudu. Proovige mõlemat ja otsustage, milline neist on teie jaoks parim.

1C-s töötades seisab kasutaja silmitsi töötaja perekonnanime või ametikoha käänamisega dokumentide trükitud kujul, see tähendab olukorraga, kui juhtudel on vaja perekonnanimede käände teha.

1C programmides täisnime deklineerimiseks on ette nähtud väline komponent - NameDecl.dll, mis sisaldab deklinatsioonifunktsiooni. Saate selle võtta ITS-kettale ja kopeerides selle installitud 1C-bin platvormiga kausta, registreerida selle operatsioonisüsteemis. See protseduur viiakse läbi käsuga resvr32 NameDecl.dll (administraatori konto all). Selleks peate nupu "Start" kaudu helistama käsule "Käivita", kasutades otsingut või kiirklahvi Windows + R.

Joon.1 Otsinguaken. Käsu "Käivita" otsimine

Ilmuvas aknas sisestage käsk resvr32.exe ja määrake nupu "Sirvi" abil pistikprogrammi teegi tee.


Joonis 2 Käsuaken "Run".

Pärast klõpsamist OK ilmub teade, et raamatukogu on edukalt registreeritud.


Joon.3 Sõnumiaken

Deklinatsioonimeetodi kirjeldus punktis 1C

Keeldu (nimi, juhtum, sugu) vastavalt parameetritele:

  • Täisnimi (nõutav), tüüp - string
  • Juhtum (kohustuslik), tüüp - number

Juhtum, kus tuleb panna täisnimi, on antud numbriga 1 kuni 6.

Juhtumitabel: küsimused, eessõnad ja nende tähendused programmikoodis

Juhtub, et tekib mitmetähenduslik olukord, kui programm peab määrama perekonnanime soo, näiteks Sigida, Chepko, Sushko, Oganezyan jne.

Sel juhul kasutatakse täiendavat parameetrit:

  • Sugu (valikuline), tüüp - number

See näitab, kas keelduda perekonnanimest või mitte. Muudel juhtudel jäetakse see parameeter välja või kasutatakse väärtust 0 (“auto”), kuna vale soo märkimine võib mõjutada õiget deklinatsiooni. Siin on võimalikud väärtused: 0 - auto, 1 - mees, 2 - naine.

Teenus "Keeldumine juhtumite järgi"

1C 8.3 programmid sisaldavad juba teenust töötajate või vastaspoolte andmete tagasilükkamiseks vastavalt dokumendis kasutatud juhtudele.



1. fragment

#Region ProgrammingInterface // Kalduv nimi // Ainult töötamiseks Windows OS-is. // // Parameetrid: // Täisnimi - String - string, mis sisaldab deklinatsiooni täisnime. // Juhtum – arv – juhtum, mille puhul objekti esitus keelduda. // 1 - Nimetav. // 2 - Genitiiv. // 3 - Datiiv. // 4 - Akusatiiv. // 5 - Loominguline. // 6 - Eessõna. // Objekt - DeclensionSubject - link objektile, mille atribuut on käänatud // Sugu - Number - Number - füüsilise juhtkonna sugu, // 1 - mees, // 2 - naine. // // Tagastamisväärtus: // String – käände täisnime käände tulemus. // Funktsioon DeclineFullName(Name, Case, Object = Undefined, Gender = Undefined) Export // Keeldub objekti esitusest. Funktsioon InflectRepresentation(Esitus, Case, Object = Undefined) Export // Teostab toimingud, mis on vajalikud käände allsüsteemi ühendamiseks vormiga.

Joonis 4 Konfiguraatori aken



2. fragment

// Keelake objekti esitus. Funktsioon DeclineView(vaade, juhtum, objekt = määramata) Ekspordi tagastamine Keeldumine(vaade, juhtum, objekt); Funktsiooni lõpp // Teostab vormil toiminguid, mis on vajalikud declensioni alamsüsteemi ühendamiseks OnCreateAtServerProcedure(Form, View, FormMasterAttributeName = "Object") Export // Hallatava objekti vormi OnWriteAtServer sündmusekäsitleja taandamiseks OnWriteAtServerProcedure(Object, Form, View, ThisName = False , Gender = Undefined) Export // Määrab käändeteenuse kättesaadavuse lipu Procedure SetInclinationServiceAccessibility(Availability) Export SetPrivilegedMode(True); CurrentParameters = New Match(SessionParameters.ClientParametersOnServer); CurrentParameters.Insert("DeclinationService Available", Availability); SessionParameters.ClientParametersOnServer = NewFixedMatch(CurrentParameters); SetPrivilegedMode(False); Lõppprotseduur

Joon.5 Keeldumisfunktsiooni kasutamine

Kasutades dokumendis olevaid üksikasju, mis on valitud teatmeteosest, milles need on esitatud nimetavas käändes, kuvatakse need dokumendi trükitud kujul soovitud käändega.

Mõelge deklinatsioonifunktsioonile, kasutades lepingu näidet jaotises 1C: Raamatupidamine 3.0. (1C: Enterprise 8.3). See näeb ette täisnime ja ametikoha käände.



Joon.6 Lepingu vormi aken. Perekonnanime ja ametikoha käände määramine

Programm paneb trükitud vormile automaatselt õige versiooni.



Joonis 7 Programmi aken – "Kallendamine juhtumite järgi"

Juhtude käände näidet võib näha töökorralduses. Töötaja kaardil on tema täisnimi märgitud nimetavas käändes ja trükitud kujul - genitiivis.



Joonis 8 Näide täisnime käändest trükitud kujul "Töökorraldus"

1C programm, võttes arvesse õigusaktide ja standardite nõudeid, võimaldab teil järgida dokumentide töötlemise ja trükitud vormide koostamise kinnitatud korda.

Juhtumite tühistamine on tingitud ka ärikäibe standarditest, mis näevad ette, et kõik dokumendid peavad olema vormistatud mitte ainult pädevalt, vaid ka esteetiliselt pädevalt, mis peegeldab organisatsiooni staatust.

Lisaks vähendab selliste funktsioonide kasutamine programmis kui automaatne käänamine oluliselt vigade tõenäosust dokumentide koostamisel.

Fail sisaldab protseduure 7.7 ja 8.x jaoks. Protseduurile edastatakse string formaadis Perekonnanimi Eesnimi Isanimi.

UPD 26/11/10: tänuga – funktsiooni uus versioon. Ma pole testinud! Küsimused selle versiooni töö kohta - talle, millegipärast ei taha ta seda levitada :)

Funktsioon CaseName(ValueName,Case=1,InitialsOnly=False, Value pDelimiter=".")
Kui TypeValue (täisnimi)<>Type("String") Seejärel
Show("Vigane string edastati ""Täisnime suurtähtedele!"""); Täisnime tagastamine;
EndIf;

// eemaldage mitu tühikut
Kuigi 1=1 Loop
Täisnimi = lühendatud LP (StrReplace(Nimi, " "," "));
Kui Leia(nimi," ")=0 Siis Katkesta EndIf;
EndCycle;

Kui TypeValue(Case)=Type("String") Siis
pad = AbbrLP(NReg(Lev(juht,1)));
Kui Find("irdwtp",pad)=0 Siis

EndIf;
ElseIf TypeZnch(Case)=Tüüp("Arv") Siis
Kui (juhtum<1) или (Падеж>6) Siis
Report("Vale suurtäht edastati ""täisnime juhtumile""!"); Täisnime tagastamine;
EndIf;
juhtum=juhtum-1;
EndIf;

Täisnimi=AblP(НReg(täisnimi)); // see on mugavam

// oma koostise analüsaator
Perekonnanimi="";
Kui d=1 tsükli StrLength(Name) järgi
chars=Keskmine(täisnimi, th, 1);

Perekonnanimi=Perenimi+märk;
EndCycle;
s=d+1; // ületas tühiku
Name="";

chars=Keskmine(täisnimi, th, 1);
If chars=" " Siis Katkesta EndIf;
Nimi=Nimi+märk;
EndCycle;
s=d+1; // teise tühiku ületamine
Keskmine nimi="";
For y=s StrLength(täisnimi) Tsükkel
chars=Keskmine(täisnimi, th, 1);
If chars=" " Siis Katkesta EndIf;
Keskmine nimi = keskmine nimi + sümbol;
EndCycle;

// nüüd on meil perekonnanimi, eesnimi ja isanimi eraldi.
// algab tegelik sisu- ja juhtumianalüüsi plokk

// tagastab, kui ise on nimetav. Kui ReturnOnlyInitials on määratud, teisendage initsiaalideks
If (Left(Case,1)="Ja") või (Case=1) Siis
Kui EI OLE ainult initsiaalid või Find(nimi, ".") Siis
Täisnime tagastamine; // kas juba teisendatud string või pole vaja teisendada
EndIf;
UusNimi = TReg(Perenimi) + " " + Vreg(Lev(Nimi,1)) + pSeparaator + Vreg(Lev(keskmine nimi,1)) + pSeparaator;
Return SokrLP (Uus täisnimi); // juhul kui eraldajaks on tühik. Viimane lõige
EndIf;

// analüüsida sugu M/F
If Right(Patronymic,1)="a" Then Gender="F" Else Gender="M" EndIf;

// luua tabeli struktuur, mis salvestab sõnalõpud
praegune=Uus väärtustabel;
StringType=NewTypeDescription("String",NewStringQualifiers(3));
NumberType=NewTypeDescription("Arv",UusNumberKvalifikaatorid(1,0));
praegune.Veerud.Add("StarOk",StringType); // vana lõpp 2 tähemärki
// veerud, mis salvestavad uusi sõnalõpusid
praegune.Veerud.Lisa("p"); // lapsevanem
praegune.Veerud.Lisa("d"); // daativ
praegune.Veerud.Add("in"); // akusatiiv
praegune.Veerud.Lisa("t"); // loominguline
praegune.Veerud.Lisa("n"); // eessõna
// et määrata, mitu tähte sõna lõpust ära lõigata,
praegune.Veerud.Add("NumberSlice",NumberType); // lõigatud tähtede arv

Vokaalid="aeeouiyyayu"; // vokaalide loetelu stringina

// ======== töötle perekonnanime ==========
// täitke tabel perekonnanime andmetega

Kui gender="M" Siis
string=praegune.Lisa(); // Ivanov
string.StarOk="*s";

read.CountSlice=0;

Rida=praegune.Lisa(); // krasinsky
string.StarOk="*th";
string.r="vau"; string.d="mu"; line.in="th"; string.t="im"; string.p="ohm";
read.CountSlice=2;

Rida=praegune.Lisa(); // kõikvõimas
rida.Starok="sch";
string.r="tema"; string.d="temale"; string.in="tema"; string.t="im"; string.p="söö";
read.CountSlice=2;

Rida=praegune.Lisa(); // valge
string.StarOk="th";
string.r="vau"; string.d="mu"; line.in="th"; string.t="th"; string.p="ohm";
read.CountSlice=2;

Rida=praegune.Lisa(); // kahvatu
string.StarOk="*th";

read.CountSlice=1;

Rida=praegune.Lisa(); // rabinovitš
string.StarOk="*h";

read.CountSlice=0;

Rida=praegune.Lisa(); // remont, zaliznyak
string.StarOk="*k";
string.r="ka"; string.d="ku"; line.in="ka"; string.t="com"; string.p="ke";
read.CountSlice=2;

Rida=praegune.Lisa(); // shinkar
string.StarOk="*b";
string.r="i"; string.d="u"; string.in="i"; string.t="sööma"; string.p="e";
read.CountSlice=1;

Rida=praegune.Lisa(); // perelman, oganesjan
string.StarOk="*n";

read.CountSlice=0;

Rida=praegune.Lisa(); // lambaliha
string.StarOk="in";
string.r="a"; string.d="y"; line.in="a"; string.t="th"; string.p="e";
read.CountSlice=0;

ElseIf Sugu = "F" Siis
string=praegune.Lisa(); // Sklodovskaja
rida.StarOk="th";
string.r="oops"; string.d="oops"; line.in="th"; string.t="oops"; string.p="oops";
read.CountSlice=2;

Rida=praegune.Lisa(); // ivanova
string.StarOk="*a";
string.r="oops"; string.d="oops"; line.in="y"; string.t="oops"; string.p="oops";
read.CountSlice=1;
EndIf;


Kui ei ole EmptyString(Perenimi) Siis
pb=Parem(perenimi,3); count="StarOk"; // Otsi seda
newLastName=Perenimi; // kui midagi ei muutu, siis olgu
stro=current.Find(pb, count);
Kui rangelt<>


Muidu
// viimase kolme tegelase poolt rangelt ei leitud, otsime kahte tegelast ainult viimase järgi
pb=Parem(perenimi,2);
stro=current.Find(pb, count);
Kui rangelt<>Määratlemata Siis
Tüvi=Lev(Perenimi, StrLength(Perenimi)-stro.CountSlice);
newLastName=Base+Abb(stro[pad]);
Muidu // kui kahte ei leita, siis otsime ühte
pb="*"+Parem(pb,1);
stro=current.Find(pb, count);
Kui rangelt<>
Tüvi=Lev(Perenimi, StrLength(Perenimi)-stro.CountSlice);
newLastName=Base+Abb(stro[pad]);


stro=current.Find(pb, count);
Kui rangelt<>Määratlemata Siis // leiti nägemise järgi
Tüvi=Lev(Perenimi, StrLength(Perenimi)-stro.CountSlice);
newLastName=Base+Abb(stro[pad]);
EndIf;
EndIf;
EndIf;
EndIf;
Muidu
uusPerekonnanimi="";
EndIf;

// ======== töötle nime ==========
// täitke tabel nime andmetega
praegune.Clear();

Kui Sugu = "M" Siis
// käsitlema erandeid
Kui Nimi="lõvi" Siis Nimi="lõvi" EndIf;
If Name="paul" Then Name="paul" EndIf;

Rida=praegune.Lisa(); // Sergei
string.starok="*th";
string.r="i"; string.d="u"; string.in="i"; string.t="sööma"; string.p="e";
rida.lõik=1;

Rida=praegune.Lisa(); // Ivan + Lev + Pavel
string.starok="*s";
string.r="a"; string.d="y"; line.in="a"; string.t="ohm"; string.p="e";
rida.lõik=0;

Rida=praegune.Lisa(); // nikita
string.starok="*a";

rida.lõik=1;

Rida=praegune.Lisa(); // kummardus
string.starok="ka";

rida.lõik=1;

Rida=praegune.Lisa(); // jeremija
string.starok="ia";

rida.lõik=1;

Rida=praegune.Lisa(); // Ilja
string.starok="*i";

rida.lõik=1;

Rida=praegune.Lisa(); // igor
string.starok="*ь";
string.r="i"; string.d="u"; string.in="i"; string.t="sööma"; string.p="e";
rida.lõik=1;

ElseIf Sugu = "F" Siis
// käsitlema erandeid
//If Name="olga" Then Name="olga" EndIf;

Rida=praegune.Lisa(); // Irina
string.starok="*a";
string.r="s"; string.d="e"; line.in="y"; string.t="oops"; string.p="e";
rida.lõik=1;

Rida=praegune.Lisa(); // Inga, Olga
string.starok="ha";
string.r="ja"; string.d="e"; line.in="y"; string.t="oops"; string.p="e";
rida.lõik=1;

Rida=praegune.Lisa(); // ester
string.starok="*ь";
string.r="ja"; string.d="ja"; line.in="b"; string.t="w"; string.p="ja";
rida.lõik=1;

Rida=praegune.Lisa(); // maria
string.starok="ia";
string.r="ja"; string.d="ja"; line.in="u"; string.t="tema"; string.p="ja";
rida.lõik=1;

Rida=praegune.Lisa(); // Sofia
string.starok="*i";
string.r="ja"; string.d="e"; line.in="u"; string.t="tema"; string.p="e";
rida.lõik=1;
EndIf;

// tabel on täis. lugege 2 viimast tähte ja otsige need üles
Kui mitte EmptyString(Name) Siis
pb=Parem(nimi,2); count="StarOk"; // Otsi seda
newName=Nimi; // kui midagi ei muutu, siis olgu
stro=current.Find(pb, count);
Kui rangelt<>Määratlemata Siis // leiti kohe range


Muidu // pole rangelt leitud, otsime ainult viimast
pb="*"+Parem(pb,1);
stro=current.Find(pb, count);
Kui rangelt<>Määratlemata Siis // leidis viimane
Base=Lev(Nimi, StrLength(Name)-string Count Slice);
newName=base+abbrlp(stro[pad]);
Muidu // viimast ei leitud, otsime tähti tüübi järgi
pb="*"+?(Leia(Vowers,Right(pb,1))=0,"s","g");
stro=current.Find(pb, count);
Kui rangelt<>Undefined=1 Seejärel // leiti tüübi järgi
Base=Lev(Nimi, StrLength(Name)-string Count Slice);
newName=base+abbrlp(stro[pad]);
EndIf;
EndIf;
EndIf;
Muidu
uusNimi="";
EndIf;

// ======== Töötleme isanime, siin on lihtsam ==========
praegune.Clear();

Kui Sugu = "M" Siis
string=praegune.Lisa();
string.r="a"; string.d="y"; line.in="a"; string.t="sööma"; string.p="e";
rida.lõik=0;
ElseIf Sugu = "F" Siis
string=praegune.Lisa();
string.r="s"; string.d="e"; line.in="y"; string.t="oops"; string.p="e";
rida.lõik=1;
EndIf;
Kui mitte EmptyString (patroonüüm), siis
Base \u003d Leo (Patronymic, StrLength (Patronymic) - praegune. Viilude arv);
uusPatroonüümne nimi = alus + lühendatud LP (praegune [pad]);
Muidu
uus isanimi="";
EndIf;

IfOnlyInitials Siis
uusNimi=Lõvi(uusNimi,1); newPatronymic=Lion(newPatronymic,1);
EndIf;

// määrake esimesed tähed suurtähtedeks
uusPerekonnanimi=ВReg(Lev(uusPerenimi,1))+Mid(uusPerekonnanimi,2);
uusNimi=ВReg(Lev(uusNimi,1))+Keskmine(uusNimi,2);
newPatronymic=ВReg(Lev(newPatronymic,1))+Mid(newPatronymic,2);

// ja nüüd on kõik koos
If InitialsOnly Siis // kui initsiaalide vorming on määratud
uusNimi=uusPerekonnanimi+" "+uusNimi+pSeparaator+uusPatroonüüm+pSeparaator;
Muidu
uusNimi=uusPerekonnanimi+" "+uusNimi+" "+uusPatronüüm;
EndIf;

If Find(täisnimi, ".") Siis // Juhul, kui sisendparameetriks on Initsiaalidega perekonnanimi. Ärge puudutage initsiaale
uusNimi = uusPerenimi + " " + TReg(eesnimi) + Treg(isanimi);
EndIf;

Return SokrLP (uus täisnimi);
Lõppfunktsioonid

Jaga: