Mājas / logu pārskats / 1c pārvaldītās formas vērtību tabulas pievienošanas kolonna. Ir svarīgi nekad nejaukt objekta īpašību ar objekta metodi.

1c pārvaldītās formas vērtību tabulas pievienošanas kolonna. Ir svarīgi nekad nejaukt objekta īpašību ar objekta metodi.

Šeit ir neliels fakts, lai sāktu - vienkāršus piemērus strādājiet ar vērtību tabulu:

1. Izveidojiet vērtību tabulu

ValueTable = jauna vērtību tabula;


2. Izveidojiet vērtību tabulas kolonnas:

ValueTable.Columns.Add("Nosaukums");
ValueTable.Columns.Add("Uzvārds");


3. Pievienojiet jaunas rindas, izmantojot kolonnu nosaukumus:


NewString.Name = "Vasīlijs";
NewRow.LastName = "Ķirbis";


4. Kā vērtību tabulā meklēt vērtību:
Ir jāatrod tabulas rinda, kurā ir vēlamā vērtība.

FoundString = ValueTable.Find(LookupValue);


5. Atrodiet pirmo reizi noteiktās vērtību tabulas kolonnās

FoundString = ValueTable.Find(LookupValue, "Piegādātājs, pircējs");


6. Ja vērtību tabulā jāatrod visi gadījumi:
Mēs izmantojam meklēšanas struktūru.

SearchStructure = Structure("Darbinieks", LookupValue);
ArrayFoundStrings = ValueTable.FindStrings(SearchStructure);


Izveidosim meklēšanas struktūru, kuras katrs elements kā atslēgu saturēs kolonnas nosaukumu un kā vērtību šajā kolonnā meklēto vērtību. Mēs nododam meklēšanas struktūru kā parametru metodei FindStrings(). Rezultātā mēs iegūstam tabulas rindas.
Ja vēlamās vērtības meklēšanu pievienosim meklēšanas struktūrai, piemēram, arī kolonnā Atbildīgais, tad FindRows() metodes pielietošanas rezultātā iegūsim visas rindas, kurās gan Darbinieks, gan Atbildīgais ir vienādas ar vēlamo. vērtību.

7. Kā cilpu cauri vērtību tabulai nejaušā secībā

Katrai CurrentRow no ValueTable Loop
Pārskats(PašreizējāLine.Nosaukums);
EndCycle;

Dariet to pašu, izmantojot indeksus:

SeniorIndex = ValueTable.Count() - 1;
Ja MF = 0 pēc SeniorIndex cikla
Report(Vērtību tabula[Skaits].Nosaukums);
EndCycle;


8. Esošas vērtību tabulas rindas dzēšana

ValueTable.Delete(RemoveRow);

pēc indeksa

ValueTable.Delete(0);


9. Esošas vērtību tabulas kolonnas dzēšana

ValueTable.Columns.Delete(RemoveColumn);


pēc indeksa

ValueTable.Columns.Delete(0);

Jāņem vērā, ka vērtību tabulas rindas (vai kolonnas) “no vidus” dzēšana novedīs pie samazinājuma par vienu no rindu indeksiem, kas bija “pēc” dzēšanas.

10. Kā aizpildīt vērtību tabulu, ja kolonnu nosaukumi ir ietverti mainīgajos?

NewRow = ValueTable.Add();
NewRow[Slejasnosaukums] = Vērtība;


11. Kā aizpildīt visu vērtību tabulas kolonnu ar vēlamo vērtību?
Vērtību tabulas vērtību tabulas kolonna FiscalAccounting Flag ir jāaizpilda ar vērtību False

ValueTable.FillValue(False, "Fiskālās grāmatvedības karodziņš");


Vērtību tabulai mēs izmantojam metodi FillValues(). Pirmais parametrs ir aizpildāmā vērtība. Otrais parametrs ir aizpildītās kolonnas nosaukums.

12. Kā aizpildīt vērtību tabulu "TableRecipient" ar vērtību tabulas "SourceTable" datiem?

Ja uztvērēju tabula operācijas laikā vēl nepastāv vai nav jāsaglabā tās iepriekšējās kolonnas, varat to izveidot kā pilna kopija oriģināls

Tabulas uztvērējs = TableOriginal.Copy();


Otrais variants: pastāv tabula TableReceiver, un žēl zaudēt tās kolonnas un ierobežojumus kolonnu datu tipiem. Bet jums ir jāaizpilda dati par kolonnām, kuru nosaukumi atbilst avota tabulas nosaukumiem.

Daļēja datu pārsūtīšana kolonnām ar atbilstošiem nosaukumiem:

Katrai avota tabulas rindai no avota tabulas cilpas
FillPropertyValues(NewString, SourceTableString);
Beigu cikls


Katrai avota tabulas rindai mērķa tabulai tiek pievienota jauna rinda, un vērtības tiek aizpildītas tajās jaunās tabulas kolonnās, kuru nosaukumi sakrīt ar avota tabulas kolonnu nosaukumiem.

