Koti / ikkunoiden yleiskatsaus / 1c hallitun lomakkeen arvotaulukon lisäyssarake. On tärkeää, että objektiominaisuutta ei koskaan sekoita objektimenetelmään.

1c hallitun lomakkeen arvotaulukon lisäyssarake. On tärkeää, että objektiominaisuutta ei koskaan sekoita objektimenetelmään.

Tässä vähän faktaa alkuun - yksinkertaisia ​​esimerkkejä työskentele arvotaulukon kanssa:

1. Luo arvotaulukko

ValueTable = Uusi arvotaulukko;


2. Luo arvotaulukon sarakkeet:

ValueTable.Columns.Add("Nimi");
ValueTable.Columns.Add("Sukunimi");


3. Lisää uusia rivejä sarakkeiden nimien avulla:


NewString.Name = "Vasili";
NewRow.LastName = "Pupkin";


4. Arvon etsiminen arvotaulukosta:
On tarpeen löytää taulukon rivi, joka sisältää halutun arvon.

FoundString = Arvotaulukko.Etsi(HakuArvo);


5. Etsi ensimmäinen esiintymä arvotaulukon tietyistä sarakkeista

FoundString = ValueTable.Find(HakuArvo, "Toimittaja, Ostaja");


6. Jos haluat löytää kaikki esiintymät arvotaulukosta:
Käytämme hakurakennetta.

SearchStructure = Rakenne("Työntekijä", LookupValue);
ArrayFoundStrings = ValueTable.FindStrings(SearchStructure);


Luodaan hakurakenne, jonka jokainen elementti sisältää sarakkeen nimen avaimena ja haetun arvon tässä sarakkeessa arvona. Välitämme hakurakenteen parametrina FindStrings()-metodille. Tuloksena saamme taulukon rivit.
Jos lisäämme halutun arvon haun hakurakenteeseen esimerkiksi myös Vastuuhenkilö-sarakkeeseen, niin FindRows()-metodin soveltamisen tuloksena saamme kaikki rivit, joissa sekä Työntekijä että Vastuuhenkilö vastaavat haluttua arvo.

7. Kuinka selata arvotaulukkoa satunnaisessa järjestyksessä

Jokaiselle arvotaulukon silmukan nykyiselle riville
Raportti(nykyinen rivi.Nimi);
EndCycle;

Tee sama käyttämällä indeksejä:

SeniorIndex = ValueTable.Count() - 1;
Jos MF = 0 SeniorIndex Cyclella
Raportti(Arvotaulukko[Laskuri].Nimi);
EndCycle;


8. Olemassa olevan arvotaulukon rivin poistaminen

ValueTable.Delete(RemoveRow);

indeksin mukaan

Arvotaulukko.Poista(0);


9. Arvotaulukon olemassa olevan sarakkeen poistaminen

Arvotaulukko.Sarakkeet.Poista(PoistaSarake);


indeksin mukaan

Arvotaulukko.Sarakkeet.Poista(0);

On otettava huomioon, että rivin (tai sarakkeen) poistaminen arvotaulukon "keskeltä" johtaa pienenemiseen yhdellä niiden rivien indekseistä, jotka olivat "poiston jälkeen".

10. Miten arvotaulukko täytetään, jos sarakkeiden nimet sisältävät muuttujia?

UusiRivi = Arvotaulukko.Lisää();
UusiRivi[SarakkeenNimi] = Arvo;


11. Kuinka täyttää arvotaulukon koko sarake halutulla arvolla?
Arvotaulukon arvotaulukon FiscalAccounting Flag -sarake on täytettävä arvolla False

ValueTable.FillValue(False, "Fiscal Accounting Flag");


Käytämme arvotaulukossa FillValues()-menetelmää. Ensimmäinen parametri on täytettävä arvo. Toinen parametri on täytetyn sarakkeen nimi.

12. Kuinka täyttää arvotaulukko "TableRecipient" arvotaulukon "SourceTable" tiedoilla?

Jos vastaanotintaulukkoa ei ole vielä olemassa toiminnon suorittamishetkellä tai sinun ei tarvitse tallentaa sen aiempia sarakkeita, voit luoda sen täysi kopio alkuperäinen

TableReceiver = TableOriginal.Copy();


Vaihtoehto kaksi: taulukko TableReceiver on olemassa, ja on sääli menettää sen sarakkeet ja saraketietotyyppien rajoitukset. Mutta sinun on täytettävä tiedot sarakkeille, joiden nimet vastaavat lähdetaulukon nimiä.

Osittainen tiedonsiirto sarakkeille, joilla on vastaava nimi:

Jokaiselle lähdetaulukon riville lähdetaulukkosilmukasta
FillPropertyValues(NewString, SourceTableString);
EndCycle


Jokaiselle lähdetaulukon riville lisätään uusi rivi kohdetaulukkoon ja arvot täytetään niihin uuden taulukon sarakkeisiin, joiden nimet vastaavat lähdetaulukon sarakkeiden nimiä

