Magdagdag ng linya sa tabular na bahagi ng dokumento 1s 8.3. Mga Hotkey: pangkalahatang pagkilos

Para sa nakaraang halimbawa, maaari mong idagdag ang mga sumusunod na linya ng code:

Form Elements.TableField1.AddRow(); pahina = FormElements.TableField1.CurrentRow; p.Una = 3; p.Second = "Flour"; p.Dami = 350;

Paano matukoy ang bilang ng mga hilera sa isang talahanayan ng mga halaga sa 1s 8?

countRows = table.Quantity(); Report("Bilang ng mga hilera sa talahanayan ng mga halaga ng talahanayan = " + bilang ng mga hilera);

Resulta:

Bilang ng mga hilera sa talahanayan ng mga halaga ng talahanayan = 3

Paano tanggalin ang isang hilera sa isang talahanayan ng mga halaga sa 1s 8?

rowTable = talahanayan; table.Delete(rowTable);

Paano i-collapse ang isang talahanayan ng mga halaga sa 1s 8?

Pagbagsak:

table.Collapse("Second", "Quantity");

Nakukuha namin pagkatapos ng convolution:

Paano pag-uri-uriin ang isang talahanayan ng mga halaga sa 1s 8?

Pagbukud-bukurin ayon sa pangalawa at pangatlong hanay:

table.Sort("Pangalawa, Dami");

Paano iposisyon ang isang patlang ng talahanayan sa isang linya sa 1c 8?

Sa pangalawang linya:

Mga Elemento ng Form.TableField1.CurrentRow = talahanayan;

Napi-print na form sa 1s 8

Una, gumawa kami ng layout (pangalan ng lugar: piliin ang mga kinakailangang linya ng layout, sa mga katangian, sa field na Pangalan, ipasok ang pangalan ng lugar), pagkatapos ay ipakita ito sa isang dokumento ng spreadsheet:

Pamamaraan CommandPanel1Print(Button) variable td, rs, rs1, layout, code, pangalan, nomen; code = 0; layout = GetLayout("Mga Produkto"); header = layout.GetArea("Header"); header.Parameters.datta = CurrentDate(); pc = layout.GetArea("pc"); pc1 = layout.GetArea("pc1"); td = Bagong TabularDocument; td.Output(cap); nomen = Directories.Nomenclature; selection = nom.SelectHierarchically(); while fetch.Next() loop code = code + 1; kung sample.ThisGroup = True then pc1.Parameters.code = code; pc1.Parameters.name = selection.Name; td.Output(rs1); iba rs.Parameters.code = code; rs.Parameters.name = selection.Name; td.Withdraw(rs); tapusin kung; endCycle; etc.ViewOnly = True; td.Show("Directory ""Nomenclature"""); Katapusan ng Pamamaraan

Karaniwang kasama sa mga pangunahing kakayahan ng isang programming language ang pagtatrabaho sa mga numero at string. Karaniwan ang mga tampok na ito ay hard-coded sa compiler code (o ang "base" na mga klase ng programming language ay ipinatupad).

Sa 1C, ang kakayahang magtrabaho sa mga string ay naka-program sa mismong platform. Ngayon ay titingnan natin ang mga tampok ng pagtatrabaho sa mga 1C string sa mga programa sa built-in na 1C na wika.

Halaga ng linya 1C

1. Magsimula tayo sa pinakasimple. Ang paglikha ng isang variable at pagtatalaga ng isang pare-parehong halaga ng string dito ay ganito ang hitsura sa 1C:

Variable = "Kumusta, mundo!";

Kung kailangan mong tukuyin ang isang quote na character sa isang pare-parehong 1C string value, pagkatapos ay kailangan mong i-double ito ""

Variable = "Kumusta, mundo"!;

2. Maaaring tukuyin ang line break 1C sa dalawang paraan nang sabay-sabay. Ang una ay ang paggamit ng simbolo |

Variable = "Kumusta,
| mundo! ";

Ang pangalawa ay ang paggamit ng Symbols system enumeration. Binibigyang-daan ka nitong magdagdag ng parehong 1C line break at iba pang hindi naka-print na character, gaya ng TAB.

Variable = "Hello" + Symbols.PS + "peace!";

3. Ang mga pagsasaayos sa 1C ay maaaring mabuo hindi lamang para sa isang wika (Russian, Ingles o iba pa) - ngunit sabay-sabay para sa ilang mga wika. Sa kasong ito, ang kasalukuyang ginagamit na wika ay pinili sa ibaba ng 1C window.

Ang listahan ng mga wika ay matatagpuan sa window ng pagsasaayos sa sangay ng Pangkalahatan/Mga Wika. Ang bawat wika ay may maikling identifier tulad ng ru o eng.

