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

ცხრილის ნაწილები არსებობს მრავალი ობიექტისთვის 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;
პროცედურის დასასრული

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

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

ამიტომ, 1C-ში მაგიდებთან მუშაობა თვალსაჩინო ადგილს იკავებს.

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

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

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

//ვარიანტი 1 – თანმიმდევრული წვდომა შეკითხვის შედეგებზე

//მიიღე მაგიდა
Select = Query.Run().Select();
// შეკითხვის შედეგის ყველა სტრიქონს თანმიმდევრობით გავდივართ
ხოლო Select.Next() ციკლი
ანგარიში (არჩევა.სახელი);
საბოლოო ციკლი;

//ვარიანტი 2 – ატვირთვა მნიშვნელობათა ცხრილში
Request = New Request("SELECT Name FROM Directory.Nomenclature");
//მიიღე მაგიდა
ცხრილი = Query.Run().Unload().
//შემდეგ ჩვენ ასევე შეგვიძლია გავიმეოროთ ყველა ხაზი
ცხრილის ციკლიდან თითოეული რიგისთვის
ანგარიში (სტრიქონი.სახელი);
საბოლოო ციკლი;
//ან თვითნებური წვდომა სტრიქონებზე
Row = Table.Find("შოველ", "სახელი");

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

ცხრილი ფორმაზე (სქელი კლიენტი)

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

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

მაშ ასე, დავდოთ ცხრილი ფორმაზე. ამისათვის შეგიძლიათ გადაიტანეთ ცხრილი Controls პანელიდან. ანალოგიურად, მენიუდან შეგიძლიათ აირჩიოთ Form/Insert Control.

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

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

როდესაც აირჩევთ ცხრილის ნაწილს, 1C თავად დაამატებს სვეტებს ფორმაში არსებულ ცხრილში. მომხმარებლის მიერ ასეთ ცხრილში შეყვანილი რიგები ავტომატურად შეინახება საცნობარო წიგნთან/დოკუმენტთან ერთად.

იმავე მონაცემთა თვისებაში შეგიძლიათ შეიყვანოთ თვითნებური სახელი და აირჩიოთ Value Table ტიპის.

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

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

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

ცხრილის სამართავად, თქვენ უნდა აჩვენოთ ბრძანების პანელი ფორმაზე. აირჩიეთ მენიუს პუნქტი Form/Insert Control/Command Bar.

ბრძანების ზოლის თვისებებში აირჩიეთ ავტომატური შევსების ველი, რათა პანელზე ღილაკები ავტომატურად გამოჩნდეს.

ცხრილი ფორმის შესახებ (თხელი/მართული კლიენტი)

მართულ ფორმაზე, ეს მოქმედებები ცოტა განსხვავებულად გამოიყურება. თუ ფორმაზე ცხრილის ნაწილის განთავსება გჭირდებათ, გააფართოვეთ Object ფილიალი და გადაიტანეთ ერთ-ერთი ცხრილის ნაწილი მარცხნივ. Სულ ეს არის!

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

სვეტების დასამატებლად გამოიყენეთ მარჯვენა ღილაკით მენიუ ამ ფორმის ატრიბუტზე, აირჩიეთ ატრიბუტის სვეტის დამატება.

შემდეგ ასევე გადაიტანეთ ცხრილი მარცხნივ.

იმისათვის, რომ ცხრილს ჰქონდეს ბრძანების ზოლი, ცხრილის თვისებებში აირჩიეთ მნიშვნელობები Usage – Command bar position განყოფილებაში.

ცხრილის ატვირთვა Excel-ში

ფორმაზე განთავსებული ნებისმიერი 1C ცხრილი შეიძლება დაიბეჭდოს ან აიტვირთოს Excel-ში.

ამისათვის დააწკაპუნეთ ცხრილის ცარიელ სივრცეზე მარჯვენა ღილაკით და აირჩიეთ სია.

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

ცხრილის განყოფილების (დოკუმენტის) რიგის ნომერი ენიჭება მაქსიმალურ რაოდენობას შერჩეულიხაზები.

ამავდროულად, 1C პროგრამა თავად „ცვლის“ ხაზების ნომრებს (რომელთა რიცხვი იყო ახლად ჩასმული ხაზის რიცხვზე მეტი ან ტოლი) ისე, რომ არ იყოს რიცხვების დამთხვევა სხვადასხვა ხაზებზე.

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

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

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

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

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

locSelectionStructure1 = ახალი სტრუქტურა;

სამუშაო პროცედურა დამატების დაწყებამდე (ელემენტი, უარყოფა, კოპირება)



locSelectionStructure1.Clear();
თითოეული შერჩევის ელემენტისთვის 1 შერჩევის რიგებიდან 1 ციკლი
locSelectionStructure1.Insert(SelectionElement1.Name, SelectionElement1.Use);
საბოლოო ციკლი;

SelectRow1.Reset();

პროცედურის დასასრული

ოპერაციის პროცედურა როდესაც რედაქტირება იწყება (ელემენტი, ახალი ხაზი, ასლი)

// როდესაც შერჩევა გამოიყენება ცხრილის ნაწილზე, მწკრივის ნომერი ენიჭება ხილულ ზონაში მწკრივების მაქსიმალური რაოდენობის მიხედვით!!!
// ასე რომ, ჯერ ჩვენ აღვადგენთ არჩევანს და შემდეგ აღვადგენთ მას
// localSelectionStructure1 მუშაობს როგორც გადამცემი რგოლი WorkBeforeStartingAdding და WorkWhenEditingStart პროცედურებს შორის

Row Selection1 = FormElements.Work.Row Selection;

შერჩევის თითოეული ელემენტისთვის 1 შერჩევის სტრუქტურიდან 1 ციკლიდან
RowSelection1[SelectionElement1.Key].Usage = SelectionElement1.Value;
საბოლოო ციკლი;
locSelectionStructure1.Clear();

პროცედურის დასასრული

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

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

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);
    პროცედურის დასასრული