Jos taulukoissa ei ole samannimisiä sarakkeita, kohdetaulukossa on yhtä monta riviä, joissa on nolla-arvoja, kuin mitä rivejä oli lähdetaulukossa.
Jos joillekin samannimille sarakkeille lähdetaulukon tietoarvotyyppi ei kuulu kohdetaulukon sarakkeen sallittujen tyyppien joukkoon, saamme tällaisiin kenttiin tyhjiä arvoja.
Tarkastellaanpa kolmatta tapausta. Kun kyseessä ovat samannimiset sarakkeet, kohdetaulukon sarake on saatettava täysin yhdenmukaiseksi lähdetaulukon sarakkeen kanssa.

Täysi datakopio sarakkeista, joilla on vastaavat nimet

SamankaltaisetSarakkeet = Uusi array();

Jokaiselle sarakkeelle SourceTable.Columns Loop
MatchingColumn = Taulukon vastaanottaja.Sarakkeet.Etsi(Sarake.Nimi);

Jos Vastaava sarake<>Määrittämätön Sitten

// Hae sarakkeen ominaisuudet.
Nimi = Sarake.Nimi;
ValueType = Column.ValueType;
Otsikko = Column.Title;
Leveys = Column.Width;

// Korvaa sarakkeet kohdetaulukossa.
Hakemisto = TableReceiver.Columns.Index(CoincidentColumn);

Taulukkovastaanotin.Sarakkeet.Poista(Indeksi);
TableReceiver.Columns.Insert(indeksi, nimi, arvotyyppi, otsikko, leveys);

// Lisää vastaavien sarakkeiden seuraava nimi taulukkoon.
Sama-nimiSarakkeet.Lisää(Sarake.Nimi);

Loppu Jos;

EndCycle;

// Selaa lähdetaulukon rivejä.
Jokaiselle lähdetaulukon riville lähdetaulukkosilmukasta

// Lisää uusi rivi kohdetaulukkoon.
NewString = Taulukkovastaanotin.Lisää();

// Täytä arvot vastaaviin soluihin.
Jokaiselle NameColumns Of Same NameColumns Loop
Uusi Merkkijono[SarakkeenNimi] = Lähdetaulukkomerkkijono[sarakkeen nimi];

EndCycle;

EndCycle;


Meidän on korvattava kohdetaulukon sarake uudella, jonka ominaisuudet vastaavat täysin lähdetaulukon saraketta.
Siksi, jos samanniminen sarake löytyy vastaanottajataulukosta, keräämme muuttujiin kaikki uuden sarakkeen ominaisuudet. Poista seuraavaksi vanha ja luo uusi sarake. Sitten käymme läpi lähdetaulukon rivit.
Silmukassa lisäämme uuden rivin vastaanottajataulukkoon ja avaamme silmukan vastaavien sarakkeiden taulukon sarakkeiden nimien kautta.
Tämän sisäkkäisen silmukan sisällä täytämme vastaanottajataulukon solut lähdetaulukon solun tiedoilla.

13. Kuinka lisätä sarakkeita arvotaulukkoon "Arvotaulukko" tyyppirajoituksin?

Kun lisäät sarakkeen, voit yksinkertaisesti määrittää sen nimen etkä kosketa Add()-menetelmän toista parametria. Tässä tapauksessa sarakkeen tietotyyppi on mielivaltainen.

Sarakkeen lisääminen tietotyyppiä määrittämättä

// Lisää sarake ilman tyyppirajoituksia.
ValueTable.Columns.Add("Objekti");


Voit täyttää toisen parametrin arvon. Siellä on välitettävä sarakkeen sallitun tyypin kuvaus. Itse kuvaus saadaan käyttämällä konstruktoria, joka välittää merkkijonotyypin nimen parametrina jälkimmäiselle (jos tyyppejä on useita, erottele sitten pilkuilla) tai kelvollisten tyyppien joukolla.

Tietotyypin määrittävän sarakkeen lisääminen

// Saraketietotyyppejä koskevat rajoitukset:
// Vain "Contractors"-hakemiston elementit.
ValueTable.Columns.Add("Account", New TypeDescription("ReferenceReference.Accounts"));


Jos saraketietojen täyttöön sallittujen tyyppien joukossa on merkkijono, voit rajoittaa sen bittisyvyyttä (pituutta), määrittää muuttuvan tai kiinteän pituuden käytön. Kaikki tämä saadaan aikaan luomalla objekti StringQualifers-konstruktorilla. Lisäksi tätä objektia käytetään yhtenä TypeDescription-konstruktorin parametreista.

Tarkenteiden käyttäminen arvotaulukon sarakkeen tietotyypin määrittämiseen

// Valmistele ja aseta rajoitukset merkkijonotyyppisille tiedoille.
Merkkijonon tarkenteet = uudet merkkijonon tarkenteet(20, kelvollinen pituus.muuttuja);
AllowedTypes = NewTypeDescription("merkkijono",merkkijonomääritteet);
ValueTable.Columns.Add("NoteStringShort", ValidTypes);