Ja tabulās nav kolonnu ar vienādu nosaukumu, galamērķa tabulā būs tik daudz rindu ar nulles vērtībām, cik rindu bija avota tabulā.
Ja dažām tāda paša nosaukuma kolonnām datu vērtības tips no avota tabulas neietilpst mērķa tabulas kolonnas atļauto veidu masīvā, mēs iegūsim tukšas vērtības šādos laukos.
Apskatīsim trešo gadījumu. Gadījumā, ja kolonnas ir ar tādu pašu nosaukumu, mērķa tabulas kolonna ir pilnībā jāsaskaņo ar avota tabulas kolonnu.

Pilna datu kopija kolonnām ar atbilstošiem nosaukumiem

Līdzīgas kolonnas = Jauns masīvs();

Katrai kolonnai no avota tabulas. Kolonnu cilpa
MatchingColumn = Tabulas uztvērējs.Slejas.Atrast(kolonnas.nosaukums);

Ja atbilst kolonna<>Undefined Tad

// Iegūt kolonnas rekvizītus.
Nosaukums = Column.Name;
ValueType = Column.ValueType;
Title = Column.Title;
Platums = Column.Width;

// Aizstāt kolonnas mērķa tabulā.
Index = tabulas uztvērējs.Slejas.Indekss(Sakrīt kolonna);

Tabulas uztvērējs.Slejas.Dzēst(Indekss);
Tabulas uztvērējs.Slejas.Ievietot(Indekss, Nosaukums, ValueType, Title, Width);

// Pievienojiet masīvam nākamo atbilstošo kolonnu nosaukumu.
Tāds pats nosaukumsSlejas.Pievienot(kolonna.nosaukums);

EndIf;

EndCycle;

// Pāriet cauri avota tabulas rindām.
Katrai avota tabulas rindai no avota tabulas cilpas

// Pievienojiet jaunu rindu mērķa tabulai.
NewString = TableReceiver.Add();

// Ievadiet vērtības atbilstošajās šūnās.
Katram NameColumns Of Same NameColumns Loop
NewString[Slejasnosaukums] = Avota tabulas virkne[Slejas nosaukums];

EndCycle;

EndCycle;


Mums būs jāaizstāj kolonna galamērķa tabulā ar jaunu, kuras rekvizīti pilnībā atbildīs avota tabulas kolonnai.
Tāpēc, ja adresātu tabulā tiek atrasta tāda paša nosaukuma kolonna, mēs mainīgajos savācam visus jaunās kolonnas rekvizītus. Pēc tam izdzēsiet veco un izveidojiet jaunu kolonnu. Pēc tam mēs cilpu cauri avota tabulas rindām.
Ciklā mēs pievienojam jaunu rindu adresātu tabulai un atveram cilpu, izmantojot atbilstošo kolonnu masīva kolonnu nosaukumus.
Šajā ligzdotajā cilpā mēs aizpildām adresātu tabulas šūnas ar avota tabulas šūnas datiem.

13. Kā vērtību tabulai "Vērtību tabula" pievienot kolonnas ar veida ierobežojumiem?

Pievienojot kolonnu, varat vienkārši norādīt tās nosaukumu un nepieskarties otrajam Add() metodes parametram. Šajā gadījumā kolonnas datu tips ir patvaļīgs.

Kolonnas pievienošana, nenorādot datu veidu

// Pievienojiet kolonnu bez veida ierobežojumiem.
ValueTable.Columns.Add("Objekts");


Varat ievadīt otrā parametra vērtību. Tur ir jānodod kolonnai atļautā veida apraksts. Pašu aprakstu var iegūt, izmantojot konstruktoru, pēdējam kā parametru nododot virknes tipa nosaukumu (ja ir daudz veidu, tad atdalot ar komatiem) vai derīgu tipu masīvu.

Kolonnas pievienošana, kurā norādīts datu veids

// Ierobežojumi kolonnu datu tipiem:
// Tikai elementi direktorijā "Contractors".
ValueTable.Columns.Add("Konts", New TypeDescription("ReferenceReference.Accounts"));


Ja starp kolonnas datu aizpildīšanai atļautajiem veidiem ir virkne, varat ierobežot tās bitu dziļumu (garumu), norādīt mainīga vai fiksēta garuma izmantošanu. Tas viss tiek nodrošināts, izveidojot objektu, izmantojot StringQualifers konstruktoru. Turklāt šis objekts tiks izmantots kā viens no TypeDescription konstruktora parametriem.

Kvalifikatoru izmantošana, lai norādītu vērtību tabulas kolonnas datu tipu

// Sagatavojiet un iestatiet ierobežojumus virknes tipa datiem.
String Qualifiers = New String Qualifiers(20, ValidLength.Variable);
AllowedTypes = NewTypeDescription("String",StringQualifiers);
ValueTable.Columns.Add("NoteStringShort", ValidTypes);


To pašu var izdarīt ar numuru un datuma kvalifikatoriem.
Lūdzu, ņemiet vērā: tipa aprakstu konstruktors var izveidot gan "no nulles", gan par pamatu varat izmantot esošu tipa aprakstu

