რა არის 1C პროცედურის ფორმალური პარამეტრები. პროცედურების და ფუნქციების აღწერა

ფუნქციები 1C და პროცედურები 1C მუშაობის მსგავსად სხვა ენებზე - ფუნქცია არის დასახელებული subroutine სხვა პროგრამული კოდექსის ადგილებში.

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

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

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

ფუნქციის ფუნქცია 1 (პარამეტრი)
დაბრუნება პარამეტრი * 2;
საბოლოო ჯამში

Variled1 \u003d ფუნქცია 1 (10);
// varial1 იქნება 20-ის ტოლი

1C ფუნქციისა და პროცედურების პარამეტრების პარამეტრები ბმულები არიან ცვლადებზე, რომლებიც არსებობს ზარის საიტზე. "მინიშნება" ნიშნავს პარამეტრების "შიგნით" ფუნქციის პარამეტრების ღირებულების შეცვლისას, ეს შეიცვლება და "გარეთ". ასე რომ, ეს არ მოხდება - პარამეტრი გადაეცემა AC- ს ღირებულებას. თუმცა, ეს არ მუშაობს ობიექტის ღირებულებებთან (სიები, მაგიდები, მონაცემთა ბაზის ობიექტები), ისინი კვლავ გადაეცემათ მითითებით.

პროცედურის / ფუნქციის პარამეტრის გადაცემისას იგი გადაცემულია "მითითებით". ეს იმას ნიშნავს, რომ პროცედურის ფარგლებში შეცვლის, თქვენ შეცვლით მისი ღირებულება 1C ფუნქციის დასრულების შემდეგ. ამდენად, წინა მაგალითი შეიძლება იყოს დაწერილი:

საპროცესო პროცედურა 1 (პარამეტრი)
პარამეტრი \u003d პარამეტრი * 2;
ექსტრადირება

Variled1 \u003d 10;
პროცედურა 1 (ცვლადი 1);
ანგარიში (ცვლადი 1);
/ / შედეგი იქნება 20

პროცედურის გადალახვა, ცვლადის ღირებულება და არა საკუთარი:

საპროცესო პროცედურა 1 (ღირებულების პარამეტრი)
// ქმედებები ..
ექსტრადირება

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

ფუნქციის ფუნქცია 1 (Parameter1, Parameter2, Parameter3 \u003d "სიმებიანი ღირებულება")
// გააკეთე რამე
საბოლოო ჯამში

/ / მოუწოდებს ფუნქციას გარეშე პარამეტრების
// პარამეტრი 2 იქნება გაურკვეველი
// Parameter3 იქნება ტოლი "სიმებიანი ღირებულება"
ფუნქცია 1 (10);

/ / მოუწოდებდა ფუნქციას მეორე პარამეტრის გარეშე
ფუნქცია 1 (10, "ღირებულება");

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

ჩამონტაჟებული 1C: საწარმოები მხარს უჭერენ ორ გზას პროცედურებისა და ფუნქციების პარამეტრების გადასაცემად: პარამეტრების გადაცემის და პარამეტრების გადაცემის მიხედვით.

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


საპროცესო პროცედურა 1 (ფორმალური პარამეტრი 1)

ფორმალური 1 \u003d 2 * 3;

ექსტრადირება

ნამდვილი პარამეტრი \u003d 10;
პროცედურა (ფაქტობრივი პარამეტრი);

// 6-ის ღირებულება გამოჩნდება - ფორმალური ცვლილება
/ / პარამეტრი შიგნით პროცედურა დაზარალდა ცვლილება

/ / ზარის პროცედურა: ნაგულისხმევი, პარამეტრების გადაცემები
// ბმული!

გადარიცხვის პარამეტრების ღირებულება

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

მაგალითი:


პროცედურის პროცედურა 2 (ფორმალური პარამეტრი ღირებულება)

ფორმალური 1 \u003d 2 * 3;

ექსტრადირება

ნამდვილი პარამეტრი \u003d 10;
პროცედურა 2 (ფაქტობრივი პარამეტრი);

// ღირებულება 10 იქნება ნაჩვენები - ცვლილება ფორმალურ
/ / პარამეტრი პროცედურის შიგნით არ შეცვლილა ცვლილება
// ფაქტობრივი პარამეტრების ღირებულებები
/ / ზარის პროცედურა: პარამეტრი გადაეცემა ღირებულებას!
ანგარიში (ფაქტობრივი პარამეტრი);