Voit tehdä saman numeron ja päivämäärän tarkennuksille.
Huomaa: rakentaja voi rakentaa tyyppikuvauksen sekä "alusta" ja voit käyttää olemassa olevaa tyyppikuvausta pohjana

Olemassa olevien tyyppiilmoitusten käyttäminen arvotaulukon sarakkeen tietotyypin määrittämiseen

// Aiemmin käytetyn tyyppikuvauksen laajennus.
Numeron tarkenteet = uuden numeron tarkenteet(10, 2, ValidSign.Non-negative);
DateQualifers = Uusi päivämääräQualifiers(DateParts.Date);
ExtendedValidTypes = UusiTypeDescription(Kelvolliset tyypit, "Numero, Päivämäärä",Numerot,Päivämäärämerkit);

ValueTable.Columns.Add("Note", ExtendedAllowedTypes);

Rahan ja tavaroiden huomioon ottamiseksi erilaisia ​​pöytiä käytetään laajasti liiketoiminnassa. Melkein jokainen asiakirja on taulukko.

Yhdessä taulukossa on lueteltu varastosta lähetettävät tavarat. Toisessa taulukossa - velvollisuus maksaa näistä tavaroista.

Siksi 1C:ssä pöytien kanssa työskentely on näkyvällä paikalla.

Kohdan 1C pöytiä kutsutaan myös "pöytäosiksi". Viitekirjoissa, asiakirjoissa ja muissa niitä on.

Kysely palauttaa suorituksensa tuloksena taulukon, johon pääsee kahdella eri tavalla.

Ensimmäinen - nopeampi - valinta, rivien saaminen siitä on mahdollista vain järjestyksessä. Toinen on kyselytuloksen purkaminen arvotaulukkoon ja sitten satunnainen pääsy siihen.

//Vaihtoehto 1 - peräkkäinen pääsy kyselyn tuloksiin

// hanki pöytä
Valinta = Query.Execute().Select();
// ohittaa kaikki kyselytuloksen rivit järjestyksessä
While Selection.Next() Loop
Raportti(Valinta.Nimi);
EndCycle;

//Vaihtoehto 2 - lataaminen arvotaulukkoon
Query = Uusi kysely("SELECT Nimi hakemistosta. Nimikkeistö");
// hanki pöytä
Taulukko = Query.Execute().Upload().
// niin voimme myös ohittaa kaikki rivit
Jokaiselle riville taulukkosilmukasta
Raportti(merkkijono.nimi);
EndCycle;
//tai käyttää mielivaltaisesti merkkijonoja
String = Taulukko.Etsi("Shovel", "Nimi");

Tärkeä ominaisuus on, että kyselyn tuloksesta saadussa taulukossa kaikki sarakkeet kirjoitetaan voimakkaasti. Tämä tarkoittaa, että pyytämällä Nimi-kenttää Nomenclature-haussa, saat String-tyyppisen sarakkeen, jonka sallittu pituus on enintään N merkkiä.

Taulukko lomakkeella (paksu asiakas)

Käyttäjä työskentelee taulukon kanssa, kun se asetetaan lomakkeelle.

Keskustelimme lomakkeiden kanssa työskentelyn perusperiaatteista oppitunnilla ja oppitunnilla

Laitetaan siis taulukko lomakkeelle. Voit tehdä tämän vetämällä taulukon ohjauspaneelista. Vastaavasti voit valita Lomake/Lisää-säätimen valikosta.

Tiedot voidaan tallentaa konfiguraatioon - sitten sinun on valittava olemassa oleva (aiemmin lisätty) taulukkomuotoinen osa konfiguraatioobjektista, jonka muotoa muokkaat.

Napsauta Data-ominaisuuden "..."-painiketta. Jotta näet luettelon taulukon osista, sinun on laajennettava Objektihaara.

Kun valitset taulukko-osan, 1C itse lisää sarakkeita lomakkeen taulukkoon. Käyttäjän tällaiseen taulukkoon syöttämät merkkijonot tallennetaan automaattisesti hakemiston/asiakirjan mukana.

Voit kirjoittaa samaan Data-ominaisuuteen mielivaltaisen nimen ja valita ValueTable-tyypin.

Tämä tarkoittaa, että mielivaltainen arvotaulukko on valittu. Se ei lisää sarakkeita automaattisesti, sitä ei tallenneta automaattisesti, mutta voit tehdä sillä mitä haluat.

Voit lisätä sarakkeen napsauttamalla taulukkoa hiiren oikealla painikkeella. Sarakkeen ominaisuuksissa voit määrittää sen nimen (viittaukseksi 1C-koodissa), lomakkeen sarakeotsikon, yhteyden taulukkoosan attribuutin kanssa (jälkimmäinen - jos ei mielivaltainen taulukko, mutta taulukko osa on valittu).

Lomakkeen taulukon ominaisuuksissa voit määrittää, voiko käyttäjä lisätä/poistaa rivejä. Edistyneempi lomake on ViewOnly-valintaruutu. Nämä ominaisuudet ovat hyödyllisiä järjestettäessä taulukoita, jotka on tarkoitettu tietojen näyttämiseen, mutta eivät muokkaamiseen.

