Bahay / pangkalahatang-ideya ng mga bintana / 1c pinamamahalaang form value table add column. Mahalagang huwag malito ang isang object property sa isang object method.

1c pinamamahalaang form value table add column. Mahalagang huwag malito ang isang object property sa isang object method.

Narito ang isang maliit na katotohanan upang magsimula - mga simpleng halimbawa gumana sa isang talahanayan ng mga halaga:

1. Gumawa ng talahanayan ng mga halaga

ValueTable = Bagong ValueTable;


2. Lumikha ng mga column ng talahanayan ng mga halaga:

ValueTable.Columns.Add("Pangalan");
ValueTable.Columns.Add("Apelyido");


3. Magdagdag ng mga bagong row gamit ang mga pangalan ng column:


NewString.Name = "Vasily";
NewRow.LastName = "Tuta";


4. Paano maghanap ng value sa value table:
Ito ay kinakailangan upang makahanap ng isang hilera ng talahanayan na naglalaman ng nais na halaga.

FoundString = ValueTable.Find(LookupValue);


5. Hanapin ang unang paglitaw sa ilang partikular na column ng isang talahanayan ng mga halaga

FoundString = ValueTable.Find(LookupValue, "Supplier, Buyer");


6. Kung kailangan mong hanapin ang lahat ng mga pangyayari sa talahanayan ng mga halaga:
Ginagamit namin ang istraktura ng paghahanap.

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


Gumawa tayo ng istraktura ng paghahanap, na ang bawat elemento ay naglalaman ng pangalan ng column bilang isang susi at ang hinanap na halaga sa column na ito bilang isang value. Ipinapasa namin ang Search Structure bilang parameter sa FindStrings() method. Bilang resulta, nakukuha namin ang mga hilera ng talahanayan.
Kung idaragdag namin ang paghahanap para sa nais na halaga sa istraktura ng paghahanap, halimbawa, din sa hanay na Responsable, pagkatapos bilang resulta ng paglalapat ng FindRows() na paraan, makukuha namin ang lahat ng mga hilera kung saan ang parehong Empleyado at Responsable ay katumbas ng nais halaga.

7. Paano mag-loop sa isang talahanayan ng mga halaga sa random na pagkakasunud-sunod

Para sa Bawat CurrentRow Mula sa ValueTable Loop
Ulat(CurrentLine.Name);
EndCycle;

Gawin ang parehong gamit ang mga index:

SeniorIndex = ValueTable.Count() - 1;
Para sa MF = 0 ng SeniorIndex Cycle
Report(ValueTable[Count].Pangalan);
EndCycle;


8. Pagtanggal ng Umiiral na Value Table Row

ValueTable.Delete(RemoveRow);

sa pamamagitan ng index

ValueTable.Delete(0);


9. Pagtanggal ng umiiral na column ng talahanayan ng mga halaga

ValueTable.Columns.Delete(RemoveColumn);


sa pamamagitan ng index

ValueTable.Columns.Delete(0);

Dapat itong isaalang-alang na ang pagtanggal ng isang hilera (o haligi) "mula sa gitna" ng talahanayan ng mga halaga ay hahantong sa pagbaba ng isa sa mga index ng mga hilera na "pagkatapos" ng tinanggal.

10. Paano punan ang talahanayan ng halaga kung ang mga pangalan ng column ay nakapaloob sa mga variable?

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


11. Paano punan ang buong hanay ng talahanayan ng mga halaga ng nais na halaga?
Ang haligi ng Flag ng FiscalAccounting sa talahanayan ng halaga ng Talahanayan ng Halaga ay dapat punan ng halagang Mali

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


Ginagamit namin ang FillValues() na paraan para sa talahanayan ng mga halaga. Ang unang parameter ay ang value na pupunan. Ang pangalawang parameter ay ang pangalan ng napunong column.

12. Paano punan ang talahanayan ng mga halaga na "TableRecipient" ng data ng talahanayan ng mga halaga na "SourceTable"?

Kung wala pa ang Receiver Table sa oras ng operasyon, o hindi mo kailangang i-save ang mga naunang column nito, maaari mo itong gawin bilang buong kopya orihinal

TableReceiver = TableOriginal.Copy();


Dalawang opsyon: umiiral ang table na TableReceiver, at nakakalungkot na mawala ang mga column nito at mga paghihigpit sa mga uri ng data ng column. Ngunit kailangan mong punan ang data para sa mga column na ang mga pangalan ay tumutugma sa mga pangalan ng source table.

Bahagyang paglilipat ng data para sa mga column na may tugmang pangalan:

Para sa Bawat Hanay Ng SourceTable Mula sa SourceTable Loop
FillPropertyValues(NewString, SourceTableString);
EndCycle


Para sa bawat row ng source table, may idaragdag na bagong row sa destination table at ang mga value ay pinupunan sa mga column na iyon ng bagong table na ang mga pangalan ay tumutugma sa mga pangalan ng column sa source table.

