დაამატეთ ხაზი დოკუმენტის ცხრილის ნაწილს 1s 8.3. ცხელი კლავიშები: ზოგადი მოქმედებები

წინა მაგალითისთვის შეგიძლიათ დაამატოთ კოდის შემდეგი სტრიქონები:

Form Elements.TableField1.AddRow(); გვერდი = FormElements.TableField1.CurrentRow; გვ.პირველი = 3; გვ.მეორე = "ფქვილი"; გვ.რაოდენობა = 350;

როგორ განვსაზღვროთ რიგების რაოდენობა მნიშვნელობების ცხრილში 1s 8-ში?

countRows = table.Quantity(); ანგარიში ("სტრიქონების რაოდენობა ცხრილის მნიშვნელობების ცხრილში = " + რიგების რაოდენობა);

შედეგი:

ცხრილის მნიშვნელობების ცხრილში რიგების რაოდენობა = 3

როგორ წავშალოთ მწკრივი მნიშვნელობების ცხრილში 1s 8-ში?

rowTable = ცხრილი; ცხრილი.Delete(rowTable);

როგორ დავშალოთ მნიშვნელობების ცხრილი 1s 8-ში?

ჩაკეცვა:

table.Collapse("მეორე", "რაოდენობა");

კონვოლუციის შემდეგ ვიღებთ:

როგორ დაალაგოთ მნიშვნელობების ცხრილი 1s 8-ში?

დაალაგეთ მეორე და მესამე სვეტების მიხედვით:

table.Sort("მეორე, რაოდენობა");

როგორ განვათავსოთ ცხრილის ველი ხაზზე 1c 8-ში?

მეორე ხაზზე:

Form Elements.TableField1.CurrentRow = ცხრილი;

დასაბეჭდი ფორმა 1s 8-ში

ჯერ ვაკეთებთ განლაგებას (ტერიტორიის დასახელება: აირჩიეთ განლაგების საჭირო ხაზები, თვისებებში, სახელის ველში, შეიყვანეთ ტერიტორიის სახელი), შემდეგ ვაჩვენებთ მას ცხრილის დოკუმენტში:

პროცედურა CommandPanel1Print(Button) ცვლადი td, rs, rs1, განლაგება, კოდი, სახელი, სახელი; კოდი = 0; განლაგება = GetLayout ("პროდუქტები"); header = layout.GetArea("Header"); header.Parameters.datta = CurrentDate(); pc = layout.GetArea("Pc"); pc1 = layout.GetArea("pc1"); td = ახალი TabularDocument; td.გამომავალი(cap); nomen = Directories.Nomenclature; შერჩევა = nom.SelectHierarchically(); while fetch.Next() ციკლის კოდი = კოდი + 1; თუ ნიმუში.ThisGroup = True მაშინ pc1.Parameters.code = კოდი; pc1.Parameters.name = selection.Name; td.გამომავალი(rs1); else rs.Parameters.code = კოდი; rs.Parameters.name = selection.Name; თდ.გადაღება(რს); დაასრულე თუ; დასასრული ციკლი; etc.ViewOnly = True; td.Show("ცნობარი ""ნომენკლატურა"""); პროცედურის დასასრული

პროგრამირების ენის ძირითადი შესაძლებლობები ჩვეულებრივ მოიცავს რიცხვებთან და სტრიქონებთან მუშაობას. როგორც წესი, ეს ფუნქციები მყარი კოდირებულია კომპილერის კოდში (ან დანერგილია პროგრამირების ენის „საბაზისო“ კლასები).

1C-ში, სტრინგებთან მუშაობის შესაძლებლობა დაპროგრამებულია თავად პლატფორმაში. დღეს ჩვენ განვიხილავთ 1C სტრიქონებთან მუშაობის მახასიათებლებს პროგრამებში ჩაშენებულ 1C ენაზე.

ხაზის მნიშვნელობა 1C

