Izpolni tabelo v 1s. Pomembno je, da nikoli ne zamenjujete lastnosti objekta in metode objekta

14.12.2023

Tukaj je nekaj dejstev za začetek - preprosti primeri dela s tabelo vrednosti:

1. Ustvarite tabelo vrednosti

ValueTable = Nova tabela vrednosti;


2. Ustvarite stolpce za tabelo vrednosti:

ValueTable.Columns.Add("Ime");
Tabela vrednosti.Columns.Add("Priimek");


3. Dodajte nove vrstice z uporabo imen stolpcev:


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


4. Kako poiskati vrednost v tabeli vrednosti:
V tabeli je treba najti vrstico, ki vsebuje želeno vrednost.

FoundRow = ValueTable.Find(SearchValue);


5. Poiščite prvo pojavitev v določenih stolpcih tabele vrednosti

FoundRow = ValueTable.Find(SearchValue, "Dobavitelj, Kupec");


6. Če želite najti vse pojavitve v tabeli vrednosti:
Uporabljamo iskalno strukturo.

SearchStructure = Structure("Employee", SearchValue);
Niz najdenih vrstic = ValueTable.FindRows(SearchStructure);


Ustvarimo iskalno strukturo, katere vsak element bo vseboval ime stolpca kot ključ in želeno vrednost v tem stolpcu kot vrednost. Iskalno strukturo posredujemo kot parameter metodi FindLines(). Kot rezultat dobimo vrstice tabele.
Če v strukturo iskanja dodate iskanje po želeni vrednosti, na primer tudi v stolpcu Odgovorni, potem bomo kot rezultat uporabe metode FindLines() dobili vse vrstice, kjer sta Zaposleni in Odgovorni enaka iskana vrednost.

7. Kako ponoviti tabelo vrednosti v naključnem vrstnem redu

Za vsako trenutno vrstico iz zanke tabele vrednosti
Poročilo (Ime trenutne vrstice);
EndCycle;

Ista stvar z uporabo indeksov:

SeniorIndex = ValueTable.Quantity() - 1;
Za račun = 0 do cikla SeniorIndex
Poročilo(TableValues[Account].Name);
EndCycle;


8. Brisanje obstoječe vrstice tabele vrednosti

ValueTable.Delete(Vrstica za brisanje);

po indeksu

ValueTable.Delete(0);


9. Brisanje obstoječega stolpca tabele vrednosti

ValueTable.Columns.Delete(ColumnDeleted);


po indeksu

ValueTable.Columns.Delete(0);

Upoštevati je treba, da bo brisanje vrstice (ali stolpca) "s sredine" tabele vrednosti povzročilo zmanjšanje za eno v indeksih vrstic, ki se nahajajo "za" izbrisanim

10. Kako izpolniti tabelo vrednosti, če so imena stolpcev v spremenljivkah?

Nova vrstica = Tabela vrednosti.Dodaj();
Nova vrstica[imestolpca] = vrednost;


11. Kako zapolniti celoten stolpec tabele vrednosti z želeno vrednostjo?
Stolpec zastavice davčnega računovodstva v tabeli vrednosti tabele vrednosti mora biti izpolnjen z vrednostjo False

Tabela vrednosti. Izpolnite vrednosti (False, "Zastavica davčnega računovodstva");


Za tabelo vrednosti uporabljamo metodo FillValues(). Prvi parameter je vrednost, ki jo je treba izpolniti. Drugi parameter je ime stolpca, ki ga je treba izpolniti.

12. Kako lahko izpolnim tabelo vrednosti “Receiver Table” s podatki iz tabele vrednosti “SourceTable”?

Če tabela prejemnikov v času operacije še ne obstaja ali njenih prejšnjih stolpcev ni treba shraniti, jo lahko ustvarite kot popolno kopijo izvirnika

Tabela prejemnikov = Izvorna tabela.Kopiraj();


Druga možnost: tabela ReceiverTable obstaja in škoda bi bilo izgubiti njene stolpce in omejitve podatkovnih tipov stolpcev. Vendar morate izpolniti podatke za stolpce, katerih imena se ujemajo z imeni izvorne tabele.

Delni prenos podatkov za stolpce z ujemajočimi se imeni:

Za vsako vrstico izvorne tabele iz cikla izvorne tabele
FillPropertyValues(NewRow, SourceTableRow);
Konec cikla


