Plotësoni tabelën në 1 sekonda. Është e rëndësishme të mos ngatërroni kurrë një veçori të objektit dhe një metodë objekti

14.12.2023

Këtu është një fakt i vogël për fillestarët - shembuj të thjeshtë të punës me një tabelë vlerash:

1. Krijoni një tabelë vlerash

ValueTable = New ValueTable;


2. Krijoni kolona për tabelën e vlerave:

ValueTable.Columns.Add("Emri");
Tabela e vlerave.Columns.Add("Mbiemri");


3. Shtoni rreshta të rinj duke përdorur emrat e kolonave:


NewLine.Name = "Vasily";
NewLine.LastName = "Pupkin";


4. Si të kërkoni një vlerë në tabelën e vlerave:
Është e nevojshme të gjesh një rresht tabele që përmban vlerën e dëshiruar.

FoundRow = ValueTable.Find(SearchValue);


5. Gjeni paraqitjen e parë në kolona të caktuara të tabelës së vlerave

FoundRow = ValueTable.Find(SearchValue, "Furnizuesi, Blerësi");


6. Nëse duhet të gjeni të gjitha dukuritë në tabelën e vlerave:
Ne përdorim strukturën e kërkimit.

SearchStructure = Structure("Punonjës", SearchValue);
Array of FoundRows = ValueTable.FindRows(SearchStructure);


Le të krijojmë një strukturë kërkimi, çdo element i së cilës do të përmbajë emrin e kolonës si çelës dhe vlerën e dëshiruar në këtë kolonë si vlerë. Strukturën e kërkimit ia kalojmë si parametër metodës FindLines(). Si rezultat, marrim rreshta tabelash.
Nëse shtoni një kërkim për vlerën e dëshiruar në strukturën e kërkimit, për shembull, gjithashtu në kolonën Responsible, atëherë si rezultat i aplikimit të metodës FindLines() do të marrim të gjitha rreshtat ku të dy Punonjësi dhe Përgjegjësi janë të barabartë me vlera e kërkuar.

7. Si të përsëriteni përmes një tabele vlerash në mënyrë të rastësishme

Për çdo rresht aktual nga Tabela e vlerave
Raporti (CurrentRow.Emri);
Cikli i Fundit;

E njëjta gjë duke përdorur indekset:

SeniorIndex = VleraTable.Sasia() - 1;
Për Llogari = 0 në Ciklin e Indeksit të Lartë
Raporti(TableValues[Llogaria].Emri);
Cikli i Fundit;


8. Fshirja e një rreshti ekzistues të tabelës me vlera

ValueTable.Delete (Rreshti që do të fshihet);

sipas indeksit

ValueTable.Delete(0);


9. Fshirja e një kolone ekzistuese të tabelës së vlerave

ValueTable.Columns.Delete(ColumnDeleted);


sipas indeksit

ValueTable.Columns.Delete(0);

Është e nevojshme të merret parasysh se fshirja e një rreshti (ose kolone) "nga mesi" i tabelës së vlerave do të çojë në një ulje me një të indekseve të rreshtave të vendosura "pas" fshirjes.

10. Si të plotësoni një tabelë vlerash nëse emrat e kolonave përmbahen në variabla?

NewRow = ValueTable.Add();
NewRow[ColumnName] = Vlera;


11. Si të plotësohet e gjithë kolona e tabelës së vlerave me vlerën e dëshiruar?
Kolona Flamuri i Kontabilitetit Fiskal në tabelën e vlerave të tabelës së vlerave duhet të plotësohet me vlerën False

Tabela e vlerave Plotësoni vlerat (E rreme, "Flamuri i Kontabilitetit Fiskal");


Ne përdorim metodën FillValues() për tabelën e vlerave. Parametri i parë është vlera që duhet të plotësohet. Parametri i dytë është emri i kolonës që do të plotësohet.

12. Si mund ta plotësoj tabelën e vlerave “Tabela e Marrësit” me të dhëna nga tabela e vlerave “Tabela burimore”?

Nëse Tabela e Marrësve nuk ekziston ende në kohën e operacionit ose kolonat e saj të mëparshme nuk kanë nevojë të ruhen, mund ta krijoni atë si një kopje të plotë të origjinalit

Tabela e marrësit = Tabela e burimit.Copy();


Opsioni i dytë: ekziston tabela ReceiverTable dhe do të ishte për të ardhur keq të humbasësh kolonat dhe kufizimet e saj në llojet e të dhënave të kolonës. Por ju duhet të plotësoni të dhënat për kolonat, emrat e të cilëve përputhen me emrat e tabelës burimore.

Transferimi i pjesshëm i të dhënave për kolonat me emra që përputhen:

Për çdo rresht të tabelës burimore nga cikli i tabelës burimore
FillPropertyValues ​​(NewRow, SourceTableRow);
Fundi i Ciklit


