ACS არ არის მხოლოდ მოხსენებებისთვის - უნივერსალური შერჩევის განხორციელება. შერჩევის გამოყენება SKD-ში SKD მნიშვნელობის გადაცემა შერჩევისას

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

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

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

არჩევა

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

Მაგალითად:

(აირჩიეთ საქონელი, საწყობი)

ველის მეტსახელის შემდეგ შეიძლება იყოს სიმბოლოების „.*“ კომბინაცია, რაც მიუთითებს ამ ველიდან ბავშვის ველების გამოყენების შესაძლებლობაზე.

მაგალითად, ჩანაწერი Nomenclature.* მიუთითებს "Nomenclature" ველის შვილობილი ველების გამოყენების შესაძლებლობას (მაგალითად, ველი "Nomenclature.Code"). SELECT ელემენტი შეიძლება გამოჩნდეს მხოლოდ პირველი შეერთების მოთხოვნაში.

სად

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

(WHERE ნომენკლატურა.*, საწყობი)

მარტივი მაგალითი

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

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

SELECT ReferenceNomenclature.Link AS Nomenclature, SalesTurnover.Counterparty, SalesTurnover.Counterparty contract, SalesTurnover.QuantityTurnover AS Quantity, SalesTurnover.CostTurnover AS Cost FROM Reference.NomenclatureSNOmenclaturesActionOver Referencen AS SalesTurnover PO SprNomenclature.Link = SalesTurnover. ნომენკლატურა

აი შედეგი:

კონტრაპარტიული Შეთანხმება ნომენკლატურა რაოდენობა ჯამი
null null _ტესტი 1 null null
შპს "რქები და ჩლიქები" შეთანხმება 1 ჩუსტები 10 1200
"გაზპრომი" მაგარი კონტრაქტია Ფეხსაცმელი 5 13000
null null კალოშები null null
null null ფიქალები null null

ამ მაგალითში არ იყო გაყიდული ნივთები: „ზედასავალი“ და „ჩუსტები“

და ყველაფერი კარგად იქნება, თუ ნიმუშს დავაჯგუფებთ კონტრაგენტის მიხედვით, მაშინ ყველა გაუყიდველი ნივთი მოხვდება ცალკეულ ჯგუფში, სადაც Counterparty = Null, მაგრამ კლიენტს სურს ჰქონდეს შემთხვევითი შერჩევა ანგარიშში კონტრაგენტის ველის მიხედვით (ბუნებრივია, ეს ნიშნავს კონტრაგენტს გაყიდვების რეესტრიდან). Რა უნდა გავაკეთო? ყოველივე ამის შემდეგ, სინამდვილეში, ჩვენ მხოლოდ ცხრილის გაფილტვრა გვჭირდება Გაყიდვების. თუ ჩვენ ვიყენებთ ავტომატურ დასრულებას ACS კონსტრუქტორში, მაშინ ხელმისაწვდომი შერჩევის ველები მოიცავს ველს კონტრაპარტიული, როგორც ჩანს, ყველაფერი კარგადაა, მაგრამ კონტრაგენტის მიერ შერჩევით ანგარიშის შესრულებისას, ჩვენ დავკარგავთ ყველა ჩანაწერს ნივთთან კავშირიდან. მაგალითად, დავაყენოთ არჩევანი: კონტრაპარტიული = შპს "რქები და ჩლიქები". შედეგი ასე გამოიყურება:

სულაც არ არის ის, რაც გვჭირდება, არა?

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

არსებობს გამოსავალი: ამისთვის შეკითხვის შემქმნელიჩანართზე მონაცემთა შემადგენლობა => მაგიდებიდაამატეთ პირობების ველი ვირტუალური ცხრილის პირობებს გაყიდვების ბრუნვადა შეცვალოს მისი მეტსახელი CounterpartySelection

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


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