Malinaw na kapag nagprograma ng gayong pagsasaayos, ang mga linya ng 1C ay maaari ding maging multilingual. Upang gawin ito, posible na lumikha ng tulad ng isang 1C na linya sa pamamagitan ng pagtukoy sa pamamagitan ng; mga opsyon ayon sa pagkakakilanlan ng wika:

Variable = "ru=""Hello, world! ""; en=""Hello, world!""";

Kung gagamitin mo ang linyang 1C na nabuo sa ganitong paraan gaya ng dati, kung gayon ito ang nakasulat dito. Upang hatiin ito ng system sa dalawang opsyon at gamitin ang ninanais, kailangan mong gamitin ang НStr() function:

//tama para sa mga bilingual na pagsasaayos
Ulat(NStr(Variable));

Mga prop na may uri ng linya 1C

Ang attribute ay isang field sa 1C directory/document. Ito ay naiiba sa isang variable sa isang programa sa 1C na wika dahil para sa katangian ang uri nito ay tiyak na ipinahiwatig (numero, 1C string, atbp.). Kung kailangan mong i-refresh ang iyong memorya kung ano ang prop, panoorin ang aralin.

Kung tinukoy mo ang uri ng katangian - linya 1C, dapat mo ring tukuyin ang mga parameter.

Ang mga 1C na linya ay dumating sa walang limitasyong haba (ipinahiwatig bilang haba = 0) at limitadong haba, na nagpapahiwatig ng eksaktong bilang ng mga character. Ang 1C na mga hilera ng walang limitasyong haba ay iniimbak sa isang hiwalay na talahanayan ng SQL, kaya ang kanilang paggamit ay hindi gaanong produktibo kaysa sa mga limitado.

Iyon ang dahilan kung bakit ang paggamit ng 1C na mga string ng walang limitasyong haba ay may mga limitasyon - hindi posible na gamitin ang mga ito sa lahat ng dako. Halimbawa, hindi ito pinapayagan bilang numero ng dokumento, reference code, o sukat.

Paggawa gamit ang 1C string

Mayroong ilang mga built-in na function ng 1C platform para sa pagtatrabaho sa mga string.

  • AbbrLP (“Hindi kapani-paniwala, ngunit totoo!”)
    Nag-aalis ng mga karagdagang puwang mula sa 1C na linya. Magagamit din para i-convert ang anumang uri sa isang 1C string (halimbawa, mga numero).
  • Variable = "Vasya" + AbbrLP(" plus") + "Olya"; //magkakaroon ng "Vasya plus Olya"
    Isang halimbawa ng pagbubuod ng ilang 1C string value. Ang resulta ay magiging isang linya 1C.
  • Variable = Lev("Musika", 2); //ay magiging "Mu"
    Variable = Medium("Musika", 2, 2); //magkakaroon ng "banta"
    Variable = Mga Karapatan("Musika", 2); //magkakaroon ng "ka"
    Iba't ibang opsyon para sa pagkuha ng substring mula sa 1C string.
  • Variable = Find("Musika", "zy"); //magkakaroon ng 3
    Maghanap ng substring sa string 1C, simula sa character 1.
  • Variable = StrLength("Musika"); //magkakaroon ng 6
    Ibinabalik ang bilang ng mga character sa 1C na linya.
  • Report("Hello") //sa window ng mensahe sa ibaba ng 1C window
    Alert("Hello") //popup na dialog
    Status("Hello") //sa status display line sa kaliwang ibaba
    .

Ang pagdadala ng mga bagay sa linya 1C

Tulad ng alam mo, ang pinakasikat na format para sa pagpapalitan ng nakabalangkas na impormasyon sa kasalukuyan ay XML. Kahit na ang pinakabagong bersyon ng MS Office Word at Excel ay nagse-save ng mga file sa format na ito (docx at xlsx, ayon sa pagkakabanggit, baguhin ang extension sa zip, buksan sa isang archiver).

Ang 1C platform para sa pagpapalitan ng data ay nagbibigay ng ilang mga opsyon, ang pangunahing isa ay XML din.

1. Ang pinakasimpleng paraan ay ang paggamit ng Abbreviation() o String() function. Maaari mong gamitin ang REPRESENTATION() function sa request body. Ang resulta ng kanilang aksyon ay pareho - bumubuo sila ng isang string na representasyon ng anumang bagay na 1C para sa user.

Para sa isang direktoryo bilang default, ito ang magiging pangalan nito. Para sa isang dokumento – pangalan ng dokumento, numero at petsa.

2. Anumang 1C object (na may mga paghihigpit) ay maaaring ma-convert sa XML at vice versa. Ang proseso ng conversion ay tinatawag na serialization.

StringViewXml = XMLString(Halaga); //kumuha ng XML mula sa 1C na halaga
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); //kunin ang halaga ng 1C mula sa XML string, dapat mong tukuyin ang uri ng 1C na dapat matanggap