Za vsako vrstico izvorne tabele se v sprejemno tabelo doda nova vrstica in vrednosti se izpolnijo v tistih stolpcih nove tabele, katerih imena se ujemajo z imeni stolpcev v izvorni tabeli

Če tabele nimajo stolpcev z enakimi imeni, bo ciljna tabela na koncu vsebovala toliko vrstic z ničelnimi vrednostmi, kot je bilo vrstic v izvorni tabeli.
Če za nekatere istoimenske stolpce tip vrednosti podatkov iz izvorne tabele ne spada v matriko dovoljenih vrst stolpcev ciljne tabele, bomo v takih poljih dobili prazne vrednosti.
Razmislimo o tretjem primeru. V primeru istoimenskih stolpcev mora biti stolpec ciljne tabele popolnoma skladen s stolpcem izvorne tabele.

Popolno kopiranje podatkov za stolpce z ujemajočimi se imeni

Isti stolpci = Nova matrika ();

Za vsak stolpec iz SourceTable.Columns Cycle
UjemanjeColumn = TableReceiver.Columns.Find(Column.Name);

Če se ujema stolpec<>Nedefinirano Potem

// Pridobi lastnosti stolpca.
Ime = Ime stolpca;
ValueType = Column.ValueType;
Glava = Column.Header;
Širina = Column.Width;

// Zamenjaj stolpce v ciljni tabeli.
Index = TableReceiver.Columns.Index(MatchingColumn);

TableReceiver.Columns.Delete(Index);
ReceiverTable.Columns.Insert(Index, Name, ValueType, Header, Width);

// Dodajte naslednje ime ujemajočih se stolpcev v matriko.
Same Columns.Add(Column.Name);

endIf;

EndCycle;

// Kroženje po vrsticah izvorne tabele.
Za vsako vrstico izvorne tabele iz cikla izvorne tabele

// Dodajanje nove vrstice v ciljno tabelo.
NewRow = TableReceiver.Add();

// Izpolnite vrednosti v ujemajoče se celice.
Za vsako ime Stolpci iz stolpcev z istim imenom Cikel
Nova Vrstica[ImeStolpca] = Vrstica IzvorneTabele[ImeStolpca];

EndCycle;

EndCycle;


Stolpec v ciljni tabeli bomo morali zamenjati z novim, katerega lastnosti bodo v celoti ustrezale stolpcu izvorne tabele.
Če torej v tabeli prejemnikov najdemo stolpec z enakim imenom, zberemo vse lastnosti za nov stolpec v spremenljivkah. Nato izbrišite starega in ustvarite nov stolpec. Nato se pomikamo po vrsticah izvorne tabele.
V zanki dodamo novo vrstico v sprejemno tabelo in odpremo zanko nad imeni stolpcev v nizu ujemajočih se stolpcev.
Znotraj te ugnezdene zanke zapolnimo celice ciljne tabele s podatki celice izvorne tabele.

13. Kako dodati stolpce v tabelo vrednosti »ValueTable« z omejitvami vrste?

Ko dodajate stolpec, lahko preprosto določite njegovo ime in pustite drugi parameter metode Add() nedotaknjen. V tem primeru je podatkovni tip stolpca poljuben.

Dodajanje stolpca brez podajanja vrste podatkov

// Dodajte stolpec brez omejitev glede vrste.
ValueTable.Columns.Add("Object");


Izpolnite lahko vrednost drugega parametra. Tam morate posredovati opis dovoljene vrste za stolpec. Sam opis lahko dobite s pomočjo konstruktorja, tako da mu kot parameter posredujete ime niza tipa (če je tipov veliko, ločenih z vejicami) ali matriko veljavnih tipov.

Dodajanje stolpca, ki označuje vrsto podatkov

// Omejitve podatkovnih tipov stolpcev:
// Samo elementi imenika "Nasprotne stranke".
Tabela vrednosti.Columns.Add("Račun", Nov opis vrst("DirectoryLink.Accounts"));


Če je med vrstami, ki so dovoljene za izpolnjevanje podatkov stolpcev, niz, lahko omejite njegovo bitno globino (dolžino), določite uporabo spremenljive ali fiksne dolžine. Vse to dosežemo z ustvarjanjem predmeta z uporabo konstruktorja kvalifikatorjev nizov. Nato bo ta objekt uporabljen kot eden od parametrov konstruktorja TypeDescription.

