1s 8 ატვირთეთ ACS მნიშვნელობების ცხრილში. ACS და გარე მონაცემთა წყაროები

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

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

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

რეგისტრაციის ჟურნალის წაკითხვა

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

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

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

შედეგის შედგენის პროცედურა (DocumentResult, Decryption Data, StandardProcessing) StandardProcessing = False ; // გამორთეთ სტანდარტული ანგარიშის გამომავალი - ჩვენ გამოვიტანთ მას პროგრამულად // მიიღეთ ანგარიშის პარამეტრები, მათ შორის. პერიოდიპარამეტრები = SettingsComposer. GetSettings(); // მიიღეთ ანგარიშის პარამეტრები ParameterPeriod = LinkerSettings. GetSettings(). მონაცემთა პარამეტრები. ელემენტები. იპოვეთ ("პერიოდი"). მნიშვნელობა; ZhurTab = New ValueTable; LogSelection = ახალი სტრუქტურა; // ჟურნალის შერჩევის სტრუქტურის შექმნა// შეავსეთ შერჩევა პერიოდის მიხედვით ჟურნალის შერჩევა. Insert("StartDate", ParameterPeriod.StartDate) ; ჟურნალის შერჩევა. Insert("EndDate", ParameterPeriod.EndDate) ;// მოვლენებისთვის შერჩევის დაყენება EventArray = ახალი მასივი; EventArray. დამატება(" _$Data$_. წაშლა. ახალი " ); მოვლენათა მასივი. დამატება(" _$Data$_. ახალი . პოსტი. ახალი . TotalsPeriodUpdate. ახალი . გააუქმეთ პოსტი. განახლება " ); ჟურნალის შერჩევა. Insert(" მოვლენა", EventArray) ;// ატვირთეთ ჟურნალი // შექმენით და შეავსეთ მონაცემები ანგარიშში გამოსაყვანადჟურტაბი. Სვეტები. Add("დრო"); ჟურტაბი. Სვეტები. დამატება (" ღონისძიებების რაოდენობა" ); ყოველი გვერდისთვის ჟურნალის ციკლიდან გვერდის დრო = საათი (გვერდის თარიღი); მოვლენების გვერდის რაოდენობა = 1; ციკლის დასასრული; // დაჯგუფება შედეგიჟურტაბი. ჩაკეცვა (" მომხმარებლის სახელი, დრო" , " ღონისძიებების რაოდენობა" ) ; // ..............

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

შეგიძლიათ მეტი წაიკითხოთ "UploadRegistrationLog" მეთოდის გამოყენების შესახებ სინტაქსის ასისტენტში.

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

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

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

// დაჯგუფება შედეგიჟურტაბი. ჩაკეცვა (" მომხმარებლის სახელი, დრო" , " ღონისძიებების რაოდენობა" ) ;DecryptionData = NewDataCompositionDecryptionData; // გაშიფვრის მონაცემების შექმნა LayoutLinker = newDataLayoutLayoutLinker; // განლაგების შემქმნელის შექმნა // განლაგების განლაგების ინიცირება მონაცემთა განლაგების სქემის გამოყენებით // და ადრე შექმნილი პარამეტრები და გაშიფვრის მონაცემები DataLayoutScheme = GetLayout(" მონაცემთა ძირითადი განლაგების სქემა Layout Layout = Layout Linker. შესრულება (მონაცემთა განლაგების სქემა, პარამეტრები, გაშიფვრის მონაცემები) ; // შედეგის შედგენა CompositionProcessor = newDataCompositionProcessor; პროცესორის განლაგება. ინიცირება (LayoutLayout, //!!! ცხრილს "ZhurTab" გადავიტანთ განლაგების პროცესორზე!!!ახალი სტრუქტურა (" ჟურნალის რეგისტრაცია", JournalTab), გაშიფვრის მონაცემები); DocumentResult. Clear(); // შედეგის გამოტანა ცხრილის დოკუმენტში OutputProcessor = New OutputProcessorDataCompositionResultInTabularDocument; გამომავალი პროცესორი. SetDocument(DocumentResult) ; გამომავალი პროცესორი. გამომავალი (LayoutProcessor) ; პროცედურის დასასრული

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

ამ ეტაპზე ანგარიშის პარამეტრები დასრულებულია და შეგვიძლია მისი გაშვება საწარმოს რეჟიმში.

ქვედა ხაზი

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

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

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

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

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