Esošo tipu deklarāciju izmantošana, lai norādītu vērtību tabulas kolonnas datu tipu

// Iepriekš lietotā tipu apraksta paplašināšana.
Skaitļu kvalifikatori = jauni skaitļu kvalifikatori (10, 2, derīgs paraksts. nav negatīvs);
DateQualifiers = New DateQualifiers(DateParts.Date);
ExtendedValidTypes = NewTypeDescription(derīgi veidi, "numurs, datums", numuru kvalifikatori, datuma kvalifikatori);

ValueTable.Columns.Add("Piezīme", ExtendedAllowedTypes);

Lai ņemtu vērā naudu un preces, biznesā plaši tiek izmantoti dažādi galdi. Gandrīz katrs dokuments ir tabula.

Vienā tabulā ir norādītas preces, kas jānosūta no noliktavas. Citā tabulā - pienākums maksāt par šīm precēm.

Tāpēc 1C darbs ar galdiem ieņem ievērojamu vietu.

1C tabulas sauc arī par "galda daļām". Uzziņu grāmatās, dokumentos un citos tās ir.

Vaicājums izpildes rezultātā atgriež tabulu, kurai var piekļūt divos dažādos veidos.

Pirmā - ātrāka - atlase, rindu iegūšana no tās iespējama tikai secībā. Otrais ir vaicājuma rezultāta izkraušana vērtību tabulā un pēc tam nejauša piekļuve tai.

//1. iespēja — secīga piekļuve vaicājuma rezultātiem

// iegūt galdu
Atlase = Query.Execute().Select();
// apiet visas vaicājuma rezultāta rindas secībā
Kamēr Selection.Next() Loop
Atskaite(Atlase.Vārds);
EndCycle;

//2. iespēja - augšupielāde vērtību tabulā
Query = Jauns vaicājums("IZVĒLĒTIES Nosaukums NO direktorija. Nomenklatūra");
// iegūt galdu
Tabula = Query.Execute().Augšupielādēt().
// tad varam arī apiet visas rindas
Katrai rindai no tabulas cilpas
Report(String.Name);
EndCycle;
//vai patvaļīgi piekļūt virknēm
String = tabula.Atrast("Lāpsta", "Vārds");

Svarīga iezīme ir tā, ka tabulā, kas iegūta no vaicājuma rezultāta, visas kolonnas būs stingri drukātas. Tas nozīmē, ka, pieprasot lauku Nosaukums no nomenklatūras uzmeklēšanas, jūs saņemsiet String tipa kolonnu ar pieļaujamo garumu ne vairāk kā N rakstzīmes.

Tabula uz veidlapas (biezs klients)

Lietotājs strādā ar tabulu, kad tā ir novietota uz veidlapas.

Darbā ar formām pamatprincipus apspriedām nodarbībā un nodarbībā tālāk

Tātad, novietosim tabulu uz veidlapas. Lai to izdarītu, varat vilkt tabulu no vadības paneļa. Tāpat izvēlnē varat atlasīt vadīklu Veidlapa/Ievietot.

Datus var glabāt konfigurācijā – tad ir jāizvēlas esoša (iepriekš pievienota) tabulas daļa no konfigurācijas objekta, kura formu rediģējat.

Datu rekvizītā noklikšķiniet uz pogas "...". Lai redzētu tabulas daļu sarakstu, ir jāpaplašina zars Objekts.

Izvēloties tabulas daļu, 1C pats pievienos veidlapas tabulai kolonnas. Lietotāja ievadītās virknes šādā tabulā tiks automātiski saglabātas kopā ar direktoriju/dokumentu.

Tajā pašā datu rekvizītā varat ievadīt patvaļīgu nosaukumu un atlasīt vērtību tabulas veidu.

Tas nozīmē, ka ir izvēlēta patvaļīga vērtību tabula. Tas automātiski nepievienos kolonnas, tas netiks automātiski saglabāts, bet ar to jūs varat darīt visu, ko vēlaties.

Ar peles labo pogu noklikšķinot uz tabulas, varat pievienot kolonnu. Kolonnas rekvizītos varat norādīt tās nosaukumu (atsaucei 1C kodā), veidlapas kolonnas virsrakstu, savienojumu ar tabulas daļas atribūtu (pēdējais - ja nav patvaļīga tabula, bet tabulas daļa ir atlasīts).

Veidlapas tabulas rekvizītos varat norādīt, vai lietotājs var pievienot/dzēst rindas. Izvērstāka forma ir izvēles rūtiņa ViewOnly. Šie rekvizīti ir noderīgi tabulu organizēšanai, kas paredzētas informācijas parādīšanai, bet ne rediģēšanai.

Lai pārvaldītu tabulu, veidlapā ir jāparāda komandu panelis. Atlasiet izvēlnes vienumu Form/Insert Control/Command Panel.