სხვადასხვა ტიპის მონაცემების გადაცემის მახასიათებლები

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

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


პროცედურის დამუშავება (ნიშანი მაგიდა)


Tab ღირებულება \u003d ახალი მაგიდები;

/ / დაამატეთ ორი სპიკერი ღირებულებების მაგიდასთან
Tab compex. Totchocks. Addly ("სვეტი 1");
Tab compells. Addly ("სვეტის 2");


N \u003d 1-დან 3 ციკლისთვის
Novstok \u003d tab ღირებულება. Addly ();
Novstok.colonka1 \u003d "სვეტი";
Novstok.colonka2 \u003d p;
Endcycle;

ექსტრადირება

/ / შექმნა ახალი მაგიდა ღირებულებები
Tk \u003d ახალი მაგიდები;



// დაამატეთ რამდენიმე რიგები ღირებულებების მაგიდასთან
N \u003d 1-დან 10-მდე ციკლისთვის
Novstok \u003d tz. Addly ();

Novstok.colonka3 \u003d p;
Endcycle;

// გაიყვანს 10


მკურნალობა (tk);

// ამოღებულია 10: პროცედურის პროცედურის შიგნით
/ / ფორმალურ პარამეტრებში გადაარჩინა ღირებულებების ახალი მაგიდა

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


/ / მიუთითებს, რომ მაგიდის ღირებულების პარამეტრის გადაცემა ხორციელდება ღირებულებით
საპროცესო კოლაფსი: მაგიდის სიგნალი)

// ჩვენ ვიღებთ ფასეულობებს სვეტის სვეტზე და სვეტზე
TAB რეზიუმე ("სვეტი 1", "სვეტი 3");

ექსტრადირება

/ / შექმნა ახალი მაგიდა ღირებულებები
Tk \u003d ახალი მაგიდები;

/ / დაამატეთ სამი სვეტი ღირებულებების მაგიდასთან
Tk.colonki. Addly ("სვეტი 1");
Tk.colonki. Addly ("სვეტის 2");
Tk.colonki. Addly ("სვეტი 3");

// დაამატეთ რამდენიმე რიგები ღირებულებების მაგიდასთან
N \u003d 1-დან 10-მდე ციკლისთვის
Novstok \u003d tz. Addly ();
Novstok.colonka1 \u003d "Column1";
Novstok.colonka2 \u003d "სვეტი 2";
Novstok.colonka3 \u003d p;
Endcycle;

// გაიყვანს 10
ანგარიში ("TK- ის ელემენტების რაოდენობა:" + tz. N'Tr. ());

/ / დაგვიკავშირდით პროცედურა ფაქტობრივი პარამეტრის TK- ის მიერ ღირებულებით
განლაგება (tk);

/ / ფასეულობების ცხრილი ახლა მინიმუმამდეა: ღირებულება იქნება 1
ანგარიში ("TK- ის ელემენტების რაოდენობა:" + TK. მოქალაქეობა ());

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

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

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

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

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

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

// პროცედურა - პროცესორი ღონისძიება "გამომავალი" ფორმები / / Slit Recircuit პროცედურა () // დამუშავების პროცედურა "გამოთვლა" // და სწორი პროცედურა გამოთვლა () // // // / / დამუშავების პროცედურა "Imposition" ელემენტის ელემენტის ელემენტის რედაქტირება Tile // & clause რედაქტირების პროცედურა Entryolkovdiahepression (ელემენტი)

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

// ფუნქცია დააბრუნებს დოკუმენტის მიხედვით Clausedency- ის ფუნქცია (მონაცემები)

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

5. კომენტარი მოთავსებულია პროცედურის (ფუნქციების) გამოცხადებამდე და აქვს შემდეგი ფორმა.

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

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

5.2.1. პარამეტრის აღწერა იგი იწყება ახალი ხაზით, შემდეგ კი პარამეტრი, მაშინ ჰიპენი და ტიპის სია (*), რასაც მოჰყვება ჰიპენი და პარამეტრის ტექსტური აღწერა.
Მაგალითად:

// Პარამეტრები:

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

// Პარამეტრები: // დეტალები - სიმებიანი - სახელების დეტალები ჩამოთვლილი მეშვეობით მძიმით. / მაგალითად, "კოდი, სახელი, მშობელი". // - სტრუქტურა, ფიქსირებული სტრუქტურები - როგორც გასაღები გადაცემული // Pseudonym სფეროებში დაბრუნებული სტრუქტურის შედეგი, // და როგორც ღირებულება (სურვილისამებრ), ფაქტობრივი ველის სახელი მაგიდაზე. / / თუ მნიშვნელობა არ არის განსაზღვრული, საველე სახელი აღებულია გასაღებიდან. // - მასივი, fixedmassiv - მასივი props of props.

5.3. სექცია "დაბრუნება ღირებულება"აღწერს ფუნქციის ფუნქციის ტიპს და შინაარსს. პროცედურებისათვის, ეს სექცია აკლია. წინ უძღვის სიმებიანი "დაბრუნების ღირებულება:". შემდეგ ახალი ხაზიდან ტიპის ტიპები (*), მაშინ ჰიპენი და ტექსტი.
Მაგალითად:

// დაბრუნების ღირებულება: // Boolevo - სიმართლე, თუ მინიმუმ ერთი გადამცემი როლები ხელმისაწვდომია მიმდინარე მომხმარებლის,

5.4. სექცია "მაგალითი" შეიცავს პროცედურის ან ფუნქციის გამოყენების მაგალითს. მომზადებული სიმებიანი "მაგალითი:". შემდეგი, ახალი ხაზიდან მაგალითი გამოყენებით.

(*) Შენიშვნა: "ხარისხის სიაში" ქვეშ ნიშნავს ძირითადი ტიპის სახელები, რომლებიც გამოყოფილია მძიმით. ტიპის სახელი შეიძლება იყოს მარტივი (ერთი სიტყვით) ან კომპოზიტი - ორი სიტყვით გამოყოფილი წერტილი.
Მაგალითად: ხაზი, სტრუქტურა, Danderther Shipdersettries.

1C პლატფორმაზე განვითარებისას: საწარმო 8.3 კომენტარი ტექსტი ასევე ნაჩვენებია კონტექსტუალური სწრაფი პროცედურების, ფუნქციებისა და მათი პარამეტრების მიხედვით. დეტალები, იხილეთ სექცია "კონტექსტური მინიშნება, როდესაც შესვლისას მოდულის ტექსტები" 26 "განვითარების ინსტრუმენტები" პლატფორმის დოკუმენტაციაში.

მაგალითი ერთი პარამეტრის ფუნქციის აღწერა:

// განსაზღვრავს ხელმისაწვდომობას როლური მხოლოდ როლების მიმდინარე მომხმარებლისთვის, // და ასევე ადმინისტრაციული უფლებების ხელმისაწვდომობა. // // Პარამეტრები: / / Tamers - სიმებიანი - სახელი სახელები, რომელიც ხელმისაწვდომობა, რომელიც შემოწმებულია, გამოყოფილია მძიმით. // // დაბრუნების ღირებულება: // Boolevo - სიმართლე, თუ მინიმუმ ერთი გადამცემი როლები ხელმისაწვდომია მიმდინარე მომხმარებლის, / / მას აქვს ადმინისტრაციული უფლებები. / / / მაგალითი: / / თუ Rolly წვდომა ("დამატებითი მასობრივი გამოთვლა, გაგზავნის") მაშინ ... // ფუნქცია Roll Access (Namear სახელები) ექსპორტი

პროცედურის აღწერა პარამეტრების გარეშე:

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

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

// პროცედურა - თარიღის დამმუშავებელი "გამგზავრება" ფორმები. // აწარმოებს ფორმის პარამეტრებს და ავსებს ფორმის ღირებულებების დეტალებს. // და ასევე ასრულებს შემდეგ ქმედებებს: // ... // & nasserver შენარჩუნება პროცედურა (მარცხი, სტანდარტული მუშაობა)

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

7. პროცედურებისა და ფუნქციების კოდექსი ერთმანეთისგან უნდა გამოეყო მოდულის ტექსტში ცარიელი სტრიქონებით.

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

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

  1. კონფიგურაციის მოდულები (კონფიგურაციის მენიუს ბრძანება -\u003e კონფიგურაციის ფაილების გადატვირთვა ...)
  2. გახსენით დამუშავების რეჟიმი 1C: საწარმო და მიუთითეთ დირექტორია, რომელშიც მოდულები გადმოტვირთეს - შემდეგი, დააჭირეთ "ფორმატში" ღილაკს
  3. ჩამოტვირთეთ მოდულები კონფიგურაციაში (კონფიგურაციის მენიუ ბრძანება -\u003e ჩამოტვირთვა კონფიგურაციის ფაილები ...)

Ჩვენ ვიპოვეთ: პროცედურის გამოცხადებისა და აღწერის მაგალითი პარამეტრების გარეშე, გადალახვის პროცედურა ()Refrigerated for Forks for 1C, როგორ უნდა მიიღოს პროცედურა 1C, რომელიც სახელები ფუნქციები ან პროცედურების უნდა გამოსწორდეს და წაიკითხოს კოდი 1C პროცედურა და ფუნქცია, 1C 77 ფუნქცია აღწერა, კომენტარი საპროცესო კოდი მასალები 1C, 1C დოკუმენტების პროცედურებისა და ფუნქციების რაოდენობა, პროცედურები და ფუნქციები


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

მოკლედ რა არის

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

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

მაგრამ თუ ჩვენ არ გვინდა ჩვენი პარამეტრი გადაცემული იყოს მითითებით, მაშინ ჩვენ შეგვიძლია მიუთითოთ სიტყვით პარამეტრი ადრე Ნიშანი

შემეცნებითი პროცედურა (ღირებულების პარამეტრი) პარამეტრი \u003d 2; Extrociding პარამეტრი \u003d 1; შექმნა (პარამეტრი); ანგარიში (პარამეტრი); // გამოვა 1.

ყველაფერი მუშაობს, როგორც დაპირებული - ცვლილება (და უფრო სწორად ამბობენ "ჩანაცვლება") პარამეტრის ღირებულება არ გამოიწვევს მეთოდის გარეთ ღირებულებას.

კარგად, რა ხუმრობაა?

საინტერესო მომენტები იწყება, როდესაც ჩვენ ვიწყებთ, როგორც პარამეტრების, არ არის პრიმიტიული ტიპები (ხაზები, ნომრები, თარიღები და ა.შ.), მაგრამ ობიექტები. ეს არის ის, სადაც ობიექტის "პატარა" და "ღრმა" ასლი, აგრეთვე პოინტერები (არ არის C ++ - ის თვალსაზრისით, და აბსტრაქტული დესკრიპტორები (სახელურები), პოპ up.

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

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

პროცედურის მკურნალობა (პარამეტრი) პარამეტრი \u003d ახალი მასივი; უჯრედის მაგიდა \u003d ახალი ტაფირება; მკურნალობა (ცხრილი); ანგარიში (TINCH (ცხრილი)); / / ჩატვირთვა მასივი

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

ობიექტის შინაარსი და მისი მდგომარეობა

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

პროცედურის დამუშავება (პარამეტრი) პარამეტრი. ფუნქციონირება (); უჯრედის მაგიდა \u003d ახალი ტაფირება; მაგიდა. Addly (); მკურნალობა (ცხრილი); ანგარიში (ცხრილი, ნომერი ()); / / გაიყვანა 0.

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

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

და ეს ყოველთვის მართალია, გარდა ...

კლიენტის სერვერის ურთიერთქმედება

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

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

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

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

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

და წებოვანი პროცედურის ხელშეწყობა (პარამეტრი) პარამეტრი. რეკომენდაცია (); Extrudresses & Nasserver პროცედურა ნაცნობი (ღირებულების პარამეტრი) პარამეტრი. რეკომენდაცია (); Extrudresses და საჩივრის პროცედურა RecognitionCleant (ღირებულების პარამეტრი) პარამეტრი. რეკომენდაცია (); დასრულების კონტროლი და საჩივრის პროცედურის შემოწმება სიგნალის () სია 1 \u003d ახალი Snaps; სია 1. დამატება ("Hi"); List2 \u003d list1.copy (); List3 \u003d list1.copy (); // ობიექტი მთლიანად გადაწერილია, / სერვერზე გადაცემული, შემდეგ დააბრუნებს. / / დასუფთავების სია ჩანს სწრაფი (list1); // ობიექტი მთლიანად გადაწერილია, / სერვერზე გადის. დაბრუნება არ დაბრუნდება. / / დასუფთავების სია არ ჩანს CREATION POINT (LISS2); / / დააკოპირეთ მხოლოდ ობიექტის მაჩვენებელი // დასუფთავების სია გამოჩნდება შემეცნებითი პუნქტით (list3); ანგარიში (სია 1 N'T'tvice ()); ანგარიში (სია 2. ნომერი ()); ანგარიში (სია 3. N'TRB ()); ექსტრადირება

Შემაჯამებელი

თუ მოკლედ, შესაძლებელია შეჯამება შემდეგნაირად:

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

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