Taulukon hallitsemiseksi sinun on näytettävä komentopaneeli lomakkeella. Valitse valikkokohta Form/Insert Control/Command Panel.

Valitse komentopalkin ominaisuuksista Automaattinen täydennys -valintaruutu, jotta työkalupalkin painikkeet tulevat näkyviin automaattisesti.

Taulukko lomakkeella (ohut/hallittu asiakas)

Hallitulla lomakkeella nämä toiminnot näyttävät hieman erilaisilta. Jos haluat sijoittaa lomakkeeseen taulukkoosion, laajenna Objekti-haara ja vedä jokin taulukkoosista vasemmalle. Ja siinä se!

Jos sinun on asetettava arvotaulukko, lisää uusi lomakeattribuutti ja määritä tyyppi sen ominaisuuksissa - arvotaulukko.

Voit lisätä sarakkeita hiiren oikealla painikkeella tässä lomakeattribuutissa kohdassa Lisää attribuuttisarake.

Vedä sitten taulukkoa myös vasemmalle.

Jotta taulukossa olisi komentopalkki, valitse arvot taulukon ominaisuuksista Käyttö - Komentopalkin sijainti -osiosta.

Taulukon vienti Exceliin

Mikä tahansa lomakkeella oleva 1C-taulukko voidaan tulostaa tai ladata Exceliin.

Voit tehdä tämän napsauttamalla hiiren kakkospainikkeella tyhjää kohtaa taulukossa ja valitsemalla Näytä luettelo.

Hallitussa (ohut) asiakasohjelmassa vastaavat toiminnot voidaan suorittaa valikkokohdalla Kaikki toiminnot/Näyttölista.

1C 8.3 -alustan (8.2) arvotaulukko on yleinen kokoelma arvoja, joita kehittäjä voi käyttää ohjelmistokehityksessä algoritmien toteuttamiseen. Itse asiassa 1C-arvotaulukko on dynaaminen joukko arvoja, joissa on sarakkeita ja sarakkeita.

Artikkeleita muista yleismaailmallisista arvokokoelmista 1C:ssä

Opi ohjelmointia 1C:ssä paikassa kirjastani "Ohjelma 1C:ssä 11 vaiheessa"

  1. Kirja on kirjoitettu selkeällä ja yksinkertaisella kielellä - aloittelijalle.
  2. Opi ymmärtämään 1C-arkkitehtuuria;
  3. Alat kirjoittaa koodia 1C-kielellä;
  4. Hallitse ohjelmoinnin perustekniikat;
  5. Vahvista hankitut tiedot tehtäväkirjan avulla;

Erinomainen opas hallitun 1C-sovelluksen kehittämiseen sekä aloitteleville kehittäjille että kokeneille ohjelmoijille.

  1. Erittäin helposti ymmärrettävää ja ymmärrettävää kieltä
  2. Kirja lähetetään osoitteeseen sähköposti PDF-muodossa. Voidaan avata millä tahansa laitteella!
  3. Ymmärrä hallitun 1C-sovelluksen ideologia
  4. Opi kehittämään hallittua sovellusta;
  5. Opi suunnittelemaan hallinnoidut lomakkeet 1C;
  6. Pystyt työskentelemään hallinnoitujen lomakkeiden perus- ja tarpeellisten elementtien kanssa
  7. Ohjelmointi hallitun sovelluksen alla tulee selväksi

Kampanjakoodi 15 % alennukseen - 48PVXHeYu


Jos tämä oppitunti auttoi sinua ratkaisemaan ongelman, pidit siitä tai oli hyödyllinen, voit tukea projektiani siirtämällä minkä tahansa summan:

voidaan maksaa manuaalisesti:

Yandex.Money — 410012882996301
Verkkoraha - R955262494655

Liity ryhmiini.

Julkaistu 21. syyskuuta 2011

Arvotaulukko 1C - osa 3. metatiedot. Iterointi arvotaulukon sarakkeiden yli

Tässä artikkelissa kerron sinulle, kuinka työskennellä "tuntemattoman" rakenteen arvotaulukon kanssa, kuinka iteroida arvotaulukon sarakkeiden läpi, kuinka poimia tietoja sarakkeista ja riveistä ilman sarakkeiden nimiä. (Tämä artikkeli viittaa artikkelisarjaan 1C tyhjästä; ohjelmointi 1c tyhjästä; arvotaulukko 1c)

Selvittääksemme materiaalia ja voidaksemme ajaa esimerkkejämme ohjelmakoodista "livenä", tarvitsemme joitain testiarvojen taulukko 1C. Osa esimerkeistämme poimii tiedot arvotaulukosta, joten teemme taulukon, jossa on kolme saraketta "Sukunimi", "Etunimi", "Isännimi" ja syötämme siihen pienen määrän tietoja - jopa 3 riviä. :)

Joten luodaan testitaulukko 1C-arvoista ja täytetään se:

OmaTR = Uusi arvotaulukko; // luo uusi arvotaulukko, joka on tallennettu "MyTR"-muuttujaan MyTR.Columns.Add("Sukunimi"); // luo sarake "Sukunimi" MyTR.Columns.Add("Etunimi"); // luo "Name"-sarake MyTM.Columns.Add("Patronymic"); // luo "Keskinimi" -sarake // lisää ensimmäinen rivi arvotaulukkoomme NewRow = OmaТЗ.Add(); NewLine.Sukunimi = "Chapaev"; NewString.Name = "Vasili"; NewString.Patronymic = "Ivanovich"; // lisää toinen rivi NewLine = OmaТЗ.Add(); NewLine.Lastname = "Dzeržinski"; NewString.Name = "Felix"; NewLine.Patronymic = "Edmundovich"; // lisää kolmas rivi NewLine = MyTR.Add(); NewRow.LastName = "Kotovsky"; NewString.Name = "Gregory"; NewString.Patronymic = "Ivanovich";

Testitaulukkomme koostuu kolmesta sarakkeesta: Etunimi, Sukunimi, Isännimi; ja siinä on kolme täytettyä riviä sisällissodan sankarien nimillä.

Ensimmäinen koodinäyte toistuu 1C-arvotaulukon sarakkeiden läpi kokoelmana.

// näyttää kaikkien TK:n sarakkeiden nimet jokaiselle sarakkeelle My TK.Columns Notify loop("Sarakkeen nimi: " + Sarakkeen.Nimi); EndCycle;

Silmukkamme näyttää kaikki sarakkeiden nimet 1C-viestiruudussa:

Sarakkeen nimi: Sukunimi Sarakkeen nimi: Etunimi Sarakkeen nimi: Toinen nimi

Näemme, että sarakkeiden iterointiin käytetään erityistä kokoelmasilmukkaa, joka on samanlainen kuin rivien iteraatiosilmukka (viimeisessä artikkelissa). OmaTM.Sarakkeet- tämä on kokoelma arvotaulukon 1C sarakkeita "MoyaTZ". Kokoelma sisältää tyyppisiä esineitä "ColumnValueTable" Jokainen tämän tyyppinen objekti on arvotaulukon sarake ja sisältää ominaisuuksia ja menetelmiä. Näihin ominaisuuksiin ja menetelmiin viitaten saamme tarvittavat tiedot yhdestä sarakkeesta tai suoritamme sen kanssa muita toimintoja.

Esimerkiksi kiinteistöön pääsy "Nimi" (Sarake.Nimi) saamme nykyisen sarakkeen nimen.

Haluan kiinnittää huomionne syklin otsikkoon: "Jokaiselle Sarake From MyTR.Columns Loop" Muuttuja nimeltä "pylväs" meidän keksimä. Samaa nimeä ei tarvitse käyttää. Voit nimetä tämän muuttujan esimerkiksi haluamallasi tavalla "Oma nykyinen sarake" Sitten yllä oleva esimerkki näyttäisi tältä:

// tulostaa kaikkien TK:n sarakkeiden nimet kullekin MyCurrentColumnille From MyTK.Columns Notify Loop("Sarakkeen nimi: " + OmaNykyinenSarake.Nimi); EndCycle;

Kun 1C-suoritusalijärjestelmä kohtaa tällaisen syklin, se määrittää jokaisessa syklin läpiviennissä yhden elementin kokoelmastamme muuttujaan, jolla on määritetty nimi, Tämä tapaus - yksi osa kokoelmasta arvotaulukon sarakkeet OmaTM.Sarakkeet Ja sitten viitataan muuttujaan, joka sisältää nykyisen sarakkeen, ja käytämme ominaisuutta "Nimi".

Suosittelen näyttämään jokaisen sarakkeen numeron sarakekokoelmassa sarakkeen nimen vieressä:

// näyttää kaikkien arvotaulukon sarakkeiden numerot ja nimet jokaiselle sarakkeelle From MyTR.Columns LoopColumnNumber = MyTR.Columns.Index(Column); // saada sarakkeen numero ColumnName = Column.Name; // saada sarakkeen nimi Report("Sarakkeen numero:" + Sarakkeen numero + " Sarakkeen nimi: " + Sarakkeen nimi); EndCycle;

Teksti näkyy 1C-viestilaatikossa:

Sarakkeen numero:0 Sarakkeen nimi: Sukunimi Sarakkeen numero:1 Sarakkeen nimi: Etunimi Sarakkeen numero:2 Sarakkeen nimi: Toinen nimi

Kiinnitetään huomiota siihen, että arvotaulukon 1C sarakkeet on numeroitu nollasta alkaen, aivan kuten arvotaulukon rivit.

Sarakkeiden lukumäärä arvotaulukossa 1C

Arvotaulukon sarakkeiden lukumäärän selvittämiseksi käytämme sarakekokoelmassa "Number()"-menetelmää.

Sarakkeiden lukumäärä = OmaTM.Sarakkeet.Number(); Raportti (sarakkeiden lukumäärä);

Numero "3" näkyy näytöllä. Itse asiassa taulukossamme on kolme saraketta: "Sukunimi", "Etunimi", "Isännimi"

