კონტაქტები

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

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

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

ანგარიშის შექმნა და მახასიათებლების დაყენება

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

QueryText = "არჩევა | ორგანიზაციები . ბმული AS ორგანიზაცია,| ორგანიზაციები . ᲥᲘᲚᲐ,| ორგანიზაციები . საგუშაგო |FROMდირექტორია";

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

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

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

  1. მახასიათებლების ტიპების გეგმა "ობიექტების თვისებები".
  2. ინფორმაციის რეესტრი "ობიექტის თვისებების ღირებულებები".

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

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

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

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

" SELECT | ორგანიზაციები . ბმული AS ორგანიზაცია,| ორგანიზაციები . ᲥᲘᲚᲐ,| ორგანიზაციები . საგუშაგო |FROM| დირექტორია . ორგანიზაციები AS ორგანიზაციები | // დამატება. ინსტრუქციები მახასიათებლების მისაღებად |(მახასიათებლები| TYPE (დირექტორი. ორგანიზაციები) | მახასიათებლების ტიპები მახასიათებლების ტიპების გეგმა. ობიექტის თვისებები | FIELD KEY ბმული | FIELD NAME სახელი | FLIGHT TYPE VALUES TypeValues | მახასიათებლები ღირებულებები ინფორმაციის რეესტრი. ობიექტის საკუთრების ღირებულებები | FIELD OBJECT ობიექტი | POLEVIDA საკუთრება | სასარგებლო ღირებულებები მნიშვნელობა )"

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

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

პროგრამული მუშაობა მახასიათებლებით

ანგარიშის ფორმის გახსნისას შეასრულეთ შემდეგი პროგრამის კოდი:

CurrentSettings = ComposerSettings. პარამეტრები; CollectionCollection = CurrentSettings. შერჩევა. ელემენტები; // შერჩევის დამატება დამატებით. ნივთის დეტალებზე "მთავარი საწყობი". [მთავარი საწყობი] // შერჩევის დამატება დამატებით. ნომენკლატურის დეტალებზე "ადგილმდებარეობის ქვეყანა" NovEl = CollectionSelections. დამატება(ტიპი(" Selection ElementData Layout" ) ) ; NewEl.ComparisonType = DataCompositionComparisonType. უდრის; NewEl.LeftValue = . [გამოქვეყნების ქვეყანა]"); NewEl. გამოყენება = მცდარი; // შერჩევის დამატება დამატებით. ნივთის დეტალებზე "დაკავშირებული კონტრაგენტი" NovEl = CollectionSelections. დამატება(ტიპი(" Selection ElementData Layout" ) ); NewEl.ComparisonView = DataCompositionComparisonView. უდრის; NewEl.LeftValue = NewDataCompositionField("ორგანიზაცია . [დაკავშირებული კონტრაგენტი]"); NewEl. გამოყენება = მცდარი;

შემდეგ თუ გადავხედავთ მოხსენების შერჩევას 1C:Enterprise რეჟიმში, დავინახავთ შემდეგ სურათს:

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

NewDataCompositionField(" ორგანიზაცია . [დაკავშირებული კონტრაგენტი]" ) ,

კერძოდ ტექსტი „[დაკავშირებული კონტრაგენტი]“. თუ დავწერთ ასე:

NewDataCompositionField(" ორგანიზაცია . დაკავშირებული კონტრაგენტი" ) ,

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

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

NewDataCompositionField(" . " )

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

დასკვნა

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

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

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

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

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

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

ჩვენ გვაინტერესებს 4 და 5 პარამეტრები ( დაწყებადა Დასასრული). გამოთქმა ასე გამოიყურება:

isNULL((გამოთვალეთ გამოხატვა ("ფასი", "წინა", "წინა") - ფასი), 0)

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

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

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

ამისათვის თქვენ უნდა გამოიყენოთ ფუნქცია: CalculateExpressionWithGroupValueTable() , რომელსაც აქვს პარამეტრები:

  • გამოხატულება- გამოსათვლელი გამოხატულება. აკრიფეთ String. ხაზი შეიძლება შეიცავდეს რამდენიმე გამონათქვამს, რომლებიც გამოყოფილია მძიმეებით. ყოველი გამოხატვის შემდეგ შეიძლება იყოს არჩევითი საკვანძო სიტყვა AS და მნიშვნელობების ცხრილის სვეტის სახელი. მაგალითად: "კონტრაგენტი, თანხა (AmountTurnover) როგორც გაყიდვების მოცულობა."
  • FieldExpressionsGroups- დაჯგუფების ველების გამონათქვამები, გამოყოფილი მძიმეებით. მაგალითად, „კონტრაპარტია, პარტია“;
  • ჩანაწერების შერჩევა- გამოხატულება, რომელიც გამოიყენება დეტალურ ჩანაწერებზე. მაგალითად, "Delete Flag = False";
  • დაჯგუფების შერჩევა- შერჩევა გამოყენებულია ჯგუფურ ჩანაწერებზე. მაგალითად: "Amount(AmountTurnover) > &Parameter1".

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

