Deklinacijos pavadinimas. Deklinacija visas vardas Deklinacija 1c

Viso vardo kilmininkas 1C 8.3

1C programinės įrangos komplekso veikimo metu vartotojams dažnai kyla klausimų dėl 1C 8.3 viso pavadinimo deklinacijos. 1C viso vardo deklinacijos funkciją atlieka specialus komponentas, vadinamas „NameDecl.dll“. Norėdami pradėti naudoti komponentą, turite nukopijuoti jį iš informacijos ir techninės pagalbos disko į aplanką, kuriame yra pagrindinė šiukšliadėžės platforma, ir taip pat užregistruoti operacinėje sistemoje. Kopijavimas atliekamas naudojant komandą „resvr32 NameDecl.dll“. Norėdami tai padaryti, atidarykite „Pradėti“ ir iškvieskite direktyvą „Vykdyti“, kaip parodyta paveikslėlyje.

Atidarykite langą ir įveskite „resvr32.exe“, nurodydami kelią į reikiamą biblioteką. Biblioteka pasirenkama mygtuku „Naršyti“. Tada turite pasirinkti „Gerai“ ir patvirtinti bibliotekos registraciją.

1c viso vardo deklinacija atliekama pagal 2 parametrus:

  • Dėklas, tipas - numeris. Tai būtinas parametras.
  • Pilnas vardas, tipas – eilutė. Tai taip pat būtinas parametras.

Kadangi rusų kalba yra šeši atvejai, pagal toliau pateiktą lentelę bylai priskiriamas skaičius nuo 1 iki 6:

Trečiasis neprivalomas parametras taip pat nustatytas pilno vardo 1C deklinacijos komponentui – lytis (tipas – skaičius). Čia yra 3 variantai: 0 – automatinis, 1 – vyriškas, 2 – moteriškas.

Paslaugos 1C 8 deklinacijos visas pavadinimas

Programos 1C 8.3 versijoje turi specialią paslaugą, skirtą viso vardo atskyrimui 1C 8.3 atvejais, kuri veikia per konfigūratorių. Todėl norėdami atmesti savo vardą ir pavardę, atidarykite konfigūravimo programos langą ir naudokite funkciją „Atmesti“, kaip parodyta toliau:

Detalius įvedame iš katalogo, kur jie rodomi vardininko raide. Dokumentai spausdinami ir rodomi formomis norima linkme. Pavyzdžiui, taip atrodo sutarties formoje:



Pavyzdžiui, žemiau pateiktas įsakymas įdarbinti, kur specialisto kortelėse jo pavardė, vardas ir tėvavardis rašomi I.P., tačiau spausdintoje formoje jie rodomi R.P.

1C automatiškai leidžia kurti spausdintas formas ir dokumentus, atsižvelgiant į galiojančius teisinius reikalavimus. Deklinacijos raidėmis, lytimis ir skaičiais poreikį diktuoja verslo dokumentų valdymo standartai, pagal kuriuos bet koks dokumentas yra surašytas estetiškai, kompetentingai ir atitinka įmonės statusą.

Naudojant automatinio atmetimo funkciją sumažinama klaidų tikimybė formuojant dokumentus, o tai apsaugo nuo neigiamų pasekmių ateityje. Tai ypač aktualu tais atvejais, kai vienu metu sugeneruojama daug dokumentų. Autodeclension supaprastina darbą su dokumentacija ir taupo laiką, o tai teigiamai veikia produktyvumą.

Mes išanalizavome 2 pavardės, patroniminio vardo deklinacijos būdus pagal raides, skaičius ir lytis - naudodami specialų komponentą, skirtą pilno vardo 1C 8.3 deklinacijai ir per konfigūratoriaus paslaugą. Išbandykite abu ir sužinokite, kuris iš jų jums tinka geriausiai.

Dirbdamas 1C, vartotojas susiduria su darbuotojo pavardės ar pareigų atskyrimo spausdintose dokumentų formose problema, tai yra, su situacija, kai reikia pavardes atskirti kiekvienu atveju.

Viso pavadinimo deklinacijai 1C programose pateikiamas išorinis komponentas - NameDecl.dll, kuriame yra deklinacijos funkcija. Galite paimti jį iš ITS disko ir nukopijuoti į aplanką su įdiegta 1C platforma - bin, užregistruoti operacinėje sistemoje. Ši procedūra atliekama naudojant komandą resvr32 NameDecl.dll (su administratoriaus paskyra). Norėdami tai padaryti, turite iškviesti komandą „Vykdyti“ naudodami mygtuką „Pradėti“, naudodami paiešką arba „Windows + R“ klavišų kombinaciją.