Kung ang mga talahanayan ay walang mga hanay na may parehong pangalan, ang patutunguhang talahanayan ay magtatapos sa maraming mga hilera na may mga null na halaga gaya ng mga hilera sa pinagmulang talahanayan.
Kung para sa ilang mga column na may parehong pangalan ang uri ng halaga ng data mula sa source table ay hindi nahuhulog sa hanay ng mga pinapayagang uri ng column ng destination table, makakakuha tayo ng mga walang laman na value sa naturang mga field.
Isaalang-alang natin ang ikatlong kaso. Sa kaso ng mga column na may parehong pangalan, ang column ng destination table ay dapat na ganap na sumunod sa column ng source table.

Buong kopya ng data para sa mga column na may tugmang pangalan

SimilarColumns = Bagong Array();

Para sa Bawat Column Mula sa SourceTable.Columns Loop
MatchingColumn = TableReceiver.Columns.Find(Column.Name);

Kung MatchedColumn<>Hindi Natukoy Pagkatapos

// Kumuha ng mga katangian ng column.
Pangalan = Column.Name;
ValueType = Column.ValueType;
Pamagat = Column.Title;
Lapad = Column.Width;

// Palitan ang mga column sa destination table.
Index = TableReceiver.Columns.Index(CoincidentColumn);

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

// Idagdag ang susunod na pangalan ng mga tumutugmang column sa array.
Same-nameColumns.Add(Column.Name);

Tapusin kung;

EndCycle;

// Loop sa mga row ng source table.
Para sa bawat Row ng SourceTable Mula sa SourceTable Loop

// Magdagdag ng bagong row sa destination table.
NewString = TableReceiver.Add();

// Punan ang mga halaga sa tumutugmang mga cell.
Para sa bawat NameColumns Ng Parehong NameColumns Loop
NewString[ColumnName] = SourceTableString[ColumnName];

EndCycle;

EndCycle;


Kakailanganin nating palitan ang column sa destination table ng bago, na ang mga property ay ganap na tutugma sa column ng source table.
Samakatuwid, kung ang isang column na may parehong pangalan ay makikita sa recipient table, kinokolekta namin sa mga variable ang lahat ng property para sa bagong column. Susunod, tanggalin ang luma at lumikha ng bagong column. Pagkatapos ay umiikot kami sa mga hilera ng source table.
Sa loop, nagdaragdag kami ng bagong row sa talahanayan ng tatanggap at nagbubukas ng loop sa pamamagitan ng mga pangalan ng mga column sa hanay ng mga tumutugmang column.
Sa loob ng nested loop na ito, pinupunan namin ang mga cell ng recipient table ng data ng cell ng source table.

13. Paano magdagdag ng mga haligi sa talahanayan ng mga halaga "Talahanayan ng Mga Halaga" na may mga paghihigpit sa uri?

Kapag nagdadagdag ng column, maaari mo lang tukuyin ang pangalan nito, at huwag hawakan ang pangalawang parameter ng Add() na paraan. Sa kasong ito, ang uri ng data ng column ay arbitrary.

Pagdaragdag ng column nang hindi tumutukoy ng uri ng data

// Magdagdag ng column na walang mga paghihigpit sa uri.
ValueTable.Columns.Add("Object");


Maaari mong punan ang halaga ng pangalawang parameter. Kinakailangang ipasa ang isang paglalarawan ng uri na pinapayagan para sa hanay doon. Ang paglalarawan mismo ay maaaring makuha gamit ang constructor, na ipinapasa ang pangalan ng uri ng string bilang isang parameter sa huli (kung maraming mga uri, pagkatapos ay pinaghihiwalay ng mga kuwit) o ​​isang hanay ng mga wastong uri.

Pagdaragdag ng column na tumutukoy sa uri ng data

// Mga paghihigpit sa mga uri ng data ng column:
// Mga elemento lamang ng direktoryo ng "Mga Kontratista".
ValueTable.Columns.Add("Account", New TypeDescription("ReferenceReference.Accounts"));


Kung mayroong isang string sa mga uri na pinapayagan para sa pagpuno sa data ng column, maaari mong limitahan ang bit depth (haba), tukuyin ang paggamit ng variable o fixed length. Ang lahat ng ito ay ibinibigay sa pamamagitan ng paglikha ng isang bagay gamit ang StringQualifiers constructor. Dagdag pa, ang bagay na ito ay gagamitin bilang isa sa mga parameter ng TypeDescription constructor.

Paggamit ng mga qualifier upang tukuyin ang uri ng data ng column ng talahanayan ng halaga

// Maghanda at magtakda ng mga limitasyon para sa data ng uri ng String.
String Qualifiers = Bagong String Qualifiers(20, ValidLength.Variable);
AllowedTypes = NewTypeDescription("String",StringQualifiers);
ValueTable.Columns.Add("NoteStringShort", ValidTypes);


Magagawa mo rin ito para sa mga numero at petsa na kwalipikado.
Pakitandaan: ang paglalarawan ng uri ay maaaring itayo ng tagabuo ng parehong "mula sa simula", at maaari mong gamitin ang isang umiiral na paglalarawan ng uri bilang batayan