3. Mayroong sariling paraan ang 1C platform para i-convert ang anumang 1C object sa isang string. Lumipat ito mula sa bersyon 1C 7.7. Ang format na ito ay hindi nauunawaan ng ibang mga programa, ngunit naiintindihan ito ng ibang 1C, na ginagawang madali itong gamitin para sa pagpapalitan sa pagitan ng mga database ng 1C.

Row = ValueInRowInt(Value1C); //kumuha ng string 1C mula sa halagang 1C
ValueVFile("C:\MyFile.txt", Value1C); //isa pang opsyon, nakakakuha kami ng file na may naka-save na string mula sa 1C value
Value1C = ValueFromStringInt(String); //bumalik mula sa linya 1C
Value1C = ValueFile("C:\MyFile.txt"); //bumalik mula sa file

Pag-edit ng 1C na linya sa form

Bilang karagdagan sa pagtatrabaho sa mga string ng 1C sa isang programa sa wikang 1C, siyempre gusto kong ma-edit ng user ang mga ito. Mayroong ilang mga posibilidad para dito:

1. Ang pinakamadaling paraan ay ang humiling ng pagpasok ng 1C line on demand. Ang pamamaraang ito ay ginagamit kapag nagtuturo ng 1C programming; sa buhay ito ay ginagamit nang mas madalas (ngunit ito ay ginagamit!).

Variable = "";
Row = EnterValue(Variable, "Ipasok ang Buong Pangalan");

2. Upang ipakita ang mga detalye ng isang 1C object (direktoryo/dokumento) o mga detalye ng form (tingnan), isang input field ang kadalasang ginagamit. Ito ang pinakakaraniwang tool sa 1C para magtrabaho ang user sa mga field sa pag-edit.

3. Ang mga kakayahan ng input field ay maaaring palawakin (tingnan ang mga katangian ng input field, i-right-click dito, higit pang mga detalye):

  • Checkbox Multiline mode sa pag-edit
  • Advanced na pag-edit na checkbox (magagamit kung ang nakaraang checkbox ay may check)
  • Checkbox Password mode (tingnan).

4. Kung ang lahat ng mga kakayahan ng input field ay hindi sapat para sa iyo, mayroong isang built-in na editor. Para idagdag ito sa form, kailangan mong magdagdag ng Text Document Field sa Form/Insert Control menu. Sa mga katangian nito maaari mong tukuyin ang operating mode nito - ang Extension property.

Ang field ng text document ay hindi direktang maiugnay sa data. Kinakailangang magsulat ng isang function sa OnOpen() event handler ng form (tingnan):

Form Elements.ElementNameTextDocumentField.SetText(StringValue); //dito ang ValueString ay ang text na natanggap, halimbawa, mula sa attribute

At sa save handler - halimbawa, sa Save button - magdagdag ng save:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueAng linya dito ay ang attribute kung saan namin sine-save ang value

5. Sa 1C na bersyon 8.2.11, sa mga pinamamahalaang anyo, isang bagong opsyon ang lumitaw para sa kumakatawan sa isang 1C na linya - ang Formatted Document field.