Për çdo rresht të tabelës burimore, një rresht i ri shtohet në tabelën marrëse dhe vlerat plotësohen në ato kolona të tabelës së re, emrat e të cilëve përputhen me emrat e kolonave në tabelën burimore.

Nëse tabelat nuk kanë kolona me të njëjtin emra, tabela e destinacionit do të përfundojë duke përmbajtur po aq rreshta me vlera nule sa ka pasur rreshta në tabelën burimore.
Nëse për disa kolona me të njëjtin emër, lloji i vlerës së të dhënave nga tabela burimore nuk bie në grupin e llojeve të kolonave të lejuara të tabelës së destinacionit, ne do të marrim vlera boshe në fusha të tilla.
Le të shqyrtojmë rastin e tretë. Në rastin e kolonave me të njëjtin emër, kolona e tabelës së destinacionit duhet të jetë në përputhje të plotë me kolonën e tabelës burimore.

Kopjimi i plotë i të dhënave për kolonat me emra që përputhen

Kolona të njëjta = Array i ri();

Për çdo kolonë nga SourceTable.Cikli i kolonave
MatchingColumn = TableReceiver.Columns.Find(Column.Name);

Nëse Përputhet Kolona<>E padefinuar Pastaj

// Merrni vetitë e kolonës.
Emri = Kolona.Emri;
ValueType = Column.ValueType;
Header = Kolona.Header;
Gjerësia = Kolona.Gjerësia;

// Zëvendësoni kolonat në tabelën e destinacionit.
Index = TableReceiver.Columns.Index(MatchingColumn);

TableReceiver.Columns.Delete(Index);
ReceiverTable.Columns.Insert(Indeksi, Emri, Vlera Lloji, Header, Gjerësia);

// Shtoni emrin tjetër të kolonave që përputhen në grup.
Kolonat e njëjta.Add(Column.Name);

fundNëse;

Cikli i Fundit;

// Cikli nëpër rreshtat e tabelës burimore.
Për çdo rresht të SourceTable nga cikli SourceTable

// Shtoni një rresht të ri në tabelën e destinacionit.
NewRow = TableReceiver.Add();

// Plotësoni vlerat në qelizat që përputhen.
Për çdo Emër Columns Nga Kolonat me të njëjtin emër Cikli
Rreshti i ri[Emri i kolonës] = BurimiTabelaRreshti[Emri i kolonës];

Cikli i Fundit;

Cikli i Fundit;


Ne do të duhet të zëvendësojmë kolonën në tabelën e destinacionit me një të re, vetitë e së cilës do të korrespondojnë plotësisht me kolonën e tabelës burimore.
Prandaj, nëse një kolonë me të njëjtin emër gjendet në tabelën e marrësit, ne mbledhim të gjitha vetitë për kolonën e re në variabla. Më pas, fshini të vjetrën dhe krijoni një kolonë të re. Pastaj kalojmë nëpër rreshtat e tabelës burimore.
Në ciklin, ne shtojmë një rresht të ri në tabelën marrëse dhe hapim një lak mbi emrat e kolonave në grupin e kolonave që përputhen.
Brenda këtij cikli të mbivendosur, ne mbushim qelizat e tabelës së destinacionit me të dhënat e qelizës së tabelës burimore.

13. Si të shtoni kolona në tabelën e vlerave "Tabela e vlerave" me kufizime të llojit?

Kur shtoni një kolonë, thjesht mund të specifikoni emrin e saj dhe të lini të paprekur parametrin e dytë të metodës Add(). Në këtë rast, lloji i të dhënave të kolonës është arbitrar.

Shtimi i një kolone pa specifikuar një lloj të dhënash

// Shtoni një kolonë pa kufizime në llojin.
ValueTable.Columns.Add("Objekt");


Ju mund të plotësoni vlerën e parametrit të dytë. Aty duhet të kaloni një përshkrim të llojit të lejuar për kolonën. Vetë përshkrimi mund të merret duke përdorur konstruktorin, duke i kaluar atij si parametër emrin e vargut të llojit (nëse ka shumë lloje, të ndara me presje) ose një grup llojesh të vlefshme.

Shtimi i një kolone që tregon llojin e të dhënave

// Kufizimet në llojet e të dhënave të kolonës:
// Vetëm elementë të drejtorisë "Kundërpalët".
Tabela e vlerave.Columns.Add("Llogaria", Përshkrimi i ri i llojeve ("DirectoryLink.Accounts"));


Nëse ndër llojet e lejuara për plotësimin e të dhënave të kolonës është një varg, mund të kufizoni thellësinë (gjatësinë) e bitit të tij, të specifikoni përdorimin e një gjatësie të ndryshueshme ose fikse. E gjithë kjo arrihet duke krijuar një objekt duke përdorur konstruktorin String Qualifiers. Më pas, ky objekt do të përdoret si një nga parametrat e konstruktorit TypeDescription.