Paggamit ng Mga Umiiral na Uri ng Deklarasyon upang Tukuyin ang Uri ng Data ng isang Haligi ng Talahanayan ng Halaga

// Extension ng dating ginamit na paglalarawan ng mga uri.
Number Qualifiers = Bagong Number Qualifiers(10, 2, ValidSign.Non-negative);
DateQualifiers = Bagong DateQualifiers(DateParts.Date);
ExtendedValidTypes = NewTypeDescription(ValidTypes, "Number, Petsa",NumberQualifiers,DateQualifiers);

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

Upang isaalang-alang ang pera at mga kalakal, ang iba't ibang mga talahanayan ay malawakang ginagamit sa negosyo. Halos bawat dokumento ay isang talahanayan.

Ang isang talahanayan ay naglilista ng mga kalakal na ipapadala mula sa bodega. Sa isa pang talahanayan - ang obligasyon na magbayad para sa mga kalakal na ito.

Samakatuwid, sa 1C, ang trabaho sa mga talahanayan ay sumasakop sa isang kilalang lugar.

Ang mga talahanayan sa 1C ay tinatawag ding "mga bahagi ng talahanayan". Ang mga sangguniang aklat, dokumento at iba pa ay mayroon nito.

Ang query ay nagbabalik ng isang talahanayan bilang resulta ng pagpapatupad nito, na maaaring ma-access sa dalawang magkaibang paraan.

Ang una - mas mabilis - pagpili, pagkuha ng mga hilera mula dito ay posible lamang sa pagkakasunud-sunod. Ang pangalawa ay ang pag-unload ng resulta ng query sa isang talahanayan ng mga halaga at pagkatapos ay random na pag-access dito.

//Pagpipilian 1 - sunud-sunod na pag-access sa mga resulta ng query

// kumuha ng mesa
Selection = Query.Execute().Select();
// bypass ang lahat ng row ng resulta ng query sa pagkakasunud-sunod
Habang Selection.Next() Loop
Ulat(Selection.Pangalan);
EndCycle;

//Pagpipilian 2 - pag-upload sa talahanayan ng mga halaga
Query = Bagong Query("SELECT Name FROM Directory.Nomenclature");
// kumuha ng mesa
Talahanayan = Query.Execute().Upload().
// pagkatapos ay maaari din nating i-bypass ang lahat ng mga linya
Para sa bawat Hilera mula sa Table Loop
Ulat(String.Name);
EndCycle;
//o arbitraryong i-access ang mga string
String = Table.Find("Shovel", "Pangalan");

Ang isang mahalagang tampok ay na sa talahanayan, na nakuha mula sa resulta ng query, ang lahat ng mga haligi ay malakas na mai-type. Nangangahulugan ito na sa pamamagitan ng paghiling ng field na Pangalan mula sa Nomenclature lookup, makakatanggap ka ng column ng String type na may pinapayagang haba na hindi hihigit sa N character.

Talahanayan sa form (makapal na kliyente)

Gumagana ang user sa talahanayan kapag inilagay ito sa form.

Tinalakay namin ang mga pangunahing prinsipyo ng paggawa sa mga form sa aralin sa at sa aralin sa

Kaya, ilagay natin ang talahanayan sa form. Upang gawin ito, maaari mong i-drag ang talahanayan mula sa control panel. Katulad nito, maaari mong piliin ang kontrol ng Form/Insert mula sa menu.

Maaaring iimbak ang data sa isang configuration - pagkatapos ay kailangan mong pumili ng isang umiiral na (dating idinagdag) na bahagi ng tabular ng object ng pagsasaayos na ang anyo ay iyong ini-edit.

I-click ang "..." na button sa Data property. Upang makita ang listahan ng mga bahagi ng tabular, kailangan mong palawakin ang sangay ng Bagay.

Kapag pumipili ng isang tabular na bahagi, ang 1C mismo ay magdaragdag ng mga haligi sa talahanayan sa form. Ang mga string na ipinasok ng user sa naturang talahanayan ay awtomatikong mase-save kasama ng direktoryo/dokumento.

Sa parehong Data property, maaari kang maglagay ng arbitrary na pangalan at piliin ang uri ng ValueTable.

Nangangahulugan ito na ang isang arbitrary na talahanayan ng mga halaga ay napili. Hindi ito awtomatikong magdagdag ng mga column, hindi ito awtomatikong mase-save, ngunit maaari mong gawin ang anumang gusto mo dito.

Sa pamamagitan ng pag-right click sa talahanayan maaari kang magdagdag ng column. Sa mga katangian ng column, maaari mong tukuyin ang pangalan nito (para sa sanggunian sa 1C code), ang heading ng column sa form, ang koneksyon sa katangian ng tabular na bahagi (ang huli - kung hindi isang arbitrary na talahanayan, ngunit isang tabular na bahagi ay napili).

Sa mga katangian ng talahanayan sa form, maaari mong tukuyin kung ang user ay maaaring magdagdag/magtanggal ng mga hilera. Ang isang mas advanced na form ay ang ViewOnly na checkbox. Ang mga katangiang ito ay kapaki-pakinabang para sa pag-aayos ng mga talahanayan na nilayon para sa pagpapakita ng impormasyon, ngunit hindi para sa pag-edit.