Komandjoslas rekvizītos atzīmējiet izvēles rūtiņu Automātiskā pabeigšana, lai rīkjoslas pogas tiktu parādītas automātiski.

Veidlapas tabula (plāns/pārvaldīts klients)

Pārvaldītā veidlapā šīs darbības izskatās nedaudz savādāk. Ja veidlapā ir jāievieto tabulas sadaļa, izvērsiet zaru Objekts un velciet vienu no tabulas sadaļām pa kreisi. Un tas arī viss!

Ja nepieciešams ievietot vērtību tabulu, pievienojiet jaunu formas atribūtu un norādiet veidu tā rekvizītos - vērtību tabulā.

Lai pievienotu kolonnas, izmantojiet peles labās pogas izvēlni šim formas atribūtam, vienumam Pievienot atribūta kolonnu.

Pēc tam arī velciet tabulu pa kreisi.

Lai tabulai būtu komandjosla, tabulas rekvizītos atlasiet vērtības sadaļā Lietošana - Komandjoslas pozīcija.

Tabulas eksportēšana uz Excel

Jebkuru 1C tabulu, kas atrodas veidlapā, var izdrukāt vai augšupielādēt programmā Excel.

Lai to izdarītu, ar peles labo pogu noklikšķiniet uz tukšas vietas tabulā un atlasiet Rādīt sarakstu.

Pārvaldītā (plānā) klientā līdzīgas darbības var veikt, izmantojot izvēlnes vienumu Visas darbības/Displeja saraksts.

Vērtību tabula platformā 1C 8.3 (8.2) ir universāla vērtību kolekcija, ko izstrādātājs var izmantot programmatūras izstrādē, lai ieviestu savus algoritmus. Faktiski 1C vērtību tabula ir dinamiska vērtību kopa, kurā ir kolonnas un kolonnas.

Raksti par citām universālajām vērtību kolekcijām 1C

Apgūstiet programmēšanu 1C formātā vietā no manas grāmatas "Programma 1C 11 soļos"

  1. Grāmata uzrakstīta skaidrā un vienkāršā valodā – iesācējam.
  2. Iemācīties izprast 1C arhitektūru;
  3. Jūs sāksit rakstīt kodu 1C valodā;
  4. Apgūt programmēšanas pamatmetodes;
  5. Nostiprināt iegūtās zināšanas ar uzdevumu burtnīcas palīdzību;

Lielisks ceļvedis izstrādātājiem pārvaldītā 1C lietojumprogrammā gan iesācējiem izstrādātājiem, gan pieredzējušiem programmētājiem.

  1. Ļoti pieejama un saprotama valoda
  2. Grāmata tiek nosūtīta uz e-pasts PDF formātā. Var atvērt jebkurā ierīcē!
  3. Izprotiet pārvaldītas 1C lietojumprogrammas ideoloģiju
  4. Uzziniet, kā izstrādāt pārvaldītu lietojumprogrammu;
  5. Iemācieties projektēt pārvaldītās veidlapas 1C;
  6. Varēsi strādāt ar pārvaldīto formu pamata un nepieciešamajiem elementiem
  7. Programmēšana saskaņā ar pārvaldītu lietojumprogrammu kļūs skaidra

Reklāmas kods 15% atlaidei - 48PVXHeYu


Ja šī nodarbība jums palīdzēja atrisināt kādu problēmu, patika vai bija noderīga, tad varat atbalstīt manu projektu, pārskaitot jebkuru summu:

var maksāt manuāli:

Yandex.Money — 410012882996301
Tīmekļa nauda — R955262494655

Pievienojieties manām grupām.

Ievietots 2011. gada 21. septembrī

Vērtību tabula 1C - 3. daļa. metadati. Atkārtošana pa vērtību tabulas kolonnām

Šajā rakstā es jums pastāstīšu, kā strādāt ar "nezināmas" struktūras vērtību tabulu, kā atkārtot vērtību tabulas kolonnas, kā iegūt datus no kolonnām un rindām, neizmantojot kolonnu nosaukumus. (Šis raksts attiecas uz rakstu sēriju 1C no nulles; programmēšana 1c no nulles; vērtību tabula 1c)

Lai izskaidrotu materiālu un varētu palaist mūsu programmas koda piemērus "tiešraidē", mums ir vajadzīgi daži vērtību testa tabula 1C. Daļa no mūsu piemēriem izvilks datus no vērtību tabulas, tāpēc mēs izveidosim tabulu ar trim kolonnām "Uzvārds", "Vārds", "Patronims" un ievadīsim tajā nelielu datu apjomu - pat 3 rindas. :)

Tātad, izveidosim 1C vērtību testa tabulu un aizpildīsim to:

MyTR = jauna vērtību tabula; // izveidot jaunu vērtību tabulu, kas saglabāta mainīgajā "MyTR" MyTR.Columns.Add("Uzvārds"); // izveidot kolonnu "Uzvārds" MyTR.Columns.Add("Vārds"); // izveidot kolonnu "Nosaukums" MyTM.Columns.Add("Patronymic"); // izveidojiet kolonnu "Vidējais nosaukums" // pievienojiet pirmo rindu mūsu vērtību tabulai NewRow = MyТЗ.Add(); NewLine.Surname = "Čapajevs"; NewString.Name = "Vasīlijs"; NewString.Patronymic = "Ivanovičs"; // pievieno otro rindiņu NewLine = MyТЗ.Add(); NewLine.Lastname = "Dzeržinskis"; NewString.Name = "Fēlikss"; NewLine.Patronymic = "Edmundovičs"; // pievienot trešo rindiņu NewLine = MyTR.Add(); NewRow.LastName = "Kotovskis"; NewString.Name = "Gregorijs"; NewString.Patronymic = "Ivanovičs";

Mūsu testa tabula sastāv no trim kolonnām: Vārds, Uzvārds, Patronīms; un tajā ir trīs pabeigtas rindas ar pilsoņu kara varoņu vārdiem.

Pirmais koda paraugs atkārtojas 1C vērtību tabulas kolonnās kā kolekcija.

// parādīt visu TK kolonnu nosaukumus katrai kolonnai no manas TK.Columns Notify loop("Slejas nosaukums: " + Kolonnas.Nosaukums); EndCycle;

Mūsu cilpa parādīs visus kolonnu nosaukumus 1C ziņojuma lodziņā:

Kolonnas nosaukums: Uzvārds Kolonnas nosaukums: Vārds Kolonnas nosaukums: Otrais vārds

Mēs redzam, ka kolonnu atkārtošanai tiek izmantota īpaša kolekcijas cilpa, līdzīgi kā rindas atkārtojuma cilpa (pēdējā rakstā). MansTM.Slejas- šī ir vērtību tabulas 1C kolonnu kolekcija "MoyaTZ". Kolekcijā ir tipa objekti "ColumnValueTable" Katrs šāda veida objekts ir vērtību tabulas kolonna, un tajā ir rekvizīti un metodes. Atsaucoties uz šīm īpašībām un metodēm, mēs iegūstam nepieciešamo informāciju par vienu kolonnu vai veicam ar to kādas citas darbības.

Piemēram, piekļūstot īpašumam "Vārds" (Kolonna.Vārds) mēs iegūstam pašreizējās kolonnas nosaukumu.

Gribu vērst jūsu uzmanību uz cikla nosaukumu: “Katram Kolonna No MyTR.Columns Loop" Mainīgais nosaukums "Kolonna" mūsu izdomāts. Nav nepieciešams lietot vienu un to pašu nosaukumu. Piemēram, varat nosaukt šo mainīgo, kā vēlaties "Mana pašreizējā kolonna" Tad iepriekš minētais piemērs izskatītos šādi:

// parādīt visu TK kolonnu nosaukumus katrai MyCurrentColumn From MyTK.Columns Notify Loop("Slejas nosaukums: " + ManaPašreizējāSlejas nosaukums); EndCycle;

Kad 1C izpildes apakšsistēma saskaras ar šāda veida ciklu, katrā cikla piegājienā tā piešķir vienu elementu no mūsu kolekcijas mainīgajam ar norādīto nosaukumu. Šis gadījums - viens kolekcijas elements vērtību tabulas kolonnas MansTM.Slejas Un tad mēs atsaucamies uz mainīgo, kas satur pašreizējo kolonnu, un izmantojam īpašumu "Vārds".

Es iesaku blakus kolonnas nosaukumam parādīt katras kolonnas numuru kolonnu kolekcijā:

// parāda visu vērtību tabulas kolonnu numurus un nosaukumus katrai kolonnai no MyTR.Columns LoopColumnNumber = MyTR.Columns.Index(Column); // iegūt kolonnas numuru ColumnName = Column.Name; // iegūt kolonnas nosaukumu Report("Slejas numurs:" + Kolonnas numurs + " Kolonnas nosaukums: " + Kolonnas nosaukums); EndCycle;

Teksts tiks parādīts 1C ziņojuma lodziņā:

Kolonnas numurs:0 Kolonnas nosaukums: Uzvārds Ailes numurs:1 Kolonnas nosaukums: Vārds Kolonnas numurs:2 Kolonnas nosaukums: Otrais nosaukums

Pievērsīsim uzmanību tam, ka vērtību tabulas 1C kolonnas ir numurētas, sākot no nulles, tāpat kā vērtību tabulas rindas.

Kolonnu skaits vērtību tabulā 1C

Lai uzzinātu kolonnu skaitu vērtību tabulā, kolonnu kolekcijā izmantojam metodi "Number()".

Kolonnu skaits = MyTM.Columns.Number(); Pārskats (kolonnu skaits);

Ekrānā tiks parādīts skaitlis "3". Patiešām, mūsu tabulā ir trīs kolonnas: "Uzvārds", "Vārds", "Uzvārds"

Kolonnas objekta iegūšana pēc tā numura (indeksa) un atkārtošana pa kolonnām, izmantojot kolonnu indeksu