Uporaba kvalifikatorjev za podajanje podatkovnega tipa stolpca tabele vrednosti

// Priprava in nastavitev omejitev za podatke tipa String.
Kvalifikatorji nizov = Novi kvalifikatorji nizov (20, AllowedLength.Variable);
ValidTypes = NewTypeDescription("Niz", StringQualifiers);
ValueTable.Columns.Add("NoteStringShort", ValidTypes);


Podobna dejanja je mogoče izvesti glede kvalifikatorjev števila in datuma.
Upoštevajte: opise tipov lahko sestavi konstruktor "iz nič" ali pa se lahko kot osnova uporabi obstoječi opis tipa.

Uporaba obstoječih deklaracij tipa za podajanje podatkovnega tipa stolpca tabele vrednosti

// Razširitev predhodno uporabljenega opisa tipa.
QualifiersNumbers = Nova števila QualifiersNumbers(10, 2, ValidSign.Non-negative);
DateQualifiers = New DateQualifiers(DateParts.Date);
Extended ValidTypes = New TypeDescription(ValidTypes, "Številka, datum", kvalifikatorji številk, kvalifikatorji datumov);

ValueTable.Columns.Add("Opomba", ExtendedAcceptableTypes);

Objavljeno 21. septembra 2011

Tabela vrednosti 1C – 3. del. Metapodatki. Skok skozi stolpce tabele vrednosti

V tem članku vam bom povedal, kako delati s tabelo vrednosti "neznane" strukture, kako iterirati po stolpcih tabele vrednosti, kako ekstrahirati podatke iz stolpcev in vrstic brez uporabe imen stolpcev. (Ta članek spada v serijo člankov 1C iz nič; programiranje 1C iz nič; tabela vrednosti 1C)

Za razlago gradiva in za izvajanje primerov kode v živo jih potrebujemo testna tabela vrednosti 1C. Nekateri naši primeri bodo izvlekli podatke iz tabele vrednosti, zato bomo naredili tabelo s tremi stolpci »Priimek«, »Ime«, »Srednje ime« in vanjo vnesli majhno količino podatkov - kar 3 vrstice :)

Torej, ustvarimo testno tabelo vrednosti 1C in jo izpolnimo:

MyTZ = Nova tabela vrednosti; // ustvarite novo tabelo vrednosti, shranjenih v spremenljivki "MyTZ" MyTZ.Columns.Add("Last Name"); // ustvari stolpec "Priimek" MyTZ.Columns.Add("Ime"); // ustvarite stolpec "Ime" MyTZ.Columns.Add("Patronymic"); // ustvarite stolpec "Middle name" // dodajte prvo vrstico v našo tabelo vrednosti NewLine = MyTZ.Add(); NewString.LastName = "Chapaev"; NewLine.Name = "Vasilij"; NewString.Middle name = "Ivanovich"; // dodamo drugo vrstico NewLine = MyTZ.Add(); NewString.LastName = "Dzerzhinsky"; NewRow.Name = "Felix"; NewString.Middle name = "Edmundovich"; // dodamo tretjo vrstico NewLine = MyTZ.Add(); NewLine.LastName = "Kotovsky"; NewLine.Name = "Gregory"; NewString.Middle name = "Ivanovich";

Naša testna tabela je sestavljena iz treh stolpcev: ime, priimek, patronim; in ima tri zapolnjene vrstice z imeni junakov državljanske vojne.

Prvi vzorec kode našteje stolpce tabele vrednosti 1C kot zbirko.

// prikaz imen vseh stolpcev TK za vsak stolpec iz MyTK.Columns Cycle Report("Ime stolpca: " + Ime stolpca); EndCycle;

Naš cikel bo prikazal vsa imena stolpcev v oknu sporočila 1C:

Ime stolpca: Priimek Ime stolpca: Ime Ime stolpca: Srednje ime

Vidimo, da se za ponavljanje po stolpcih uporablja poseben cikel ponavljanja zbirke, podoben ciklu ponavljanja vrstic (v prejšnjem članku). MyTK.Stolpci- to je zbirka stolpcev tabele vrednosti 1C "MyTZ". Zbirka vsebuje objekte tipa "Stolpec tabele vrednosti" Vsak objekt te vrste je stolpec tabele vrednosti in vsebuje lastnosti in metode. Z dostopom do teh lastnosti in metod pridobimo potrebne informacije o enem stolpcu ali izvedemo z njim kakšna druga dejanja.