1 pav. Paieškos langas. Suraskite komandą Vykdyti

Atsidariusiame lange įveskite komandą resvr32.exe ir mygtuku „Naršyti“ nurodykite kelią į prijungtą biblioteką.


2 pav. „Run“ komandos langas

Paspaudus „Gerai“, pasirodys pranešimas, kad biblioteka sėkmingai užregistruota.


3 pav. Pranešimo langas

Deklinacijos metodo aprašymas 1C

Atmesti (vardas, pavardė, didžioji raidė, lytis) pagal parametrus:

  • Pilnas vardas (būtina), tipas – eilutė
  • Byla (privaloma), tipas – numeris

Atvejis, kai turi būti nurodytas visas vardas, nurodomas skaičiumi nuo 1 iki 6.

Atvejų lentelė: klausimai, prielinksniai ir jų reikšmės programos kode

Taip atsitinka, kad dviprasmiška situacija susidaro, kai programai reikia nustatyti pavardės lytį, pavyzdžiui, Sigida, Chepko, Sushko, Oganezyan ir kt.

Tokiu atveju naudokite papildomą parametrą:

  • Lytis (neprivaloma), tipas – skaičius

Tai parodo, ar atsisakyti pavardės, ar ne. Kitais atvejais šis parametras praleidžiamas arba naudojama reikšmė 0 („auto“), nes neteisinga lyties nuoroda gali turėti įtakos teisingam deklinacijai. Čia galimos reikšmės yra: 0 – auto, 1 – vyras, 2 – moteris.

Paslauga "Nuleidimas pagal atvejus"

1C 8.3 programose jau yra darbuotojų ar rangovų duomenų išskyrimo paslauga pagal dokumente naudojamus atvejus.



1 fragmentas

#ProgramInterface Area // Atmeta visą pavadinimą // Veikia tik Windows OS. // // Parametrai: // Visas pavadinimas – eilutė – eilutė, kurioje yra visas deklinacijos pavadinimas. // Atvejis – skaičius – atvejis, kai reikia atmesti objekto atvaizdavimą. // 1 - Vardininkas. // 2 - Genityvas. // 3 - Dative. // 4 - Akuzatyvas. // 5 - Kūrybiškas. // 6 – Prielinksnis. // Objektas – Deklinacijos – nuoroda į objektą, kurio detalės atmetamos // Lytis – Skaičius – Skaičius – fizinio vadovo lytis, // 1 – vyras, // 2 – moteris. // // Grąžinama reikšmė: // String – viso vardo linksnio rezultatas. // Funkcija DeclineFull Name (Visas pavadinimas, Case, Object = Nenustatyta, Lytis = Neapibrėžta) Eksportuoti // Atmeta objekto vaizdavimą. Funkcija DeclensionRepresentations (atvaizdavimas, atvejis, objektas = neapibrėžtas) Eksportuoti // Atlieka veiksmus, reikalingus formoje, kad būtų galima prijungti nuokrypių posistemį.

4 pav. Konfigūratoriaus langas



2 fragmentas

// Atmeta objekto atvaizdavimą. Funkcija DeclineRepresentation(atvaizdas, atvejis, objektas = neapibrėžtas) Eksporto grąžinimas Atmetimas(atvaizdas, atvejis, objektas); Funkcijos pabaiga // Atlieka su forma veiksmus, reikalingus norint prijungti atsiribojimo posistemį Procedūra When CreatedOnServer(Form, View, MainFormAttributeName = "Object") Export // Įvykių tvarkytuvas When RecordedOnServer valdomo objekto formos atmetimo procedūra Kai RecordedOnServer(Form , View, Object, ThisFullName = False , Gender = Undefined) Export // Nustato deklinacijos paslaugos prieinamumo ženklą Procedure Set Availability of Declension Service (Aavailability) Export SetPrivilegedMode (True); CurrentParameters = New Match(SessionParameters.ClientParametersOnServer); CurrentParameters.Insert("DeclinationServiceAvailable", Availability); SessionParameters.ClientParametersOnServer = Naujas FixedCompliance(Dabartiniai parametrai); SetPrivilegedMode(False); Procedūros pabaiga

Fig.5 „Slope“ funkcijos naudojimas

Naudojant detales dokumente, kurios parinktos iš katalogo, kuriame jie pateikiami vardininko didžiąja raide, bus rodomi spausdintoje dokumento formoje su reikiama linksniu.