1. დავიწყოთ უმარტივესით. ცვლადის შექმნა და მისთვის მუდმივი სტრიქონის მნიშვნელობის მინიჭება ასე გამოიყურება 1C-ში:

ცვლადი = "გამარჯობა, სამყარო!";

თუ თქვენ გჭირდებათ ციტატის სიმბოლოს მითითება მუდმივი 1C სტრიქონის მნიშვნელობაში, მაშინ უნდა გააორმაგოთ იგი ""

ცვლადი = "გამარჯობა, სამყარო"!;

2. ხაზის გაწყვეტა 1C შეიძლება დაზუსტდეს ერთდროულად ორი გზით. პირველი იყენებს სიმბოლოს |

ცვლადი = "გამარჯობა,
| სამყარო! ";

მეორე იყენებს სიმბოლოების სისტემის ჩამოთვლას. ის საშუალებას გაძლევთ დაამატოთ როგორც 1C ხაზის წყვეტები, ასევე სხვა არასაბეჭდი სიმბოლოები, როგორიცაა TAB.

ცვლადი = "გამარჯობა" + სიმბოლოები. PS + "მშვიდობა!";

3. 1C-ში კონფიგურაციები შეიძლება განვითარდეს არა მხოლოდ ერთი ენისთვის (რუსული, ინგლისური ან სხვა) - არამედ ერთდროულად რამდენიმე ენისთვის. ამ შემთხვევაში, ამჟამად გამოყენებული ენა არჩეულია 1C ფანჯრის ბოლოში.

ენების სია განთავსებულია კონფიგურაციის ფანჯარაში General/Languages ​​ფილიალში. თითოეულ ენას აქვს მოკლე იდენტიფიკატორი, როგორიცაა ruან ინჟ.

ნათელია, რომ ასეთი კონფიგურაციის დაპროგრამებისას, 1C ხაზები ასევე შეიძლება იყოს მრავალენოვანი. ამისათვის შესაძლებელია ასეთი 1C ხაზის შექმნა მეშვეობით მითითებით; პარამეტრები ენის იდენტიფიკატორის მიხედვით:

Variable = "ru=""გამარჯობა, სამყარო! ""; en=""გამარჯობა, მსოფლიო! """;

თუ იყენებთ ჩვეულებისამებრ ამ გზით ჩამოყალიბებულ 1C ხაზს, მაშინ ის იქნება რაც მასში წერია. იმისათვის, რომ სისტემამ გაიყოს ის ორ ვარიანტად და გამოიყენოს სასურველი, თქვენ უნდა გამოიყენოთ НStr() ფუნქცია:

//სწორია ორენოვანი კონფიგურაციებისთვის
ანგარიში(NStr(ცვლადი));

საყრდენები ხაზის ტიპის 1C

ატრიბუტი არის ველი 1C დირექტორიაში/დოკუმენტში. ის განსხვავდება პროგრამის ცვლადისაგან 1C ენაზე იმით, რომ ატრიბუტისთვის მისი ტიპი ზუსტად არის მითითებული (რიცხვი, 1C სტრიქონი და ა.შ.). თუ გჭირდებათ მეხსიერების განახლება იმის შესახებ, თუ რა არის საყრდენი, უყურეთ გაკვეთილს.

თუ მიუთითებთ ატრიბუტის ტიპს - ხაზი 1C, მაშინ დამატებით უნდა მიუთითოთ პარამეტრები.

1C ხაზები მოდის შეუზღუდავი სიგრძით (მითითებულია, როგორც სიგრძე = 0) და შეზღუდული სიგრძე, რაც მიუთითებს სიმბოლოების ზუსტ რაოდენობაზე. შეუზღუდავი სიგრძის 1C რიგები ინახება ცალკე SQL ცხრილში, ამიტომ მათი გამოყენება ნაკლებად პროდუქტიულია, ვიდრე შეზღუდული.