დანომრეთ სვეტები

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

გადაწყვეტის არსი:

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

ᲛᲜᲘᲨᲕᲜᲔᲚᲝᲕᲐᲜᲘ!

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

შედეგის მისაღებად, თქვენ უნდა შექმნათ გამოთვლილი ველი გამოხატვით "თანამშრომლები" + ფორმატი(NPP,"CHTs=3; CHVN=")და გამოთვლილი ველი Full Name, რომელშიც შეგიძლიათ უბრალოდ მოათავსოთ Employee, შემდეგ ვათავსებთ ველს Სრული სახელირესურსზე გამოსახულებით მაქსიმალური (სრული სახელი)ან უბრალოდ Სრული სახელი- განსხვავების გარეშე

ალტერნატიული ჯგუფები ფერადი ხაზგასმით

სადღაც Mist-ზე ან იმავე 1Cskd.ru-ზე იყო კითხვა იმის შესახებ, თუ როგორ უნდა გამოვყოთ ხაზები, რომლებიც ქმნიან ჯგუფებს სხვადასხვა ფერის მქონე

ეს მიიღწევა გამოთვლილი ველის შექმნით:

CalculateExpression("რაოდენობა (სხვადასხვა ნომენკლატურა)","პირველი", "წინა","ერთად") % 2

ჩვენ ვითვლით ნომენკლატურის ველის სხვადასხვა „ჯგუფების“ რაოდენობას; დაჯგუფების დათვლა შესაძლებელია პარამეტრის მნიშვნელობის დაყენებით Processing Identical OrderValues ​​= „ერთად“

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

რჩება მახასიათებლებით. მახასიათებლები ფრჩხილებში რაოდენობის მიხედვით

იმავე 1CSkd.ru-ზე იყო თემა, რომელშიც ავტორი დახმარებას ითხოვს მოხსენების მომზადებაში, სადაც ერთ-ერთ სვეტში საჭიროა მახასიათებლების სია (ფეხსაცმლის ზომები) მათი რაოდენობით. http://1cskd.ru/2013/05/podskazhite-novichku-v-skd/

ეს მიიღწევა იმავე ფუნქციის გამოყენებით CalculateExpressionWithGroupArray()

ამ მაგალითში ფუნქცია ასე გამოიყურება:

CalculateExpressionWithGroupArray("ნომენკლატურის მახასიათებელი.სახელი +
""("" + ფორმატი(დარჩენილი რაოდენობა,""CHG=0"") + "")""",
,
"ValueFilled (ნომენკლატურის მახასიათებელი)")

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

შეუერთეთ ორი ცხრილი გასაღებით Row = Number

ან რიცხვის ტიპის მნიშვნელობის სტრიქონად გადაქცევის ვარიანტი SKD-ში

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

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

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

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

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

შედეგი ასე გამოიყურება:

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

  1. შექმენით გამოთვლილი ველი TabNumberNumber, გამონათქვამით: გამოთვლა (Employee.Code)
  2. დალაგება ამ ველის მიხედვით

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

ასევე გირჩევთ უყუროთ "ვიდეო გაკვეთილებს ACS-ზე" (მარტივად იძებნება Google-ში)

განვითარებისას ვიყენებ კონვერტირებულს.

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

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


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

ცოტა ისტორია

1C:Enterprise 8 პლატფორმის პირველივე ვერსიაში, ვერსია 8.0, მოხსენებები გაკეთდა ასე:
  1. ერთი ან მეტი მოთხოვნა დაიწერა 1C შეკითხვის ენაზე (SQL-ის მსგავსი ენა, მეტი ამის შესახებ ქვემოთ).
  2. დაიწერა კოდი, რომელიც გადასცემდა შესრულებული მოთხოვნების შედეგებს ცხრილის დოკუმენტში ან სქემაში. კოდს ასევე შეუძლია შეასრულოს სამუშაო, რომელიც შეუძლებელი იყო შეკითხვისას - მაგალითად, მან გამოითვალა მნიშვნელობები ჩაშენებული 1C ენის გამოყენებით.
მიდგომა მარტივია, მაგრამ არა ყველაზე მოსახერხებელი - არის მინიმალური ვიზუალური პარამეტრები, ყველაფერი უნდა იყოს დაპროგრამებული "ხელით". და სრულიად ახალი პლატფორმის "1C:Enterprise 8" იმ დროს ერთ-ერთი კოზირი იყო მინიმიზაცია აპლიკაციის გადაწყვეტაში იმ კოდის ოდენობის, რომელიც უნდა დაიწეროს ხელით, კერძოდ, ვიზუალური დიზაინის საშუალებით. ლოგიკური იქნება, რომ იგივე გზა გავყოლოთ ანგარიშგების მექანიზმში. ეს გაკეთდა ახალი მექანიზმის - მონაცემთა შედგენის სისტემის შემუშავებით.

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

პრობლემის ფორმულირება

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

ორი ენა

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

შეკითხვის ენა

შეკითხვის ენა დაფუძნებულია SQL-ზე და ადვილი შესასწავლია მათთვის, ვინც იცის SQL. მოთხოვნის მაგალითი:

ადვილია SQL მოთხოვნების სტანდარტული სექციების ანალოგების ნახვა - SELECT, FROM, GROUP BY, ORDER BY.

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

  • ველებზე წვდომა წერტილის გამოყენებით. თუ ცხრილის ველები არის საცნობარო ტიპის (ისინი ინახავს ბმულებს სხვა ცხრილის ობიექტებთან), დეველოპერს შეუძლია მიმართოს მათ მოთხოვნის ტექსტში „.“-ის საშუალებით და სისტემა არ ზღუდავს ბუდობრივი დონეების რაოდენობას. ასეთი ბმულების (მაგალითად, მომხმარებლის შეკვეთა. შეთანხმება. ორგანიზაცია. ტელეფონი).
  • შედეგების მრავალგანზომილებიანი და მრავალდონიანი ფორმირება. ჯამები და ქვეჯამობები ყალიბდება დაჯგუფებისა და იერარქიის გათვალისწინებით, დონეების გავლა შესაძლებელია შეჯამებით ნებისმიერი თანმიმდევრობით და უზრუნველყოფილია ჯამების სწორი აგება დროის განზომილებების მიხედვით.
  • ვირტუალური ცხრილების მხარდაჭერა. სისტემის მიერ მოწოდებული ვირტუალური ცხრილები საშუალებას გაძლევთ მიიღოთ თითქმის მზა მონაცემები აპლიკაციის ამოცანების უმეტესობისთვის რთული მოთხოვნების შექმნის საჭიროების გარეშე. ამრიგად, ვირტუალურ ცხრილს შეუძლია მიაწოდოს მონაცემები პროდუქტის ნაშთების შესახებ პერიოდების მიხედვით დროის გარკვეულ მომენტში. ამავდროულად, ვირტუალური ცხრილები მაქსიმალურად იყენებენ შენახულ ინფორმაციას, მაგალითად, ადრე გამოთვლილ ჯამებს და ა.შ.
  • დროებითი მაგიდები. შეკითხვის ენა საშუალებას გაძლევთ გამოიყენოთ დროებითი ცხრილები შეკითხვებში. მათი დახმარებით შეგიძლიათ გააუმჯობესოთ შეკითხვის შესრულება, ზოგიერთ შემთხვევაში შეამციროთ დაბლოკვის რაოდენობა და გააადვილოთ მოთხოვნის ტექსტის წაკითხვა.
  • პარტიული მოთხოვნები. დროებით ცხრილებთან მუშაობა უფრო მოსახერხებელი რომ გახდეს, შეკითხვის ენა მხარს უჭერს ჯგუფური მოთხოვნების მუშაობას - ამრიგად, დროებითი ცხრილის შექმნა და მისი გამოყენება მოთავსებულია ერთ შეკითხვაში. Batch მოთხოვნა არის მოთხოვნების თანმიმდევრობა, რომლებიც გამოყოფილია მძიმით (";"). პარტიაში მოთხოვნები სრულდება ერთმანეთის მიყოლებით. სერიული მოთხოვნის შესრულების შედეგი, გამოყენებული მეთოდიდან გამომდინარე, იქნება ან შედეგი, რომელიც დაბრუნდა ჯგუფში ბოლო მოთხოვნით, ან შედეგების მასივი სერიის ყველა მოთხოვნიდან იმ თანმიმდევრობით, რომლითაც მიჰყვება მოთხოვნები ჯგუფში. .
  • საცნობარო ველების წარმოდგენების მოძიება. თითოეულ ობიექტის ცხრილს (რომელშიც ინახება საცნობარო წიგნი ან დოკუმენტი) აქვს ვირტუალური ველი - "ნახვა". ეს ველი შეიცავს ობიექტის ტექსტურ წარმოდგენას და ამარტივებს ანგარიშის შემქმნელს. ასე რომ, დოკუმენტისთვის, ეს ველი შეიცავს ყველა ძირითად ინფორმაციას - დოკუმენტის ტიპის სახელს, მის ნომერს და თარიღს (მაგალითად, „გაყიდვა 000000003 07/06/2017 17:49:14“), დეველოპერის შენახვა გათვლილი ველის დაწერა.
  • და ა.შ.
მოთხოვნის მექანიზმი ავტომატურად ცვლის მოთხოვნას იმ როლების გათვალისწინებით, რომელსაც ეკუთვნის მომხმარებელი, რომლის სახელითაც შესრულებულია მოთხოვნა (ანუ მომხმარებელი დაინახავს მხოლოდ იმ მონაცემებს, რომელთა ნახვის უფლება აქვს) და ფუნქციონალურ ვარიანტებს (ანუ შესაბამისად აპლიკაციის გადაწყვეტის ფუნქციაში კონფიგურირებულით).

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

Მაგალითად:

  • არჩევა. ეს წინადადება აღწერს ველებს, რომელთა არჩევასაც მომხმარებელი შეძლებს გამოსაყვანად. ამ საკვანძო სიტყვის შემდეგ ჩამოთვლილია ველების მეტსახელები ძირითადი შეკითხვის შერჩევის სიიდან, რომლებიც ხელმისაწვდომი იქნება კონფიგურაციისთვის, გამოყოფილი მძიმეებით. მაგალითი: (აირჩიეთ საქონელი, საწყობი)
  • სად. აღწერილია ველები, რომლებზეც მომხმარებელს შეუძლია გამოიყენოს არჩევანი. ეს წინადადება იყენებს ცხრილის ველებს. შერჩევის სიის ველის მეტსახელების გამოყენება დაუშვებელია. კავშირის თითოეული ნაწილი შეიძლება შეიცავდეს საკუთარ WHERE ელემენტს. მაგალითები: (WHERE Item.*, Warehouse), (WHERE Document.Date >= &StartDate, Document.Date<= &ДатаКонца}
  • და ა.შ.
გაფართოებების გამოყენების მაგალითი:

მონაცემთა კომპოზიციის გამოხატვის ენა

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

მაგალითი:

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

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

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

შეკითხვის დიზაინერის გაშვების შედეგი იქნება მოთხოვნის ტექსტი (1C: Enterprise შეკითხვის ენაზე). საჭიროების შემთხვევაში ეს ტექსტი შეიძლება ხელით დარეგულირდეს:

მონაცემთა განლაგების სქემაში შეიძლება იყოს რამდენიმე მონაცემთა ნაკრები, მონაცემთა ნაკრები შეიძლება იყოს დაკავშირებული განლაგებაში ნებისმიერი გზით, შეიძლება დაემატოს გამოთვლილი ველები, შეიძლება დაზუსტდეს ანგარიშის პარამეტრები და ა.შ. აღსანიშნავია შეკითხვის მექანიზმის საინტერესო მახასიათებელი 1C:Enterprise-ში. მოთხოვნები საბოლოოდ ითარგმნება SQL-ის დიალექტზე, რომელიც სპეციფიკურია DBMS-ისთვის, რომლითაც აპლიკაცია პირდაპირ მუშაობს. ზოგადად, ჩვენ ვცდილობთ მაქსიმალურად გამოვიყენოთ DBMS სერვერების შესაძლებლობები (ჩვენ შეზღუდული ვართ იმით, რომ ვიყენებთ მხოლოდ იმ შესაძლებლობებს, რომლებიც ერთდროულად ხელმისაწვდომია ყველა DBMS-ში, რომელსაც მხარს უჭერს 1C: Enterprise პლატფორმა - MS SQL, Oracle, IBM DB2. , PostgreSQL). ამრიგად, შეკითხვის დონეზე გამოთვლილ ველებში, ჩვენ შეგვიძლია გამოვიყენოთ მხოლოდ ის ფუნქციები, რომლებიც ითარგმნება SQL-ში.

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


პერსონალური ველების დამატება

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


ანგარიშის დიზაინერი


გაშვების ანგარიში

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

ანგარიშის შექმნისა და გენერირების პროცესი შეიძლება მოკლედ აღწერილი იყოს შემდეგნაირად:

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


ანგარიშის გენერირების პროცესი ACS მექანიზმის გამოყენებით

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

მორგებული პარამეტრები

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


ჩვენების რეჟიმის დაყენება დიზაინის დროს


პარამეტრის ჩვენება სწრაფი წვდომის რეჟიმში მუშაობის დროს (ღილაკის გენერირება)

განვითარების გეგმები

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

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

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

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

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

მოდით დავამატოთ შეკითხვის მონაცემთა ნაკრები. ამისათვის ჩვენ უნდა გავააქტიუროთ root ელემენტი "Query Builder". მივმართოთ დაგროვების რეესტრის ვირტუალურ ცხრილს „ნაშთები და ბრუნვები“. რას ვხედავთ?

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

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

SELECTION WHEN Product RemainingRemainingsAndTurnover.Nomenclature = Value(Directory.Nomenclature.EmptyLink) THEN Value(Directory.Nomenclature.შამპუნი) ELSE Product RemainingRemainingAndTurnover.Nomenclature END

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

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

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

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

შედით საიტზე, როგორც სტუდენტი

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

მონაცემთა შემადგენლობის სისტემა 1C 8.3 დამწყებთათვის: შედეგების დათვლა (რესურსები)

ამ გაკვეთილის მიზანი იქნება:

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

შექმენით ახალი ანგარიში

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

Დოკუმენტის ტიპი - გარე ანგარიში:

ანგარიშის დაყენების ფორმაში ჩაწერეთ სახელი " გაკვეთილი 3"და დააჭირეთ ღილაკს" ღია მონაცემთა შემადგენლობის დიაგრამა":

დატოვეთ ნაგულისხმევი სქემის სახელი და დააჭირეთ ღილაკს " მზადაა":

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

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

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

"ჩანართზე" მაგიდები"გაათრიეთ მაგიდა" საჭმელიპირველი სვეტიდან მეორემდე:

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

ასე აღმოჩნდა:

Დააჭირეთ ღილაკს " კარგი" - მოთხოვნის ტექსტი ავტომატურად შეიქმნა:

ანგარიშის პრეზენტაციის პარამეტრების შექმნა

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

აირჩიეთ ანგარიშის ტიპი " სია..." და დააჭირეთ ღილაკს " Უფრო":

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

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

და აი, დიზაინერის მუშაობის შედეგი. ჩვენი მოხსენების იერარქია:

  • ანგარიში მთლიანად
  • დაჯგუფება "ფერი"
  • დეტალური ჩანაწერები - ხაზები საკვების სახელებით

ანგარიშის შენახვა (ღილაკი დისკეტი) და დახურვის გარეშეჩვენ დაუყოვნებლივ გავხსნით კონფიგურატორს მომხმარებლის რეჟიმში. ასე აღმოჩნდა:

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

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

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

მშვენიერია, ეს ბევრად უკეთესია.

მოდით შევაჯამოთ კალორიული შემცველობა

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

ამ მიზნით არსებობს რესურსების გაანგარიშების მექანიზმი.

გადადით ჩანართზე" რესურსები"და გადაიტანეთ ველი" კალორიული შემცველობა„(შეჯამებას ვაპირებთ) მარცხენა სვეტიდან მარჯვნივ.

ამ შემთხვევაში, ველში აირჩიეთ გამონათქვამი ჩამოსაშლელი სიიდან " რაოდენობა (კალორია)", რადგან ჯამი იქნება ყველა ელემენტის ჯამი, რომელიც შედის ჯამში:

ჩვენ ვინახავთ და ვქმნით ანგარიშს:

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

მოდით შევაჯამოთ (საშუალო) კალორიების მიხედვით

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

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

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

გადადით ჩანართზე" გამოთვლილი ველები“ და დააჭირეთ მწვანეპლუს ნიშანი:

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

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

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

ასე აღმოჩნდა:

ჩვენ ვინახავთ და ვქმნით ანგარიშს:

ველი გამოჩნდა და ჩვენ ვხედავთ, რომ მისი მნიშვნელობები არის "კალორიის" ველის მნიშვნელობები. დიდი!

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

უფრო მეტიც, სვეტში " გამოხატულება"აირჩიე" საშუალო (საშუალო კალორია)":

ჩვენ ვინახავთ და ვქმნით ანგარიშს:

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

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

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

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

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

ელემენტი " ავტო" გაფართოვდა შემდეგ ველებში:

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



მოგეწონათ სტატია? Გააზიარე