Izmantojot kolonnu indeksus (skaitļus), veiksim cilpu cauri visām vērtību tabulas kolonnām. Atcerieties, ka kolonnu numerācija sākas no nulles. Tāpēc mums ir jāpalielina cikla "Sh" skaitītājs no nulles līdz skaitlim, kas vienāds ar kolonnu skaitu mīnus viens.

Ja SC = 0 pēc MyTM.Columns.Quantity() - 1 Loop CurrentColumn = MyTM.Columns[SC]; Paziņot(pašreizējā kolonna.nosaukums); EndCycle;

Ekrānā mēs redzēsim sekojošo

Pilnais vārds

Es domāju, ka šis piemērs bija skaidrs. Mēs pievērsāmies metodei Daudzums () kolonnu kolekcijas" MyTM.Columns.Quantity()", ieguva kolonnu skaitu un sāka cilpu ar skaitītāju no nulle pirms tam kolonnu skaits mīnus viens. Cilpas iekšpusē mēs iegūstam katru kolonnu no kolonnu kolekcijas un piešķiram pašreizējās kolonnas objektu mainīgajam Pašreizējā kolonna Tālāk mainīgais Pašreizējā kolonna piekļūstam īpašumam Vārds un parādīt šī īpašuma vērtību ekrānā: Paziņot(pašreizējā kolonna.nosaukums);

Ir svarīgi nekad nejaukt objekta īpašību ar objekta metodi.

Rekvizīts ir sava veida statiska vērtība, un piekļuve tai tiek rakstīta, piemēram, bez iekavām Pašreizējā kolonna.Nosaukums. Metode būtībā ir objekta procedūra vai funkcija, un procedūru un funkciju izsaukumi vienmēr tiek rakstīti ar iekavām (pat ja nav ievades parametru). Piemēram: MyTM.Columns.Quantity()

Ja mēs atsaucamies uz metodi, aizmirstot uzrakstīt iekavas, 1C tulks mums parādīs kļūdas ziņojumu un nepalaidīs kodu izpildei. Tā kā tulks pieņems, ka mēs piekļūstam nevis metodei, bet īpašībai, jo nav iekavu. Un tas nevarēs atrast rekvizītus ar šādu nosaukumu (jo ir tikai metode ar šādu nosaukumu) - tas tiks teikts kļūdas ziņojumā.

To rakstīs tulks, ja metodes izsaukumā aizmirsīšu ielikt iekavas tik nepareizā veidā MansTM.Slejas.Daudzums(bez iekavām aiz "Daudzums()"):

Objekta lauks nav atrasts (skaits)

Šajā gadījumā "lauks" un "īpašums" ir jāsaprot kā sinonīmi vai neprecizitāte 1C izstrādātāju terminoloģijā. Viņi izmanto abus šos vārdus, lai atsauktos uz vienu un to pašu jēdzienu. Lai gan citās programmēšanas valodās šie termini var apzīmēt dažādus jēdzienus.

Datu iegūšana no 1C vērtību tabulas, izmantojot kolonnu numurus

Iesācējiem es piedāvāju vienkāršu datu iegūšanas piemēru no mūsu tabulas pirmās rindas. Lūdzu, ņemiet vērā, ka mēs izmantojam iepriekš aizpildīto tabulu no raksta sākuma. Mēs noteikti zinām, ka tabulā ir pirmā rinda un vismaz viena kolonna. Ja izmantosim šo piemēru tukšai tabulai, radīsies kļūda. Tātad:

FirstLine = MyTR; // iegūt pirmo rindu (numerācija no nulles) ColumnFirstValue = RowFirst; // iegūt pirmās kolonnas vērtību (kolonnu numerācija arī ir no nulles) Report(FirstColumnValue); // parāda pirmās kolonnas vērtību tabulas pirmajā rindā

Ekrānā tiks parādīts:

Čapajevs

Vispirms mēs ieguvām vērtību tabulas rindas objektu, piekļūstot vērtību tabulai, izmantojot [...] operatoru. (ja esat aizmirsis, kā to izdarīt, varat apskatīt iepriekšējos rakstus) Operatora iekšpusē mēs nokārtojām argumentu "0". Šis ir vērtību tabulas pirmās rindas indekss. FirstLine = MyTR;

Turklāt mums ir arī tiesības atsaukties uz virknes objektu, izmantojot [...] operatoru. Šajā paziņojumā mēs nodevām vērtību tabulas kolonnas numuru, šajā gadījumā arī "0". Tādējādi mēs saņēmām kolonnas vērtību ar skaitli "0". pašreizējā līnija tabulas ar numuru "0". Mēs parādījām šo vērtību ekrānā, un tā apzīmē virkni "Chapaev".

Nedaudz sarežģīsim mūsu piemēru:

FirstLine = MyTR; // iegūt pirmo rindiņu (numurētu no nulles) Report(FirstLine); // parāda pirmās kolonnas vērtību tabulas pirmajā rindā Report(FirstRow); // parādīt otrās kolonnas vērtību tabulas pirmajā rindā Report(FirstRow); // parāda trešās kolonnas vērtību tabulas pirmajā rindā

