უახლესი სტატიები
მთავარი / ინტერნეტი / 1s 8 შექმნა დინამიური სიიდან. დინამიური სიის პარამეტრები

1s 8 შექმნა დინამიური სიიდან. დინამიური სიის პარამეტრები

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

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

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

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

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

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

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

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

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

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

პარამეტრების ჩანართი

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

&სერვერზე პროცედურა CreationAt Server (შეცდომა, სტანდარტული დამუშავება) ნომენკლატურა Remains.Parameters.SetParameterValue("CurrentDate",CurrentSessionDate()) დასრულების პროცედურა


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

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



&OnServerProcedureOnCreateOnServer(Failure, StandardProcessing)RemainsDate = CurrentSessionDate(); ელემენტი Remains.Parameters.SetParameterValue("CurrentDate", RemainsDate); პროცედურის დასასრული &კლიენტის პროცედურაზე RemainsDateOnChange(Element) Item Remains.Parameters.SetParameterValue("CurrentDate",RemainsDate); დასრულების პროცედურა

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

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

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

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

სახლში შენიშვნები Looking Glass-იდან

04/21/2014 დინამიური სიის მონაცემების მიღება

განხორციელებული ვერსია 8.3.6.1977.

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

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

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

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

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

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

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

  • GetExecutableDataCompositionSchema();
  • GetExecutableDataCompositionSettings().

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

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

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

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

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

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

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


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

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


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

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


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


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


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




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


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


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