Pagkukumpuni Disenyo Muwebles

Pangalan ng pagbabawas. Pagbaba ng pangalan Serbisyo "Pagbabawas ayon sa mga kaso"

Ang file ay naglalaman ng mga pamamaraan para sa 7.7 at 8.x. Ang isang string sa format na Apelyido Unang Pangalan Patronymic ay ipinasa sa pamamaraan.

UPD 11/26/10: may pasasalamat - bagong bersyon ng function. Hindi ko pa nasubukan! Ang mga tanong tungkol sa pagpapatakbo ng bersyong ito ay dapat idirekta sa kanya; sa ilang kadahilanan ay ayaw niyang i-post ang mga ito :)

Kaso ng FunctionBuong Pangalan (Halaga ng Buong Pangalan, Kaso = 1, Inisyal Lang = Mali, Halaga ng Separator = ".")
Kung TypeValue(buong pangalan)<>I-type ("String") Pagkatapos
Report("Invalid line na ipinadala sa ""case of full name!"""); Ibalik ang buong pangalan;
tapusin kung;

// alisin ang maraming espasyo
Habang 1=1 Cycle
Buong pangalan=ScrLP(StrReplace(buong pangalan," "," "));
If Find(full name," ")=0 Then Abort EndIf;
EndCycle;

Kung TypeValue(Case)=Type("String") Pagkatapos
pad=ScrLP(NReg(Lev(Kaso,1)));
If Find("irdvtp",pad)=0 Then

tapusin kung;
OtherwiseIf TypeValue(Case)=Type("Number") Then
Kung (Kaso<1) или (Падеж>6) Pagkatapos
Report("Maling kaso ang inilipat sa ""buong pangalan na kaso""!"); Ibalik ang buong pangalan;
tapusin kung;
pad=case-1;
tapusin kung;

Buong pangalan=ScrLP(NReg(buong pangalan)); // ito ay mas komportable

// ang iyong composition analyzer
Apelyido="";
Para sa ika=1 Sa pamamagitan ng StrLength(buong pangalan) Cycle
symbols=Avg(buong pangalan, ika, 1);

LastName=LastName+character;
EndCycle;
ы=й+1; // pumasa sa espasyo
Pangalan="";

symbols=Avg(buong pangalan, ika, 1);
If symbols=" " Then Abort EndIf;
Pangalan=Pangalan+karakter;
EndCycle;
ы=й+1; // pumasa sa pangalawang espasyo
Gitnang pangalan="";
Para sa y=y Sa pamamagitan ng StrLength(buong pangalan) Cycle
symbols=Avg(buong pangalan, ika, 1);
If symbols=" " Then Abort EndIf;
Gitnang pangalan=Middle name+simbolo;
EndCycle;

// ngayon ay mayroon na tayong hiwalay na Apelyido, Pangalan at Patronymic.
// magsisimula ang aktwal na bloke para sa pagsusuri ng nilalaman at mga kaso

// ibalik kung ang sarili ay nominative. Kung nakatakda ang return OnlyInitials, i-convert sa initials
Kung (Lev(Case,1)="I") o (Case=1) Pagkatapos
Kung HINDI OnlyInitials o Find(Full Name, ".") Then
Ibalik ang buong pangalan; // maaaring na-convert na ang string o hindi na kailangang i-convert
tapusin kung;
NewFull Name = TRreg(Apelyido) + " " + Vreg(Lev(First Name, 1)) + pSeparator + Vreg(Lev(Middle Name, 1)) + pSeparator;
Return Abbreviation(Bagong Buong Pangalan); // kung sakaling ang delimiter ay isang espasyo. Puputulin natin ang huli
tapusin kung;

// pag-aralan ang kasarian M/F
If Right(Middle name,1)="a" Then Gender="F" Otherwise Gender="M" EndIf;

// lumikha ng istraktura ng talahanayan na nag-iimbak ng mga pagtatapos ng mga salita
kasalukuyang=NewValueTable;
RowType=NewTypeDescription("String", NewStringQualifiers(3));
NumberType=NewTypeDescription("Number", NewNumberQualifiers(1,0));
current.Columns.Add("StarOk",RowType); // lumang ending 2 character
// mga column na nag-iimbak ng mga bagong dulo ng salita
current.Columns.Add("p"); // magulang
current.Columns.Add("d"); // dating
current.Columns.Add("to"); // accusative
current.Columns.Add("t"); // instrumental
current.Columns.Add("p"); // pang-ukol
// upang ipahiwatig kung gaano karaming mga titik mula sa dulo ng salita ang puputulin,
current.Columns.Add("NumberSlice",NumberType); // bilang ng mga titik na puputulin