Na primer dostop do nepremičnine "Ime" (Ime stolpca) dobimo ime trenutnega stolpca.

Opozoril bi vas na naslov serije: »Za vsakogar Stolpec Iz MyTZ.Column Cycle" Spremenljivka z imenom "Stolpec" ki smo ga izumili mi. Ni nujno, da uporabite isto ime. To spremenljivko lahko na primer imenujete kakor koli želite "Moj trenutni stolpec" Potem bi zgornji primer izgledal takole:

// prikaz imen vseh stolpcev TK za vsak MyCurrentColumn From MyTK.Columns Cycle Report("Ime stolpca: " + MyCurrentColumn.Name); EndCycle;

Ko izvajalni podsistem 1C naleti na cikel te vrste, z vsakim prehodom cikla spremenljivki z določenim imenom dodeli en element iz naše zbirke, v tem primeru - en zbirni element stolpce tabele vrednosti MyTK.Stolpci Nato dostopamo do spremenljivke, ki vsebuje trenutni stolpec, in uporabimo lastnost "Ime".

Predlagam, da poleg imena stolpca prikažete številko vsakega stolpca v zbirki stolpcev:

// prikaži število in imena vseh stolpcev tabele vrednosti za vsak stolpec iz cikla MyTZ.Columns ColumnNumber = MyTZ.Columns.Index(Column); // pridobite številko stolpca ColumnName = Column.Name; // pridobi ime stolpca Report("Številka stolpca:" + Številka stolpca + " Ime stolpca: " + Ime stolpca); EndCycle;

V oknu s sporočilom 1C bo prikazano naslednje besedilo:

Številka stolpca:0 Ime stolpca: Priimek Številka stolpca:1 Ime stolpca: Ime Številka stolpca:2 Ime stolpca: Srednje ime

Upoštevajte, da so stolpci v tabeli vrednosti 1C oštevilčeni od nič, tako kot vrstice tabele vrednosti.

Število stolpcev v tabeli vrednosti 1C

Če želite izvedeti število stolpcev v tabeli vrednosti, uporabimo metodo "Count()" na zbirki stolpcev.

Število stolpcev = MyTK.Columns.Quantity(); Poročilo (število stolpcev);

Na zaslonu se prikaže številka "3". Dejansko ima naša tabela tri stolpce: "Priimek", "Ime", "Patronim"

Pridobivanje predmeta stolpca po njegovi številki (indeks) in oštevilčenje stolpcev z uporabo indeksa stolpca

Naredimo cikel iskanja po vseh stolpcih tabele vrednosti z uporabo stolpčnih indeksov (številk). Ne pozabite, da se številčenje stolpcev začne od nič. Zato moramo povečati števec ciklov "Sch" z nič na število, ki je enako številu stolpcev minus ena.

Za račun = 0 po MyTZ.Columns.Quantity() - 1 cikel CurrentColumn = MyTZ.Columns[Act]; Poročilo(TrenutniColumn.Name); EndCycle;

Na zaslonu bomo dobili naslednje

Polno ime

Mislim, da je bil ta primer jasen. Obrnili smo se na metodo količina() zbirke stolpcev" MyTZ.Columns.Quantity()", dobil število stolpcev in začel zanko s števcem iz nič prej število stolpcev minus ena. Znotraj zanke dobimo vsak stolpec iz zbirke stolpcev in trenutni predmet stolpca dodelimo spremenljivki CurrentColumn Nato spremenljivka CurrentColumn dostopamo do nepremičnine Ime in prikažite vrednost te lastnosti na zaslonu: Poročilo(TrenutniColumn.Name);

Pomembno je, da nikoli ne zamenjujete lastnosti objekta in metode objekta.

Lastnost je določena statična vrednost in dostop do nje je npr. zapisan brez oklepaja CurrentColumn.Name. Metoda je v bistvu postopek ali funkcija objekta, klici postopkov in funkcij pa so vedno zapisani z oklepaji (tudi če ni vhodnih parametrov). Na primer: MyTZ.Columns.Quantity()