Përdorimi i kualifikuesve për të specifikuar llojin e të dhënave të një kolone të tabelës së vlerave

// Përgatitni dhe vendosni kufizime për të dhënat e llojit String.
Kualifikuesit e vargut = Kualifikuesit e ri të vargut (20, Gjatësia e lejuar.Variable);
ValidTypes = NewTypeDescription("String", StringQualifiers);
ValueTable.Columns.Add("NoteStringShort", ValidTypes);


Veprime të ngjashme mund të kryhen në lidhje me kualifikuesit e numrave dhe datave.
Ju lutemi vini re: përshkrimet e tipit mund të ndërtohen nga konstruktori ose "nga e para" ose një përshkrim ekzistues i tipit mund të përdoret si bazë.

Përdorimi i deklaratave ekzistuese të tipit për të specifikuar llojin e të dhënave të një kolone të tabelës së vlerave

// Zgjerimi i përshkrimit të tipit të përdorur më parë.
Numbers Kualifiers = Numrat e Kualifikuesve të Ri (10, 2, ValidSign.Jo-negative);
DateQualifiers = New DateQualifiers(DateParts.Date);
Extended ValidTypes = New TypeDescription(ValidTypes, "Number, Date", Number Qualifiers, Date Qualifiers);

ValueTable.Columns.Add("Shënim", ExtendedAcceptableTypes);

Publikuar më 21 shtator 2011

Tabela e vlerave 1C - pjesa 3. Metadatat. Duke kaluar nëpër kolonat e tabelës së vlerave

Në këtë artikull do t'ju tregoj se si të punoni me një tabelë vlerash të një strukture "të panjohur", si të përsërisni nëpër kolonat e një tabele vlerash, si të nxirrni të dhëna nga kolonat dhe rreshtat pa përdorur emrat e kolonave. (Ky artikull i përket serisë së artikujve 1C nga e para; programimi 1C nga e para; tabela e vlerave 1C)

Për të shpjeguar materialin dhe për të qenë në gjendje të ekzekutojmë shembujt tanë të kodit "live", na duhen disa Tabela e testimit të vlerave 1C. Disa nga shembujt tanë do të nxjerrin të dhëna nga një tabelë vlerash, kështu që ne do të bëjmë një tabelë me tre kolona "Mbiemri", "Emri", "Emri i mesëm" dhe futim një sasi të vogël të dhënash në të - deri në 3. rreshta :)

Pra, le të krijojmë një tabelë testimi të vlerave 1C dhe ta plotësojmë:

MyTZ = Tabela e re e vlerës; // krijoni një tabelë të re vlerash të ruajtura në variablin "MyTZ" MyTZ.Columns.Add("Mbiemri"); // krijoni kolonën "Mbiemri" MyTZ.Columns.Add("Emri"); // krijoni kolonën "Emri" MyTZ.Columns.Add("Patronimik"); // krijoni kolonën "Emri i mesëm" // shtoni rreshtin e parë në tabelën tonë të vlerave NewLine = MyTZ.Add(); NewString.LastName = "Chapaev"; NewLine.Name = "Vasily"; NewString.Emri i mesëm = "Ivanovich"; // shtoni rreshtin e dytë NewLine = MyTZ.Add(); NewString.LastName = "Dzerzhinsky"; NewRow.Name = "Felix"; NewString.Emri i mesëm = "Edmundovich"; // shtoni rreshtin e tretë NewLine = MyTZ.Add(); NewLine.LastName = "Kotovsky"; NewLine.Name = "Gregory"; NewString.Emri i mesëm = "Ivanovich";

Tabela jonë e testimit përbëhet nga tre kolona: Emri, Mbiemri, Patronimik; dhe ka tre rreshta të mbushura me emrat e heronjve të Luftës Civile.

Shembulli i parë i kodit është duke numëruar kolonat e një tabele me vlerë 1C si një koleksion.

// shfaqi emrat e të gjitha kolonave të TK Për Çdo Kolonë Nga Raporti i Ciklit të MyTK.Columns("Emri i kolonës: " + Emri i kolonës); Cikli i Fundit;

Cikli ynë do të shfaqë të gjithë emrat e kolonave në dritaren e mesazheve 1C:

Emri i kolonës: Mbiemri Emri i kolonës: Emri Emri i kolonës: Emri i mesit