Katulad ng field ng isang text document, dapat mong itakda ito kapag binubuksan ito at isulat ito kapag ikaw mismo ang nagse-save nito gamit ang program.

  • Sa object na 1C na ang anyo ay ginagawa namin (direktoryo, dokumento, pagproseso, atbp.) - magdagdag ng isang katangian na may uri ng Value Storage
  • Sa OnReadOnServer() function na itinakda namin ang text mula sa attribute

    //dito ang Attribute ay ang idinagdag na katangian ng 1C object
    //dito ang FormattedDocument ay ang pangalan ng field sa form para sa pag-edit
    &Sa server

    FormattedDocument = CurrentObject.Attributes.Get();
    Katapusan ng Pamamaraan

  • Sa BeforeWritingOnServer() function o gamit ang button, isusulat namin ang text mula sa field

    &Sa server
    Pamamaraan Kapag ReadingOnServer(CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Katapusan ng Pamamaraan

Ang mga bahagi ng tabular ay umiiral para sa maraming mga bagay sa 1C:

  • Mga direktoryo
  • Dokumentasyon
  • Mga ulat at pagproseso
  • Mga tsart ng mga account
  • Mga plano sa uri ng katangian
  • Mga plano sa uri ng pagkalkula
  • Mga proseso at gawain sa negosyo

Ang mga bahagi ng tabular ay nagbibigay-daan sa iyo na mag-imbak ng walang limitasyong dami ng nakabalangkas na impormasyon na kabilang sa isang bagay.

Tingnan natin ang ilang mga diskarte para sa pagtatrabaho sa mga bahagi ng tabular.

Paano i-bypass ang tabular na bahagi

Upang madaanan ang bahagi ng talahanayan, maaari kang gumamit ng isang loop Para sa bawat isa

Para sa bawat Hilera mula sa Tabular na Bahagi ng Cycle

Report(String. TabularPart attribute) ;

EndCycle ;

Sa bawat pag-ulit sa variable Linya ang susunod na hilera ng tabular na seksyon ay ipinadala. Ang mga halaga ng mga detalye ng hilera ay maaaring makuha ng expression Line.AttributeName.

Paano makuha at i-bypass ang mga napiling row ng tabular na bahagi

Upang magpakita ng impormasyon mula sa tabular na bahagi ng bagay, gumamit ng elemento ng form Field ng talahanayan. Upang paganahin ang kakayahang pumili ng maramihang mga hilera sa isang field ng talahanayan, kailangan mong itakda ang halaga Maramihan sa kanyang ari-arian Mode ng pagpili.

Upang makakuha ng listahan ng mga napiling linya, gamitin ang sumusunod na code:

Ang isang loop ay ginagamit upang umulit sa mga napiling linya. Para sa bawat isa:

SelectedRows = FormElements. TableFieldName. SelectedRows;

Para sa bawat Row mula sa Selected Rows Loop

//mga nilalaman ng loop

EndCycle ;

Paano pumili ng programmatically ng mga row ng isang tabular na bahagi (table field) at alisin sa pagkakapili ang mga ito

Upang alisin sa pagkakapili ng programmatically ang mga row ng field ng talahanayan:

Mga Elemento ng Form. TableFieldName. SelectedRows. Clear();

Upang piliin ng programmatically ang lahat ng mga row ng isang field ng talahanayan:

Para sa bawat CurrentRow Mula sa TabularPart Loop
Mga Elemento ng Form. TableFieldName. Napiling Linya. Add(CurrentRow) ;
EndCycle ;

Paano i-clear ang bahagi ng talahanayan

TabularPart. Clear();

Paano makuha ang kasalukuyang hilera ng isang seksyon ng talahanayan

Ang kasalukuyang linya ay ang timeline kung saan ang user ay kasalukuyang may cursor. Upang makuha ito, kailangan mong i-access ang control element sa form na nauugnay sa tabular na bahagi.

Para sa mga regular na form ang code ay magiging ganito:

Mga Elemento ng Form. TableFieldName. CurrentData;

Para sa mga pinamamahalaang form:

Mga elemento. TableFieldName. CurrentData;

Paano magdagdag ng bagong row sa isang seksyon ng talahanayan

Pagdaragdag ng bagong linya sa dulo ng seksyon ng talahanayan:

NewRow = TablePart. Magdagdag ();

Pagdaragdag ng bagong linya saanman sa seksyon ng talahanayan (maililipat ang mga kasunod na linya):

NewRow = TablePart. Ipasok(Index)
//Index - numero ng idinagdag na linya. Nagsisimula sa zero ang line numbering.

Bagong linya. Props1 = "Halaga" ;

Paano punan ng programmatically ang mga detalye ng isang hilera ng talahanayan

Kung kailangan mong punan ng programmatically ang mga detalye ng row ng seksyon ng talahanayan na idinagdag ng user, dapat mong gamitin ang tagapangasiwa ng kaganapan ng seksyon ng talahanayan Kapag Nagsisimula sa Pag-edit.

Ang pamamaraan na nilikha ng handler ay may tatlong mga parameter:

  • Elemento- naglalaman ng elemento ng kontrol TabularField.
  • Bagong linya- boolean. Naglalaman ng halaga totoo, kung may idinagdag na bagong hilera ng talahanayan, at kasinungalingan, kung ang user ay nagsimulang mag-edit ng isang umiiral nang linya.
  • Kopya- boolean. Naglalaman ng halaga totoo, kung kinokopya ng user ang linya, at kasinungalingan sa ibang mga kaso.

Tingnan natin ang isang halimbawa. Sabihin nating kailangan nating punan ang mga detalye ng seksyong tabular AccountAccount, kung sakaling may maidagdag na bagong linya. Kapag nag-e-edit ng kasalukuyang linya, hindi mo kailangang baguhin ang accounting account.

Pamamaraan TabularPartAtStartEditing(Element, NewRow, Copy)

//Kung mag-e-edit ang user ng kasalukuyang linya, wala kaming gagawin
Kung HINDI NewRow Pagkatapos
Bumalik;
Tapusin kung ;

//Kung bago ang linya, itakda ang accounting account
TechString = Item. CurrentData; //Kunin ang kasalukuyang hilera ng tabular na bahagi
TechString. Accounting = Mga Tsart ng Mga Account. Pagsuporta sa sarili. KinakailangangAccount;
Katapusan ng Pamamaraan