Sarakeobjektin hankkiminen sen numeron (indeksin) perusteella ja sarakkeiden iterointi sarakeindeksin avulla

Tehdään silmukka kaikkien arvotaulukon sarakkeiden läpi käyttämällä sarakeindeksejä (numeroita). Muista, että sarakkeiden numerointi alkaa nollasta. Siksi meidän on nostettava syklin "Sh" laskuri nollasta numeroon, joka on yhtä suuri kuin sarakkeiden lukumäärä miinus yksi.

SC = 0 By MyTM.Columns.Quantity() - 1 Loop CurrentColumn = OmaTM.Sarakkeet[SC]; Ilmoita(nykyinen sarake.Nimi); EndCycle;

Näytölle tulee seuraava

Koko nimi

Mielestäni tämä esimerkki oli selvä. Käännyimme menetelmään Määrä() sarakekokoelmat" MyTM.Columns.Quantity()", sai sarakkeiden määrän ja aloitti silmukan laskurilla alkaen nolla ennen sarakkeiden määrä miinus yksi. Silmukan sisällä saamme jokaisen sarakkeen sarakekokoelmasta ja kohdistamme nykyisen sarakkeen objektin muuttujaan Nykyinen sarake Seuraavaksi muuttuja Nykyinen sarake pääsemme kiinteistöön Nimi ja näytä tämän ominaisuuden arvo näytöllä: Ilmoita(nykyinen sarake.Nimi);

On tärkeää, että objektiominaisuutta ei koskaan sekoita objektimenetelmään.

Ominaisuus on eräänlainen staattinen arvo ja pääsy siihen kirjoitetaan esimerkiksi ilman sulkuja CurrentColumn.Name. Metodi on pohjimmiltaan objektin proseduuri tai funktio, ja toimintojen ja funktioiden kutsut kirjoitetaan aina sulkeisiin (vaikka syöteparametreja ei olisikaan). Esimerkiksi: MyTM.Columns.Quantity()

Jos viittaamme menetelmään ja unohdamme kirjoittaa sulut, 1C-tulkki antaa meille virheilmoituksen eikä suorita koodia suorittamista varten. Koska tulkki olettaa, että emme käytä menetelmää, vaan ominaisuutta - koska sulkuja ei ole. Eikä se voi löytää ominaisuuksia tällä nimellä (koska on vain menetelmä jolla on tämä nimi) - mikä sanotaan virheilmoituksessa.

Tämän tulkki kirjoittaa, jos unohdan laittaa sulut menetelmäkutsuun niin väärin MyTM.Columns.Quantity(ei sulkeita "Määrä()" jälkeen):

Objektikenttää ei löydy (määrä)

Tässä tapauksessa "kenttä" ja "ominaisuus" tulisi ymmärtää synonyymeinä tai 1C-kehittäjien terminologian epätarkkuudella. He käyttävät molempia näitä sanoja viittaamaan samaan käsitteeseen. Vaikka muissa ohjelmointikielissä nämä termit voivat tarkoittaa erilaisia ​​käsitteitä.

Tietojen saaminen 1C-arvotaulukosta sarakenumeroiden avulla

Tarjoan sinulle aluksi yksinkertaisen esimerkin tietojen saamisesta taulukkomme ensimmäiseltä riviltä. Huomaa, että käytämme esitäytettyä taulukkoa artikkelin alusta. Tiedämme varmasti, että taulukossa on ensimmäinen rivi ja vähintään yksi sarake. Jos käytämme tätä esimerkkiä tyhjään taulukkoon, tapahtuu virhe. Niin:

FirstLine = MyTR; // hanki ensimmäinen rivi (numerointi nollasta) ColumnFirstValue = RowFirst; // saa ensimmäisen sarakkeen arvon (myös sarakkeiden numerointi on nollasta) Raportti(FirstColumnValue); // näyttää ensimmäisen sarakkeen arvon taulukon ensimmäisellä rivillä

Näyttöön tulee:

Chapaev

Saimme ensin arvotaulukon riviobjektin avaamalla arvotaulukon [...]-operaattorilla. (jos unohdit kuinka tämä tehdään, voit katsoa aiempia artikkeleita) Ohjasimme operaattorin sisällä argumentin "0". Tämä on arvotaulukon ensimmäisen rivin indeksi. FirstLine = MyTR;

Lisäksi meillä on myös oikeus viitata merkkijonoobjektiin käyttämällä [...]-operaattoria. Tämän lausekkeen sisällä välitimme arvotaulukon sarakkeen numeron, tässä tapauksessa myös "0". Ja näin saimme sarakkeen arvon numerolla "0". nykyinen linja taulukot numeroitu "0". Näytimme tämän arvon näytöllä ja se edustaa merkkijonoa "Chapaev".

Monimutkaistaan ​​esimerkkiämme hieman:

FirstLine = MyTR; // hanki ensimmäinen rivi (numeroituna nollasta) Raportti(FirstLine); // näyttää ensimmäisen sarakkeen arvon taulukon ensimmäisellä rivillä Report(FirstRow); // näyttää toisen sarakkeen arvon taulukon ensimmäisellä rivillä Report(FirstRow); // näyttää kolmannen sarakkeen arvon taulukon ensimmäisellä rivillä