Če dostopamo do metode in pozabimo napisati oklepaj, nam bo tolmač 1C izdal sporočilo o napaki in ne bo zagnal kode. Ker bo tolmač menil, da ne dostopamo do metode, ampak do lastnosti - ker ni oklepajev. Vendar ne bo mogel najti lastnosti s tem imenom (ker obstaja samo metoda s tem imenom) - kar bo navedeno v sporočilu o napaki.

To bo zapisal tolmač, če pozabim dati oklepaj v klic metode na tako nepravilen način MyTK.Columns.Quantity(brez oklepajev za "Quantity()"):

Polja predmeta ni bilo mogoče najti (količina)

V tem primeru je treba "polje" in "lastnino" razumeti kot sinonima ali netočnost v terminologiji razvijalcev 1C. Obe besedi uporabljata za označevanje istega koncepta. Čeprav lahko v drugih programskih jezikih ti izrazi pomenijo različne stvari.

Pridobivanje podatkov iz tabele vrednosti 1C z uporabo številk stolpcev

Za začetek vam ponujam preprost primer pridobivanja podatkov iz prve vrstice naše tabele. Upoštevajte, da uporabljamo predhodno izpolnjeno tabelo z začetka članka. Zagotovo vemo, da ima tabela prvo vrstico in vsaj en stolpec. Če ta primer uporabimo za prazno tabelo, bo prišlo do napake. torej:

FirstLine = MyTK; // pridobi prvo vrstico (oštevilčeno od nič) FirstColumnValue = FirstRow; // pridobi vrednost prvega stolpca (številčenje stolpcev je prav tako od začetka) Report(Vrednost prvega stolpca); // prikaži vrednost prvega stolpca v prvi vrstici tabele

Na zaslonu se prikaže:

Čapajev

Najprej smo pridobili objekt vrstice tabele vrednosti z dostopom do tabele vrednosti z uporabo operatorja [...]. (če ste pozabili, kako se to naredi, si lahko ogledate prejšnje članke) Znotraj operatorja smo posredovali argument “0”. To je indeks prve vrstice tabele vrednosti. FirstLine = MyTK;

Poleg tega imamo tudi pravico do dostopa do objekta niza z uporabo operatorja [...]. Znotraj tega operatorja smo posredovali številko stolpca tabele vrednosti, v tem primeru tudi “0”. In tako smo prejeli vrednost stolpca s številko "0" za trenutno vrstico tabele s številko "0". To vrednost smo prikazali na zaslonu in predstavlja niz "Chapaev".

Malce zapletimo naš primer:

FirstLine = MyTK; // pridobi prvo vrstico (številčenje od nič) Report(FirstLine); // prikaži vrednost prvega stolpca v prvi vrstici tabele Report(FirstRow); // prikaži vrednost drugega stolpca v prvi vrstici tabele Report(FirstRow); // prikaži vrednost tretjega stolpca v prvi vrstici tabele

Zdaj smo prikazali vrednosti iz vseh treh stolpcev prve vrstice naše tabele vrednosti:

Čapajev Vasilij Ivanovič

Zdaj bom tudi ta primer spremenil, tako da bomo lahko brez spremenljivke "Prva vrsta"

Poročilo (MyTZ); // prikaz vrednosti prvega stolpca v prvi vrstici tabele Report(MyTZ); // prikaži vrednost drugega stolpca v prvi vrstici tabele Report(MyTZ); // prikaži vrednost tretjega stolpca v prvi vrstici tabele

Enako bo na ekranu

Čapajev Vasilij Ivanovič

V zgornjem primeru smo videli, da lahko za dostop do vrednosti v določeni vrstici in določenem stolpcu tabele vrednosti uporabimo zaporedni klic dveh operaterjev [...] v tej obliki: Tabela vrednosti[Indeks vrstice][Indeks stolpca]

Tako smo pripravljeni ustvariti zanko in pridobiti podatke vseh vrstic in vseh stolpcev z uporabo indeksov vrstic in stolpcev:

For RowCounter = 0 By MyTZ.Quantity() - 1 Loop // cikel skozi vrstice For ColumnCounter = 0 By MyTZ.Columns.Quantity() - 1 Loop // ugnezdena zanka skozi stolpce // pridobi vrednost celice (iz trenutne vrstice in trenutni stolpci) CellValue = MyTK[RowCounter][ColumnCounter]; // prikaz številke vrstice, številke stolpca in vrednosti celice Report("Row No" + Row Count + "column No" + Column Count + " = " + CellValue); EndCycle; EndCycle;