Upang pamahalaan ang talahanayan, kailangan mong ipakita ang command panel sa form. Piliin ang menu item Form/Insert Control/Command Panel.

Sa mga katangian ng command bar, piliin ang Autocomplete checkbox upang awtomatikong lumitaw ang mga button sa toolbar.

Talahanayan sa form (manipis/pinamamahalaang kliyente)

Sa isang pinamamahalaang form, ang mga pagkilos na ito ay medyo naiiba. Kung kailangan mong maglagay ng tabular na seksyon sa form, palawakin ang Object branch at i-drag ang isa sa mga tabular na seksyon sa kaliwa. At ayun na nga!

Kung kailangan mong maglagay ng talahanayan ng mga halaga, magdagdag ng bagong katangian ng form at tukuyin ang uri sa mga katangian nito - isang talahanayan ng mga halaga.

Upang magdagdag ng mga column, gamitin ang kanang mouse button na menu sa katangian ng form na ito, item Add attribute column.

Pagkatapos ay i-drag din ang talahanayan sa kaliwa.

Upang ang talahanayan ay magkaroon ng isang command bar, sa mga katangian ng talahanayan, piliin ang mga halaga sa seksyon ng Usage - Command bar na posisyon.

Pag-export ng talahanayan sa Excel

Anumang 1C table na matatagpuan sa form ay maaaring i-print o i-upload sa Excel.

Upang gawin ito, mag-right-click sa isang walang laman na espasyo sa talahanayan at piliin ang Ipakita ang Listahan.

Sa isang pinamamahalaang (manipis) na kliyente, maaaring isagawa ang mga katulad na pagkilos gamit ang item sa menu na Lahat ng aksyon/listahan ng Display.

Ang talahanayan ng halaga sa 1C 8.3 platform (8.2) ay isang unibersal na koleksyon ng mga halaga na magagamit ng isang developer sa pagbuo ng software upang ipatupad ang kanilang mga algorithm. Sa katunayan, ang talahanayan ng halaga ng 1C ay isang dynamic na hanay ng mga halaga na may mga column at column.

Mga artikulo tungkol sa iba pang mga unibersal na koleksyon ng mga halaga sa 1C

Matuto ng programming sa 1C sa isang lugar mula sa aking aklat na "Program in 1C in 11 steps"

  1. Ang aklat ay nakasulat sa malinaw at simpleng wika - para sa isang baguhan.
  2. Matutong maunawaan ang arkitektura ng 1C;
  3. Magsisimula kang magsulat ng code sa 1C na wika;
  4. Master ang mga pangunahing pamamaraan ng programming;
  5. Pagsama-samahin ang nakuhang kaalaman sa tulong ng isang task book;

Isang mahusay na gabay sa pagbuo sa isang pinamamahalaang 1C application, kapwa para sa mga baguhang developer at may karanasang programmer.

  1. Napaka-accessible at naiintindihan na wika
  2. Ang aklat ay ipinadala sa email sa format na PDF. Maaaring buksan sa anumang device!
  3. Unawain ang ideolohiya ng isang pinamamahalaang 1C application
  4. Matutunan kung paano bumuo ng pinamamahalaang application;
  5. Matutong magdisenyo pinamamahalaang mga form 1C;
  6. Magagawa mong magtrabaho kasama ang mga pangunahing at kinakailangang elemento ng mga pinamamahalaang form
  7. Magiging malinaw ang programming sa ilalim ng pinamamahalaang application

Promo code para sa 15% na diskwento - 48PVXHeYu


Kung nakatulong sa iyo ang araling ito na malutas ang anumang problema, nagustuhan ito o naging kapaki-pakinabang, maaari mong suportahan ang aking proyekto sa pamamagitan ng paglilipat ng anumang halaga:

maaaring bayaran nang manu-mano:

Yandex.Money — 410012882996301
Pera sa Web - R955262494655

Sumali sa aking mga grupo.

Na-post noong Setyembre 21, 2011

Talaan ng mga halaga 1C - bahagi 3. metadata. Pag-ulit sa mga column ng talahanayan ng mga halaga

Sa artikulong ito, sasabihin ko sa iyo kung paano magtrabaho sa isang talahanayan ng mga halaga ng isang "hindi kilalang" istraktura, kung paano umulit sa mga haligi ng isang talahanayan ng mga halaga, kung paano kunin ang data mula sa mga haligi at hilera nang hindi gumagamit ng mga pangalan ng haligi. (Ang artikulong ito ay tumutukoy sa isang serye ng mga artikulo 1C mula sa simula; programming 1c mula sa simula; talahanayan ng mga halaga 1c)