Nyt olemme näyttäneet arvot arvotaulukon ensimmäisen rivin kaikista kolmesta sarakkeesta:

Chapaev Vasily Ivanovich

Nyt muokkaan tätä esimerkkiä edelleen, jotta voimme tehdä ilman muuttujaa "Ensimmäinen linja"

Ilmoita (MyTM); // näyttää ensimmäisen sarakkeen arvon taulukon ensimmäisellä rivillä Report(MyTR); // näyttää toisen sarakkeen arvon taulukon ensimmäisellä rivillä Report(MyTR); // näyttää kolmannen sarakkeen arvon taulukon ensimmäisellä rivillä

Näyttö tulee olemaan sama.

Chapaev Vasily Ivanovich

Näimme yllä olevassa esimerkissä, että päästäksemme arvoon, joka on arvotaulukon tietyllä rivillä ja tietyssä sarakkeessa, voimme käyttää kahden operaattorin peräkkäistä kutsua [...] tässä muodossa: Arvotaulukko[indeksirivit][indeksisarakkeet]

Joten olemme valmiita luomaan silmukan ja saamaan kaikkien rivien ja sarakkeiden tiedot rivi- ja sarakeindekseillä:

For RowCount = 0 By MyTM.Quantity() - 1 Loop // silmukka rivien läpi For ColumnCount = 0 By MyTM.Columns.Quantity() - 1 Loop // sisäkkäinen silmukka sarakkeiden läpi // hanki solun arvo (nykyiseltä riviltä ja nykyiset sarakkeet) CellValue = MyTR[RowCount][ColumnCount]; // näyttää rivinumeron, sarakkeen numeron ja solun arvon Raportti("Line #" + RowCount + "column #" + ColumnCount + " = " + CellValue); EndCycle; EndCycle;

Seuraavat näkyvät näytöllä:

Rivi #0 sarake #0 = Chapaev Line #0 sarake #1 = Vasily Line #0 sarake #2 = Ivanovich Line #1 sarake #0 = Dzerzhinsky Line #1 sarake #1 = Felix Line #1 sarake #2 = Edmundovich Line # 2 sarake nro 0 = Kotovsky Line nro 2 sarake nro 1 = Grigory Line nro 2 sarake nro 2 = Ivanovich

Kahden silmukan avulla, joista toinen on sisäkkäinen toiseen, näytimme kaikkien sarakkeiden arvot kaikilta 1C-arvotaulukon riveiltä. Tässä tapauksessa emme käyttäneet sarakkeiden nimiä, vaan viitattiin sarakkeisiin ja riveihin niiden indekseillä. Jotta ymmärrät paremmin, kiinnitä huomiota esimerkin sisällä oleviin kommentteihin.

Lopuksi ehdotan, että esimerkkiämme muutetaan hieman niin, että sarakenumeroiden sijaan se näyttää niiden nimet näytöllä. Ja lisäksi aion tehdä esittävämmän suunnittelun sisällön näyttämiseen näytöllä.

For RowCount = 0 By MyTR.Quantity() - 1 Silmukka // silmukka rivien läpi Report(" ======= Rivi # " + Rivien määrä + " ======="); Raportoida(" "); // rivinvaihto (lisää tyhjä rivi) For ColumnCount = 0 By MyTR.Columns.Quantity() - 1 Silmukka // sisäkkäinen silmukka sarakkeiden läpi // saada solun arvo (nykyisestä rivistä ja nykyisestä sarakkeesta) CellValue = MyTR[RowCount ][ ColumnCount]; // hanki sarakkeen nimi ColumnName = MyTR.Columns[ColumnCount].Name; // näyttää sarakkeen nimen ja solun arvon Report(SarakkeenNimi + ": " + Soluarvo); EndCycle; Raportoida(" "); // rivinvaihto (lisää tyhjä rivi) EndCycle;

Nyt näytöllämme tiedot alkoivat näyttää edustavammalta:

Rivi nro 0 ======= Sukunimi: Chapaev Etunimi: Vasily Keskinimi: Ivanovich ======= Rivi nro 1 ======= Sukunimi: Dzeržinski Etunimi: Felix Middle nimi: Edmundovich ===== == Rivi nro 2 ======= Sukunimi: Kotovsky Etunimi: Grigori Isännimi: Ivanovich

Kyllä, melkein unohdin. Kun käytät kahta operaattoria [...][...] rivissä, voimme välittää tämän sarakkeen nimen sarakeindeksin sijaan: Arvotaulukko[riviindeksi][sarakkeen nimi]

For RowCount = 0 By MyTR.Quantity() - 1 Silmukka // silmukka rivien läpi Report(" ======= Rivi # " + Rivien määrä + " ======="); Raportoida(" "); // rivinvaihto (tyhjän rivin lisääminen) For ColumnCount = 0 By MyTR.Columns.Quantity() - 1 Loop // sisäkkäinen silmukka sarakkeiden läpi ColumnName = MyTR.Columns[Sarakkeiden määrä].Nimi; // hanki sarakkeen nimiCellArvo = OmaTR[Rivien määrä][SarakkeenNimi]; //