სწორედ ამიტომ, შეუზღუდავი სიგრძის 1C სტრიქონების გამოყენებას აქვს თავისი შეზღუდვები - მათი გამოყენება ყველგან შეუძლებელია. მაგალითად, დაუშვებელია დოკუმენტის ნომერი, საცნობარო კოდი ან გაზომვა.

მუშაობა 1C სტრიქონებთან

1C პლატფორმის რამდენიმე ჩაშენებული ფუნქციაა სტრინგებთან მუშაობისთვის.

  • AbbrLP ("წარმოუდგენელი, მაგრამ მართალია!")
    შლის დამატებით სივრცეებს ​​1C ხაზიდან. ასევე შეიძლება გამოყენებულ იქნას ნებისმიერი ტიპის 1C სტრიქონზე გადასაყვანად (მაგალითად, რიცხვებში).
  • ცვლადი = "ვასია" + AbbrLP(" პლუს") + "ოლია"; //იქნება "ვასია პლუს ოლია"
    რამდენიმე 1C სტრიქონის მნიშვნელობის შეჯამების მაგალითი. შედეგი იქნება ერთი ხაზი 1C.
  • ცვლადი = Lev("მუსიკა", 2); //იქნება "მუ"
    ცვლადი = საშუალო ("მუსიკა", 2, 2); //იქნება "საფრთხე"
    ცვლადი = უფლებები ("მუსიკა", 2); //იქნება "კა"
    1C სტრიქონიდან ქვესტრიქონის მიღების სხვადასხვა ვარიანტები.
  • ცვლადი = Find("მუსიკა", "zy"); //იქნება 3
    მოძებნეთ ქვესტრიქონი 1C სტრიქონში, დაწყებული სიმბოლო 1-ით.
  • ცვლადი = StrLength ("მუსიკა"); //იქნება 6
    აბრუნებს სიმბოლოების რაოდენობას 1C ხაზში.
  • მოხსენება ("გამარჯობა") //შეტყობინებების ფანჯარაში 1C ფანჯრის ბოლოში
    გაფრთხილება ("გამარჯობა") // ამომხტარი დიალოგი
    სტატუსი ("გამარჯობა") // სტატუსის ჩვენების ხაზში ქვედა მარცხენა მხარეს
    .

ობიექტების მიყვანა 1C ხაზამდე

მოგეხსენებათ, სტრუქტურირებული ინფორმაციის გაცვლის ყველაზე პოპულარული ფორმატი ამჟამად არის XML. MS Office Word-ის და Excel-ის უახლესი ვერსიებიც კი ინახავს ფაილებს ამ ფორმატში (docx და xlsx, შესაბამისად, შეცვალეთ გაფართოება zip-ზე, გახსენით არქივში).

მონაცემთა გაცვლის 1C პლატფორმა გთავაზობთ რამდენიმე ვარიანტს, რომელთაგან მთავარი ასევე არის XML.

1. უმარტივესი მეთოდია Abbreviation() ან String() ფუნქციის გამოყენება. თქვენ შეგიძლიათ გამოიყენოთ REPRESENTATION() ფუნქცია მოთხოვნის ორგანოში. მათი მოქმედების შედეგი იგივეა - ისინი ქმნიან მომხმარებლისთვის ნებისმიერი 1C ობიექტის სიმებიანი წარმოდგენას.

სტანდარტულად, დირექტორიასთვის, ეს იქნება მისი სახელი. დოკუმენტისთვის - დოკუმენტის სახელი, ნომერი და თარიღი.

2. ნებისმიერი 1C ობიექტი (შეზღუდვებით) შეიძლება გადაიზარდოს XML-ში და პირიქით. კონვერტაციის პროცესს სერიალიზაცია ეწოდება.

StringViewXml = XMLString(Value); //მიიღეთ XML 1C მნიშვნელობიდან
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); //მიიღეთ 1C მნიშვნელობა XML სტრიქონიდან, თქვენ უნდა მიუთითოთ 1C ტიპი, რომელიც უნდა მიიღოთ