Na zaslonu bo prikazano naslednje:

Vrstica št. 0 stolpec št. 0 = Chapaev Linija št. 0 stolpec št. 1 = Vasilij Linija št. 0 stolpec št. 2 = Ivanovič Vrstica št. 1 stolpec št. 0 = Dzerzhinsky Linija št. 1 stolpec št. 1 = Felix Vrstica št. 1 stolpec št. 2 = Edmundovich Vrstica št. 2 stolpec št. 0 = Kotovsky Linija št. 2 stolpec št. 1 = Grigorij Vrstica št. 2 stolpec št. 2 = Ivanovič

Z dvema cikloma, od katerih je eden ugnezden v drugem, smo prikazali vrednosti vseh stolpcev iz vseh vrstic tabele vrednosti 1C. V tem primeru nismo uporabili imen stolpcev, temveč smo do stolpcev in vrstic dostopali z njihovimi indeksi. Za boljše razumevanje bodite pozorni na komentarje v primeru.

Na koncu predlagam, da nekoliko spremenimo naš primer, tako da namesto številk stolpcev na zaslonu prikaže njihova imena. In poleg tega bom naredil bolj predstavljiv dizajn za prikaz vsebine na zaslonu.

For LineCounter = 0 By MyTZ.Quantity() - 1 Loop // zanka skozi vrstice Poročilo(" ======= Št. vrstice " + LineCounter + " ======="); Poročati(" "); // podajanje vrstice (vstavljanje prazne vrstice) For ColumnCounter = 0 By MyTZ.Columns.Quantity() - 1 Loop // ugnezdena zanka skozi stolpce // pridobi vrednost celice (iz trenutne vrstice in trenutnega stolpca) CellValue = MyTZ [Števec vrstic][ Števec stolpcev]; // pridobi ime stolpca ColumnName = MyTK.Columns[ColumnCounter].Name; // prikaz imena stolpca in vrednosti celice Report(ColumnName + ": " + CellValue); EndCycle; Poročati(" "); // podajanje vrstice (vstavljanje prazne vrstice) EndCycle;

Zdaj so na našem zaslonu informacije postale bolj reprezentativne:

Vrstica št. 0 ======= Priimek: Chapaev Ime: Vasilij Patronim: Ivanovič ======= Vrstica št. 1 ======= Priimek: Dzerzhinsky Ime: Felix Patronim: Edmundovich ===== == Vrstica št. 2 ======= Priimek: Kotovsky Ime: Grigorij Patronim: Ivanovich

Ja, skoraj sem pozabil. Pri uporabi dveh [...][...] operatorjev v vrsti lahko posredujemo ime tega stolpca namesto indeksa stolpca: Tabela vrednosti[indeks vrstice][imestolpca]

For LineCounter = 0 By MyTZ.Quantity() - 1 Loop // zanka skozi vrstice Poročilo(" ======= Št. vrstice " + LineCounter + " ======="); Poročati(" "); // podajanje vrstice (vstavljanje prazne vrstice) For ColumnCounter = 0 By MyTZ.Columns.Quantity() - 1 Loop // ugnezdena zanka skozi stolpce ColumnName = MyTZ.Columns[ColumnCounter].Name; // pridobite ime stolpcaCell Value = MyTZ[RowCounter][ColumnName]; //

Bodite pozorni na vrstico, označeno s puščico ". V tej vrstici namesto indeksa trenutnega stolpca posredujemo ime trenutnega stolpca argumentu v oglatih oklepajih [...] Rezultat bo enak.

In zdaj, zadnja stvar v tem članku.

PRAVILNO pridobivanje vseh podatkov iz tabele vrednosti 1C z uporabo zank skozi zbirko vrstic in zbirko stolpcev