Kiinnitä huomiota nuolella merkittyyn riviin ". Tällä rivillä välitetään nykyisen sarakkeen indeksin sijaan nykyisen sarakkeen nimi argumentille hakasulkeet[...] Tulos on sama.

Ja nyt viimeinen tässä artikkelissa.

Kaikkien arvotaulukon 1C tietojen OIKEIN vastaanotto käyttämällä jaksoja rivien keräämisen ja sarakkeiden keräämisen toistamiseen

kullekin nykyiselle riville MyTR-silmukasta // käy läpi merkkijonojen kokoelman Report(" ======= Rivi # " + OmaTR.Index(Nykyinen rivi) + " ======="); Raportoida(" "); Jokaiselle nykyiselle sarakkeelle MyTR.Columns-silmukasta // sisäkkäinen silmukka, joka iteroidaan sarakkeiden kokoelman läpi ColumnName = CurrentColumn.Name; // hanki sarakkeen nimiCellArvo = CurrentRow[SarakkeenNimi]; // saada solun arvo BY sarakkeen NIMI Raportti(SarakkeenNimi + ": " + Solun arvo); // näyttää sarakkeen nimen ja solun arvon EndCycle; Raportoida(" "); EndCycle;

Esimerkissä käytettiin kahta silmukkaa. Sarakekeräilysilmukka on sisäkkäin rivisilmukan sisällä. Jos olet käsitellyt yllä olevia esimerkkejä ja lukenut aiemmat artikkelit, sinulla ei ole vaikeuksia ymmärtää, miten tämä esimerkki toimii.

Lopuksi pidän koodirivien lukumäärän viimeisessä esimerkissämme mahdollisimman lyhyenä poistamalla välimuuttujien käytön. Saamme näytteen "teollisuuskoodista", jota käytetään tosielämän sovelluksissa.

Tämä tulisi tehdä vain, kun sinulla on hyvä käsitys tekemästäsi. Jos koodi on erittäin monimutkainen, on hyväksyttävää jättää välimuuttujia, jotta oman koodin ymmärtäminen on helpompaa myöhemmin. Myös mitä tahansa koodia on kommentoitava vähintään minimaalisesti, jotta jonkin ajan kuluttua on helpompi ymmärtää ohjelman tekstejä.

Jokaiselle nykyiselle riville MyTR-silmukasta // silmukka rivien läpi Report(" ======= Rivi # " + MyTR.Index(CurrentRow) + " =======" + Symbols.PS); Jokaiselle nykyiselle sarakkeelle MyTr.Columns -silmukasta // iteroi sarakkeiden yli Report(NykyinenSarakkeen.Nimi + ": " + Nykyinen rivi[nykyisen sarakkeen.nimi]); EndCycle; Raportoida(" "); EndCycle;

Näytön lähtö ei ole muuttunut, se pysyy samana kuin edellisessä esimerkissä:

2 VIIKKO KURSSI

"OHJELMOINTI 1C:ssä aloittelijoille"

Kurssi lähetetään sinulle sähköpostitse. Ryhdy ohjelmoijaksi suorittamalla vaiheittaiset tehtävät.

Osallistumiseen tarvitset vain tietokoneen ja internetin.

Vapaa pääsy kurssille:

sp-force-hide ( näyttö: ei mitään;).sp-form ( näyttö: lohko; tausta: #eff2f4; täyte: 5px; leveys: 270px; max-width: 100%; border-radius: 0px; -moz-border -säde: 0px; -webkit-border-radius: 0px; font-family: Arial, "Helvetica Neue", sans-serif; taustan toisto: ei toistoa; taustan sijainti: keskellä; taustan koko: automaattinen;) .sp-form-syöttö ( näyttö: inline-block; peittävyys: 1; näkyvyys: näkyvä;).sp-form .sp-form-fields-wrapper ( margin: 0 auto; leveys: 260px;).sp-form .sp -form-control ( tausta: #ffffff; reunuksen väri: #cccccc; reunuksen tyyli: kiinteä; reunuksen leveys: 1px; fontin koko: 15px; täyte-vasen: 8,75px; täyte-oikea: 8,75px; reunus -säde: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; korkeus: 35px; leveys: 100%;).sp-form .sp-kentän tunniste ( väri: #444444; font- koko: 13px; font-tyyli: normaali; fontin paino: lihavoitu;).sp-form .sp-button ( border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; taustaväri: #f4394c; väri: #ffffff; leveys: 100%; font-weig ht: 700; font-tyyli: normaali kirjasinperhe: Arial, "Helvetica Neue", sans-serif; laatikkovarjo: ei mitään -moz-box-shadow: ei mitään; -webkit-box-shadow: ei mitään; tausta: linear-gradient(to top, #e30d22 , #f77380);).sp-form .sp-button-container ( tekstin tasaus: keskellä; leveys: automaattinen;)