3. არსებობს 1C პლატფორმის საკუთარი გზა ნებისმიერი 1C ობიექტის სტრინგად გადაქცევისთვის. ის გადავიდა 1C 7.7 ვერსიიდან. ეს ფორმატი არ ესმის სხვა პროგრამებს, მაგრამ სხვა 1C-ს ესმის, რაც აადვილებს მის გამოყენებას 1C მონაცემთა ბაზებს შორის გაცვლისთვის.

მწკრივი = ValueInRowInt(Value1C); //მიიღეთ სტრიქონი 1C 1C მნიშვნელობიდან
ValueVFile ("C:\MyFile.txt", Value1C); //სხვა ვარიანტი, ჩვენ ვიღებთ ფაილს შენახული სტრიქონით 1C მნიშვნელობიდან
Value1C = ValueFromStringInt(String); //უკან 1C ხაზიდან
Value1C = ValueFile ("C:\MyFile.txt"); //უკან ფაილიდან

1C ხაზების რედაქტირება ფორმაზე

1C სტრიქონებთან მუშაობის გარდა პროგრამაში 1C ენაზე, რა თქმა უნდა, მსურს მომხმარებელმა შეძლოს მათი რედაქტირება. ამისათვის რამდენიმე შესაძლებლობა არსებობს:

1. უმარტივესი გზაა მოთხოვნაზე 1C ხაზის შესვლის მოთხოვნა. ეს მეთოდი გამოიყენება 1C პროგრამირების სწავლებისას; ცხოვრებაში ის ბევრად უფრო იშვიათად გამოიყენება (მაგრამ გამოიყენება!).

ცვლადი = "";
Row = EnterValue (ცვლადი, "Enter Full Name");

2. 1C ობიექტის (დირექტორია/დოკუმენტი) ან ფორმის დეტალების საჩვენებლად (იხ.) ყველაზე ხშირად გამოიყენება შეყვანის ველი. ეს არის ყველაზე გავრცელებული ინსტრუმენტი 1C-ში მომხმარებლისთვის რედაქტირების ველებთან მუშაობისთვის.

3. შეყვანის ველის შესაძლებლობები შეიძლება გაფართოვდეს (იხილეთ შეყვანის ველის თვისებები, დააწკაპუნეთ მასზე მარჯვენა ღილაკით, მეტი დეტალი):

  • მონიშვნის ველი მრავალხაზოვანი რედაქტირების რეჟიმი
  • გაფართოებული რედაქტირების ჩამრთველი (ხელმისაწვდომია, თუ წინა მოსანიშნი ველი მონიშნულია)
  • მონიშვნის ველი პაროლის რეჟიმი (იხ.).

4. თუ შეყვანის ველის ყველა შესაძლებლობა არ არის საკმარისი თქვენთვის, არის ჩაშენებული რედაქტორი. ფორმაში დასამატებლად, თქვენ უნდა დაამატოთ ტექსტური დოკუმენტის ველი Form/Insert Control მენიუში. მის თვისებებში შეგიძლიათ მიუთითოთ მისი მუშაობის რეჟიმი - გაფართოების თვისება.

ტექსტური დოკუმენტის ველი არ შეიძლება პირდაპირ იყოს დაკავშირებული მონაცემებთან. აუცილებელია ფუნქციის ჩაწერა ფორმის OnOpen() მოვლენის დამმუშავებელში (იხ.):

Form Elements.ElementNameTextDocumentField.SetText(StringValue); //აქ ValueString არის ტექსტი მიღებული, მაგალითად, ატრიბუტიდან

და შენახვის დამმუშავებელში - მაგალითად, Save ღილაკში - დაამატეთ შენახვა:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //Value ხაზი აქ არის ატრიბუტი, სადაც ჩვენ ვინახავთ მნიშვნელობას