Mga Patinig="aeeouiiiyyay"; // listahan ng mga patinig bilang isang string

// ======== iproseso ang apelyido ==========
// punan ang talahanayan ng data para sa apelyido

Kung gender="M" Pagkatapos
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(); // makapangyarihan sa lahat
line.StarOk="makintab";
string.r="siya"; string.d="siya"; string.v="his"; string.t="im"; string.p="kumain";
lines.NumberSlice=2;

String=current.Add(); // puti
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(); // ayusin, makinis
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;

OtherwiseIf Gender="F" Then
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;
tapusin kung;


Kung hindi EmptyString(LastName) Pagkatapos
pb=Right(LastName,3); count="StarOk"; // hanapin ito
newLastName=LastName; // kung walang magbabago, magiging ganoon
str=current.Find(pb,count);
Kung<>


Kung hindi
// mahigpit na hindi nahanap ng huling tatlong character, maghanap sa pamamagitan ng dalawang character sa huli
pb=Right(LastName,2);
str=current.Find(pb,count);
Kung<>Hindi Natukoy Pagkatapos
Basis=Lev(LastName,StrLength(LastName)-string.QuantitySlice);
newLastName=Base+AbbrLP(string[pad]);
Kung hindi // kung wala kaming nakitang dalawa, hahanapin namin ang isa-isa
pb="*"+Right(pb,1);
str=current.Find(pb,count);
Kung<>
Basis=Lev(LastName,StrLength(LastName)-string.QuantitySlice);
newLastName=Base+AbbrLP(string[pad]);


str=current.Find(pb,count);
Kung<>Undefined Then // nahanap ayon sa uri
Basis=Lev(LastName,StrLength(LastName)-string.QuantitySlice);
newLastName=Base+AbbrLP(string[pad]);
tapusin kung;
tapusin kung;
tapusin kung;
tapusin kung;
Kung hindi
newLastName="";
tapusin kung;

// ======== iproseso ang pangalan ==========
// punan ang talahanayan ng data para sa pangalan
current.Clear();

Kung Kasarian="M" Pagkatapos
// hawakan ang mga exception
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 + lion + 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(); // sibuyas
string.starok="ka";

line.barcut=1;

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

line.barcut=1;

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

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;

OtherwiseIf Gender="F" Then
// hawakan ang mga exception
//If Name="olga" Then 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="ga";
string.p="at"; line.d="e"; string.v="u"; string.t="oh"; string.p="e";
line.barcut=1;

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

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

String=current.Add(); // sophia
string.starok="*ya";
string.p="at"; line.d="e"; line.v="yu"; string.t="ey"; string.p="e";
line.barcut=1;
tapusin kung;

// puno ang mesa. bilangin ang huling 2 titik at hanapin ang mga ito
Kung hindi EmptyString(Pangalan) Pagkatapos
pb=Right(Pangalan,2); count="StarOk"; // hanapin ito
newName=Pangalan; // kung walang magbabago, magiging ganoon
str=current.Find(pb,count);
Kung<>Undefined Then // nakitang mahigpit agad


Kung hindi // mahigpit na hindi nahanap, maghanap lamang sa huli
pb="*"+Right(pb,1);
str=current.Find(pb,count);
Kung<>Undefined Then // nahanap gamit ang huli
Base=Left(Pangalan,StrLength(Pangalan)-string.QuantitySlice);
newName=Base+ScrLP(string[pad]);
Kung hindi // hindi namin nakita ang huli, hinahanap namin ang uri ng liham
pb="*"+?(Find(Vowels,Right(pb,1))=0,"s","g");
str=current.Find(pb,count);
Kung<>Undefined=1 Then // found by type
Base=Left(Pangalan,StrLength(Pangalan)-string.QuantitySlice);
newName=Base+ScrLP(string[pad]);
tapusin kung;
tapusin kung;
tapusin kung;
Kung hindi
newName="";
tapusin kung;

// ======== iproseso natin ang middle name, mas madali dito ==========
current.Clear();

Kung Kasarian="M" Pagkatapos
string=current.Add();
string.p="a"; string.d="y"; string.v="a"; string.t="em"; string.p="e";
line.columncut=0;
OtherwiseIf Gender="F" Then
string=current.Add();
string.p="s"; line.d="e"; string.v="u"; string.t="oh"; string.p="e";
line.barcut=1;
tapusin kung;
Kung hindi EmptyString(Middle name) Then
Base=Lev(Middle name,StrLength(Middle name)-current.QuantitySlice);
bagong Patronymic = Base + AbbrLP(kasalukuyang[pad]);
Kung hindi
bagong Patronymic="";
tapusin kung;

Kung Initials Lamang Pagkatapos
newName=Lev(newName,1); bagong Patronymic = Leo (bagong Patronymic, 1);
tapusin kung;

// itakda ang mga unang titik sa uppercase
newLastName=ВReg(Lev(newLastName,1))+Avd(newLastName,2);
newName=ВReg(Lev(newName,1))+Avg(newName,2);
bagong Patronymic = VReg(Lev(new Patronymic, 1))+Avg(new Patronymic, 2);

// at ngayon ang lahat ay magkasama
Kung Initials Lamang Pagkatapos // kung ang format ng inisyal ay tinukoy
bagong Buong Pangalan = bagong Apelyido + " " + bagong Pangalan + n Separator + bagong Patronymic + n Separator;
Kung hindi
bagong Buong Pangalan = bagong Apelyido + " " + bagong Pangalan + " " + bagong Patronymic;
tapusin kung;

If Find(Full Name, ".") Then // Kung sakaling ang input parameter ay Apelyido na may inisyal. Hindi namin ginagalaw ang mga inisyal
bagong Buong Pangalan = bagong Apelyido + " " + Treg(First Name) + Treg(Middle Name);
tapusin kung;

Return Abbreviation(bagong buong pangalan);
EndFunction

Pagbaba ng buong pangalan sa 1C 8.3

Sa panahon ng pagpapatakbo ng 1C software complex, ang mga user ay madalas na may mga tanong tungkol sa 1C 8.3 full name declination. Ang 1C function ng declination ng buong pangalan ay isinasagawa ng isang espesyal na bahagi, na tinatawag na "NameDecl.dll". Upang simulan ang paggamit ng bahagi, kailangan mong kopyahin ito mula sa disk ng impormasyon at teknikal na suporta sa folder kung saan matatagpuan ang pangunahing bin platform, at irehistro din ito sa operating system. Ang pagkopya ay isinasagawa sa pamamagitan ng utos na "resvr32 NameDecl.dll". Upang gawin ito, buksan ang "Start" at tawagan ang "Run" directive, tulad ng ipinapakita sa figure.

Buksan ang isang window at ipasok ang "resvr32.exe", na nagpapahiwatig ng landas sa kinakailangang library. Ang library ay pinili gamit ang "Browse" na buton. Susunod, kailangan mong piliin ang "OK" at kumpirmahin ang pagpaparehistro ng library.

Ang 1c declination ng buong pangalan ay isinasagawa ayon sa 2 parameter:

  • Kaso, uri - numero. Ito ay isang kinakailangang parameter.
  • Buong pangalan, uri - string. Ito rin ay isang kinakailangang parameter.

Dahil mayroong anim na kaso sa wikang Ruso, ang isang kaso ay itinalaga ng isang numero mula 1 hanggang 6 ayon sa talahanayan sa ibaba:

Natukoy din ang pangatlo, opsyonal na parameter para sa bahagi ng declination ng Buong Pangalan 1C - kasarian (uri - numero). Mayroong 3 opsyon dito: 0 - auto, 1 - lalaki, 2 - babae.

Serbisyo 1C 8 declension buong pangalan

Ang bersyon ng programa 1C 8.3 ay may espesyal na serbisyo para sa pagbabawas ng buong pangalan ng mga kaso 1C 8.3, na gumagana sa pamamagitan ng configurator. Samakatuwid, upang tanggihan ang iyong buong pangalan, buksan ang window ng configurator at gamitin ang function na "Tanggihan", tulad ng ipinapakita sa ibaba:

Ipinasok namin ang mga detalye mula sa direktoryo, kung saan ipinapakita ang mga ito sa nominative case. Ang mga dokumento ay naka-print at ipinapakita sa mga form sa nais na pagbabawas. Bilang halimbawa, ganito ang hitsura sa form ng kontrata:



Bilang halimbawa, sa ibaba ay isang hiring order, kung saan sa mga card ng espesyalista ang kanyang apelyido, unang pangalan at patronymic ay nakasulat sa I.P., ngunit sa naka-print na anyo ay ipinapakita ang mga ito sa R.P.

Awtomatikong ginagawang posible ng 1C na lumikha ng mga naka-print na form at dokumentasyon na isinasaalang-alang ang kasalukuyang mga legal na kinakailangan. Ang pangangailangan para sa pagbabawas sa pamamagitan ng mga kaso, kasarian at mga numero ay idinidikta ng mga pamantayan ng pamamahala ng dokumento ng negosyo, ayon sa kung saan ang anumang dokumento ay iginuhit sa aesthetically, competently at tumutugma sa katayuan ng kumpanya.

Ang paggamit ng autodecline function ay pinapaliit ang posibilidad ng mga error kapag bumubuo ng mga dokumento, na nagpoprotekta laban sa mga negatibong kahihinatnan sa hinaharap. Ito ay totoo lalo na para sa mga kaso kung saan ang isang malaking bilang ng mga dokumento ay nabuo nang sabay-sabay. Gumagana ang Autodeclension streamline sa dokumentasyon at nakakatipid ng oras, na may positibong epekto sa pagiging produktibo.

Sinuri namin ang 2 paraan ng declination ng isang apelyido, isang patronymic na pangalan ayon sa mga kaso, numero at kasarian - gamit ang isang espesyal na bahagi para sa declination ng Buong Pangalan 1C 8.3 at sa pamamagitan ng serbisyo ng configurator. Subukan ang dalawa at tingnan kung alin ang pinakamahusay para sa iyo.

Kapag nagtatrabaho sa 1C, ang gumagamit ay nahaharap sa isyu ng pagbabawas ng apelyido o posisyon ng isang empleyado sa mga naka-print na anyo ng mga dokumento, iyon ay, na may isang sitwasyon kung kailan kinakailangan na pagbabawas ng mga apelyido ayon sa kaso.

Para sa declination ng isang buong pangalan sa mga 1C program, isang panlabas na bahagi ang ibinigay - NameDecl.dll, na naglalaman ng declination function. Maaari mong kunin ito mula sa ITS disk at kopyahin ito sa folder na may naka-install na 1C platform - bin, irehistro ito sa operating system. Isinasagawa ang pamamaraang ito gamit ang resvr32 NameDecl.dll command (sa ilalim ng administrator account). Upang gawin ito, kailangan mong tawagan ang utos na "Run" sa pamamagitan ng pindutang "Start", gamit ang paghahanap o ang kumbinasyon ng Windows + R key.

Fig.1 Search window. Paghahanap ng Run command

Sa window na lilitaw, ipasok ang command na resvr32.exe at tukuyin ang path sa library na konektado gamit ang "Browse" na buton.


Fig.2 "Run" command window

Pagkatapos i-click ang “Ok”, lalabas ang isang mensahe na nagsasabing matagumpay na nairehistro ang library.


Fig.3 window ng mensahe

Paglalarawan ng paraan ng deklinasyon sa 1C

Tanggihan (buong pangalan, kaso, kasarian) ayon sa mga parameter:

  • Buong pangalan (kinakailangan), uri - string
  • Kaso (obligado), uri - numero

Ang kaso kung saan dapat ilagay ang buong pangalan ay tinukoy ng isang numero mula 1 hanggang 6.

Talaan ng mga kaso: mga tanong, pang-ukol at mga kahulugan ng mga ito sa program code

Ito ay nangyayari na ang isang hindi maliwanag na sitwasyon ay lumitaw kapag ang programa ay kailangang matukoy ang kasarian ng isang apelyido, halimbawa, Sigida, Chepko, Sushko, Oganezyan, atbp.

Sa kasong ito, gumamit ng karagdagang parameter:

  • Kasarian (opsyonal), uri - numero

Ipinapakita nito kung tatanggihan o hindi tatanggihan ang apelyido. Sa ibang mga kaso, inalis ang parameter na ito o ginagamit ang value na 0 (“auto”), dahil maling indikasyon ng kasarian ay maaaring makaapekto sa tamang pagtanggi. Narito ang mga posibleng halaga ay: 0 - auto, 1 - lalaki, 2 - babae.

Serbisyong "Declination by cases"

Kasama na sa mga programa ng 1C 8.3 ang isang serbisyo para sa pagbabawas ng data ng mga empleyado o mga kontratista alinsunod sa mga kaso na ginamit sa dokumento.



Fragment 1

#ProgramInterface Area // Tinatanggihan ang buong pangalan // Gumagana lamang sa Windows OS. // // Mga Parameter: // Buong pangalan - Linya - Linya na naglalaman ng buong pangalan para sa declination. // Case - Number - ang kaso kung saan kinakailangang tanggihan ang representasyon ng bagay. // 1 - Nominatibo. // 2 - Genitive. // 3 - Dativ. // 4 - Mapagkukusa. // 5 - Malikhain. // 6 - Pang-ukol. // Object - Declensions - Link sa object, ang mga detalye nito ay tinanggihan // Kasarian - Numero - Numero - kasarian ng pisikal na lead, // 1 - lalaki, // 2 - babae. // // Return value: // String - Ang resulta ng pagbaba ng buong pangalan kung sakali. // Function DeclineFull Name(Full Name, Case, Object = Undetermined, Gender = Undefined) Export // Tinatanggihan ang representasyon ng isang bagay. Function DeclensionRepresentations(Representation, Case, Object = Undefined) Export // Nagsasagawa ng mga aksyon sa form na kinakailangan upang ikonekta ang Declension subsystem.

Fig.4 Configurator window



Fragment 2

// Tinatanggihan ang representasyon ng bagay. Function DeclineRepresentation(Representasyon, Case, Object = Undefined) Export Return Decline(Representasyon, Case, Object); End of function // Nagsasagawa kasama ng form ang mga aksyon na kinakailangan upang ikonekta ang Declension subsystem Procedure When CreatedOnServer(Form, View, MainFormAttributeName = "Object") Export // Event handler When RecordedOnServer ng isang pinamamahalaang object form para sa declension Procedure Kapag RecordedOnServer(Form , View, Object, ThisFullName = False , Gender = Undefined) Export // Its the sign of availability of the declination service Procedure SetAvailability of Declension Service (Availability) Export SetPrivilegedMode (True); CurrentParameters = Bagong Tugma(SessionParameters.ClientParametersOnServer); CurrentParameters.Insert("DeclinationServiceAvailable", Availability); SessionParameters.ClientParametersOnServer = Bagong FixedCompliance(CurrentParameters); SetPrivilegedMode(False); Katapusan ng Pamamaraan

Fig.5 Gamit ang function na "Slope".

Gamit ang mga detalye sa dokumento na pinili mula sa direktoryo kung saan ipinakita ang mga ito sa nominative case, ipapakita ang mga ito sa naka-print na form ng dokumento na may kinakailangang pagbabawas.

Tingnan natin ang function ng declination gamit ang halimbawa ng isang kontrata sa 1C: Accounting 3.0. (1C:Enterprise 8.3). Nagbibigay ito ng pagtanggi ng pangalan at posisyon.



Fig.6 Contract form window. Pagse-set up ng apelyido at pagtanggi sa posisyon

Awtomatikong ilalagay ng program ang tamang opsyon sa naka-print na form.



Fig.7 Program window – “Declination by case”

Ang isang halimbawa ng pagbabawas ng kaso ay makikita sa "Order for Hiring". Sa card ng empleyado, ang kanyang buong pangalan ay ipinahiwatig sa Nominative case, at sa naka-print na form - sa Genitive case.



Fig. 8 Halimbawa ng declination ng buong pangalan sa nakalimbag na form na "Order for employment"

Ang programa ng 1C, na isinasaalang-alang ang mga kinakailangan ng batas at mga pamantayan, ay nagpapahintulot sa iyo na sumunod sa naaprubahang pamamaraan para sa paghahanda ng dokumentasyon at pagbuo ng mga naka-print na form.

Ang pagbabawas ng mga kaso ay dahil din sa mga pamantayan ng negosyo, na nagsasaad na ang anumang dokumento ay dapat na iguguhit hindi lamang nang may kakayahan, kundi pati na rin ang aesthetically competent, na sumasalamin sa katayuan ng organisasyon.

Bilang karagdagan, ang paggamit ng mga function sa programa tulad ng autodeclension ay makabuluhang binabawasan ang posibilidad ng mga pagkakamali sa paghahanda ng dokumento.