Shohim që për të përsëritur nëpër kolona, ​​përdoret një cikël i veçantë i përsëritjes së koleksionit, i ngjashëm me ciklin e përsëritjes së rreshtit (në artikullin e mëparshëm). MyTK.Kollonat- ky është një koleksion i kolonave të tabelës së vlerës 1C "MyTZ". Koleksioni përmban objekte të tipit "Kollona e tabelës së vlerave"Çdo objekt i këtij lloji është një kolonë e tabelës së vlerave dhe përmban veti dhe metoda. Duke hyrë në këto veti dhe metoda, ne marrim informacionin e nevojshëm për një kolonë ose kryejmë disa veprime të tjera me të.

Për shembull, aksesi në pronë "Emri" (Kolona.Emri) marrim emrin e kolonës aktuale.

Do të doja të tërhiqja vëmendjen te titulli i serialit: “Për të gjithë Kolona Nga MyTZ.Column Cycle" Variabla me emër "Kolona" shpikur nga ne. Nuk është e nevojshme të përdorni të njëjtin emër. Ju mund ta quani këtë variabël çdo gjë që ju pëlqen, për shembull "Column My Current" Atëherë shembulli i mësipërm do të duket si ky:

// shfaqi emrat e të gjitha kolonave të TK-së Për Çdo MyCurrentColumn Nga Raporti i Ciklit MyTK.Columns("Emri i kolonës: " + MyCurrentColumn.Name); Cikli i Fundit;

Kur nënsistemi i ekzekutimit 1C ndeshet me një cikël të këtij lloji, me çdo kalim të ciklit ai i cakton një ndryshoreje me emrin e specifikuar një element nga koleksioni ynë, në këtë rast - një element koleksioni kolonat e tabelës së vlerave MyTK.Kollonat Dhe më pas ne aksesojmë variablin që përmban kolonën aktuale dhe përdorim vetinë "Emri".

Unë propozoj që pranë emrit të kolonës të shfaqet numri i secilës kolonë në koleksionin e kolonave:

// shfaq numrin dhe emrat e të gjitha kolonave të tabelës së vlerave Për çdo kolonë nga MyTZ.Columns Cicle ColumnNumber = MyTZ.Columns.Index(Column); // merrni numrin e kolonës Emri i kolonës = Emri i kolonës; // merrni emrin e kolonës Report("Numri i kolonës:" + Numri i kolonës + "Emri i kolonës: " + Emri i kolonës); Cikli i Fundit;

Teksti i mëposhtëm do të shfaqet në dritaren e mesazheve 1C:

Numri i kolonës:0 Emri i kolonës: Mbiemri Numri i kolonës:1 Emri i kolonës: Emri Numri i kolonës:2 Emri i kolonës: Emri i mesit

Ju lutemi vini re se kolonat në tabelën e vlerave 1C numërohen duke filluar nga zero, ashtu si rreshtat e tabelës së vlerave.

Numri i kolonave në tabelën e vlerës 1C

Për të gjetur numrin e kolonave në tabelën e vlerave, ne përdorim metodën "Count()" në koleksionin e kolonave.

Numri i Kolonave = MyTK.Columns.Sasia(); Raporti (Numri i Kolonave);

Numri "3" do të shfaqet në ekran. Në të vërtetë, tabela jonë ka tre kolona: "Mbiemri", "Emri", "Patronimi"

Marrja e një objekti kolone sipas numrit të tij (indeksi) dhe numërimi i kolonave duke përdorur indeksin e kolonës

Le të bëjmë një cikël kërkimi nëpër të gjitha kolonat e tabelës së vlerave duke përdorur indekset e kolonave (numrat). Mos harroni se numërimi i kolonave fillon nga zero. Prandaj, ne duhet të rrisim numëruesin e ciklit "Sch" nga zero në një numër të barabartë me numrin e kolonave minus një.

Për llogarinë = 0 Nga MyTZ.Columns.Sasia() - 1 Cikli Kolona Aktuale = MyTZ.Columns[Act]; Raporti(CurrentColumn.Emri); Cikli i Fundit;

Në ekran do të marrim sa vijon

Emri i plotë

Unë mendoj se ky shembull ishte i qartë. Ne iu drejtuam metodës Sasi() koleksionet e kolonave" MyTZ.Columns.Quantity()", mori numrin e kolonave dhe filloi një lak me një numërues nga zero përpara numri i kolonave minus një. Brenda ciklit marrim çdo kolonë nga koleksioni i kolonave dhe caktojmë objektin aktual të kolonës në një ndryshore Kolona aktuale Tjetra, ndryshorja Kolona aktuale ne hyjmë në pronë Emri dhe shfaqni vlerën e kësaj prone në ekran: Raporti(CurrentColumn.Emri);

Është e rëndësishme të mos ngatërroni kurrë vetinë e një objekti dhe metodën e një objekti.

Një pronë është një vlerë e caktuar statike dhe qasja në të shkruhet pa kllapa, për shembull Kolona aktuale.Emri. Një metodë është në thelb një procedurë ose funksion i një objekti, dhe thirrjet për procedurat dhe funksionet shkruhen gjithmonë me kllapa (edhe nëse nuk ka parametra hyrës). Për shembull: MyTZ.Columns.Quantity()