Tagad mēs esam parādījuši vērtības no visām trim mūsu vērtību tabulas pirmās rindas kolonnām:

Čapajevs Vasilijs Ivanovičs

Tagad es vēl vairāk modificēju šo piemēru, lai mēs varētu iztikt bez mainīgā "Pirmā līnija"

Paziņot (MyTM); // parāda pirmās kolonnas vērtību tabulas pirmajā rindā Report(MyTR); // parādīt otrās kolonnas vērtību tabulas pirmajā rindā Report(MyTR); // parāda trešās kolonnas vērtību tabulas pirmajā rindā

Ekrāns būs tāds pats.

Čapajevs Vasilijs Ivanovičs

Iepriekš minētajā piemērā mēs redzējām, ka, lai piekļūtu vērtībai, kas atrodas noteiktā vērtību tabulas rindā un kolonnā, mēs varam izmantot divu operatoru secīgu izsaukumu [...] šādā formā: Vērtību tabula[Indeksa rindas][Indeksa kolonnas]

Tātad, mēs esam gatavi izveidot cilpu un iegūt visu rindu un visu kolonnu datus, izmantojot rindu un kolonnu indeksus:

Rindu skaits = 0 pēc MyTM.Quantity() - 1 cilpa // cilpa rindās For ColumnCount = 0 pēc MyTM.Columns.Quantity() - 1 cilpa // ligzdots cilpa caur kolonnām // iegūstiet šūnas vērtību (no pašreizējās rindas un pašreizējās kolonnas) CellValue = MyTR[RowCount][ColumnCount]; // parāda rindas numuru, kolonnas numuru un šūnas vērtību Report("Line #" + RowCount + "column #" + ColumnCount + " = " + CellValue); EndCycle; EndCycle;

Ekrānā tiks parādīts sekojošais:

0. rindas 0. kolonna = Čapajeva 0. rindas 1. sleja = Vasilija 0. rindas 2. sleja = Ivanoviča 1. rindas 0. kolonna = Dzeržinska 1. rindas 1. kolonna = Fēliksa 1. rindas 2. kolonna = Edmundoviča līnija #. 2. kolonna Nr. 0 = Kotovska līnija Nr. 2 kolonna Nr. 1 = Grigorija līnija Nr. 2 kolonna Nr. 2 = Ivanovičs

Ar divu cilpu palīdzību, no kurām viena ir ligzdota otrā, mēs parādījām visu kolonnu vērtības no visām 1C vērtību tabulas rindām. Šajā gadījumā mēs neizmantojām kolonnu nosaukumus, bet gan atsaucāmies uz kolonnām un rindām pēc to indeksiem. Lai labāk saprastu, pievērsiet uzmanību komentāriem piemērā.

Noslēgumā es ierosinu nedaudz mainīt mūsu piemēru, lai kolonnu numuru vietā ekrānā tiktu parādīti to vārdi. Un papildus es izveidošu reprezentatīvāku dizainu satura attēlošanai ekrānā.

For RowCount = 0 By MyTR.Quantity() - 1 Cikls // cilpa starp rindām Report(" ======= Rinda # " + RowCount + " ======="); Ziņot(" "); // rindas padeve (ievietot tukšu rindu) For ColumnCount = 0 By MyTR.Columns.Quantity() - 1 Cilpa // ligzdots cilpa caur kolonnām // iegūt šūnas vērtību (no pašreizējās rindas un pašreizējās kolonnas) CellValue = MyTR[RowCount ][ ColumnCount]; // iegūt kolonnas nosaukumu ColumnName = MyTR.Columns[ColumnCount].Name; // parādīt kolonnas nosaukumu un šūnas vērtību Report(ColumnName + ": " + CellValue); EndCycle; Ziņot(" "); // jauna rindiņa (ievietot tukšu rindu) EndCycle;

Tagad mūsu ekrānā informācija sāka izskatīties reprezentatīvāka:

Rinda Nr. 0 ======= Uzvārds: Čapajevs Vārds: Vasīlijs Vidējais vārds: Ivanovičs ======= Rinda Nr. 1 ======== Uzvārds: Dzeržinskis Vārds: Fēlikss Vidus vārds: Edmundovičs ===== == 2. rinda ======= Uzvārds: Kotovskis Vārds: Grigorijs Patronīms: Ivanovičs

Jā, gandrīz aizmirsu. Izmantojot divus operatorus [...][...] rindā, mēs varam nodot šīs kolonnas nosaukumu kolonnas indeksa vietā: Vērtību tabula[Rindas indekss][Slejas nosaukums]

For RowCount = 0 By MyTR.Quantity() - 1 Loop // cilpa starp rindām Report(" ======= Rinda # " + RowCount + " ======="); Ziņot(" "); // rindas plūsma (ievietojot tukšu rindu) For ColumnCount = 0 By MyTR.Columns.Quantity() - 1 Cikls // ligzdots cilpa caur kolonnām ColumnName = MyTR.Columns[ColumnCount].Name; // iegūt kolonnas nosaukumuCellValue = MyTR[RowCount][ColumnName]; //