Za vsako CurrentLine iz MyTZ Loop // zanka skozi zbirko nizov Report(" ======= Line No. " + MyTZ.Index(CurrentLine) + " ======="); Poročati(" "); Za vsak CurrentColumn iz zanke MyTZ.Columns // ugnezdena zanka, ki se ponavlja skozi zbirko stolpcev ColumnName = CurrentColumn.Name; // pridobite ime stolpcaCellValue = CurrentRow[ColumnName]; // pridobi vrednost celice PO IMENU stolpca Report(ColumnName + ": " + CellValue); // prikaz imena stolpca in vrednosti celice Konec cikla; Poročati(" "); EndCycle;

V primeru sta bili uporabljeni dve zanki. Zanka za zanko skozi zbirko stolpcev je ugnezdena znotraj zanke za zanko po vrsticah. Če ste pregledali zgornje primere in prebrali prejšnje članke, potem ne boste imeli težav razumeti, kako ta primer deluje.

Na koncu bom zmanjšal število vrstic kode v našem zadnjem primeru, kolikor je mogoče, tako da bom odstranil uporabo vmesnih spremenljivk. Dobili bomo vzorec "industrijske kode", ki se uporablja v resničnih problemih.

To storite le, če dobro razumete, kaj počnete. Če je koda zelo zapletena, je sprejemljivo pustiti vmesne spremenljivke, da boste kasneje lažje razumeli lastno kodo. Prav tako mora biti vsaka koda vsaj minimalno komentirana, da bo čez nekaj časa lažje razumeti programska besedila.

Za vsako CurrentLine iz cikla MyTZ // ponavljanje vrstic Report(" ======= Line No. " + MyTZ.Index(CurrentLine) + " =======" + Symbols.PS); Za vsak CurrentColumn iz zanke MyTZ.Columns // ponovitev stolpcev Report(CurrentColumn.Name + ": " + CurrentRow[CurrentColumn.Name]); EndCycle; Poročati(" "); EndCycle;

Izpis na zaslonu se ni spremenil, ostaja enak kot v prejšnjem primeru:

2 TEDENSKI TEČAJ

"PROGRAMIRANJE V 1C ZA ZAČETNIKE"

Tečaj bo poslan po elektronski pošti. Postanite programer z izpolnjevanjem nalog po korakih.

Za sodelovanje potrebujete le računalnik in internet

Brezplačen dostop do tečaja:

Sp-force-hide ( display: none;).sp-form ( display: block; background: #eff2f4; padding: 5px; width: 270px; max-width: 100%; border-radius: 0px; -moz-border -radius: 0px; -webkit-border-radius: font-family: "Helvetica Neue", sans-serif: no-repeat;) .sp-form input (prikaz: inline-block; motnost: 1; vidnost: vidna;).sp-form .sp-form-fields-wrapper ( margin: 0 auto; width: 260px;).sp-form .sp -form-control (ozadje: #ffffff; border- color: #cccccc; border-width: 15px; padding-right: 4px; 4px; webkit-border-radius: 4px; width: 100%;).sp-form .sp-field label (barva: #444444; font-style: normal; font-weight: krepko; ).sp-form .sp-gumb (polmer-obrobe: 4px; -moz-polmer-obrobe: 4px; -webkit-polmer-obrobe: 4px; barva ozadja: #f4394c; barva: #ffffff; širina: 100% ; slog pisave: normalen; družina pisav: Arial, "Helvetica Neue", sans-serif; box-shadow: brez; -moz-box-shadow: brez; -webkit-box-shadow: brez; ozadje: linearni gradient (na vrh, #e30d22, #f77380);).sp-forma .sp-button-container (text-align: center; width: auto;)

Za obračunavanje denarja in blaga se v poslovanju pogosto uporabljajo različne tabele. Skoraj vsak dokument je tabela.

Ena tabela navaja blago, ki bo odpremljeno iz skladišča. Druga tabela prikazuje obveznosti plačila tega blaga.

Zato v 1C delo s tabelami zavzema vidno mesto.

Tabele v 1C se imenujejo tudi "tabelarni deli". Imajo jih imeniki, dokumenti in drugo.

Ko se poizvedba izvede, vrne tabelo, do katere lahko dostopate na dva različna načina.

Prvi - hitrejši - izbor, pridobivanje vrstic iz njega je možno le po vrstnem redu. Drugi je nalaganje rezultata poizvedbe v tabelo vrednosti in nato naključni dostop do nje.

//Možnost 1 – zaporedni dostop do rezultatov poizvedbe

//dobi tabelo
Izberite = Query.Run().Select();
// pregledamo vse vrstice rezultata poizvedbe po vrstnem redu
Medtem ko Select.Next() Loop
Poročilo (ime izbora);
EndCycle;

//Možnost 2 – nalaganje v tabelo vrednosti
Zahteva = Nova zahteva ("IZBERI ime IZ Imenika. Nomenklatura");
//dobi tabelo
Tabela = Query.Run().Unload().
//naprej lahko tudi ponavljamo skozi vse vrstice
Za vsako vrstico iz cikla tabele
Poročilo(String.Name);
EndCycle;
//ali poljubno dostopati do nizov
Vrstica = Table.Find("Lopata", "Ime");

Pomembna lastnost je, da bodo v tabeli, ki jo dobimo iz rezultata poizvedbe, vsi stolpci strogo tipizirani. To pomeni, da boste z zahtevo po polju Ime iz imenika Nomenklatura prejeli stolpec tipa Niz z dovoljeno dolžino največ N znakov.

Tabela na obrazcu (debela stranka)

Uporabnik dela s tabelo, ko je postavljena na obrazec.

O osnovnih načelih dela z obrazci smo razpravljali v učni uri in v učni uri

Torej, postavimo tabelo na obrazec. Če želite to narediti, lahko povlečete tabelo iz nadzorne plošče. Podobno lahko v meniju izberete Nadzor obrazca/vstavi.

Podatke lahko shranite v konfiguracijo - takrat morate izbrati obstoječi (prej dodan) tabelarični del konfiguracijskega objekta, katerega obrazec urejate.

Kliknite gumb "..." v lastnosti Podatki. Če želite videti seznam tabelarnih delov, morate razširiti vejo Objekt.

Ko izberete tabelarični del, bo 1C sam dodal stolpce v tabelo na obrazcu. Vrstice, ki jih uporabnik vnese v tako tabelo, se samodejno shranijo skupaj z referenčno knjigo/dokumentom.

V isto lastnost Data lahko vnesete poljubno ime in izberete vrsto Tabela vrednosti.

To pomeni, da je bila izbrana poljubna tabela vrednosti. Ne bo samodejno dodal stolpcev, niti se ne bo samodejno shranil, vendar lahko z njim počnete, kar želite.

Z desnim klikom na tabelo lahko dodate stolpec. V lastnostih stolpca lahko določite njegovo ime (za referenco v kodi 1C), naslov stolpca na obrazcu, povezavo z atributom tabelarnega dela (slednje - če ni izbrana poljubna tabela, ampak tabelarnega dela).

V lastnostih tabele na obrazcu lahko določite, ali lahko uporabnik dodaja/briše vrstice. Naprednejša oblika je potrditveno polje Samo ogled. Te lastnosti je priročno uporabljati za organiziranje tabel, namenjenih prikazovanju informacij, ne pa tudi urejanju.

Za upravljanje tabele morate na obrazcu prikazati ukazno ploščo. Izberite menijsko točko Obrazec/Vstavi kontrolnik/Ukazna vrstica.

V lastnostih ukazne vrstice izberite potrditveno polje Samodejno izpolnjevanje, da se gumbi na plošči prikažejo samodejno.

Tabela na obrazcu (lahki/upravljani odjemalec)

Na upravljanem obrazcu so ta dejanja videti nekoliko drugače. Če morate na obrazec postaviti tabelarični del, razširite vejo Objekt in enega od tabelaričnih delov povlecite v levo. To je vse!

Če morate postaviti tabelo vrednosti, dodajte nov atribut obrazca in v njegovih lastnostih določite vrsto – tabela vrednosti.

Če želite dodati stolpce, uporabite meni z desnim klikom na tem atributu obrazca in izberite Dodaj stolpec atributa.

Nato tudi povlecite tabelo v levo.

Da bo tabela imela ukazno vrstico, v lastnostih tabele izberite vrednosti v razdelku Uporaba – Položaj ukazne vrstice.

Nalaganje tabele v Excel

Vsako tabelo 1C, ki se nahaja na obrazcu, je mogoče natisniti ali naložiti v Excel.

To storite tako, da z desno miškino tipko kliknete prazen prostor v tabeli in izberete Seznam.

V upravljanem (lahkem) odjemalcu lahko podobna dejanja izvedete z menijsko postavko Vsa dejanja/Prikaži seznam.