5. 1C ვერსიაში 8.2.11, მართულ ფორმებში, გამოჩნდა ახალი ვარიანტი 1C ხაზის წარმოსადგენად - ფორმატირებული დოკუმენტის ველი.


ტექსტური დოკუმენტის ველის მსგავსად, თქვენ უნდა დააყენოთ ის გახსნისას და ჩაწეროთ პროგრამის გამოყენებით მისი შენახვისას.

  • 1C ობიექტში, რომლის ფორმასაც ჩვენ ვქმნით (ცნობარი, დოკუმენტი, დამუშავება და ა.შ.) - დაამატეთ ატრიბუტი Value Storage ტიპის.
  • OnReadOnServer() ფუნქციაში ჩვენ ვაყენებთ ტექსტს ატრიბუტიდან

    //აქ ატრიბუტი არის 1C ობიექტის დამატებული ატრიბუტი
    //აქ FormattedDocument არის რედაქტირების ფორმაში არსებული ველის სახელი
    &სერვერზე

    FormattedDocument = CurrentObject.Attributes.Get();
    პროცედურის დასასრული

  • BeforeWritingOnServer() ფუნქციაში ან ღილაკის გამოყენებით ჩვენ დავწერთ ტექსტს ველიდან

    &სერვერზე
    პროცედურა სერვერზე წაკითხვისას (CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    პროცედურის დასასრული

ცხრილის ნაწილები არსებობს მრავალი ობიექტისთვის 1C-ში:

  • დირექტორიები
  • დოკუმენტაცია
  • ანგარიშები და დამუშავება
  • ანგარიშთა სქემები
  • დამახასიათებელი ტიპის გეგმები
  • გაანგარიშების ტიპის გეგმები
  • ბიზნეს პროცესები და ამოცანები

ცხრილის ნაწილები საშუალებას გაძლევთ შეინახოთ შეუზღუდავი რაოდენობის სტრუქტურირებული ინფორმაცია, რომელიც ეკუთვნის ერთ ობიექტს.

მოდით შევხედოთ ცხრილის ნაწილებთან მუშაობის რამდენიმე ტექნიკას.

როგორ ავუაროთ ცხრილის ნაწილს

მაგიდის ნაწილის გადასასვლელად, შეგიძლიათ გამოიყენოთ მარყუჟი თითოეულისთვის

ციკლის ტაბულური ნაწილის თითოეული რიგისთვის

ანგარიში (სტრიქონი. TabularPart ატრიბუტი) ;

ბოლო ციკლი ;

ყოველი გამეორებისას ცვლადში ხაზიტაბულური განყოფილების შემდეგი რიგი გადაეცემა. მწკრივის დეტალების მნიშვნელობების მიღება შესაძლებელია გამოსახულებით Line.AttributeName.

როგორ მივიღოთ და გადავლახოთ ტაბულური ნაწილის არჩეული რიგები

ობიექტის ცხრილის ნაწილიდან ინფორმაციის საჩვენებლად გამოიყენეთ ფორმის ელემენტი მაგიდის ველი. ცხრილის ველში მრავალი მწკრივის არჩევის შესაძლებლობის გასააქტიურებლად, თქვენ უნდა დააყენოთ მნიშვნელობა მრავალჯერადიმის საკუთრებაში შერჩევის რეჟიმი.

არჩეული ხაზების სიის მისაღებად გამოიყენეთ შემდეგი კოდი:

მარყუჟი გამოიყენება არჩეული ხაზების გამეორებისთვის. თითოეულისთვის:

SelectedRows = FormElements. TableFieldName. შერჩეული რიგები;

შერჩეული რიგების მარყუჟის თითოეული მწკრივისთვის

//მარყუჟის შინაარსი

ბოლო ციკლი ;

როგორ პროგრამულად შევარჩიოთ ტაბულური ნაწილის რიგები (ცხრილის ველი) და გავაუქმოთ ისინი

ცხრილის ველის რიგების პროგრამულად გაუქმება:

ფორმის ელემენტები. TableFieldName. შერჩეული რიგები. Clear() ;

ცხრილის ველის ყველა მწკრივის პროგრამულად შესარჩევად:

თითოეული CurrentRow-ისთვის TabularPart Loop-დან
ფორმის ელემენტები. TableFieldName. შერჩეული ხაზები. დამატება(CurrentRow);
ბოლო ციკლი ;

როგორ გავასუფთავოთ ცხრილის ნაწილი

TabularPart. Clear() ;

როგორ მივიღოთ ცხრილის განყოფილების მიმდინარე მწკრივი

მიმდინარე ხაზი არის ვადები, რომელშიც მომხმარებელს ამჟამად აქვს კურსორი. მის მისაღებად, თქვენ უნდა შეხვიდეთ საკონტროლო ელემენტზე ფორმაში, რომელიც ასოცირდება ცხრილის ნაწილთან.

ჩვეულებრივი ფორმებისთვის კოდი ასე გამოიყურება:

ფორმის ელემენტები. TableFieldName. CurrentData;

მართული ფორმებისთვის:

ელემენტები. TableFieldName. CurrentData;

როგორ დავამატოთ ახალი მწკრივი ცხრილის განყოფილებაში

ცხრილის ნაწილის ბოლოს ახალი ხაზის დამატება:

NewRow = TablePart. დამატება() ;

ახალი ხაზის დამატება ცხრილის განყოფილებაში ნებისმიერ ადგილას (შემდეგი ხაზები გადაინაცვლებს):

NewRow = TablePart. ჩასმა (ინდექსი)
//ინდექსი - დამატებული ხაზის ნომერი. ხაზების ნუმერაცია იწყება ნულიდან.

Ახალი ხაზი. Props1 = "მნიშვნელობა" ;

როგორ პროგრამულად შეავსოთ ცხრილის მწკრივის დეტალები

თუ თქვენ გჭირდებათ პროგრამულად შეავსოთ ცხრილის განყოფილების მწკრივის დეტალები, რომელიც დამატებულია მომხმარებლის მიერ, უნდა გამოიყენოთ ცხრილის სექციის მოვლენების დამმუშავებელი რედაქტირების დაწყებისას.

დამმუშავებლის მიერ შექმნილ პროცედურას აქვს სამი პარამეტრი:

  • ელემენტი- შეიცავს საკონტროლო ელემენტს TabularField.
  • Ახალი ხაზი- ლოგიკური. შეიცავს ღირებულებას მართალიათუ ცხრილის ახალი მწკრივი დაემატება და ტყუილი,თუ მომხმარებელმა დაიწყო უკვე არსებული ხაზის რედაქტირება.
  • კოპირება- ლოგიკური. შეიცავს ღირებულებას მართალია, თუ მომხმარებელი დააკოპირებს ხაზს და ტყუილისხვა შემთხვევებში.

მოდით შევხედოთ მაგალითს. ვთქვათ, უნდა შეავსოთ ცხრილის განყოფილების დეტალები ანგარიშის ანგარიშიახალი ხაზის დამატების შემთხვევაში. არსებული ხაზის რედაქტირებისას, თქვენ არ გჭირდებათ ბუღალტრული ანგარიშის შეცვლა.

პროცედურა TabularPartAtStartEditing (ელემენტი, ახალი მწკრივი, ასლი)

//თუ მომხმარებელი არედაქტირებს არსებულ ხაზს, მაშინ ჩვენ არაფერს ვაკეთებთ
თუ არა NewRow მაშინ
Დაბრუნების;
Დაასრულე თუ ;

//თუ ხაზი ახალია, დააყენეთ საბუღალტრო ანგარიში
TechString = ელემენტი. CurrentData; //მიიღეთ ტაბულური ნაწილის მიმდინარე მწკრივი
TechString. ბუღალტერია = ანგარიშთა სქემა. თვითმხარდამჭერი. RequiredAccount;
პროცედურის დასასრული