Pievērsiet uzmanību rindai, kas atzīmēta ar bultiņu ". Šajā rindā pašreizējās kolonnas indeksa vietā mēs nododam pašreizējās kolonnas nosaukumu argumentam kvadrātiekavās[...] Rezultāts būs tāds pats.

Un tagad pēdējais šajā rakstā.

PAREIZA visu 1C vērtību tabulas datu saņemšana, izmantojot cilpas, lai atkārtotu rindu un kolonnu kolekciju

Katrai pašreizējai rindai no MyTR cilpas // izlasiet virkņu kolekciju Report(" ======= Rinda # " + MyTR.Index(CurrentRow) + " ======="); Ziņot(" "); Katrai pašreizējai kolonnai no MyTR.Columns Loop // ligzdots cilpa caur kolonnu kolekciju ColumnName = CurrentColumn.Name; // iegūt kolonnas nosaukumsCellValue = PašreizējāRinda[SlejasNosaukums]; // iegūt šūnas vērtību BY kolonnas NOSAUKUMS Report(ColumnName + ": " + CellValue); // parāda kolonnas nosaukumu un šūnas vērtību EndCycle; Ziņot(" "); EndCycle;

Piemērā tika izmantotas divas cilpas. Kolonnu savākšanas cilpa ir ligzdota rindas cilpas iekšpusē. Ja esat izskatījis iepriekš minētos piemērus un izlasījis iepriekšējos rakstus, jums nebūs grūti saprast, kā šis piemērs darbojas.

Visbeidzot, es saglabāšu koda rindu skaitu mūsu pēdējā piemērā pēc iespējas īsāku, izslēdzot starpposma mainīgo izmantošanu. Mēs iegūsim "industriālā koda" paraugu, kas tiek izmantots reālās pasaules lietojumprogrammās.

Tas jādara tikai tad, ja jums ir laba izpratne par to, ko jūs darāt. Ja kods ir ļoti sarežģīts, tad ir pieļaujams atstāt starpposma mainīgos, lai vēlāk būtu vieglāk saprast savu kodu. Tāpat jebkurš kods ir vismaz minimāli jākomentē, lai pēc kāda laika būtu vieglāk saprast programmas tekstus.

Katrai CurrentRow From MyTR Loop // cilpa cauri rindām Report(" ======= Line # " + MyTR.Index(CurrentRow) + " =======" + Symbols.PS); Katrai pašreizējai kolonnai no MyTr.Columns Loop // atkārtojiet kolonnas Report(PašreizējāSlejas nosaukums + ": " + PašreizējāRinda[Pašreizējā kolonna.Nosaukums]); EndCycle; Ziņot(" "); EndCycle;

Izvade uz ekrāna nav mainījusies, tā paliek tāda pati kā iepriekšējā piemērā:

2 NEDĒĻU KURSS

"PROGRAMMĒŠANA 1C IESĀCĒJIEM"

Kurss jums tiks nosūtīts uz e-pastu. Kļūsti par programmētāju, izpildot soli pa solim uzdevumus.

Viss, kas nepieciešams, lai piedalītos, ir dators un internets.

Bezmaksas piekļuve kursam:

sp-force-hide ( displejs: nav;).sp-forma ( displejs: bloks; fons: #eff2f4; polsterējums: 5 pikseļi; platums: 270 pikseļi; maksimālais platums: 100%; apmales rādiuss: 0px; -moz-border -rādiuss: 0px; -webkit-border-radius: 0px; font-family: Arial, "Helvetica Neue", sans-serif; fona atkārtojums: bez atkārtošanas; fona pozīcija: centrs; fona izmērs: automātisks;) .sp-form ievade ( displejs: inline-block; necaurredzamība: 1; redzamība: redzams;).sp-form .sp-form-fields-wrapper ( margin: 0 auto; platums: 260px;).sp-form .sp -form-control (fons: #ffffff; apmales krāsa: #cccccc; apmales stils: vienkrāsains; apmales platums: 1 pikseļi; fonta izmērs: 15 pikseļi; polsterējums pa kreisi: 8,75 pikseļi; polsterējums pa labi: 8,75 pikseļi; apmale -rādiuss: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; augstums: 35px; platums: 100%;).sp-form .sp-field label (krāsa: #444444; font- izmērs: 13 pikseļi; fonta stils: normāls; fonta svars: treknrakstā;).sp-form .sp-button ( border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; fona krāsa: #f4394c; krāsa: #ffffff; platums: 100%; font-weig ht: 700; fonta stils: normāls fontu saime: Arial, "Helvetica Neue", sans-serif; kastes ēna: nav -moz-box-shadow: nav; -webkit-box-shadow: nav; fons: lineārs gradients(uz augšu, #e30d22 , #f77380);).sp-form .sp-button-container (teksta līdzināšana: centrā; platums: automātiski;)