Pažvelkime į deklinacijos funkciją naudodami sutarties pavyzdį 1C: Apskaita 3.0. (1C: Enterprise 8.3). Tai numato pavadinimo ir pareigų atsisakymą.



6 pav. Sutarties formos langas. Pavardės ir pareigų deklinacijos nustatymas

Programa automatiškai įtrauks teisingą parinktį į spausdintą formą.



7 pav. Programos langas – „Nukrypimas pagal atvejį“

Atvejo deklinacijos pavyzdį galima pamatyti „Įsakyme dėl samdymo“. Darbuotojo kortelėje jo vardas ir pavardė nurodomi vardine kalba, o spausdinta - Genitive.



8 pav. Viso vardo ir pavardės deklinacijos spausdintoje formoje „Įdarbinimo įsakymas“ pavyzdys

1C programa, atsižvelgiant į teisės aktų ir standartų reikalavimus, leidžia laikytis patvirtintos dokumentacijos rengimo ir spausdintų formų generavimo tvarkos.

Bylos atmetimą lemia ir verslo standartai, nurodantys, kad bet koks dokumentas turi būti surašytas ne tik kompetentingai, bet ir estetiškai kompetentingas, atspindintis organizacijos statusą.

Be to, programoje naudojant tokias funkcijas kaip autodeklinacija žymiai sumažina klaidų tikimybę rengiant dokumentus.

Faile yra 7.7 ir 8.x procedūros. Eilutę formato Pavardė Vardas Patronimas perduodama procedūrai.

UPD 11/26/10: su dėkingumu – nauja funkcijos versija. Aš to neišbandžiau! Klausimai apie šios versijos veikimą turėtų būti skirti jam, kažkodėl jis nenori jų skelbti :)