SELECT SprNomenclature.Link AS Nomenclature, SalesTurnover.Counterparty AS Counterparty, SalesTurnover.Counterparty AS კონტრაქტის ხელშეკრულება, SalesTurnover.QuantityTurnover AS >Quantity, SalesTurnover.CostATIONStTurnover. Contract Counterparty a Presentation, PRESENTATIONLINK(SalesTurnover.Counterparty ) AS CounterpartyPresentation, SprNomenclature.Presentation AS NomenclaturePresentation FROM Directory.Nomenclature AS SprNomenclature Sa LEFT CONNECTION რეგისტრაცია Accumulations.Sales.Turnover(&P , , , Counterparty = &P3NomenclatureSa. კლატურა

და შესაბამისად შედეგი:

კონტრაპარტიული Შეთანხმება ნომენკლატურა რაოდენობა ჯამი
null null _ტესტი 1 null null
შპს "რქები და ჩლიქები" შეთანხმება 1 ჩუსტები 10 1200
null null Ფეხსაცმელი null null
null null კალოშები null null
null null ფიქალები null null

Test1 არის ჯგუფი ნომენკლატურის დირექტორიაში, რომელშიც ყველაფერი მდებარეობს

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

შეჯამება

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

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

გამოყენებული პროგრამული უზრუნველყოფა

  • სკრინშოტის პროგრამა SnimOK!
  • XML ფაილის რედაქტორი

რისთვის შეიძლება გამოყენებულ იქნას SKD?

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

Სინამდვილეში ACS-ის შესაძლებლობები სცილდება უნივერსალური ანგარიშების შექმნას.

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

რა ამოცანებისთვის იქნება ეს სასარგებლო?

მივცეთ მაგალითები ტიპიური კონფიგურაციებიდან:

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

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

შემთხვევითი შერჩევის შექმნა კონტროლირებადი ფორმით ACS-ის გამოყენებით

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

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

მონაცემთა ბაზიდან მონაცემთა მიღება ფილტრაციის საშუალებით ACS შერჩევით

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

გამოიყენება "საშინელი" ობიექტი - ProcessorOutputResultCompositionDataIntoValueCollection.

სინამდვილეში, ყველაფერი ასე რთული არ არის - 8 წუთში ჩვენ პრობლემას მოვაგვარებთ.

SKD შერჩევის შენახვა საინფორმაციო ბაზაში

გაკვეთილზე განვიხილავთ ACS მშენებლის პარამეტრების შენახვა Value Store-ის გამოყენებით.

მოდით გაერკვნენ, თუ როგორ უნდა გადავჭრათ ეს პრობლემა "1C: საწარმოთა მენეჯმენტი 1.3" კონფიგურაციაში.

ისიამოვნეთ ყურებით! :)

ზოგადად, ACS გთავაზობთ უამრავ შესაძლებლობას.

აქ მოცემულია რამდენიმე „ხრიკი“, რომლის აღწერის დროც კი არ გვქონდა კურსის გვერდზე.

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

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

ამავდროულად, მნიშვნელოვანია სწორი შედეგების მიღება - ამას აქვს თავისი თავისებურებები, თუ არსებობს რამდენიმე წყარო

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

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

ACS-ის დახმარებით შეგიძლიათ ორგანიზება ანგარიშში პერიოდის ყველა თარიღის ჩვენებადა არა მხოლოდ ის, რისთვისაც იყო მონაცემები ანგარიშში (თარიღების დამატება პროგრამირების გარეშე, მხოლოდ დაშვების კონტროლის სისტემის შესაძლებლობებით)

ACS-ის გამოყენებით შეგიძლიათ მოაწყოთ წყობილი დაჯგუფებები პერიოდების დამატებით (წელი/კვარტალი/თვე და ა.შ.)

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

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

როგორ გავაერთიანოთ რამდენიმე პირობა OR-ის გამოყენებით მოხსენებაში? ეს ვარიანტი, მაგალითად, არ არის ხელმისაწვდომი ანგარიშის შემქმნელში, მაგრამ ხელმისაწვდომია ACS-ში

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

რა თქმა უნდა, არის ნიუანსები, რომლებსაც ყურადღება უნდა მიექცეს.

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

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

ანგარიშში დოკუმენტის ჩამწერის დეტალების დამატებისას, სისტემა ზოგჯერ აწარმოებს „არასწორ“ გახსნისა და დახურვის ბალანსებს.

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

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

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

მხარდაჭერა - 2 თვე. კურსის ფარგლები - 34 სასწავლო საათი.

ნუ გადადებთ სწავლას!

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

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

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

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

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

და შერჩევის ჩანართზე დაამატეთ კონტრაგენტი არჩევანს:

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

ახლა შევქმნათ ღონისძიების დამმუშავებლები OnOpen ფორმისთვის და დამმუშავებელი Run ღილაკზე დაწკაპუნებისთვის, კოდი წარმოდგენილია ქვემოთ:

პერემის განლაგება; Procedure ButtonExecutePress(Button) Result.Clear(); LayoutLinker = newDataLayoutLayoutLinker; Layout Layout = Layout Composer.Execute(Layout, Composer.GetSettings(), Type("DataCompositionLayoutGeneratorForValueCollection")); CompositionProcessor = newDataCompositionProcessor; LayoutProcessor.Initialize(LayoutLayout); გამომავალი პროცესორი = მონაცემთა ღირებულებების კრებულში შედგენის შედეგის ახალი გამომავალი პროცესორი; OutputProcessor.SetObject(Result); OutputProcessor.Output(CompositionProcessor); თუ FormElements.Result.Columns.Quantity() = 0 მაშინ FormElements.Result.CreateColumns(); დაასრულე თუ; EndProcedure ProcedureOnOpen() Layout = GetLayout("Layout"); SourceAvailableSettings = ახალი SourceAvailableSettingsDataComposition(Layout); Linker.Initialize(SourceAvailableSettings); Linker.LoadSettings(Layout.DefaultSettings); პროცედურის დასასრული

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

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

კონონოვი სერგეი