Upang ipaliwanag ang materyal at upang mapatakbo ang aming mga halimbawa ng program code na "live", kailangan namin ng ilan pagsubok ng talahanayan ng mga halaga 1C. Ang bahagi ng aming mga halimbawa ay kukuha ng data mula sa isang talahanayan ng mga halaga, kaya gagawa kami ng isang talahanayan na may tatlong column na "Apelyido", "Apelyido", "Patronymic" at maglalagay ng maliit na halaga ng data dito - kasing dami ng 3 row :)

Kaya, lumikha tayo ng isang talahanayan ng pagsubok ng mga halaga ng 1C at punan ito:

MyTR = Bagong Talaan ng Halaga; // lumikha ng bagong talahanayan ng mga halaga na nakaimbak sa variable na "MyTR" MyTR.Columns.Add("Apelyido"); // create the column "Last name" MyTR.Columns.Add("First name"); // create the "Name" column MyTM.Columns.Add("Patronymic"); // lumikha ng column na "Middle name" // idagdag ang unang hilera sa aming talahanayan ng mga halaga NewRow = MyТЗ.Add(); NewLine.Surname = "Chapaev"; NewString.Name = "Vasily"; NewString.Patronymic = "Ivanovich"; // idagdag ang pangalawang linya NewLine = MyТЗ.Add(); NewLine.Lastname = "Dzerzhinsky"; NewString.Name = "Felix"; NewLine.Patronymic = "Edmundovich"; // idagdag ang ikatlong linya NewLine = MyTR.Add(); NewRow.LastName = "Kotovsky"; NewString.Name = "Gregory"; NewString.Patronymic = "Ivanovich";

Ang aming talahanayan ng pagsubok ay binubuo ng tatlong column: Pangalan, Apelyido, Patronymic; at may tatlong kumpletong linya na may mga pangalan ng mga bayani ng Digmaang Sibil.

Ang unang sample ng code ay umuulit sa mga column ng 1C value table bilang isang koleksyon.

// display the names of all columns of the TK For Each Column From My TK.Columns Notify loop("Column name: " + Column.Name); EndCycle;

Ipapakita ng aming loop ang lahat ng pangalan ng column sa 1C message box:

Pangalan ng column: Apelyido Pangalan ng column: Pangalan Pangalan ng column: Gitnang pangalan

Nakikita namin na ang isang espesyal na loop ng koleksyon ay ginagamit upang umulit sa mga column, katulad ng row iteration loop (sa huling artikulo). MyTM.Mga Hanay- ito ay isang koleksyon ng mga haligi ng talahanayan ng mga halaga 1C "MoyaTZ". Ang koleksyon ay naglalaman ng mga bagay ng uri "ColumnValueTable" Ang bawat bagay ng ganitong uri ay isang column ng talahanayan ng halaga at naglalaman ng mga katangian at pamamaraan. Sa pagtukoy sa mga pag-aari at pamamaraang ito, nakukuha namin ang kinakailangang impormasyon tungkol sa isang hanay o nagsasagawa ng ilang iba pang pagkilos dito.

Halimbawa, ang pag-access sa ari-arian "Pangalan" (Hanay.Pangalan) nakukuha natin ang pangalan ng kasalukuyang column.

Nais kong iguhit ang iyong pansin sa pamagat ng cycle: "Para sa Bawat isa Kolum Mula sa MyTR.Columns Loop" pinangalanang Variable "Haligi" inimbento natin. Hindi kinakailangang gumamit ng parehong pangalan. Maaari mong pangalanan ang variable na ito kahit anong gusto mo, halimbawa "MyCurrentColumn" Pagkatapos ang halimbawa sa itaas ay magiging ganito:

// i-print ang mga pangalan ng lahat ng column ng TK Para sa Bawat MyCurrentColumn Mula sa MyTK.Columns Notify Loop("Column name: " + MyCurrentColumn.Name); EndCycle;

Kapag ang 1C execution subsystem ay nakatagpo ng isang cycle ng ganitong uri, sa bawat pass ng cycle, ito ay nagtatalaga ng isang elemento mula sa aming koleksyon sa variable na may tinukoy na pangalan, sa kasong ito - isang elemento ng koleksyon mga hanay ng talahanayan ng halaga MyTM.Mga Hanay At pagkatapos ay tinutukoy namin ang variable na naglalaman ng kasalukuyang column, at ginagamit ang property "Pangalan".

Iminumungkahi kong ipakita ang bilang ng bawat column sa koleksyon ng column sa tabi ng pangalan ng column:

// ipakita ang numero at pangalan ng lahat ng column ng table of values ​​​​Para sa Bawat Column Mula sa MyTR.Columns LoopColumnNumber = MyTR.Columns.Index(Column); // kunin ang column number ColumnName = Column.Name; // get the column name Report("Column number:" + Column number + " Column name: " + Column name); EndCycle;

Ang text ay ipapakita sa 1C message box:

Numero ng column:0 Pangalan ng column: Apelyido Numero ng column:1 Pangalan ng column: Unang pangalan Numero ng column:2 Pangalan ng column: Middle name

Bigyang-pansin natin ang katotohanan na ang mga haligi sa talahanayan ng mga halaga 1C ay binibilang simula sa zero, tulad ng mga hilera ng talahanayan ng mga halaga.