Funkcijos CaseFull pavadinimas (viso pavadinimo reikšmė, didžioji raidė = 1, tik inicialai = klaidinga, skyriklio reikšmė = ".")
Jei TypeValue (pilnas vardas)<>Įveskite ("Eilutė") Tada
Report("Neteisinga eilutė išsiųsta ""viso vardo atvejis!""); Grąžinti visą vardą;
endIf;

// pašalinti kelis tarpus
Nors 1=1 ciklas
Visas vardas=ScrLP(StrReplace(pilnas vardas," "," "));
If Find(pilnas vardas," ")=0 Tada nutraukti EndIf;
EndCycle;

Jei TypeValue(Case)=Tipas("Eilutė") Tada
pad=ScrLP(NReg(Lev(atvejis,1)));
Jei Find("irdvtp",pad)=0 Tada

endIf;
KitaipIf TypeValue(Case)=Tipas("Skaičius") Tada
Jei (atvejis<1) или (Падеж>6) Tada
Report("Neteisingas atvejis perkeltas į ""viso vardo atvejį""!"); Grąžinti visą vardą;
endIf;
pad=dėklas-1;
endIf;

Visas vardas=ScrLP(NReg(pilnas vardas)); // taip patogiau

// jūsų sudėties analizatorius
Pavardė="";
Jei th=1 pagal Strigth(pilnas pavadinimas) Ciklas
simboliai=Avg(visas vardas, th, 1);

Pavardė=Pavardė+simbolis;
EndCycle;
ы=й+1; // praėjo tarpas
Name="";

simboliai=Avg(visas vardas, th, 1);
If simboliai=" " Tada nutraukti EndIf;
Vardas=Vardas+simbolis;
EndCycle;
ы=й+1; // praėjo antrą tarpą
Antrasis vardas="";
Jei y=y pagal stiprumą(pilnas pavadinimas) Ciklas
simboliai=Avg(visas vardas, th, 1);
If simboliai=" " Tada nutraukti EndIf;
Vidurinis vardas=Vidurinis vardas+simbolis;
EndCycle;

// dabar turime atskirą pavardę, vardą ir patronimą.
// prasideda tikrasis turinio ir atvejų analizės blokas

// grąžinti, jei pats yra vardininkas. Jei nustatytas grąžinimas OnlyInitials, konvertuokite į inicialus
If (Lev(Case,1)="I") arba (Case=1) Tada
Jei NE Tik inicialai arba Rasti (Visas vardas, ".") Tada
Grąžinti visą vardą; // arba eilutė jau konvertuota, arba konvertuoti nereikia
endIf;
Naujas Visas vardas = TRreg(Pavardė) + " " + Vreg(Lev(Vardas, 1)) + pSeparator + Vreg(Lev(Vidurinis vardas, 1)) + pSeparator;
Grąžinti santrumpa (naujas visas vardas); // jei skyriklis yra tarpas. Nutrauksime paskutinį
endIf;

// analizuoti lytį M/F
If Right(Vidurinis vardas,1)="a" Tada Lytis="F" Kitaip Lytis="M" EndIf;

// sukurti lentelės struktūrą, kurioje saugomos žodžių galūnės
current=NewValueTable;
RowType=NewTypeDescription("Eilutė", NewStringQualifers(3));
NumberType=NewTypeDescription("Skaičius", NaujasSkaičiusKvalifikatoriai(1,0));
srovė.Stulpeliai.Pridėti("StarOK",Eilutės tipas); // sena pabaiga 2 simboliai
// stulpeliai, kuriuose saugomos naujos žodžių galūnės
srovė.Stulpeliai.Pridėti("p"); // tėvas
srovė.Stulpeliai.Pridėti("d"); // datyvas
srovė.Stulpeliai.Pridėti("į"); // priekaištas
srovė.Stulpeliai.Pridėti("t"); // instrumentinis
srovė.Stulpeliai.Pridėti("p"); // prielinksnis
// nurodyti, kiek raidžių nuo žodžio pabaigos reikia nutraukti,
srovė.Stulpeliai.Pridėti("Skaičiaus dalis",Skaičiaus tipas); // nupjaunamų raidžių skaičius

Balsiai="aeeouiiiyyay"; // balsių sąrašas kaip eilutė

// ======== apdorokite pavardę ==========
// užpildykite lentelę pavardės duomenimis

Jei gender="M" Tada
string=current.Add(); // Ivanovas
line.StarOk="*s";

eilutės.NumberSlice=0;

String=current.Add(); // Krasinskis
line.StarOk="*th";
string.r="eiti"; string.d="om"; string.v="eiti"; string.t="im"; string.p="om";
eilutės.NumberSlice=2;

String=current.Add(); // visagalis
linija.StarOk="blizgantis";
string.r="jis"; string.d="jis"; string.v="jo"; string.t="im"; string.p="valgyti";
eilutės.NumberSlice=2;

String=current.Add(); // baltas
line.StarOk="th";
string.r="eiti"; string.d="om"; string.v="eiti"; string.t="th"; string.p="om";
eilutės.NumberSlice=2;

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

eilutės.NumberSlice=1;

String=current.Add(); // rabinovičius
line.StarOk="*h";

eilutės.NumberSlice=0;

String=current.Add(); // pataisyti, slidus
line.StarOk="*k";
string.p="ka"; string.d="ku"; string.v="ka"; string.t="com"; string.p="ke";
eilutės.NumberSlice=2;

String=current.Add(); // šinkaras
line.StarOk="*ь";
string.p="i"; line.d="yu"; string.v="i"; string.t="em"; string.p="e";
eilutės.NumberSlice=1;

String=current.Add(); // perelmanas, oganesjanas
line.StarOk="*n";

eilutės.NumberSlice=0;

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

Kitaip Jei lytis = "F" Tada
string=current.Add(); // Sklodovskaja
line.StarOk="aya";
string.p="oh"; string.d="oh"; linija.v="y"; string.t="oh"; string.p="oh";
eilutės.NumberSlice=2;

String=current.Add(); // Ivanova
line.StarOk="*a";
string.p="oh"; string.d="oh"; string.v="u"; string.t="oh"; string.p="oh";
eilutės.NumberSlice=1;
endIf;


Jei ne EmptyString(Pavardė) Tada
pb=Teisinga(Pavardė,3); count="StarOk"; // ieškok
newLastName=Pavardė; // jei niekas nepasikeis, tai taip ir bus
str=current.Find(pb,count);
Jeigu<>


Priešingu atveju
// griežtai nerasta paskutinių trijų simbolių, paieška pagal du simbolius tik pagal paskutinį
pb=Teisinga(Pavardė,2);
str=current.Find(pb,count);
Jeigu<>Neapibrėžta Tada
Pagrindas=Lev(Pavardė,Stringgas(Pavardė)-string.Kiekis Pjūvis);
newLastName=Base+AbbrLP(string[pad]);
Kitu atveju // jei neradome dviejų, ieškome po vieną
pb="*"+Dešinė(pb,1);
str=current.Find(pb,count);
Jeigu<>
Pagrindas=Lev(Pavardė,Stringgas(Pavardė)-string.Kiekis Pjūvis);
newLastName=Base+AbbrLP(string[pad]);


str=current.Find(pb,count);
Jeigu<>Neapibrėžta Tada // rasta pagal tipą
Pagrindas=Lev(Pavardė,Stringgas(Pavardė)-string.Kiekis Pjūvis);
newLastName=Base+AbbrLP(string[pad]);
endIf;
endIf;
endIf;
endIf;
Priešingu atveju
naujasPavardė="";
endIf;

// ======== apdorokite pavadinimą ==========
// užpildykite lentelę vardo duomenimis
srovė.Išvalyti();

Jei lytis = "M", tada
// tvarkyti išimtis
Jei Vardas="liūtas" Tada Vardas="liūtas" EndIf;
If Name="paul" Then Name="paul" EndIf;

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

String=current.Add(); // ivanas + liūtas + Paulius
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(); // svogūnas
string.starok="ka";

line.barcut=1;

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

line.barcut=1;

String=current.Add(); // Ilija
string.starok="*ya";

line.barcut=1;

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

Kitaip Jei lytis = "F" Tada
// tvarkyti išimtis
//If Name="olga" Tada Name="olg" 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="ir"; line.d="e"; string.v="u"; string.t="oh"; string.p="e";
line.barcut=1;

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

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

String=current.Add(); // Sofija
string.starok="*ya";
string.p="ir"; line.d="e"; line.v="yu"; string.t="ey"; string.p="e";
line.barcut=1;
endIf;

// lentelė pilna. suskaičiuokite paskutines 2 raides ir ieškokite jų
Jei ne EmptyString(Vardas) Tada
pb=Teisinga(vardas,2); count="StarOk"; // ieškok
newName=Vardas; // jei niekas nepasikeis, tai taip ir bus
str=current.Find(pb,count);
Jeigu<>Neapibrėžta Tada // iškart rasta griežta


Kitu atveju // griežtai nerasta, ieškoti tik pagal paskutinį
pb="*"+Dešinė(pb,1);
str=current.Find(pb,count);
Jeigu<>Neapibrėžta Tada // rasta naudojant paskutinį
Bazė=Kairė(Vardas,JėgaIlgis(Vardas)-styga.Kiekis Skiltis);
newName=Base+ScrLP(string[pad]);
Kitu atveju // paskutinio neradome, ieškome raidės tipo
pb="*"+?(Rasti(balsės,dešinė(pb,1))=0,"s","g");
str=current.Find(pb,count);
Jeigu<>Undefined=1 Tada // rasta pagal tipą
Bazė=Kairė(Vardas,JėgaIlgis(Vardas)-styga.Kiekis Skiltis);
newName=Base+ScrLP(string[pad]);
endIf;
endIf;
endIf;
Priešingu atveju
newName="";
endIf;

// ======== apdorokime antrąjį vardą, čia lengviau ==========
srovė.Išvalyti();

Jei lytis = "M", tada
string=current.Add();
string.p="a"; string.d="y"; string.v="a"; string.t="em"; string.p="e";
line.columncut=0;
Kitaip Jei lytis = "F" Tada
string=current.Add();
string.p="s"; line.d="e"; string.v="u"; string.t="oh"; string.p="e";
line.barcut=1;
endIf;
Jei ne EmptyString(Vidurinis pavadinimas) Tada
Bazė=Lev(Vidurinis pavadinimas,Jėga(Vidurinis pavadinimas)-dabartinis.Kiekis);
naujas Patronimas = Bazė + AbbrLP(dabartinis [pad]);
Priešingu atveju
naujas Patronimas="";
endIf;

Jei tik inicialai Tada
newName=Lev(naujasPavadinimas,1); naujas Patronimas = Liūtas (naujas patronimas, 1);
endIf;

// pirmąsias raides nustatykite į didžiąsias
naujasPavardė=ВReg(Lev(naujaPavardė,1))+Avd(naujaPavardė,2);
newName=ВReg(Lev(newName,1))+Average(newName,2);
naujas Patronimas = VReg(Lev(naujas patronimas, 1))+Vid.(naujas patronimas, 2);

// o dabar viskas kartu
Jei tik inicialai Tada // jei nurodytas inicialų formatas
naujas Visas vardas = nauja Pavardė + " " + naujas vardas + n skyriklis + naujas patronimas + n skyriklis;
Priešingu atveju
naujas Visas vardas = nauja Pavardė + " " + naujas Vardas + " " + naujas Patronimas;
endIf;

If Find(Full Name, ".") Tada // Jei įvesties parametras yra Pavardė su inicialais. Inicialų neliečiame
naujas Visas vardas = naujas Pavardė + " " + Treg(Vardas) + Treg(Vidurinis vardas);
endIf;

Grįžti Santrumpa (naujas visas vardas);
EndFunction

Dalintis: