დინამიური სიით ნაჩვენები მონაცემების მიღება

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

დინამიური სიების მახასიათებლები 1C-ში

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

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

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

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

  • დინამიური სიის შერჩევა;
  • ჯგუფები;
  • დახარისხება;
  • დეკორი.

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

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

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



SELECT NomenclatureList.Name AS Name, GoodsIn WarehousesRemainings.Warehouse AS Warehouse, GoodsIn WarehousesRemainings.QuantityRemaining AS QuantityRemaining FROM Directory.Nomenclature AS NomenclatureList.LEFT CONNECTIONASRegistratAccum. GoodsOnUS საგანძური დარჩენილი პროგრამული უზრუნველყოფა NomenclatureList.Link = ProductsIn WarehousesRemainings.Nomenclature WHERE

ვინაიდან ჩვენმა მოთხოვნამ გამოიყენა "CurrentDate" პარამეტრი, ჩვენ უნდა დავაყენოთ მისი მნიშვნელობა დამუშავების გამოყენებამდე. ამისათვის, ფორმის მოდულში "When CreatedOnServer" პროცედურაში, სტანდარტული ბრძანების გამოყენებით, მიანიჭეთ მას "CurrentSessionDate" ფუნქცია. ჩვენ ასევე გვჭირდება დინამიური სიის ჩვენება საკონტროლო ფორმაზე და შევცვალოთ ველების თანმიმდევრობა სიცხადისთვის. გადაიტანეთ ატრიბუტი „Nomenclature Remaining“ ფორმის ელემენტებში (ზედა მარცხენა ნაწილი) და გამოიყენეთ ლურჯი ისრები ფორმის ცხრილის ველების თანმიმდევრობის შესაცვლელად.

&სერვერის პროცედურა სერვერზე შექმნისას ნომენკლატურა რჩება. პარამეტრები. დააყენეთ ParameterValue("CurrentDate", CurrentSessionDate()) EndProcedure


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

დაამატეთ "DateRemaining" ატრიბუტი "Date" ტიპის და გადაიტანეთ იგი ფორმის ელემენტებზე. საველე მოვლენებში ვქმნით მოვლენას „OnChange“ და ვწერთ კოდს „CurrentDate“ პარამეტრის დასაყენებლად, რომელიც გამოიყენება დინამიურ მოთხოვნაში. იმისათვის, რომ ფორმის გახსნისას მომხმარებელმა დაუყოვნებლივ გაიგოს, რომელ თარიღზე ხედავს ნაშთებს, ჩვენ მცირე ცვლილებებს შევიტანთ პროცედურაში "When CreatedOnServer".



&OnServerProcedureWhenCreatingOnServer(Failure, StandardProcessing)RemainingDate = CurrentSessionDate(); Item Remains.Parameters.SetParameterValue("CurrentDate", RemainingDate); პროცედურის დასასრული &კლიენტის პროცედურაზე დარჩენილი თარიღიროდესაც შეიცვალა(ელემენტი)ნომენკლატურა Remaining.Parameters.SetParameterValue("CurrentDate",RemainingDate); პროცედურის დასასრული

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

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

  1. შერჩევა;
  2. სიები.

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

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

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

მთელი სირთულე მდგომარეობს იმაში, რომ დინამიური სია არ იღებს ყველა ჩანაწერს ერთდროულად, არამედ იღებს მათ ნაწილებად. შესაბამისად, ჩვენ არ შეგვიძლია დაუყოვნებლივ მივიღოთ მიმდინარე შერჩევის შესაბამისი ყველა დოკუმენტის შეჯამება. როგორ გამოვთვალოთ ჯამი?

განხორციელება

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

ფორმა და ინტერფეისი

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

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

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

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

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

ალგორითმი

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

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

შედეგების მისაღებად მოთხოვნის ფორმირების ეტაპები შემდეგია:

1. ვიღებთ თავდაპირველ მოთხოვნას დინამიური სიის შესახებ.

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

2. ჩვენ ვაყალიბებთ მოთხოვნის პირობების ტექსტს (განყოფილება „WHERE“) და ვცვლით მას თავდაპირველ მოთხოვნაში.

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

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

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

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

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

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

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

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

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

ხსნარის ოპტიმალურობა

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

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

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

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

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

დასკვნა

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

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

მიუხედავად ამისა, სტატიაში აღწერილი მეთოდი ხდება პრობლემების გადაჭრისას.

ფაილები ჩამოსატვირთად:

ბეჭდვა (Ctrl+P)

დინამიური სია

1. ზოგადი ინფორმაცია

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

ბრინჯი. 1. დინამიური სიის შექმნის ვარიანტები

ტიპის ფორმის ატრიბუტების შექმნისას დინამიური სიადეველოპერს შეუძლია აირჩიოს ორი გზა მონაცემთა მოთხოვნის შესაქმნელად:
● ძირითადი ცხრილის მითითებით - ამ შემთხვევაში თქვენ უბრალოდ უნდა მიუთითოთ ცხრილი (Main table თვისება), საიდანაც გსურთ მონაცემების მიღება და სისტემა ავტომატურად გამოიმუშავებს მოთხოვნას მონაცემებზე (იხილეთ მარჯვენა ნაწილი ნახ. 1).
● მოთხოვნის ხელით გენერირება - ამისთვის თქვენ უნდა დააყენოთ Custom request თვისება (იხ. ნახ. 1-ის მარცხენა მხარე). ამის შემდეგ ხელმისაწვდომი იქნება მოთხოვნის ხელით გენერირება ინფორმაციის ბაზიდან მონაცემების მისაღებად.
შეკითხვას შეუძლია მონაცემების მოძიება მრავალი ცხრილიდან, ასე რომ თქვენ შეგიძლიათ მიუთითოთ პირველადი ცხრილი. ეს ხდება ისე, რომ დინამიურ სიას შეუძლია განსაზღვროს რომელი მონაცემებია პირველადი და რომელი მეორადი, ასევე შეუძლია სწორად შეარჩიოს და აჩვენოს ინფორმაცია, ასევე უზრუნველყოს სტანდარტული ბრძანებები. თუმცა, თუ შეუძლებელია შეკითხვის მთავარი ცხრილის დადგენა, მაშინ მისი დაზუსტება შეუძლებელია, მაგრამ შემდეგ
დინამიური სია არ შეიცავს მთავარ ცხრილთან დაკავშირებულ ბრძანებებს. გარდა ამისა, ამ შემთხვევაში (მთავარი ცხრილის დაზუსტების გარეშე) მნიშვნელოვნად შემცირდება დინამიური სიით მონაცემების მოპოვების ეფექტურობა.
მუშაობის გასაუმჯობესებლად, რეკომენდებულია, რომ ნებისმიერი შეერთება, რომელიც გამოიყენება მორგებულ მოთხოვნაში მხოლოდ დამატებითი მონაცემების მისაღებად, იყოს სურვილისამებრ, მონაცემთა კომპოზიციის სისტემის შეკითხვის ენის გაფართოების გამოყენებით.
დინამიური სიისთვის, რომელიც არის ძირითადი ფორმის ატრიბუტი, შესაძლებელია შერჩევის მნიშვნელობების დაყენება ფორმის პარამეტრის გამოყენებით. შერჩევა. ამისათვის აუცილებელია პარამეტრში მდებარე სტრუქტურის საკუთრების დასახელება შერჩევა,
დაემთხვა დინამიური სიის შერჩევის ველის სახელს. ამ შემთხვევაში, სტრუქტურის თვისების მნიშვნელობა დაყენდება შერჩევის ელემენტის სწორ მნიშვნელობად. თუ მასივი, ფიქსირებული მასივი ან მნიშვნელობების სია გადაეცემა დინამიური სიის ფორმის Selection პარამეტრის ელემენტის მნიშვნელობას, მაშინ არჩევანს ემატება პირობა In List ოფციით, სწორი მნიშვნელობით. რომელთაგან მოთავსებულია მნიშვნელობების სია (რომელზეც გადაკეთებულია მასივი და ფიქსირებული მასივი).
თვითნებური მოთხოვნა დინამიურ სიაში შეიძლება იყოს მოთხოვნა, რომელშიც პარამეტრი გამოიყენება ველის მნიშვნელობის შესაქმნელად, მაგალითად:

არჩევა
არჩევანი
მიწოდების დროს. კოეფიციენტი = 1 შემდეგ & პრეზენტაცია
წინააღმდეგ შემთხვევაში მიწოდება. კოეფიციენტი
END AS თანაფარდობა
FROM

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

არჩევა
არჩევანი
WHEN Delivery. კოეფიციენტი = 1 THEN EXPRESS(&Representation AS String(100)) ELSE მიწოდება. კოეფიციენტი
END AS თანაფარდობა
FROM
Document.Islivery of Products HOW to Liver

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

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

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

2. შეზღუდვები და მახასიათებლები

დინამიურ სიაში შერჩევის დაყენებისას გახსოვდეთ, რომ შერჩევა არ მოქმედებს ჯგუფებზე, თუ დინამიური სიის ჩვენების რეჟიმი არის იერარქიული სია ან ხე. „ჯგუფებში“ ჩვენ ვგულისხმობთ დირექტორიაში ან დამახასიათებელი ტიპების გეგმის ელემენტს, რომლის ThisGroup თვისება დაყენებულია True-ზე.
კვალიფიკაცია ავტომატურად გამოიყენება დინამიური სიის მიერ სტანდარტულ დეტალებზე: მფლობელი, მშობელი, თარიღი, პერიოდი და ThisGroup.
მონაცემთა შედგენის სისტემის სტანდარტული ინსტრუმენტების გამოყენებით. შერჩევა, რომელიც ავტომატურად გამოიყენება დინამიური სიის მიერ საკვანძო ველებზე, შეიძლება გამოყენებულ იქნას როგორც მონაცემთა შემადგენლობის სისტემის სტანდარტული საშუალებებით, ასევე მოთხოვნის ტექსტში პირობების პირდაპირ დამატებით. INმთავარი ცხრილის ველებამდე. განლაგების ხელსაწყოების გამოყენებით არჩევანის გამოყენების შედეგად, მათი გამოყენება შესაძლებელია როგორც ჩადგმულ შეკითხვებში, ასევე ვირტუალური ცხრილების პარამეტრებში.

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

  • ცხრილის ნაწილების დეტალების მიხედვით.
  • ველების ნახვა.
  • DataVersion ველი.
  • წინასწარ განსაზღვრულიDataName ველი.
  • ანგარიშთა სქემა ცხრილის ტიპის ველი.
  • ველი დაგროვების რეგისტრის ცხრილის მოძრაობის ტიპი.
  • დამახასიათებელი ტიპის გეგმის ცხრილის ველი TypeValues.
  • აკრიფეთ ველი ტიპი;
  • String ტიპის ველი (სიგრძე შეუზღუდავი).
  • BinaryData ტიპის ველი.

● Subconto ველების მიხედვით დახარისხება და დაჯგუფება არ არის მხარდაჭერილი<НомерСубконто>და ViewSubconto<НомерСубконто>ცხრილები მოძრაობები საბუღალტრო რეესტრის ქვეკონტო.
● დაჯგუფება ველების მიხედვით, რომლებიც შეკითხვის ენის გამონათქვამებია, რომლებიც შეიცავს აგრეგატურ ფუნქციებს, მხარდაჭერილი არ არის.
● ძირითადი ცხრილის არჩევისას, დინამიური სიის მოთხოვნას აქვს შემდეგი შეზღუდვები:

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

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

შემდეგი ცხრილების გამოყენება დინამიური სიის მთავარ ცხრილად არ არის მხარდაჭერილი:

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

● ბუღალტრული აღრიცხვის რეესტრის ქვეკონტო ცხრილი;
● ბუღალტრული აღრიცხვის რეესტრის ყველა ვირტუალური ცხრილი, გარდა MovementsSubconto ცხრილისა;
● მუდმივი მნიშვნელობების ცხრილები (მათ შორის მუდმივი ცხრილი);
● მონაცემთა გარე წყაროების ცხრილები საკვანძო ველების გარეშე;
● გარე მონაცემთა წყაროების კუბური ცხრილები;
● დაგროვების რეგისტრის ცხრილები:

  • რევოლუციის მაგიდა;
  • ბალანსის ცხრილი;
  • ბრუნვისა და ნაშთების ცხრილი.

● საანგარიშო რეესტრის ცხრილები:

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

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

სხვა სიტყვებით რომ ვთქვათ, დინამიური სია მითითებული ძირითადი ცხრილით სწორად იმუშავებს, თუ მოთხოვნის შესრულების შედეგად,
მონაცემთა წყაროდ მითითებული, ძირითადი ცხრილიდან მიღებული სტრიქონების რაოდენობა არ იზრდება (დაწესებული შერჩევის გათვალისწინებით). თუ მოთხოვნის შესრულების შედეგად მოიმატებს მოთხოვნით მიღებული მწკრივების რაოდენობა ძირითადი ცხრილიდან, ეს გამოიწვევს სიით გამოტანილი ცხრილის ჩანაწერების გასაღების უნიკალურობის დარღვევას. ამ შემთხვევაში, თქვენ უნდა გამორთოთ ძირითადი დინამიური სიის ცხრილის გამოყენება.
დინამიურ სიასთან მუშაობისას, თქვენ უნდა გაითვალისწინოთ სიაში ნაჩვენები დეტალების წვდომის უფლებები:
● მონაცემები დინამიური სიის სვეტებიდან, რომლებიც მონიშნულია Always Use თვისებით, მაგრამ რომლებზეც მიმდინარე მომხმარებელს არ აქვს View-ს უფლება, არ გადაეცემა კლიენტის მხარეს. ასეთი სვეტების მონაცემებზე წვდომა (CurrentData თვისებისა და RowData() მეთოდის გამოყენებით)
შეუძლებელია კლიენტის მხრიდან.
● თუ ამჟამინდელ მომხმარებელს არ აქვს ხედი დინამიური სიის საკვანძო ველზე, ამ დინამიური სიიდან მონაცემების მოძიება იწვევს წვდომის დარღვევის შეცდომას.
დინამიური სიისთვის, რომელიც აჩვენებს ჩამოთვლის სიას, არ არსებობს სიის ინტერაქტიულად მორგება.
დინამიური სიის სვეტების შემადგენლობა და პარამეტრები ასოცირდება მოთხოვნის ველებთან შერჩევის ველების მეტსახელების გამოყენებით. თუ მეტსახელი პირდაპირ არ არის მითითებული შერჩევის ველის მოთხოვნაში და ველი არის სისტემური, მაშინ ჩაშენებული ენის ინგლისური ვერსიის ველის სახელი გამოიყენება მეტსახელად.
მითითებული ურთიერთობა ნიშნავს, რომ შეცვლისას (ან ცალსახად მიუთითებს მეტსახელის ველს, რომლისთვისაც გამოიყენებოდა ავტომატური მეტსახელი)
მოთხოვნის ველის მეტსახელი, რომელიც აგენერირებს დინამიური სიის მონაცემებს, დაიკარგება დინამიური სიის ატრიბუტის პარამეტრები, ფორმის ელემენტები „დაკარგავენ“ გამოჩენილ დეტალებს, დინამიური სიის პარამეტრები არასწორი გახდება და ა.შ.
თუ დინამიური სიის მონაცემთა წყარო არის ცხრილი (რეგულარული ან ვირტუალური), რომელიც საშუალებას გაძლევთ დააყენოთ არჩევანი პერიოდის მიხედვით, მაშინ თუ მომხმარებელი ადგენს ჩვენების პერიოდს ასეთ დინამიურ სიაში (ბრძანება Set date interval...),
მითითებული პერიოდის საზღვრები დაყენდება, როგორც შერჩევის მნიშვნელობები ან ვირტუალური ცხრილის პარამეტრები. თუ ენის გაფართოების საშუალებით
მოთხოვნები მონაცემთა შემადგენლობის სისტემისთვის, ვირტუალური ცხრილის პარამეტრების სახელები ცალსახად იყო მითითებული - პარამეტრები მითითებულით
სახელები. ცხრილები, რომლებისთვისაც შესაძლებელია მონაცემების ჩვენების ან დამუშავების პერიოდის კონტროლი:
● სარეგისტრაციო ცხრილები (ძირითადი ან ვირტუალური), რისთვისაც შესაძლებელია პერიოდების მიხედვით შერჩევა (საანგარიშო რეესტრისთვის - რეგისტრაციის პერიოდის მიხედვით);
● დოკუმენტების ძირითადი ცხრილები, ბიზნეს პროცესები და ამოცანები;
● დოკუმენტური ჟურნალების ძირითადი ცხრილები;
● ძირითადი მიმდევრობის ცხრილები, მიმდევრობის საზღვრების ცხრილები.
დინამიური სიის მოთხოვნის პარამეტრი შეიძლება იყოს მასივი ან მნიშვნელობების სია. თუმცა, თუ პარამეტრი არის მნიშვნელობების სია, მაშინ მხოლოდ პირველი მნიშვნელობა სიაში იქნება გამოყენებული, როგორც შერჩევის მნიშვნელობა. თუ დინამიური სია იყენებს მოთხოვნას პარამეტრებით, პარამეტრის მნიშვნელობების საწყისი პარამეტრი უნდა შესრულდეს OnCreateOnServer დამმუშავებელში.
დინამიური სიის მონაცემების ჩვენებისას გაითვალისწინეთ შემდეგი პუნქტები:
● როდესაც თქვენ პროგრამულად შეცვლით დინამიური სიის თვისებებს, სიასთან დაკავშირებული ბრძანებების პანელები ავტომატურად არ ივსება.
ამ დინამიური სიით.
● თუ რამდენიმე ველი დაჯგუფებულია ჯგუფში დაჯგუფების რეჟიმით უჯრედში და დაჯგუფებულ ველებში არის ველი, რომელიც გამოსახულია ჩამრთველის სახით, მაშინ ეს ჩამრთველი ყოველთვის პირველ რიგში გამოჩნდება მიღებულ უჯრედში (მარცხნივ ტექსტი).
დინამიურ სიაში, მონაცემთა ტიპის განსაზღვრისას ველებისთვის, რომელთა გამონათქვამები მოიცავს პარამეტრებს, ველებს ან ლიტერალებს, მიღებული ტიპი განისაზღვრება ველების და ლიტერალების ტიპებით. თუ პარამეტრის მნიშვნელობის ტიპი არ შედის მონაცემთა ტიპში, მისი მნიშვნელობა შეიკვეცება.
მაგალითად, შემდეგ მაგალითში ველი იქნება ნომრის ტიპის.

არჩევანი
როცა ტყუილია
შემდეგ 5
წინააღმდეგ შემთხვევაში
&Პარამეტრი
ᲓᲐᲡᲐᲡᲠᲣᲚᲘ

თუ პარამეტრის პარამეტრს დააყენებთ სხვა ტიპის მნიშვნელობას, ამ ველის დინამიური სია მიიღებს მნიშვნელობას 0 (ნაგულისხმევი მნიშვნელობა ნომრის ტიპისთვის).
თუ ასეთ სიტუაციაში გჭირდებათ სხვა ტიპის პარამეტრის არჩევა, რეკომენდებულია შეკითხვის ენის კონსტრუქციის გამოყენება. EXPRESS. Მაგალითად,
თუ ზემოხსენებულ მაგალითში თქვენ გჭირდებათ პარამეტრში 100 სიმბოლოზე მეტი სტრიქონის ჩასმა, მაშინ თქვენ უნდა შეცვალოთ პარამეტრის მარტივი მითითება გამოსახულებით აშკარა ტიპის cast-ით:

არჩევანი
როცა ტყუილია
შემდეგ 5
წინააღმდეგ შემთხვევაში
EXPRESS(&პარამეტრი AS სტრიქონი(100))
ᲓᲐᲡᲐᲡᲠᲣᲚᲘ

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

3. დინამიური სიით მონაცემების მოპოვებისა და ქეშირების მეთოდები

საჩვენებლად მონაცემების მიღებისას, დინამიური სია იყენებს სამ მეთოდს:
1. მონაცემთა ბაზიდან კითხვა შესრულებულია ნაწილებად, მონაცემთა ელემენტების რაოდენობა ოდნავ აღემატება სიის მიერ ერთდროულად ნაჩვენები მწკრივების რაოდენობას (მაგრამ არანაკლებ 20). მონაცემები არ არის ქეშირებული სერვერზე.
2. მონაცემთა ბაზიდან კითხვა ხდება 1000 მონაცემთა ელემენტის გვერდებზე. მიმდინარეობს მონაცემების ქეშირება სერვერზე. იერარქიული მონაცემები ინახება ქეშში: ელემენტების არაუმეტეს 2 გვერდის ქეშირება ხდება თითოეული მშობლისთვის. დინამიურ სიაში ინახება არაუმეტეს 20 გვერდის ერთეული. ქეშირება ჩართული იქნება დინამიური სიით შემდეგი ცხრილებისთვის:
● შერჩევის კრიტერიუმები;
● ბუღალტრული აღრიცხვის რეესტრის ყველა ცხრილი, გარდა ძირითადი ცხრილისა და MovementsSubconto ცხრილისა;
● დაგროვების რეგისტრის ყველა ცხრილი, გარდა ძირითადი ცხრილისა;
● საინფორმაციო რეესტრის ყველა ცხრილი, გარდა ძირითადი ცხრილისა;
● საანგარიშო რეესტრის ყველა ცხრილი, გარდა ძირითადი ცხრილისა;
● დავალების ვირტუალური ცხრილი შემსრულებლის მიერ;
● გარე წყაროების ცხრილები გასაღებების გარეშე;
● კუბურები გარე წყაროებიდან.

3. მონაცემთა ბაზიდან კითხვა ხდება 1000 ელემენტის გვერდებზე. პირველი ნაწილი უდრის 1 გვერდს. ყოველი მომდევნო ნაწილი იზრდება 1 გვერდით (როცა წინა ნიმუშის დასასრული მიიღწევა). რაც უფრო უახლოვდება „ხედვის წერტილი“ ნაჩვენები მონაცემების დასასრულს, მით უფრო დიდი ნიმუში იკითხება მონაცემთა ბაზიდან, რაც საბოლოოდ ხდება ყველა ნაჩვენები მონაცემის ტოლი. მიმდინარეობს მონაცემების ქეშირება სერვერზე. ქეშსა და დინამიურ სიაში ჩანაწერების მაქსიმალური რაოდენობაა 1,000,000.
იმისდა მიხედვით, თუ რას ირჩევს დინამიური სიის მთავარი ცხრილი და რა მნიშვნელობას იღებს Dynamic reading თვისება, გამოიყენება მონაცემების წაკითხვის ერთი ან სხვა მეთოდი:

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



● ძირითადი ცხრილის თვისების მნიშვნელობად მითითებულია ერთ-ერთი შემდეგი ცხრილი: საინფორმაციო რეესტრის მთავარი ცხრილი, დაგროვების რეგისტრი, სააღრიცხვო რეესტრი, საანგარიშო რეესტრი, სააღრიცხვო რეესტრის ვირტუალური ცხრილი MovementsSubconto:

● დინამიური წაკითხვის თვისება:
● დაინსტალირებულია: გამოიყენება მეთოდი 1 (ზემოთ მოცემულია მეთოდების აღწერა).
● გადატვირთვა: გამოიყენება მეთოდი 2 (ზემოთ მოცემულია მეთოდების აღწერა).

● Main table თვისება შეიცავს შერჩევის კრიტერიუმის ცხრილს ან ამოცანების ცხრილს შემსრულებლის მიხედვით (Tasks By Performer):
● ცხრილის მწკრივის ამოცნობის გასაღები: ბმული.

● Main table თვისება განსაზღვრავს ინფორმაციის რეგისტრის ვირტუალურ ცხრილს SliceFirst ან SliceLast:
● ცხრილის მწკრივის იდენტიფიცირების გასაღები: RecordKey.
● Dynamic reading თვისება არ გამოიყენება.
● გამოიყენება მეთოდი 2 (ზემოთ მოცემულია მეთოდების აღწერა).

● Main table თვისება დაყენებულია ვირტუალური რეგისტრის ერთ-ერთ ცხრილზე, გარდა ზემოთ ჩამოთვლილი ცხრილებისა:

● Dynamic reading თვისება არ გამოიყენება.

● Main table თვისება არ არის მითითებული, გამოყენებულია თვითნებური მოთხოვნა:
● ცხრილის მწკრივის ამოცნობის გასაღები: ნომერი.
● Dynamic reading თვისება არ გამოიყენება.
● მე-3 მეთოდი გამოიყენება (ზემოთ მოცემულია მეთოდების აღწერა).

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

4. დინამიური სიის პარამეტრები

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


ბრინჯი. 2. დინამიური სიის პირობითი სტილისტიკა

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

რჩევა.უნდა გვახსოვდეს, რომ დახარისხების ველების ცუდი შერჩევა (ისევე როგორც მონაცემების შერჩევა და დაჯგუფება) უარყოფითად მოქმედებს დინამიური შერჩევის ეფექტურობაზე.
აპლიკაციის შემქმნელის თვალსაზრისით, დინამიური სიის პარამეტრები შედგება რამდენიმე ნაწილისგან, რომლებიც ერთმანეთთან არის დაკავშირებული. მთავარი თვისება, რომლის საშუალებითაც შეგიძლიათ მართოთ დინამიური სიის პარამეტრები, არის LinkerSettings. ეს ობიექტი შეიცავს პარამეტრების სამ კომპლექტს, რომლებიც, როდესაც სისტემა მუშაობს, განსაზღვრავს საბოლოო პარამეტრებს, რომლებიც გამოიყენება დინამიურ სიაში:
● პარამეტრები – კონფიგურატორის რეჟიმში შექმნილი პარამეტრები. დინამიური სიის Order თვისება უზრუნველყოფს სწრაფ წვდომას Settings.Order თვისება დინამიური სიის პარამეტრების შემქმნელის, ასე რომ, შემდეგი კონსტრუქციები ექვივალენტურია:
List.Order და List.SettingsLinker.Settings.Order;
● UserSettings – ეს არის პარამეტრები, რომლებსაც მომხმარებელი ცვლის 1C:Enterprise რეჟიმში;
● ფიქსირებული პარამეტრები – ეს პარამეტრები დაყენებულია ჩაშენებული ენიდან. ეს თვისება ასევე შეიცავს შერჩევის მნიშვნელობებს, რომლებიც გადადის ფორმაში მისი პარამეტრების გამოყენებით. დინამიური სიის თვისებები შერჩევა, ოფციები, პირობითი გარეგნობა უზრუნველყოფს სწრაფ წვდომას დინამიური სიის პარამეტრების შემქმნელის ფიქსირებულ პარამეტრებზე. სხვა სიტყვებით რომ ვთქვათ, ეს ზარები ექვივალენტურია:
List.Settings Composer.FixedSettings.Selection და List.Selection.
დინამიური სიის საბოლოო პარამეტრების შექმნისას, პარამეტრების სხვადასხვა ვარიანტები გაერთიანებულია შემდეგნაირად:
● თუ რომელიმე ტიპის პარამეტრი მთლიანად მონიშნულია, როგორც მორგებული, მაშინ მიღებული პარამეტრები მოიცავს მორგებულ პარამეტრებს
(List.ComposerSettings.UserSettings). უფრო მეტიც, თუ რომელიმე პარამეტრის ელემენტი მონიშნულია, როგორც მიუწვდომელი, მაშინ ეს პარამეტრები განთავსდება მიღებულ პარამეტრებში List.Settings Composer თვისებიდან. პარამეტრები.
● თუ რომელიმე ტიპის პარამეტრი მონიშნულია როგორც მორგებული არა მთლიანად, არამედ ელემენტი ელემენტი, მაშინ:
● მორგებულად მონიშნული ელემენტები შეიტანება მიღებულ პარამეტრებში List.SettingsComposer.CustomSettings თვისებიდან.
● მიუწვდომლად მონიშნული ნივთები შეიტანება მიღებულ პარამეტრებში List.SettingsComposer.Settings თვისებიდან.
● ფიქსირებული პარამეტრები (List.SettingsComposer.FixedSettings) ემატება მიღებულ პარამეტრებს „როგორც არის“. ამავდროულად, მიუღებელია, რომ ფიქსირებული და მომხმარებლის პარამეტრები შეიცავდეს იმავე სახელწოდების პარამეტრებს, მაგალითად, პარამეტრებში იგივე მარცხენა მნიშვნელობის შერჩევა.

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


ბრინჯი. 3. აკონტროლეთ მომხმარებლის პარამეტრებში ჩართვა

ფანჯრის ბოლოში მონიშნული ველი (იხ. სურ. 3) პასუხისმგებელია მთელი ტიპის პარამეტრების პარამეტრებში განთავსებაზე (ნორმალური ან სწრაფი). ეს ფუნქცია ხელმისაწვდომია შერჩევის, შეკვეთის, დაჯგუფებისა და პირობითიიზაციისთვის. თუ პარამეტრები მითითებულია სწრაფი შერჩევის რედაქტირების რეჟიმში, მაშინ დინამიური სიის ჩვენების ფორმის ცხრილის თვისებებში User Settings Group, თქვენ უნდა მიუთითოთ ფორმის ცარიელი ჯგუფი, რომელშიც ელემენტები დაკავშირებულია მომხმარებლის სწრაფ პარამეტრებთან. დინამიური სია განთავსდება. თუ ჯგუფი არ არის მითითებული, მომხმარებლის სწრაფი პარამეტრები არ გამოჩნდება ფორმაზე. ასევე შესაძლებელია ცალსახად გამოძახება მორგებული პარამეტრების შექმნა ჩაშენებული ენის გამოყენებით დინამიური სიის გაფართოების CreateCustomSettingsFormItems() მეთოდის გამოყენებით.
ასევე შესაძლებელია აირჩიოთ, განთავსდეს თუ არა კონკრეტული პარამეტრების ელემენტები მომხმარებლის პარამეტრებში. ეს ფუნქცია ხელმისაწვდომია შერჩევისა და პირობითი დიზაინის ელემენტებისთვის (იხ. სურათი 3).

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

5. ძიება დინამიურ სიაში

ფორმაზე განთავსებული დინამიური სია იძლევა ნაჩვენები მონაცემების ინტერაქტიული ძიების შესაძლებლობას. ძიება შეიძლება განხორციელდეს შემდეგი ხელსაწყოების გამოყენებით: საძიებო ზოლი, საძიებო დიალოგი, მიმდინარე მნიშვნელობის ძიება, ძიების ისტორიის გამოყენება და პერიოდის დაყენება (დოკუმენტების ჩვენების დინამიური სიებისთვის). ძიების შედეგი არის ჩანაწერების შეზღუდული ნაკრები
დინამიური სია (მოცემული მომხმარებლისთვის ხელმისაწვდომი), რომელიც შეესაბამება ძიების კრიტერიუმებს.
დინამიური სიის საძიებო შესაძლებლობების გასაკონტროლებლად, მართულ ფორმაში არის სამი ცხრილის თვისება, რომელიც აჩვენებს დინამიურ სიას:
● ძიების სტრიქონის პოზიცია – განსაზღვრავს საძიებო სტრიქონის პოზიციას. შეუძლია მიიღოს შემდეგი მნიშვნელობები: Auto, Command Bar, None, Top, Bottom.


ბრინჯი. 4. მოძებნეთ სტრიქონი დინამიურ სიაში

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


● თუ თავსებადობის რეჟიმის თვისება დაყენებულია ნუ გამოიყენებ ან უფრო ძველია ვიდრე ვერსია 8.3.4 – მნიშვნელობა არის Command Panel.
გადადით საძიებო ხაზში შემდეგნაირად:
● კლავიშთა კომბინაციის Ctrl+F დაჭერით;
● მაუსი;
● როდესაც იწყებთ დინამიურ სიაში აკრეფას (დინამიური სიის SearchOnTyping თვისების მნიშვნელობის გათვალისწინებით).
● View State Position – აღწერს სად იქნება ნაჩვენები ხედვის მდგომარეობა: რა ველები მოიძებნა და რა მნიშვნელობები
მოძებნე ყველა სფეროში. შეუძლია მიიღოს შემდეგი მნიშვნელობები: Auto, None, Top, Bottom


ბრინჯი. 5. მოძებნეთ მდგომარეობა დინამიურ სიაში

თუ თვისება დაყენებულია No, მაშინ ხედვის მდგომარეობა არ იქნება წარმოდგენილი ფორმაზე. შედეგად, შესაძლებელი იქნება იმის დადგენა, დასრულებულია თუ არა ძიება მხოლოდ ძიების გაუქმების ღილაკის ხელმისაწვდომობით.
თუ თვისება დაყენებულია ზევით, ხედვის მდგომარეობა განთავსდება სიის ბრძანების ზოლსა და დინამიური სიის გამოსახულ ცხრილს შორის. თუ თვისება დაყენებულია Bottom-ზე, ხედვის მდგომარეობა განთავსდება დინამიური სიის ჩვენების ცხრილის შემდეგ.
თუ ფორმა შეიქმნა 1C:Enterprise ვერსია 8.3.4 და უფრო ადრე, თვისება დაყენებულია No. თუ ფორმა შეიქმნა 1C:Enterprise 8.3.5 და უფრო ძველი ვერსიით, თვისება დაყენებულია Auto. ქონების რეალური ღირებულება ამ შემთხვევაში განისაზღვრება შემდეგნაირად:
● თუ თავსებადობის რეჟიმი დაყენებულია ვერსია 8.3.4 (და უფრო დაბალი) – მნიშვნელობა No;
● თუ თავსებადობის რეჟიმის თვისება დაყენებულია ნუ გამოიყენებ ან უფრო ძველია ვიდრე ვერსია 8.3.4 – მნიშვნელობა Top;
● Search Control Position – განსაზღვრავს სად გამოჩნდება ძიების მართვის ღილაკი. ღილაკი ხსნის მენიუს, რომელიც შეიცავს შემდეგ ინფორმაციას: ბრძანებები Find by მიმდინარე მნიშვნელობით, გაფართოებული ძიება, ძიების გაუქმება, პერიოდის დაყენება (დოკუმენტებისა და ჟურნალების სიებისთვის) და ძიების მოთხოვნის ისტორია (ბოლო 5 მოთხოვნა). თვისებას შეუძლია მიიღოს შემდეგი მნიშვნელობები: Auto, None, Command panel.


ბრინჯი. 6. ძიების მართვა დინამიურ სიაში

თუ თვისება დაყენებულია No-ზე, მაშინ ძებნის მართვის ღილაკი არ იქნება ფორმაში (მაგრამ ბრძანებები ხელმისაწვდომი იქნება მეტი მენიუს გამოყენებით). Command Bar თვისების მნიშვნელობა ათავსებს ღილაკს ბრძანების ზოლზე, რომელიც ასოცირდება ცხრილთან, რომელიც აჩვენებს დინამიურ სიას.
თუ ფორმა შეიქმნა 1C:Enterprise ვერსია 8.3.4 და უფრო ადრე, თვისება დაყენებულია No. თუ ფორმა შეიქმნა 1C:Enterprise 8.3.5 და უფრო ძველი ვერსიით, თვისება დაყენებულია Auto. ქონების რეალური ღირებულება ამ შემთხვევაში განისაზღვრება შემდეგნაირად:
● თუ თავსებადობის რეჟიმი დაყენებულია ვერსია 8.3.4 (და უფრო დაბალი) – მნიშვნელობა No;
● თუ თავსებადობის რეჟიმის თვისება დაყენებულია ნუ გამოიყენებ ან უფრო ძველია ვიდრე ვერსია 8.3.4 – მნიშვნელობა არის Command Panel;
თუ ფორმაზე არის რამდენიმე ბრძანების პანელი, რომლის ბრძანებების წყაროა მართული ფორმის ერთი ცხრილი (დინამიური სიის მონაცემების ჩვენება), მაშინ საძიებო ხაზი და ძებნის მართვის ღილაკი განთავსდება მხოლოდ ერთ ბრძანების პანელში:
● ან თავად დინამიური სიის ბრძანების ზოლში (თუ ჩართულია ავტომატური დასრულება)
● ან რომელიმე დარჩენილ ბრძანების პანელში.

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

● ძიება არ ხორციელდება დინამიური სიის (და კონფიგურაციის ობიექტის) ყველა სვეტში, არამედ მხოლოდ იმ სვეტების მეშვეობით, რომლებიც ნაჩვენებია ცხრილში.
● დინამიურ სიაში ძიება მიმართვის ტიპების ველების მიხედვით თვითნებური წარმოდგენით ხორციელდება ველებით, რომლებიც გამოიყენება
წარმომადგენლობის ფორმირება (იხ. აქ). ხედში ჩართული ველები მიღებულია შესაბამისი ობიექტის ViewFieldGettingProcessing() დამმუშავებლის გათვალისწინებით.
● დინამიური სიებისთვის მითითებული ძირითადი ცხრილით, სრული ტექსტის ძიება გამოიყენება მთავარ ცხრილში. ყველა არაინდექსირებული ბმული ძირითადი ცხრილიდან დაემატება სრული ტექსტის ძიების შედეგებს. ძირითადი ცხრილის სრული ტექსტის ძიების შედეგი გამოიყენება საკვანძო ველების მიხედვით შერჩევის სახით. სრული ტექსტის ძიება ასევე ხორციელდება სიაში გამოტანილ ველებზე სხვა ცხრილებიდან (თუ ველი და კონფიგურაციის ობიექტი იყენებს სრულ ტექსტურ ძიებას). სრული ტექსტის ძიების ჩართვის გარეშე, მონაცემები შეიძლება იყოს
ნაპოვნია, მაგრამ თავად ძებნა ძალიან ნელი იქნება.
თუ სრული ტექსტის ძიების მცდელობისას მოხდა შეცდომა, ძიება განხორციელდება სრული ტექსტის ძიების გამოყენების გარეშე.
მაგალითად, ეს შეიძლება მოხდეს ამ ასოთი დაწყებული საინფორმაციო ბაზაში ერთი ასოსა და დიდი რაოდენობის სტრიქონების ძიებისას.
● თუ შედარების ტიპის Equals-ის შერჩევა გამოიყენება ველისთვის დინამიური სიის მთავარ ცხრილში, მაშინ სრული ტექსტის ძიების შესრულებისას ამ ცხრილის საძიებო მოთხოვნას დაემატება შერჩევის მნიშვნელობა.
● საძიებო სტრიქონი დაყოფილია სიტყვებად. ეს დანაყოფი შესრულებულია შემდეგი წესების მიხედვით:
● სტრიქონი იშლება საზღვრებისა და ჩანართის სიმბოლოების გამოყენებით, როგორც გამსაზღვრელი.
● შემდეგ ყოველი მიღებული ფრაგმენტი მუშავდება:
● თუ ფრაგმენტი არის თარიღის წარმოდგენა (დროით ან მის გარეშე) დაფუძნებული სესიის მიმდინარე ლოკალზე, მაშინ სიტყვა არის ფრაგმენტი.
● წინააღმდეგ შემთხვევაში, ფრაგმენტი შემდგომში გაიყოფა სიმბოლოების „,.-/\“ გამიჯვნის სახით. ამ შემთხვევაში, თითოეული მიღებული სიმებიანი ფრაგმენტი აღებულია როგორც სიტყვა.

● თითოეული სიტყვისთვის იქმნება პირობების საკუთარი ნაკრები, რომლებიც გაერთიანებულია „OR-ით“. პირობების ეს ნაკრები იქმნება, თუ ცხრილში მოცემული სიტყვის სრული ტექსტის ძიებამ, საიდანაც ეს ველი იქნა მიღებული, დააბრუნებს მინიმუმ ერთ ობიექტს, ან სრული ტექსტის ძიება არ იყო გამოყენებული ამ ველისთვის. პირობები იქმნება შემდეგნაირად:
● String ტიპის ველისთვის პირობაა FieldName LIKE %Word%.
● Number ტიპის ველისთვის პირობას აქვს ფორმა FieldName=Value, სადაც Value არის სიტყვა, რომელიც გარდაიქმნება რიცხვის ტიპად. თუ მსახიობი ვერ შესრულდება, საველე ძიება არ განხორციელდება.
● სიტყვა მოიძებნება როგორც ქვესტრიქონი მიმდინარე სესიისთვის განსაზღვრულ ნაგულისხმევ ლოგიკურ წარმოდგენაში. თუ საძიებო სიტყვა ნაპოვნია ხედში, ის ეძებს მნიშვნელობას, რომელიც შეესაბამება იმ ხედს, რომელშიც ნაპოვნია სიტყვა. ამ შემთხვევაში, ძიება არ იყენებს ხედებს, რომლებიც მითითებულია ფორმატის ფორმის ელემენტის თვისების გამოყენებით.
● Date ტიპის ველისთვის, პირობა ჰგავს FieldName>=StartofDay(Word) ANDFieldName<=КонецДня(Слово). Если Слово подобно дате, в которой год
მითითებული ერთი ან ორი ციფრით, წელი შემცირდება მიმდინარე საუკუნემდე და ეს მნიშვნელობა დაემატება საძიებო პირობას.
● საცნობარო ველებისთვის, ძიება ხორციელდება იმ ველებზე, რომლებიც გამოიყენება საცნობარო ხედის შესაქმნელად. თითოეულ ამ ველში ძიება
შესრულებულია ზემოთ აღწერილი წესების მიხედვით. ძიება არ იყენებს ველებს, რომლებიც გამოიყენება პირადი მონაცემების წარმოდგენის შესაქმნელად.
თითოეული სიტყვისთვის პირობების ნაკრები გაერთიანებულია "AND".
● საწყისი ნულების მქონე მნიშვნელობებისთვის, შეგიძლიათ მოძებნოთ სტრიქონი წინა ნულებით ან სტრიქონი, რომელიც მითითებულია წინა ნულების გარეშე.
● თუ დინამიური სია აჩვენებს დოკუმენტების ჩამონათვალს ან დოკუმენტის ისტორიას, სიის ნახვის ინტერვალი, რომელიც თქვენ მიუთითეთ, ასევე ნაჩვენებია ფორმის არეში, რომელიც დაცულია სასურველი დინამიური სიის ხედვის სტატუსის საჩვენებლად.
● ძიება მიმდინარე მნიშვნელობის ბრძანებით მიუწვდომელია, თუ დინამიური სიის მთავარი ცხრილი შერჩევის კრიტერიუმია.
● ნაპოვნი სტრიქონების ფრაგმენტები მონიშნულია, როდესაც ნაჩვენებია ცხრილში.
● მხოლოდ ერთი საძიებო სტრიქონი მხარდაჭერილია ერთი სვეტისთვის. ახალი საძიებო მოთხოვნის დამატებისას სვეტისთვის, რომელიც უკვე იძებნება, საძიებო გამოთქმა შეიცვლება, ვიდრე ორი საძიებო მოთხოვნა ერთად დაემატება.
● თუ ფორმას არ აქვს ფორმის ელემენტის დამატება ფორმის Search string display ასოცირებული ცხრილთან (ფორმის ელემენტის დამატება Source თვისება), რომელიც აჩვენებს დინამიურ სიას, მაშინ Ctrl+F კლავიშების კომბინაციის დაჭერით იხსნება საძიებო დიალოგი.


ბრინჯი. 7. ძიება დიალოგი

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

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

6. დინამიური სიით ნაჩვენები მონაცემების მიღება

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

Schema = Elements.List.GetExecutableDataCompositionSchema();
პარამეტრები = Items.List.GetExecutableDataCompositionSettings();
LayoutLinker = newDataCompositionLayoutLinker();
LayoutLayout = LayoutComposer.Execute(Scheme, Settings);
CompositionProcessor = newDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout);
OutputProcessor = New OutputProcessorDataCompositionResultInTabularDocument;
ReturnOutputProcessor.Output(CompositionProcessor);

მონაცემთა შეყვანა ღირებულებების კოლექციაში (ცხრილი ან მნიშვნელობების სია) ანალოგიურად ხდება.
დინამიური სიის მონაცემების ამ გზით მიღებას აქვს მრავალი მახასიათებელი, რომელიც უნდა იქნას გათვალისწინებული აპლიკაციის გადაწყვეტილებების შემუშავებისას:
● ცხრილის შემდეგი დიზაინი არ არის მხარდაჭერილი:
● ხაზების ალტერნატიული ფერები;
● სათაურის სურათი;
● სარდაფის სურათი;
● ქვედა კოლონტიტულის ფონის ფერი;
● ქვედა ტექსტის ფერი;
● ქვედა კოლონტიტულის შრიფტი;
● სარდაფში ჰორიზონტალური პოზიცია;
● პაროლის რეჟიმი.
● მართული ფორმისთვის მითითებული პირობითი გარეგნობა არ არის მხარდაჭერილი;
● იერარქიული ცხრილის ზრდადი თანმიმდევრობით დალაგებისას Link ტიპის ველით, ცარიელი ბმულის შემცველი ჩანაწერები ყოველთვის პირველ ადგილზეა განთავსებული.

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

დინამიური სიის შესაძლებლობების საჩვენებლად, შევქმნათ გარე დამუშავება და დავამატოთ ძირითადი ფორმა. მოდით დავამატოთ ახალი ატრიბუტი ფორმას "დინამიური სია" ტიპის. მოდით გადავიდეთ მის თვისებებში და ვნახოთ რა არის იქ.
ჩვენ გვაინტერესებს „საბაჟო მოთხოვნის“ საკუთრება. მისი ჩართვა გვაჩვენებს დინამიური სიის ყველა შესაძლებლობას. ჩვენ შევძლებთ მოთხოვნის დაწერას 1C: Enterprise სისტემის შეკითხვის ენის თითქმის ყველა შესაძლებლობის გამოყენებით. შეამოწმეთ ყუთი და დააჭირეთ ბმულს "გახსნა":

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


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

თუ ჩვენ შევეცდებით ჩვენი დამუშავების ამ ფორმით გაშვებას, მივიღებთ შეცდომას:


მის აღმოსაფხვრელად, თქვენ უნდა დააყენოთ მნიშვნელობა "პერიოდის" პარამეტრისთვის. ამისათვის შეგიძლიათ გამოიყენოთ დინამიური სიის „Parameters“ კოლექციის მეთოდი „SetParameterValue“. მეთოდი იღებს ორ პარამეტრს:
. "პარამეტრი" - ტიპი: სტრიქონი; DataCompositionParameter. პარამეტრის ან მონაცემთა შემადგენლობის პარამეტრის სახელი, რომლის მნიშვნელობაც გსურთ დააყენოთ;
. "ღირებულება" - ტიპი: თვითნებური. დასაყენებელი მნიშვნელობა.
შეიძლება გამოძახება ფორმის „OnCreateOnServer“ დამმუშავებელში:

გაქვთ შეკითხვა ან გჭირდებათ კონსულტანტის დახმარება?


მომხმარებელს მივცემთ შესაძლებლობას შეცვალოს ნაშთების მიღების პერიოდი. ამისათვის დაამატეთ ატრიბუტი და მასთან დაკავშირებული ფორმის ელემენტი „თარიღი“:


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


ახლა, როდესაც თარიღი შეიცვლება, ნაშთები ავტომატურად განახლდება:




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


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


განხორციელებული ცვლილებების შედეგი:



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

ავიღოთ საფუძვლად 1C-ის გარკვეული სატესტო კონფიგურაცია: „საწარმოთა აღრიცხვა 3.0“. ჩვენ ახლა არ გავაკეთებთ არჩევანს, უბრალოდ დავამატებთ სხვა შერჩევის ფორმას "ნომენკლატურის" დირექტორიაში და დროებით მთავარს ვაქცევთ:

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

მოდით გადავიდეთ მის თვისებებში და ვნახოთ რა არის იქ.

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

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

მიიღეთ 267 ვიდეო გაკვეთილი 1C-ზე უფასოდ:

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

მორგებული მოთხოვნა დინამიურ სიაში

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

ჩანართი "პარამეტრები".

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

მოთხოვნის პარამეტრების პროგრამულად დაყენება დინამიურ სიაში 1C 8.3

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

მოდით ჩავწეროთ ეს პარამეტრები ფორმის პარამეტრებში და დავამატოთ შემდეგი ხაზები ფორმის მოდულში:

&OnServerProcedureWhenCreatingOnServer(წარუმატებლობა, სტანდარტული დამუშავება) სია. Პარამეტრები. SetParameterValue("პერიოდი" , პარამეტრები. თარიღი) ; სია. Პარამეტრები. SetParameterValue("PriceType", Parameters.PriceType) ; პროცედურის დასასრული