Ang bilang ng mga haligi sa talahanayan ng mga halaga 1C

Upang malaman ang bilang ng mga column sa talahanayan ng halaga, ginagamit namin ang paraan na "Number()" sa koleksyon ng column.

Number ofColumns = MyTM.Columns.Number(); Ulat(Bilang ng Mga Haligi);

Ang numerong "3" ay ipapakita sa screen. Sa katunayan, sa aming talahanayan mayroong tatlong mga haligi: "Apelyido", "Unang pangalan", "Patronymic"

Pagkuha ng column object sa pamamagitan ng numero nito (index) at pag-ulit sa mga column gamit ang column index

Gumawa tayo ng isang loop sa lahat ng mga haligi ng talahanayan ng mga halaga gamit ang mga indeks ng haligi (mga numero). Tandaan na ang column numbering ay nagsisimula sa zero. Samakatuwid, dapat nating taasan ang counter ng cycle na "Sh" mula sa zero hanggang sa isang numero na katumbas ng bilang ng mga column na minus one.

Para sa SC = 0 By MyTM.Columns.Quantity() - 1 Loop CurrentColumn = MyTM.Columns[SC]; Abisuhan(CurrentColumn.Name); EndCycle;

Sa screen ay makukuha natin ang sumusunod

Buong pangalan

Sa tingin ko ay malinaw ang halimbawang ito. Bumaling kami sa pamamaraan Dami() mga koleksyon ng hanay" MyTM.Columns.Quantity()", nakuha ang bilang ng mga column, at nagsimula ng loop na may counter mula sa sero dati bilang ng mga column minus one. Sa loob ng loop, nakukuha namin ang bawat column mula sa column collection at itinalaga ang kasalukuyang column object sa isang variable CurrentColumn Susunod, ang variable CurrentColumn ina-access namin ang property Pangalan at ipakita ang halaga ng property na ito sa screen: Abisuhan(CurrentColumn.Name);

Mahalagang huwag malito ang isang object property sa isang object method.

Ang isang ari-arian ay isang uri ng static na halaga at ang pag-access dito ay nakasulat nang walang mga bracket, halimbawa CurrentColumn.Pangalan. Ang isang pamamaraan ay mahalagang pamamaraan o function ng isang bagay, at ang mga tawag sa mga pamamaraan at function ay palaging isinusulat gamit ang mga panaklong (kahit na walang mga parameter ng input). Halimbawa: MyTM.Columns.Quantity()

Kung sumangguni kami sa pamamaraan, nakalimutang magsulat ng mga panaklong, ang 1C interpreter ay magbibigay sa amin ng isang mensahe ng error at hindi tatakbo ang code para sa pagpapatupad. Dahil ang interpreter ay ipagpalagay na hindi namin ina-access ang isang paraan, ngunit isang pag-aari - dahil walang mga bracket. At hindi ito makakahanap ng mga pag-aari na may ganoong pangalan (dahil mayroon lamang isang pamamaraan na may pangalang iyon) - na sasabihin sa mensahe ng error.

Ito ang isusulat ng interpreter kung nakalimutan kong maglagay ng mga panaklong sa isang method call sa maling paraan MyTM.Columns.Quantity(walang panaklong pagkatapos ng "Dami()"):

Hindi nahanap ang field ng bagay (Bilang)

Sa kasong ito, dapat na maunawaan ang "field" at "property" bilang mga kasingkahulugan, o isang kamalian sa terminolohiya ng mga developer ng 1C. Ginagamit nila ang parehong mga salitang ito upang sumangguni sa parehong konsepto. Kahit na sa iba pang mga programming language ang mga terminong ito ay maaaring mangahulugan ng iba't ibang mga konsepto.

Pagkuha ng data mula sa talahanayan ng halaga ng 1C gamit ang mga numero ng column

Nag-aalok ako sa iyo, bilang panimula, isang simpleng halimbawa ng pagkuha ng data mula sa unang hilera ng aming talahanayan. Pakitandaan na ginagamit namin ang pre-filled na talahanayan mula sa simula ng artikulo. Alam nating sigurado na ang talahanayan ay may unang hilera at hindi bababa sa isang column. Kung ilalapat namin ang halimbawang ito sa isang walang laman na talahanayan, magkakaroon ng error. Kaya:

FirstLine = MyTR; // makuha ang unang hilera (numbering mula sa zero) ColumnFirstValue = RowFirst; // makuha ang halaga ng unang column (ang pagnunumero ng column ay mula rin sa zero) Report(FirstColumnValue); // ipakita ang halaga ng unang column sa unang hilera ng talahanayan

Ipapakita ng screen ang:

Chapaev

Una kaming nakakuha ng value table row object sa pamamagitan ng pag-access sa value table gamit ang [...] operator. (kung nakalimutan mo kung paano gawin ito, maaari mong tingnan ang mga nakaraang artikulo) Sa loob ng operator, ipinasa namin ang argumentong "0". Ito ang index ng unang hilera ng talahanayan ng mga halaga. FirstLine = MyTR;