მოთხოვნა = ახალი მოთხოვნა (
"აირჩიე
| ცხრილი.ნომენკლატურა,
| მაგიდა.საწყობი
|საიდან
| &TK AS ცხრილი");
Request.SetParameter("TZ", TZ);

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

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

მოდით დეტალურად განვიხილოთ პრობლემა მაგალითზე. არსებობს სტანდარტული ანგარიში: სახელფასო განცხადებები ZiK 8 კონფიგურაციის ორგანიზაციისთვის. აუცილებელია, რომ ანგარიშში გამოთვლების ტიპები დაჯგუფდეს გარკვეულ ჯგუფებად. გაანგარიშება View-Group კორესპონდენციები ინახება გარე მნიშვნელობების ცხრილში. მონაცემთა ძირითადი განლაგების სქემაში ჩასატვირთად, ჩვენ ვქმნით „მონაცემთა ნაკრების ობიექტს“ სახელწოდებით „ჯგუფები“ (სურათი 2). ჩვენ ვამყარებთ კავშირს „შეკითხვის მონაცემთა ნაკრები“ - „დარიცხვები“ გაანგარიშების ტიპის მიხედვით (სურათი 3). "მოთხოვნის მონაცემთა ნაკრები" - "დარიცხვები" არის ინფორმაცია ჯგუფებისთვის, ჩვენ ვშლით ყველა ჩანაწერს. ამის შემდეგ, ჩანართზე „პარამეტრები“ შეგვიძლია გამოვიყენოთ „ჯგუფი“ ველი, რომლის მნიშვნელობა დატვირთულია მონაცემთა გარე წყაროდან (სურათი 4). ანგარიშის შექმნის ფუნქციაში ჩვენ ვავსებთ გარე მონაცემების ჩატვირთვას.

ფუნქცია GenerateReport (Result = Undefined, Decryption Data = Undefined, OutputInReportForm = True) ექსპორტი

// "ჯგუფების" მნიშვნელობების საჭირო ცხრილის მიღება ან ჩამოყალიბება და მისი ჩაწერა ამავე სახელწოდების ცვლადზე

ExternalData = New Structure();// შექმენით და შეავსეთ გარე მონაცემთა სტრუქტურა
ExternalData.Insert(Groups);

UserPanelValue = TypicalReports.GetUserPanelSettingValuesofObject(ThisObject);
DefaultSettings = SettingsComposer.GetSettings();
TypicalReports.GetAppliedSetting(ThisObject);
TypicalReports.GenerateTypicalReport(ThisObject, Result, Decryption Data, OutputToReportForm, ExternalData);
SettingsLinker.LoadSettings(DefaultSetting);
დაბრუნების შედეგი;

საბოლოო ფუნქცია

თუ ჩვენ ვაკეთებდით ანგარიშს ნულიდან, ანგარიშის გენერირების გაშვების კოდი ასე გამოიყურებოდა:

ExternalDataSets = ახალი სტრუქტურა;
ExternalDataSets.Insert("Groups", Groups); //ჯგუფები - მნიშვნელობების სასურველი ცხრილი
DataCompositionSchema = GetLayout("MainDataCompositionSchema"); //ჩვენი განლაგება მონაცემთა ნაკადის სქემით
პარამეტრები = DataCompositionScheme.DefaultSettings;
LayoutLinker = newDataLayoutLayoutLinker;
LayoutLayout = LayoutComposer.Execute(DataLayoutSchema, Settings);
DataCompositionProcessor = newDataCompositionProcessor;
DataCompositionProcessor.Initialize(LayoutLayout, ExternalDataSets);
TabDoc = ახალი TabularDocument;
OutputProcessor = New OutputProcessorDataCompositionResultInTabularDocument;
OutputProcessor.SetDocument(TabDoc);
OutputProcessor.Output(DataCompositionProcessor);

წაიკითხეთ 9660 ერთხელ

გამარჯობა!
დღეს მინდა აღვწერო თემა, რომელსაც ვერ გაიგებთ სკუბას აღჭურვილობის გარეშე :) ;)

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

მაგალითად, მე უაღრესად გირჩევთ „კომპლექსური ანგარიშების შემუშავებას 1C: Enterprise 8.2-ში“. მონაცემთა შედგენის სისტემა“, (უფრო კონკრეტულად, იხილეთ გვერდები 224, 267 და 473)

ACS-ში არსებობს 2 ტიპის მონაცემთა წყარო: შეკითხვა, ობიექტი და კავშირი (ეს ნივთი არ ითვლება, ის არ არის მონაცემთა წყარო, არამედ არსებული მონაცემების დამმუშავებელი). იხილეთ სურათი 1:


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

პირველ რიგში, მე აღვწერ, რისი მიღება გვინდა, როგორც გამომავალი:

მოხსენება, მომხმარებელმა დააწკაპუნა " ფორმა» და ნაჩვენები იყო ნივთების სია (იხ. სურ. 2):

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

Დიახ დიახ! კიდევ ერთი მომენტი: მთელი ეს სია მიღებულია "ობიექტის" მონაცემთა ნაკრებიდან:

გამოსავალი:

  1. გარე ანგარიშის შექმნა;
  2. დაამატეთ ACS განლაგება, მოდით დავარქვათ მას "მთავარი მონაცემთა განლაგების სქემა";
  3. მას ვამატებთ „ობიექტის“ მონაცემების კომპლექტს, ვანიჭებთ სახელს „ნომენკლატურის სია“ (იგივე უნდა იყოს როგორც ნახ. 3-ში);
  4. ჩვენ არ ვატარებთ ზედმეტად ექსპერიმენტებს მოხსენების პარამეტრებთან დაკავშირებით, მოდით, ყველაფერი მარტივი იყოს (იხ. სურ. 4)

კარგი, სამუშაოს ნახევარი შესრულებულია ;)

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

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


მე მივუძღვენი ეს სტატია ამ პრობლემის გადაჭრას!

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

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


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

  1. ჩვენ ვაწარმოებთ შეყვანის მონაცემებს წვდომის კონტროლის სისტემისთვის;
  2. ჩვენ ვაკეთებთ წვდომის კონტროლის სისტემის ინიციალიზაციას;
  3. შედეგს ვაჩვენებთ ფორმაში (ამას მიაქციეთ ყურადღებაც!).

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

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

კოდის ძირითადი ნაწილი ქვემოთ მოცემულია:

მოთხოვნა = ახალი მოთხოვნა; Query.Text = "SELECT | Nomenclature.Name as Nomenclature |FROM | Directory.Nomenclature AS Nomenclature"; NomenclatureList = Request.Run().Upload(); DataSets = ახალი სტრუქტურა ("NomenclatureList", NomenclatureList); //SKD = ​​GetLayout ("MainData LayoutScheme"); SKD = ​​DataCompositionScheme; LayoutComp = ახალი DataLayoutComposer; layoutComp = LayoutComp.Execute(SKD, SKD.DefaultSettings); CompDataProcessor = ახალი DataCompositionProcessor; ProcessorCompData.Initialize(layoutComp, DataSets); გამომავალი = ახალი DataCompositionResultOutputProcessorInTabularDocument; output.SetDocument(FormElements.Result); output.Output(ProcessorCompData, true);

დიახ! აი კიდევ ერთი სასიამოვნო მომენტი!!!

ამ მაგალითში, როგორც ხედავთ (იხ. ნახ. 2), გამომავალი ხდება ფორმაში და არა ცხრილში. დოკუმენტი! და ეს ძალიან კარგია, რადგან ჩვენ შეგვიძლია ვიმუშაოთ ფორმასთან (პროგრამულად ჩავჭრათ ფორმის ელემენტის მოვლენები, გავაკეთოთ ყველა სახის ხრიკი drag and drop და ა.შ.;)

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

იხილეთ დახმარების სისტემა " ელცხრილის დოკუმენტის ველი და მე უბრალოდ მივცემ ამონარიდს 1c Enterprise 8.2 სისტემის ჩაშენებული დოკუმენტაციიდან:

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

კარგი, როგორც ამბობენ, წარმატებებს გისურვებთ ბრძოლაში;)

41
მე ცოტა ხნის წინ გავაკეთე ანგარიში სვეტების განუსაზღვრელი რაოდენობით. მე არ მინდოდა კოდის შეხება, ამიტომ გადავწყვიტე ამის გაკეთება წვდომის კონტროლის სისტემაზე. ამაში არანაირი პრობლემა არ ყოფილა, საჭირო იყო შედეგის თვითნებურ განლაგებაზე გადატანა (თქვენი სათაური +... 27
მიუხედავად იმისა, რომ CDS სტუდენტები ხვდებიან ამას პირველ ან მეორე დღეს, ის უნდა იყოს FAQ განყოფილებაში. განლაგების შესახებ ანგარიშის პროგრამულად გამოტანის მარტივი მაგალითი ნაგულისხმევი პარამეტრების გამოყენებით. //მიიღეთ დიაგრამა... 18
წვდომის კონტროლის სისტემაზე მოხსენებების გენერირებისას, ნაგულისხმევად, ყველა დაჯგუფება გაფართოებულია, მაგრამ ზოგჯერ საჭიროა აჩვენოს ანგარიში ჩაშლილი დაჯგუფებებით დაუყოვნებლივ გენერირების შემდეგ! ანგარიშის მოდულის ეს კოდი საშუალებას გაძლევთ ჩაკეცოთ... 10
ამ ჩანართზე შეგიძლიათ მიუთითოთ რა კავშირები ხდება ორ ან მეტ მონაცემთა ნაკრებს შორის, რა პარამეტრების და პირობების მიხედვით..png 1. „დაკავშირების წყარო“ - მიუთითებს მონაცემთა პირველ კომპლექტს, საწყისი... 9
რა არის საჭირო ანგარიშების შემუშავებისას, რომ შეზღუდული უფლებების მქონე მომხმარებლისთვის ანგარიში გენერირდება მთლიანად უფლებების შემოწმების გარეშე! განსაკუთრებით თუ RLS არის კონფიგურირებული, ამის გაკეთების რამდენიმე გზა არსებობს: 1. დააინსტალირეთ...

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

გახსენით ობიექტის მოდული და შექმენით წინასწარ განსაზღვრული პროცედურა შედეგის შედგენისას (DocumentResult, Decryption Data, StandardProcessing)

ამ პროცედურის ფარგლებში ჩვენ ვაგროვებთ მონაცემებს და შევქმნით ანგარიშს.
შედეგის შედგენის პროცედურაში ჩვენ ვთიშავთ სტანდარტულ დამუშავებას. StandardProcessing = False;
შემდეგ ჩვენ ვქმნით მნიშვნელობების ცხრილს თვითნებური გზით. მნიშვნელობების ცხრილის სვეტების სახელები უნდა ემთხვეოდეს ACS-ში მონაცემთა ნაკრების მომავალ ველებს:


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

  • დიაგრამიდან ვიღებთ ნაგულისხმევ პარამეტრებს.

  • ჩვენ ვაგზავნით გაშიფვრის მონაცემებს შესაბამის ცვლადში.

  • ჩვენ ვქმნით განლაგებას განლაგების შემქმნელის გამოყენებით.

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

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

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

  • ჩვენ ვაჩვენებთ შედეგს ცხრილის დოკუმენტში.
შედეგი არის შემდეგი კოდი:
DataLayoutScheme = GetLayout( "MainDataCompositionSchema"); //პარამეტრები = DataCompositionScheme.DefaultSettings; // - თუ ამას აკეთებთ ისე, როგორც ზემოთ არის ნაჩვენები (რეკომენდებულია ზოგიერთ რესურსზე), მაშინ როდესაც თქვენ შეცვლით პარამეტრებს კლიენტის რეჟიმში // თქვენ ვერ ნახავთ ამ ცვლილებებს, რადგან პარამეტრები ყოველთვის იქნება ნაგულისხმევი. როგორ გავაკეთოთ ეს სწორად - ვარიანტი ქვემოთპარამეტრები = SettingsComposer. GetSettings(); DecryptionData = newDataCompositionDecryptionData; LayoutLinker = newDataLayoutLayoutLinker; LayoutLayout = LayoutLocker. Execute (DataCompositionScheme, Settings, DecryptionData); ExternalDataSet = ახალი სტრუქტურა ( "ღირებულებების ცხრილის მაგალითი", TZOutput); DataCompositionProcessor = newDataCompositionProcessor; DataCompositionProcessor. Initialize (LayoutLayout, ExternalDataSet, DecryptionData); დოკუმენტის შედეგი. Clear(); OutputProcessor = New OutputProcessorDataCompositionResultInTabularDocument; გამომავალი პროცესორი. SetDocument(DocumentResult); გამომავალი პროცესორი. გამომავალი (DataCompositionProcessor); განლაგების სქემის განლაგების დამატება. შეგვიძლია სახელი დავტოვოთ ნაგულისხმევად.

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

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

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

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


Სულ ეს არის. საკმარისად მარტივი, არა?

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