Shtoni një rresht në pjesën tabelare të dokumentit 1s 8.3. Hotkeys: veprime të përgjithshme

Për shembullin e mëparshëm, mund të shtoni linjat e mëposhtme të kodit:

Elementet e formës.TableField1.AddRow(); faqe = FormElements.TableField1.CurrentRow; p.I pari = 3; p.Second = "Miell"; p.Sasia = 350;

Si të përcaktoni numrin e rreshtave në një tabelë vlerash në 1s 8?

countRows = tabela.Sasia(); Raporti ("Numri i rreshtave në tabelën e vlerave të tabelës = " + numri i rreshtave);

Rezultati:

Numri i rreshtave në tabelën e vlerave të tabelës = 3

Si të fshini një rresht në një tabelë vlerash në 1s 8?

rowTable = tabelë; tabela.Delete(rowTable);

Si të shembet një tabelë vlerash në 1s 8?

Palos:

tabela.Collapse("Second", "Sasia");

Ne marrim pas konvolucionit:

Si të renditni një tabelë vlerash në 1s 8?

Rendit sipas kolonës së dytë dhe të tretë:

Tabela.Sort("Second, Sasia");

Si të poziciononi një fushë tabele në një vijë në 1c 8?

Në rreshtin e dytë:

Form Elements.TableField1.CurrentRow = tabela;

Forma e printueshme në 1s 8

Së pari, ne bëjmë një plan urbanistik (emri i zonës: zgjidhni linjat e kërkuara të paraqitjes, në vetitë, në fushën Emri, shkruani emrin e zonës), pastaj e shfaqim atë në një dokument spreadsheet:

Procedura CommandPanel1Print(Button) variabli td, rs, rs1, faqosja, kodi, emri, emri; kodi = 0; layout = GetLayout("Produkte"); header = layout.GetArea("Header"); header.Parameters.datta = CurrentDate(); pc = layout.GetArea ("pc"); pc1 = layout.GetArea ("pc1"); td = TabularDocument i ri; td.Dalja (kapaku); nomen = Drejtoritë.Nomenklatura; përzgjedhje = nom.SelectHierarkically(); ndërsa fetch.Next() kodi i ciklit = kodi + 1; nëse mostra.ThisGroup = True atëherë pc1.Parametrat.kodi = kodi; pc1.Parametrat.emri = përzgjedhja.Emri; td.Dalja (rs1); else rs.Parametrat.kodi = kodi; rs.Parametrat.emri = përzgjedhja.Emri; td. Tërhiqe(rs); fundNëse; Cikli i fundit; etj.ViewOnly = E vërtetë; td.Show("Direktoria ""Nomenklatura"""); Fundi i procedurës

Aftësitë themelore të një gjuhe programimi zakonisht përfshijnë punën me numra dhe vargje. Zakonisht këto veçori janë të koduara në kodin e përpiluesit (ose zbatohen klasat "bazë" të gjuhës së programimit).

Në 1C, aftësia për të punuar me vargje është programuar në vetë platformën. Sot do të shikojmë veçoritë e punës me vargjet 1C në programet në gjuhën e integruar 1C.

Vlera e linjës 1C

1. Le të fillojmë me më të thjeshtat. Krijimi i një ndryshoreje dhe caktimi i një vlere konstante të vargut duket kështu në 1C:

Variabla = "Përshëndetje, botë!";

Nëse duhet të specifikoni një karakter citate në një vlerë konstante të vargut 1C, atëherë duhet ta dyfishoni atë ""

Variabla = "Përshëndetje, botë"!;

2. Ndërprerja e linjës 1C mund të specifikohet në dy mënyra njëherësh. E para është duke përdorur simbolin |

Variabla = "Përshëndetje,
| botë! ";

E dyta është përdorimi i numërimit të sistemit të simboleve. Kjo ju lejon të shtoni të dyja ndërprerjet e linjës 1C dhe karaktere të tjera që nuk printohen, si TAB.

Variabla = "Përshëndetje" + Simbolet.PS + "paqe!";

3. Konfigurimet në 1C mund të zhvillohen jo vetëm për një gjuhë (rusisht, anglisht ose një tjetër) - por njëkohësisht për disa gjuhë. Në këtë rast, gjuha e përdorur aktualisht zgjidhet në fund të dritares 1C.

Lista e gjuhëve ndodhet në dritaren e konfigurimit në degën e Përgjithshme/Gjuhët. Çdo gjuhë ka një identifikues të shkurtër si p.sh ru ose eng.

Është e qartë se kur programoni një konfigurim të tillë, linjat 1C mund të jenë gjithashtu shumëgjuhëshe. Për ta bërë këtë, është e mundur të krijoni një linjë të tillë 1C duke specifikuar përmes; opsionet sipas identifikuesit të gjuhës:

Variable = "ru=""Përshëndetje, botë! ""; en=""Përshëndetje, botë! """;

Nëse përdorni linjën 1C të formuar në këtë mënyrë si zakonisht, atëherë do të jetë ajo që shkruhet në të. Në mënyrë që sistemi ta ndajë atë në dy opsione dhe të përdorë atë të dëshiruar, duhet të përdorni funksionin НStr():

//korrekt për konfigurimet dygjuhëshe
Raporti(NStr(Variable));

Rekuizita me linjë të tipit 1C

Atributi është një fushë në drejtorinë/dokumentin 1C. Ai ndryshon nga një variabël në një program në gjuhën 1C në atë që për atributin tregohet saktësisht lloji i tij (numri, vargu 1C, etj.). Nëse keni nevojë të rifreskoni kujtesën tuaj se çfarë është një mbështetëse, shikoni mësimin në vazhdim.

Nëse specifikoni llojin e atributit - rreshti 1C, atëherë duhet të specifikoni gjithashtu parametrat.

Linjat 1C vijnë në gjatësi të pakufizuar (treguar si gjatësi = 0) dhe gjatësi të kufizuar, duke treguar numrin e saktë të karaktereve. Rreshtat 1C me gjatësi të pakufizuar ruhen në një tabelë të veçantë SQL, kështu që përdorimi i tyre është më pak produktiv sesa ato të kufizuara.

Kjo është arsyeja pse përdorimi i vargjeve 1C me gjatësi të pakufizuar ka kufizimet e veta - nuk është e mundur t'i përdorni ato kudo. Për shembull, nuk lejohet si numër dokumenti, kod referimi ose matje.

Duke punuar me vargjet 1C

Ekzistojnë disa funksione të integruara të platformës 1C për të punuar me vargje.

  • AbbrLP ("E pabesueshme, por e vërtetë!")
    Heq hapësirat shtesë nga linja 1C. Mund të përdoret gjithashtu për të kthyer çdo lloj në një varg 1C (për shembull, numra).
  • Variabli = "Vasya" + AbbrLP(" plus") + "Olya"; //do të jetë "Vasya plus Olya"
    Një shembull i përmbledhjes së disa vlerave të vargut 1C. Rezultati do të jetë një rresht 1C.
  • Variabla = Lev ("Muzikë", 2); //do të jetë "Mu"
    Variabla = Medium ("Muzikë", 2, 2); //do të ketë "kërcënim"
    Variabla = Të drejtat ("Muzikë", 2); //do të ketë "ka"
    Opsione të ndryshme për marrjen e një nënvargu nga një varg 1C.
  • Variable = Find("Muzikë", "zy"); //do të ketë 3
    Kërkoni për një nënvarg në vargun 1C, duke filluar nga karakteri 1.
  • Variable = StrLength ("Muzikë"); //do të ketë 6
    Kthen numrin e karaktereve në rreshtin 1C.
  • Raportoni ("Përshëndetje") //në dritaren e mesazhit në fund të dritares 1C
    Alert ("Përshëndetje") // dialog popup
    Statusi ("Përshëndetje") //në vijën e shfaqjes së statusit në fund të majtë
    .

Sjellja e objekteve në rreshtin 1C

Siç e dini, formati më i popullarizuar për shkëmbimin e informacionit të strukturuar aktualisht është XML. Edhe versioni më i fundit i MS Office Word dhe Excel ruan skedarët në këtë format (përkatësisht docx dhe xlsx, ndryshoni shtesën në zip, hapeni në një arkivues).

Platforma 1C për shkëmbimin e të dhënave ofron disa opsione, kryesore prej të cilave është gjithashtu XML.

1. Metoda më e thjeshtë është përdorimi i funksionit Abbreviation() ose String(). Ju mund të përdorni funksionin PËRFAQËSIM() në trupin e kërkesës. Rezultati i veprimit të tyre është i njëjtë - ata gjenerojnë një paraqitje të vargut të çdo objekti 1C për përdoruesin.

Për një direktori si parazgjedhje, ky do të jetë emri i tij. Për një dokument - emri i dokumentit, numri dhe data.

2. Çdo objekt 1C (me kufizime) mund të konvertohet në XML dhe anasjelltas. Procesi i konvertimit quhet serializimi.

StringViewXml = XMLString(Vlera); //merr XML nga vlera 1C
Vlera1C = XMLValue(Type("DirectoryLink.Nomenklature"),TypeStringXml); //merrni vlerën 1C nga vargu XML, duhet të specifikoni llojin 1C që duhet të merret

3. Ekziston mënyra e vetë platformës 1C për të kthyer çdo objekt 1C në një varg. Ai migroi nga versioni 1C 7.7. Ky format nuk kuptohet nga programet e tjera, por 1C të tjera e kuptojnë atë, gjë që e bën të lehtë përdorimin e tij për shkëmbim midis bazave të të dhënave 1C.

Rreshti = ValueInRowInt(Vlera1C); //merr vargun 1C nga vlera 1C
ValueVFile("C:\MyFile.txt", Value1C); //një opsion tjetër, marrim një skedar me një varg të ruajtur nga vlera 1C
Vlera1C = ValueFromStringInt(String); //kthehu nga rreshti 1C
Value1C = ValueFile ("C:\MyFile.txt"); //kthehu nga skedari

Redaktimi i rreshtave 1C në formular

Përveç punës me vargjet 1C në një program në gjuhën 1C, sigurisht që do të doja që përdoruesi të mund t'i modifikonte ato. Ka disa mundësi për këtë:

1. Mënyra më e lehtë është të kërkoni hyrjen e një linje 1C sipas kërkesës. Kjo metodë përdoret kur mëson programimin 1C; në jetë përdoret shumë më rrallë (por përdoret!).

Variabla = "";
Rreshti = EnterValue (Variable, "Enter Full Name");

2. Për të shfaqur detajet e një objekti 1C (drejtori/dokument) ose detajet e formularit (shih), më së shpeshti përdoret një fushë hyrëse. Ky është mjeti më i zakonshëm në 1C që përdoruesi të punojë me fushat e redaktimit.

3. Mund të zgjerohen aftësitë e fushës së hyrjes (shihni vetitë e fushës hyrëse, kliko me të djathtën mbi të, më shumë detaje):

  • Kutia e kontrollit Modaliteti i redaktimit me shumë rreshta
  • Kutia e kontrollit të redaktimit të avancuar (e disponueshme nëse kutia e mëparshme e kontrollit është e zgjedhur)
  • Kutia e kontrollit Modaliteti i fjalëkalimit (shih).

4. Nëse të gjitha aftësitë e fushës së hyrjes nuk janë të mjaftueshme për ju, ekziston një redaktues i integruar. Për ta shtuar atë në formular, duhet të shtoni një fushë të dokumentit tekst në menunë Form/Insert Control. Në vetitë e tij mund të specifikoni mënyrën e funksionimit - veçorinë Extension.

Një fushë dokumenti tekstual nuk mund të lidhet drejtpërdrejt me të dhënat. Është e nevojshme të shkruhet një funksion në mbajtësin e ngjarjeve OnOpen() të formularit (shih):

Elementet e formës.Emri i elementitTextDocumentField.SetText(StringValue); //këtu ValueString është teksti i marrë, për shembull, nga atributi

Dhe në mbajtësin e ruajtjes - për shembull, në butonin Ruaj - shtoni një ruajtje:

ValueString = FormElements.ElementiNameTextDocumentField.GetText(); //VleraRreshti këtu është atributi ku ruajmë vlerën

5. Në versionin 1C 8.2.11, në format e menaxhuara, është shfaqur një opsion i ri për paraqitjen e një linje 1C - fusha e Dokumentit të Formatuar.


Ngjashëm me fushën e një dokumenti tekstual, duhet ta vendosni kur e hapni dhe ta shkruani kur e ruani vetë duke përdorur programin.

  • Në objektin 1C, formën e të cilit po krijojmë (drejtori, dokument, përpunim, etj.) - shtoni një atribut me llojin Value Storage
  • Në funksionin OnReadOnServer() vendosim tekstin nga atributi

    //këtu Atributi është atributi i shtuar i objektit 1C
    //këtu FormattedDocument është emri i fushës në formularin për redaktim
    &Në server

    FormattedDocument = CurrentObject.Attributes.Get();
    Fundi i procedurës

  • Në funksionin BeforeWritingOnServer() ose duke përdorur butonin, do të shkruajmë tekstin nga fusha

    &Në server
    Procedura gjatë leximit në server (Objekti aktual)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Fundi i procedurës

Pjesët tabelare ekzistojnë për shumë objekte në 1C:

  • Drejtoritë
  • Dokumentacioni
  • Raportet dhe përpunimi
  • Skemat e llogarive
  • Planet e tipit karakteristik
  • Planet e llojit të llogaritjes
  • Proceset dhe detyrat e biznesit

Pjesët tabelare ju lejojnë të ruani një sasi të pakufizuar informacioni të strukturuar që i përket një objekti.

Le të shohim disa teknika për të punuar me pjesë tabelare.

Si të anashkaloni pjesën tabelare

Për të kapërcyer pjesën e tabelës, mund të përdorni një lak Per secilin

Për çdo rresht nga pjesa tabelare e ciklit

Raport (String. Atributi TabularPart) ;

Cikli i Fundit ;

Në çdo përsëritje në ndryshore Linjë transmetohet rreshti tjetër i seksionit tabelor. Vlerat e detajeve të rreshtit mund të merren nga shprehja Linja.Atributi Emri.

Si të merrni dhe anashkaloni rreshtat e zgjedhur të pjesës tabelare

Për të shfaqur informacionin nga pjesa tabelare e objektit, përdorni një element formular Fusha e tabelës. Për të mundësuar mundësinë për të zgjedhur rreshta të shumtë në një fushë tabele, duhet të vendosni vlerën Të shumëfishta në pronën e tij Mënyra e përzgjedhjes.

Për të marrë një listë të rreshtave të zgjedhur, përdorni kodin e mëposhtëm:

Një lak përdoret për të përsëritur nëpër linjat e zgjedhura. Per secilin:

SelectedRows = FormElements. Emri i fushës së tabelës. Rreshtat e zgjedhura;

Për çdo rresht nga cikli i rreshtave të zgjedhur

//përmbajtja e ciklit

Cikli i Fundit ;

Si të zgjidhni në mënyrë programore rreshtat e një pjese tabelare (fushë tabele) dhe t'i çzgjidhni ato

Për të hequr në mënyrë programore rreshtat e një fushe tabele:

Elementet e formës. Emri i fushës së tabelës. Rreshtat e zgjedhura. Qartë() ;

Për të zgjedhur në mënyrë programore të gjitha rreshtat e një fushe tabele:

Për çdo CurrentRow Nga TabularPart Loop
Elementet e formës. Emri i fushës së tabelës. Linjat e zgjedhura. Shto (Rreshti aktual) ;
Cikli i Fundit ;

Si të pastroni pjesën e tabelës

TabelaPjesa. Qartë() ;

Si të merrni rreshtin aktual të seksionit të tabelës

Linja aktuale është afati kohor në të cilin përdoruesi ka aktualisht kursorin. Për ta marrë atë, duhet të hyni në elementin e kontrollit në formularin që lidhet me pjesën tabelare.

Për format e rregullta, kodi do të duket si ky:

Elementet e formës. Emri i fushës së tabelës. Të dhënat aktuale;

Për format e menaxhuara:

Elementet. Emri i fushës së tabelës. Të dhënat aktuale;

Si të shtoni një rresht të ri në një seksion tabele

Shtimi i një rreshti të ri në fund të pjesës së tabelës:

NewRow = TablePart. Add() ;

Shtimi i një rreshti të ri kudo në seksionin e tabelës (rrenjat pasuese do të zhvendosen):

NewRow = TablePart. Fut (Indeksi)
//Indeksi - numri i rreshtit të shtuar. Numërimi i rreshtave fillon nga zero.

Linja e re. Props1 = "Vlera" ;

Si të plotësoni në mënyrë programore detajet e një rreshti tabele

Nëse keni nevojë të plotësoni në mënyrë programore detajet e një rreshti të seksionit të tabelës që është shtuar nga përdoruesi, duhet të përdorni mbajtësin e ngjarjeve të seksionit të tabelës Kur fillon redaktimi.

Procedura e krijuar nga mbajtësi ka tre parametra:

  • Elementi- përmban një element kontrolli Fusha tabelare.
  • Linja e re- boolean. Përmban vlerë E vërtetë, nëse shtohet një rresht i ri i tabelës, dhe Gënjeshtra, nëse përdoruesi ka filluar të redaktojë një linjë tashmë ekzistuese.
  • Kopjo- boolean. Përmban vlerë E vërtetë, nëse përdoruesi kopjon linjën, dhe Gënjeshtra në raste të tjera.

Le të shohim një shembull. Le të themi se duhet të plotësojmë detajet e seksionit tabelor Llogaria Llogaria, në rast se shtohet një rresht i ri. Kur redaktoni një linjë ekzistuese, nuk keni nevojë të ndryshoni llogarinë e kontabilitetit.

Procedura TabularPartAtStartEditing (Element, NewRow, Copy)

//Nëse përdoruesi redakton një linjë ekzistuese, atëherë ne nuk bëjmë asgjë
Nëse JO NewRow Atëherë
Kthimi;
FundNëse;

//Nëse linja është e re, vendosni llogarinë e kontabilitetit
TechString = Artikull. Të dhënat aktuale; //Merrni rreshtin aktual të pjesës tabelare
TechString. Kontabiliteti = Skema e llogarive. Vetë-mbështetës. Llogaria e kërkuar;
Fundi i procedurës