Dagdag pa, mayroon din kaming karapatan na sumangguni sa string object gamit ang [...] operator. Sa loob ng pahayag na ito, ipinasa namin ang numero ng hanay ng talahanayan ng mga halaga, sa kasong ito ay "0" din. At sa gayon nakuha namin ang halaga ng hanay na may bilang na "0" para sa kasalukuyang linya mga talahanayan na may numerong "0". Ipinakita namin ang halagang ito sa screen at kinakatawan nito ang string na "Chapaev".

Medyo gawing kumplikado ang ating halimbawa:

FirstLine = MyTR; // makuha ang unang linya (numbered mula sa zero) Report(FirstLine); // ipakita ang halaga ng unang column sa unang hilera ng table Report(FirstRow); // ipakita ang halaga ng pangalawang column sa unang hilera ng table Report(FirstRow); // ipakita ang halaga ng ikatlong hanay sa unang hilera ng talahanayan

Ngayon ay ipinakita namin ang mga halaga mula sa lahat ng tatlong mga haligi ng unang hilera ng aming talahanayan ng mga halaga:

Chapaev Vasily Ivanovich

Ngayon ay binago ko pa ang halimbawang ito upang magawa natin nang walang variable "Unang linya"

Abisuhan(MyTM); // ipakita ang halaga ng unang column sa unang hilera ng table Report(MyTR); // ipakita ang halaga ng pangalawang column sa unang hilera ng table Report(MyTR); // ipakita ang halaga ng ikatlong hanay sa unang hilera ng talahanayan

Magiging pareho ang screen.

Chapaev Vasily Ivanovich

Nakita namin sa halimbawa sa itaas na upang ma-access ang isang halaga na nasa isang partikular na row at partikular na column ng isang talahanayan ng mga halaga, maaari naming gamitin ang magkasunod na tawag ng dalawang operator [...] sa form na ito: ValueTable[IndexRows][IndexColumns]

Kaya, handa na kaming gumawa ng loop at kunin ang data ng lahat ng row at lahat ng column gamit ang row at column index:

Para sa RowCount = 0 By MyTM.Quantity() - 1 Loop // loop through row Para sa ColumnCount = 0 By MyTM.Columns.Quantity() - 1 Loop // nested loop through columns // makuha ang cell value (mula sa kasalukuyang row at ang kasalukuyang mga column) CellValue = MyTR[RowCount][ColumnCount]; // ipakita ang row number, column number at cell value Report("Line #" + RowCount + "column #" + ColumnCount + " = " + CellValue); EndCycle; EndCycle;

Ang mga sumusunod ay ipapakita sa screen:

Line #0 column #0 = Chapaev Line #0 column #1 = Vasily Line #0 column #2 = Ivanovich Line #1 column #0 = Dzerzhinsky Line #1 column #1 = Felix Line #1 column #2 = Edmundovich Line # 2 column No. 0 = Kotovsky Line No. 2 column No. 1 = Grigory Line No. 2 column No. 2 = Ivanovich

Sa tulong ng dalawang mga loop, ang isa ay naka-nest sa isa pa, ipinakita namin ang mga halaga ng lahat ng mga haligi mula sa lahat ng mga hilera ng 1C na talahanayan ng mga halaga. Sa kasong ito, hindi namin ginamit ang mga pangalan ng mga column, ngunit tinukoy ang mga column at row sa pamamagitan ng kanilang mga indeks. Para sa mas mahusay na pag-unawa, bigyang-pansin ang mga komento sa loob ng halimbawa.

Sa konklusyon, iminumungkahi kong bahagyang baguhin ang aming halimbawa upang sa halip na mga numero ng hanay, ipinapakita nito ang kanilang mga pangalan sa screen. At bilang karagdagan gagawa ako ng mas presentable na disenyo para sa pagpapakita ng nilalaman sa screen.

Para sa RowCount = 0 By MyTR.Quantity() - 1 Loop // loop through rows Report(" ======= Row # " + RowCount + " ======="); Mag-ulat(" "); // line feed (ipasok ang walang laman na linya) Para sa ColumnCount = 0 By MyTR.Columns.Quantity() - 1 Loop // nested loop through columns // makuha ang cell value (mula sa kasalukuyang row at kasalukuyang column) CellValue = MyTR[RowCount ][ ColumnCount]; // kunin ang pangalan ng column na ColumnName = MyTR.Columns[ColumnCount].Name; // ipakita ang column name at cell value Report(ColumnName + ": " + CellValue); EndCycle; Mag-ulat(" "); // newline (ipasok ang walang laman na linya) EndCycle;

Ngayon, sa aming screen, nagsimulang magmukhang mas kinatawan ang impormasyon:

Linya No. 0 ======= Apelyido: Chapaev Unang pangalan: Vasily Gitnang pangalan: Ivanovich ======= Linya No. 1 ======= Apelyido: Dzerzhinsky Unang pangalan: Felix Middle pangalan: Edmundovich ===== == Linya Blg. 2 ======= Apelyido: Kotovsky Unang pangalan: Grigory Patronymic: Ivanovich