Nëse hyjmë në një metodë dhe harrojmë të shkruajmë kllapat, përkthyesi 1C do të na japë një mesazh gabimi dhe nuk do të ekzekutojë kodin. Meqenëse përkthyesi do të konsiderojë se ne nuk po aksesojmë një metodë, por një pronë - sepse nuk ka kllapa. Por nuk do të jetë në gjendje të gjejë prona me atë emër (sepse ekziston vetëm një metodë me atë emër) - e cila do të tregohet në mesazhin e gabimit.

Kjo është ajo që do të shkruajë përkthyesi nëse harroj të vendos kllapa në një thirrje metodë në një mënyrë kaq të gabuar MyTK.Kollonat.Sasia(pa kllapa pas "Sasia()"):

Fusha e objektit nuk u gjet (Sasia)

Në këtë rast, "fusha" dhe "prona" duhet të kuptohen si sinonime, ose një pasaktësi në terminologjinë e zhvilluesve 1C. Ata përdorin të dyja këto fjalë për t'iu referuar të njëjtit koncept. Edhe pse në gjuhë të tjera programimi këto terma mund të nënkuptojnë gjëra të ndryshme.

Marrja e të dhënave nga tabela e vlerave 1C duke përdorur numrat e kolonave

Për të filluar, unë ju ofroj një shembull të thjeshtë të marrjes së të dhënave nga rreshti i parë i tabelës sonë. Ju lutemi vini re se ne po përdorim tabelën e parapopulluar që nga fillimi i artikullit. Ne e dimë me siguri se tabela ka një rresht të parë dhe të paktën një kolonë. Nëse e zbatojmë këtë shembull në një tabelë të zbrazët, do të ndodhë një gabim. Kështu që:

First Line = MyTK; // merrni rreshtin e parë (të numëruar nga zero) FirstColumnValue = FirstRow; // merrni vlerën e kolonës së parë (numërimi i kolonës është gjithashtu nga e para) Raporti (Vlera e kolonës së parë); // shfaq vlerën e kolonës së parë në rreshtin e parë të tabelës

Ekrani do të shfaqë:

Çapaev

Së pari, kemi marrë një objekt të rreshtit të tabelës së vlerave duke hyrë në tabelën e vlerave duke përdorur operatorin [...]. (nëse keni harruar se si ta bëni këtë, mund të shikoni artikujt e mëparshëm) Ne kaluam argumentin "0" brenda operatorit. Ky është indeksi i rreshtit të parë të tabelës së vlerave. First Line = MyTK;

Më tej, ne gjithashtu kemi të drejtën të aksesojmë një objekt string duke përdorur operatorin [...]. Brenda këtij operatori kaluam numrin e kolonës së tabelës së vlerave, në këtë rast edhe “0”. Dhe kështu, morëm vlerën e kolonës me numër "0" për rreshtin aktual të tabelës me numër "0". Ne e shfaqëm këtë vlerë në ekran dhe përfaqëson vargun "Chapaev".

Le ta komplikojmë pak shembullin tonë:

First Line = MyTK; // merr rreshtin e parë (numërimi nga zero) Raporti (FirstLine); // shfaq vlerën e kolonës së parë në rreshtin e parë të tabelës Report (FirstRow); // afishimi i vlerës së kolonës së dytë në rreshtin e parë të tabelës Report (FirstRow); // shfaq vlerën e kolonës së tretë në rreshtin e parë të tabelës

Tani kemi shfaqur vlerat nga të tre kolonat e rreshtit të parë të tabelës sonë të vlerave:

Chapaev Vasily Ivanovich

Tani do ta modifikoj edhe këtë shembull në mënyrë që të mund të bëjmë pa variablin "Linja e parë"

Raporti (MyTZ); // shfaq vlerën e kolonës së parë në rreshtin e parë të tabelës Report (MyTZ); // shfaq vlerën e kolonës së dytë në rreshtin e parë të tabelës Report(MyTZ); // shfaq vlerën e kolonës së tretë në rreshtin e parë të tabelës

E njëjta gjë do të jetë në ekran

Chapaev Vasily Ivanovich

Ne pamë në shembullin e mësipërm se për të hyrë në një vlerë të vendosur në një rresht specifik dhe një kolonë specifike të një tabele vlerash, mund të përdorim një thirrje sekuenciale të dy operatorëve [...] në këtë formë: Tabela e vlerave[Indeksi i rreshtit][Indeksi i kolonës]

Pra, ne jemi gati të krijojmë një lak dhe të marrim të dhënat e të gjitha rreshtave dhe të gjitha kolonave duke përdorur indekset e rreshtave dhe kolonave:

Për RowCounter = 0 By MyTZ.Quantity() - 1 Loop // cikli nëpër rreshta Për ColumnCounter = 0 By MyTZ.Columns.Quantity() - 1 Loop // cikli i mbivendosur nëpër kolona // merrni vlerën e qelizës (nga rreshti aktual dhe kolonat aktuale) CellValue = MyTK[RowCounter][ColumnCounter]; // shfaq numrin e rreshtit, numrin e kolonës dhe vlerën e qelizës Raport ("Nr i rreshtit" + Numri i rreshtave + "Numri i kolonës" + Numri i kolonave + " = " + Vlera e qelizave); Cikli i Fundit; Cikli i Fundit;

Më poshtë do të shfaqet në ekran:

Linja nr. 0 kolona nr. 0 = linja Chapaev nr. 0 kolona nr. 1 = Vasily linja nr. 0 kolona nr. 2 = linja Ivanovich nr. 1 kolona nr. 0 = Linja Dzerzhinsky nr. Linja nr. 1, kolona nr. 2 = Edmundovich, linja nr. 2, kolona nr. 0 = linja Kotovsky nr. 2, kolona nr. 1 = linja Grigory nr. 2, kolona nr. 2 = Ivanovich

Duke përdorur dy cikle, njëra prej të cilave është e vendosur brenda tjetrës, ne shfaqëm vlerat e të gjitha kolonave nga të gjitha rreshtat e tabelës së vlerave 1C. Në këtë rast, ne nuk kemi përdorur emrat e kolonave, por kemi aksesuar kolonat dhe rreshtat sipas indekseve të tyre. Për më shumë kuptim, kushtojini vëmendje komenteve brenda shembullit.

Si përfundim, unë propozoj të ndryshojmë pak shembullin tonë në mënyrë që në vend të numrave të kolonave, të shfaqë emrat e tyre në ekran. Dhe përveç kësaj, unë do të bëj një dizajn më të paraqitshëm për shfaqjen e përmbajtjes në ekran.

Për LineCounter = 0 Nga MyTZ.Sasia() - 1 Loop // cikli përmes rreshtave Raporto(" ======= Nr linja " + LineCounter + " ======="); Për të raportuar(" "); // furnizimi i rreshtit (duke futur një rresht bosh) Për ColumnCounter = 0 By MyTZ.Columns.Quantity() - 1 Loop // cikli i ndërlidhur nëpër kolona // merrni vlerën e qelizës (nga rreshti aktual dhe kolona aktuale) CellValue = MyTZ [RowCounter][ColumnCounter]; // merrni emrin e kolonës Emri i kolonës = MyTK.Columns[ColumnCounter].Emri; // shfaq emrin e kolonës dhe vlerën e qelizës Raporti (Emri i kolonës + ": " + Vlera e qelisë); Cikli i Fundit; Për të raportuar(" "); // furnizimi i linjës (duke futur një rresht bosh) EndCycle;

Tani, në ekranin tonë informacioni filloi të dukej më përfaqësues:

Linja nr. 0 ======= Mbiemri: Chapaev Emri: Vasily Patronimi: Ivanovich ======= Rreshti nr. 1 ======= Mbiemri: Dzerzhinsky Emri: Felix Patronimi: Edmundovich ===== == Rreshti nr. 2 ======= Mbiemri: Kotovsky Emri: Grigory Patronimi: Ivanovich

Po, pothuajse harrova. Kur përdorim dy [...][...] operatorë në një rresht, ne mund të kalojmë emrin e kësaj kolone në vend të një indeksi kolone: ValueTable[RowIndex][Emri i kolonës]

Për LineCounter = 0 Nga MyTZ.Sasia() - 1 Loop // cikli përmes rreshtave Raporto(" ======= Nr linja " + LineCounter + " ======="); Për të raportuar(" "); // furnizimi i linjës (duke futur një rresht bosh) Për ColumnCounter = 0 By MyTZ.Columns.Quantity() - 1 Loop // cikli i ndërthurur nëpër kolona ColumnName = MyTZ.Columns[ColumnCounter].Name; // merrni emrin e kolonës Vlera e qelizës = MyTZ[RowCounter][Emri i kolonës]; //

Kushtojini vëmendje rreshtit të shënuar me një shigjetë ". Në këtë rresht, në vend të indeksit të kolonës aktuale, ne ia kalojmë emrin e kolonës aktuale argumentit në kllapa katrore [...] Rezultati do të jetë i njëjtë.

Dhe tani, gjëja e fundit në këtë artikull.

Marrja e saktë e të gjitha të dhënave nga tabela e vlerës 1C duke përdorur sythe përmes një koleksioni rreshtash dhe një koleksioni kolonash