Oo, muntik ko nang makalimutan. Kapag gumagamit ng dalawang operator [...][...] sa isang hilera, maaari naming ipasa ang pangalan ng column na ito sa halip na ang column index: ValueTable[RowIndex][ColumnName]

Para sa RowCount = 0 By MyTR.Quantity() - 1 Loop // loop through rows Report(" ======= Row # " + RowCount + " ======="); Mag-ulat(" "); // line feed (paglalagay ng walang laman na linya) Para sa ColumnCount = 0 By MyTR.Columns.Quantity() - 1 Loop // nested loop through columns ColumnName = MyTR.Columns[ColumnCount].Name; // kunin ang column nameCellValue = MyTR[RowCount][ColumnName]; //

Bigyang-pansin ang linyang may markang arrow ". Sa linyang ito, sa halip na ang index ng kasalukuyang column, ipinapasa namin ang pangalan ng kasalukuyang column sa argument sa square bracket[...] Magiging pareho ang resulta.

At ngayon, ang huli sa artikulong ito.

TAMANG pagtanggap ng lahat ng data ng talahanayan ng halaga ng 1C, gamit ang mga loop upang umulit sa koleksyon ng mga row at koleksyon ng mga column

Para sa Bawat CurrentRow Mula sa MyTR Loop // umikot sa koleksyon ng mga string Report(" ======= Line # " + MyTR.Index(CurrentRow) + " ======="); Mag-ulat(" "); Para sa Bawat CurrentColumn Mula sa MyTR.Columns Loop // nested loop sa pamamagitan ng koleksyon ng mga column ColumnName = CurrentColumn.Name; // kunin ang column nameCellValue = CurrentRow[ColumnName]; // get cell value BY column NAME Report(ColumnName + ": " + CellValue); // ipakita ang pangalan ng hanay at halaga ng cell EndCycle; Mag-ulat(" "); EndCycle;

Sa halimbawa, dalawang loop ang ginamit. Ang loop ng koleksyon ng column ay naka-nest sa loob ng row loop. Kung nakipag-usap ka sa mga halimbawa sa itaas at nabasa ang mga nakaraang artikulo, hindi ka mahihirapang maunawaan kung paano gumagana ang halimbawang ito.

Sa wakas, pananatilihin ko ang bilang ng mga linya ng code sa aming huling halimbawa nang maikli hangga't maaari sa pamamagitan ng pag-aalis ng paggamit ng mga intermediate variable. Makakakuha kami ng sample ng "industrial code" na ginagamit sa mga real-world na application.

Ito ay dapat lamang gawin kapag mayroon kang mahusay na pag-unawa sa iyong ginagawa. Kung napakakumplikado ng code, katanggap-tanggap na mag-iwan ng mga intermediate na variable para mas madaling maunawaan ang sarili mong code sa ibang pagkakataon. Gayundin, ang anumang code ay dapat na hindi bababa sa kaunting komento, upang pagkatapos ng ilang oras ay mas madaling maunawaan ang mga teksto ng programa.

Para sa Bawat CurrentRow Mula sa MyTR Loop // loop through the lines Report(" ======= Line # " + MyTR.Index(CurrentRow) + " =======" + Symbols.PS); Para sa Bawat CurrentColumn Mula sa MyTr.Columns Loop // umulit sa mga column Report(CurrentColumn.Name + ": " + CurrentRow[CurrentColumn.Name]); EndCycle; Mag-ulat(" "); EndCycle;

Ang output sa screen ay hindi nagbago, nananatili itong pareho sa nakaraang halimbawa:

2-LINGGO NA KURSO

"PAG-PROGRAMMING sa 1C PARA SA MGA NAGSIMULA"

Ang kurso ay ipapadala sa iyo sa email. Maging isang programmer sa pamamagitan ng pagkumpleto ng mga hakbang-hakbang na gawain.

Ang kailangan mo lang sumali ay isang computer at internet.

Libreng access sa kurso:

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: 0px; font-family: Arial, "Helvetica Neue", sans-serif; background-repeat: no-repeat; background-position: center; background-size: auto;) .sp-form input ( display: inline-block; opacity: 1; visibility: visible;).sp-form .sp-form-fields-wrapper ( margin: 0 auto; lapad: 260px;).sp-form .sp -form-control ( background: #ffffff; border-color: #cccccc; border-style: solid; border-width: 1px; font-size: 15px; padding-left: 8.75px; padding-right: 8.75px; border -radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; taas: 35px; lapad: 100%;).sp-form .sp-field label ( kulay: #444444; font- laki: 13px; font-style: normal; font-weight: bold;).sp-form .sp-button ( border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; kulay ng background: #f4394c; kulay: #ffffff; lapad: 100%; font-weig ht: 700; font-style: normal font-family: Arial, "Helvetica Neue", sans-serif; box-shadow: wala -moz-box-shadow: wala; -webkit-box-shadow: wala; background: linear-gradient(sa itaas, #e30d22 , #f77380);).sp-form .sp-button-container ( text-align: center; width: auto;)