Për çdo linjë aktuale nga MyTZ Loop // cikli përmes një koleksioni vargjesh Raporto(" ======= Nr. i linjës " + MyTZ.Index(CurrentLine) + " ======="); Për të raportuar(" "); Për çdo kolonë aktuale nga MyTZ.Columns Loop // cikli i mbivendosur që përsëritet përmes një koleksioni kolonash Emri i kolonës = Emri i kolonës aktuale; // merrni emrin e kolonësCellValue = CurrentRow[Emri i kolonës]; // merrni vlerën e qelizës NGA kolona EMRI Raporti (Emri i kolonës + ": " + Vlera e qelisë); // shfaq emrin e kolonës dhe vlerën e qelizës Fundi i ciklit; Për të raportuar(" "); Cikli i Fundit;

Në shembull, u përdorën dy sythe. Një lak për ciklin përmes një koleksioni kolonash është i vendosur brenda një cikli për të kaluar nëpër rreshta. Nëse keni punuar me shembujt e mësipërm dhe keni lexuar artikujt e mëparshëm, atëherë nuk do të keni ndonjë vështirësi të kuptoni se si funksionon ky shembull.

Së fundi, do të zvogëloj sa më shumë numrin e rreshtave të kodit në shembullin tonë të fundit duke eliminuar përdorimin e variablave të ndërmjetëm. Ne do të marrim një mostër të "kodit industrial" që përdoret në probleme reale.

Kjo duhet të bëhet vetëm kur e kuptoni mirë atë që po bëni. Nëse kodi është shumë kompleks, atëherë është e pranueshme të lini variabla të ndërmjetme për ta bërë më të lehtë të kuptoni kodin tuaj më vonë. Gjithashtu, çdo kod duhet të komentohet të paktën minimalisht, në mënyrë që pas një kohe të jetë më e lehtë për të kuptuar tekstet e programit.

Për çdo linjë aktuale nga cikli MyTZ // përsëritni mbi rreshta Raportoni (" ======= Nr. i rreshtit. " + MyTZ.Index(Linja aktuale) + " =======" + Simbolet.PS); Për çdo kolonë aktuale nga MyTZ.Columns Loop // përsëritje mbi kolona Raporto(CurrentColumn.Name + ": " + CurrentRow[CurrentColumn.Name]); Cikli i Fundit; Për të raportuar(" "); Cikli i Fundit;

Dalja në ekran nuk ka ndryshuar, mbetet e njëjtë si në shembullin e mëparshëm:

KURSI 2 JAvor

"PROGRAMIMI NË 1C PËR FILLESTARËT"

Kursi do të dërgohet me email. Bëhuni një programues duke përfunduar detyrat hap pas hapi.

Për të marrë pjesë ju duhet vetëm një kompjuter dhe internet

Qasje falas në kurs:

Sp-force-hide ( display: asnjë;).sp-form ( shfaqja: bllok; sfondi: #eff2f4; mbushja: 5 px; gjerësia: 270 px; gjerësia maksimale: 100%; rreze-kufi: 0 px; -moz-border -rreze: 0px; opaciteti: 1; dukshmëria: e dukshme;). ngjyra: #cccccc; 4px;-webkit-border-radius: 4px gjerësia: 100%;). .sp-form .sp-button ( border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; background-color: #f4394c; ngjyra: #ffffff; gjerësia: 100% ; stili i shkronjave: normale; font-familja: Arial, "Helvetica Neue", sans-serif; kuti-hije: asnjë; -moz-box-hije: asnjë; -webkit-box-hije: asnjë; sfond: linear-gradient (në krye, #e30d22 , #f77380);).

Për të llogaritur paratë dhe mallrat, tabela të ndryshme përdoren gjerësisht në biznes. Pothuajse çdo dokument është një tabelë.

Një tabelë liston mallrat që do të dërgohen nga magazina. Një tabelë tjetër tregon detyrimet për të paguar për këto mallra.

Prandaj, në 1C, puna me tabela zë një vend të spikatur.

Tabelat në 1C quhen gjithashtu "pjesë tabelare". Drejtoritë, dokumentet dhe të tjerët i kanë ato.

Pyetja, kur ekzekutohet, kthen një tabelë që mund të aksesohet në dy mënyra të ndryshme.

Zgjedhja e parë - më e shpejtë - marrja e rreshtave prej saj është e mundur vetëm në rregull. E dyta është ngarkimi i rezultatit të pyetjes në një tabelë vlerash dhe më pas aksesi i rastësishëm në të.

//Opsioni 1 – akses sekuencial në rezultatet e pyetjeve

//merr tabelën
Zgjidh = Query.Run().Select();
// kalojmë nëpër të gjitha rreshtat e rezultatit të pyetjes sipas radhës
Ndërsa Select.Next() Loop
Raporti (Përzgjedhja. Emri);
Cikli i Fundit;

//Opsioni 2 - ngarkimi në një tabelë vlerash
Kërkesë = Kërkesë e re ("ZGJEDHJE Emrin FROM Directory.Nomenklature");
//merr tabelën
Tabela = Query.Run().Shkarko().
//më tej ne gjithashtu mund të përsërisim nëpër të gjitha rreshtat
Për çdo rresht nga cikli i tabelës
Raporti (String.Emri);
Cikli i Fundit;
//ose qasje arbitrare në vargjet
Rreshti = Tabela.Gjeni("Lopata", "Emri");

Një veçori e rëndësishme është se në tabelën që merret nga rezultati i pyetjes, të gjitha kolonat do të shtypen në mënyrë strikte. Kjo do të thotë që duke kërkuar fushën Emri nga direktoria e Nomenklaturës, do të merrni një kolonë të llojit String me gjatësi të lejueshme jo më shumë se N karaktere.

Tabela në formular (klient i trashë)

Përdoruesi punon me tabelën kur vendoset në formular.

Diskutuam për parimet bazë të punës me formularët në orën e mësimit dhe në mësimin me radhë

Pra, le të vendosim tabelën në formular. Për ta bërë këtë, mund të tërhiqni tabelën nga paneli i Kontrolleve. Në mënyrë të ngjashme, ju mund të zgjidhni Form/Insert Control nga menyja.

Të dhënat mund të ruhen në konfigurim - atëherë duhet të zgjidhni pjesën tabelare ekzistuese (të shtuar më parë) të objektit të konfigurimit, formën e të cilit po redaktoni.

Klikoni butonin "..." në pronën Data. Për të parë listën e pjesëve tabelare, duhet të zgjeroni degën Object.

Kur zgjidhni pjesën tabelare, vetë 1C do të shtojë kolona në tabelën në formular. Rreshtat e futura nga përdoruesi në një tabelë të tillë do të ruhen automatikisht së bashku me librin/dokumentin e referencës.

Në të njëjtën veti të dhënash, mund të futni një emër arbitrar dhe të zgjidhni llojin e tabelës së vlerave.

Kjo do të thotë që është zgjedhur një tabelë arbitrare e vlerave. Nuk do të shtojë automatikisht kolona, ​​as nuk do të ruhet automatikisht, por ju mund të bëni çfarë të doni me të.

Duke klikuar me të djathtën në tabelë, mund të shtoni një kolonë. Në vetitë e një kolone, mund të specifikoni emrin e saj (për referencë në kodin 1C), titullin e kolonës në formular, lidhjen me atributin e pjesës tabelare (kjo e fundit - nëse nuk zgjidhet një tabelë arbitrare, por një pjesa tabelare).

Në vetitë e tabelës në formular, mund të specifikoni nëse përdoruesi mund të shtojë/fshijë rreshta. Një formë më e avancuar është kutia e kontrollit "Vetëm Shiko". Këto veti janë të përshtatshme për t'u përdorur për organizimin e tabelave të destinuara për shfaqjen e informacionit, por jo për redaktimin.

Për të menaxhuar tabelën, duhet të shfaqni një panel komandimi në formular. Zgjidhni artikullin e menysë Forma/Insert Control/Command Bar.

Në veçoritë e shiritit të komandës, zgjidhni kutinë e kontrollit "Plotësimi automatik" në mënyrë që butonat në panel të shfaqen automatikisht.

Tabela e formës (klient i hollë/i menaxhuar)

Në një formë të menaxhuar, këto veprime duken pak më ndryshe. Nëse keni nevojë të vendosni një pjesë tabelare në formular, zgjeroni degën Object dhe tërhiqni një nga pjesët tabelare në të majtë. Kjo eshte e gjitha!

Nëse keni nevojë të vendosni një tabelë vlerash, shtoni një atribut të ri të formës dhe në vetitë e tij specifikoni llojin - tabelën e vlerave.

Për të shtuar kolona, ​​përdorni menynë e klikuar me të djathtën në këtë atribut të formës, zgjidhni Shto kolonën e atributit.

Pastaj tërhiqeni edhe tabelën në të majtë.

Në mënyrë që një tabelë të ketë një shirit komandash, në veçoritë e tabelës, zgjidhni vlerat në seksionin "Përdorimi - pozicioni i shiritit të komandës".

Ngarkimi i një tabele në Excel

Çdo tabelë 1C e vendosur në formular mund të printohet ose ngarkohet në Excel.

Për ta bërë këtë, klikoni me të djathtën në një hapësirë ​​boshe në tabelë dhe zgjidhni List.

Në një klient të menaxhuar (të hollë), veprime të ngjashme mund të kryhen duke përdorur artikullin e menysë Të gjitha veprimet/Lista e ekranit.