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

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

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

1C შეკითხვის ენის ფუნქციები

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

1. ფუნქცია თარიღი დრო- ეს ფუნქცია ქმნის მუდმივ ველს "თარიღი" ტიპის.

Სინტაქსი: თარიღი დრო (<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)

გამოყენების მაგალითი:

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

Სინტაქსი: დიფერენცირებული(<Дата1>, <Дата2>, <Тип>)

გამოყენების მაგალითი:

Query.Text = "SELECT | DIFFERENCEDATE(DATETIME(2015, 4, 17), DATETIME(2015, 2, 1), DAY) | დღეების რაოდენობა";

3. ფუნქცია VALUE- ადგენს მუდმივ ველს წინასწარ განსაზღვრული ჩანაწერით მონაცემთა ბაზიდან; ასევე შეგიძლიათ მიიღოთ ნებისმიერი ტიპის ცარიელი ბმული.

სინტაქსი: VALUE(<Имя>)

გამოყენების მაგალითი:

Request.Text = "SELECT //წინასწარ განსაზღვრული ელემენტი | VALUE(Directory.Currencies.Dollar) AS Dollar, // ცარიელი ბმული | VALUE(Document. Receipt of Goods and Services.EmptyLink) როგორც ქვითარი, //გადარიცხვის ღირებულება | VALUE(გადარიცხვა იურიდიული ფიზიკური პირი. ინდივიდუალური) AS ინდივიდუალური, //წინასწარ განსაზღვრული ანგარიში | VALUE(ანგარიშთა სქემა. თვითმმართველობის უზრუნველყოფა. მასალები) AS ანგარიში_10" ;

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

Სინტაქსი: არჩევა როდის<Выражение>მაშინ<Выражение>წინააღმდეგ შემთხვევაში<Выражение>ᲓᲐᲡᲐᲡᲠᲣᲚᲘ

გამოყენების მაგალითი:

Request.Text = //თუ თანხა 7500-ზე მეტია, მაშინ უნდა იყოს 300 რუბლის ფასდაკლება, //ასე რომ, თუ პირობა გააქტიურებულია, მაშინ ფუნქცია //აბრუნებს Amount - 300 //წინააღმდეგ შემთხვევაში მოთხოვნა დაბრუნდება უბრალოდ Amount. "SELECT | SELECT | WHEN TCreceipts.Amount > 7500 | THEN TCreceipts.Amount - 300 | ELSE TCReceipts.Amount | END AS Amount ფასდაკლებით |FROM | Document.Seceipts of Goodsservice.TCGoodsipts"

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

Სინტაქსი: EXPRESS (ველის სახელი, როგორც TypeName)

გამოყენების მაგალითი:

Query.Text = "SELECT VARIOUS | Sales.Registrar.Number, | SELECT | WHEN Sales.Registrar LINK Document.Expense | THEN EXPRESS(Sales.Registrar AS Document.Expense) | ELSE SELECT | WHEN Sales.Registrar LINK Document.Expense | THEN EXPRESS(Sales.Registrar AS Document.Implementation) | END | ... | END AS Number | FROM | რეგისტრაცია დაგროვება. შესყიდვები AS Purchases";

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

გამოყენების მაგალითი:

Query.Text = "SELECT | EXPRESS(Nomenclature.Comment AS Line(300)) AS კომენტარი, | EXPRESS(Nomenclature.Sum AS Number(15,2)) AS Sum |FROM | Directory.Nomenclature AS Nomenclature";

6. ISNULL ფუნქცია(ალტერნატიული მართლწერა ISNULL) - თუ ველი არის NULL ტიპის, მაშინ ის იცვლება ფუნქციის მეორე პარამეტრით.

Სინტაქსი: ISNULL(<Поле>, <ПодставляемоеЗначение>)

გამოყენების მაგალითი:

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

Query.Text = //აირჩიეთ მთელი ელემენტი და მისი ნაშთები //თუ რომელიმე პუნქტში ბალანსი არ არის, მაშინ იქნება ველი //NULL რომელიც შეიცვლება მნიშვნელობით 0 "SELECT | No. Link, | ISNULL (ProductsInStockRemains.InStockRemaining, 0) AS Remainder | FROM | Directory.Nomenclature AS No.

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

Სინტაქსი: ᲨᲔᲡᲠᲣᲚᲔᲑᲐ(<НаименованиеПоля>)

გამოყენების მაგალითი:

Query.Text = "SELECT | წარმოდგენა (FreeRemainingRemains.Nomenclature) AS ნომენკლატურა, | REPRESENTATION(FreeRemainingRemaining. Warehouse) AS Warehouse, | FreeRemainingRemaining.InStockRemaining |FROM |RemainingRemaining.FROM |RemainingRemainingAS"

აშენდება 1C შეკითხვის ენაზე

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

1. სამშენებლო ლინკი- არის ლოგიკური ოპერატორი მიმართვის ტიპის შესამოწმებლად. ყველაზე ხშირად გვხვდება რთული ტიპის ველის კონკრეტული ტიპის შემოწმებისას. Სინტაქსი: ᲑᲛᲣᲚᲘ<Имя таблицы>

გამოყენების მაგალითი:

Request.Text = //თუ ჩამწერის მნიშვნელობის ტიპი არის დოკუმენტი Receipt, //მაშინ მოთხოვნა დააბრუნებს "საქონლის მიღებას", წინააღმდეგ შემთხვევაში "საქონლის გაყიდვები" "SELECT | SELECT | WHEN Remaining.Registrar LINK Document.Receipt of GoodsServices | შემდეგ ""მიღება" | სხვა ""მოხმარება"" | დასრულება, როგორც გადაადგილების ტიპი | FROM | დაგროვების რეესტრი. დარჩენილი პროდუქტები საწყობებში როგორც რჩება" ;

2. დიზაინი BETWEEN- ეს ოპერატორი ამოწმებს არის თუ არა მნიშვნელობა მითითებულ დიაპაზონში.

Სინტაქსი: ᲨᲝᲠᲘᲡ<Выражение>და<Выражение>

გამოყენების მაგალითი:

Request.Text = //მიიღეთ მთელი ნომენკლატურა, რომლის კოდი დევს 1-დან 100-მდე დიაპაზონში "SELECT | Nomenclature.Link |FROM | Directory.Nomenclature AS Nomenclature |WHERE | Nomenclature.Code BETWEEN 1 AND 100" ;

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

Სინტაქსი: IN(<СписокЗначений>), იერარქიაში (<СписокЗначений>)

გამოყენების მაგალითი:

მოთხოვნა.ტექსტი = //აირჩიეთ ანგარიშის ყველა ქვეანგარიში "SELECT | თვითმხარდაჭერა. მიბმა AS ანგარიშზე | FROM | ანგარიშთა სქემა. თვითმმართველობის AS თვითმხარდაჭერით | WHERE | თვითმხარდაჭერით. ბმული HIERARCHY VALUE-ში (Chart of ანგარიშები. თვითდახმარება. საქონელი)“;

4. დიზაინი მსგავსი- ეს ფუნქცია საშუალებას გვაძლევს შევადაროთ სტრიქონი სტრიქონის შაბლონს.

Სინტაქსი: მოწონება"<ТекстШаблона>"

მწკრივის ნიმუშის პარამეტრები:

% - თანმიმდევრობა, რომელიც შეიცავს ნებისმიერი რაოდენობის თვითნებურ სიმბოლოებს.

ერთი თვითნებური პერსონაჟი.

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

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

გამოყენების მაგალითი:

Query.Text = //იპოვეთ მთელი ნომენკლატურა, რომელიც შეიცავს ფუძეს TABUR და იწყება //მცირე ან დიდი ასო t "SELECT | ნომენკლატურა. ბმული | FROM | დირექტორია. ნომენკლატურა როგორც ნომენკლატურა | WHERE | პროდუქტები. სახელი LIKE "" [Tt ]abur%""" ;

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

Სინტაქსი: ALLOWED იწერება საკვანძო სიტყვის SELECT შემდეგ

გამოყენების მაგალითი:

Request.Text = "არჩევა ნებადართული | კონტრაგენტები. ბმული | FROM | დირექტორია. კონტრაგენტები როგორც კონტრაგენტები";

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

Სინტაქსი: VARIOUS იწერება საკვანძო სიტყვის SELECT შემდეგ

გამოყენების მაგალითი:

Request.Text = //ირჩევს ჩანაწერებს, რომლებზეც მკითხველს აქვს უფლება "SELECT VARIOUS | Counterparties.Name |FROM | Directory. Counterparties AS Counterparties" ;

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

გამოყენების მაგალითი:

Request.Text = //ირჩევს სხვადასხვა ჩანაწერებს, რომლებზეც მკითხველს აქვს უფლება "SELECT ALLOWED VARIOUS | Counterparties.Name |FROM | Directory. Counterparties AS Counterparties";

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

სინტაქსი: FIRST<число>

გამოყენების მაგალითი:

Request.Text = //აირჩიეთ პირველი 4 CCD ნომერი დირექტორიადან "SELECT FIRST 4 | CCD Numbers. Link | FROM | Directory. CCD Numbers AS CCD Numbers";

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

Სინტაქსი: ცვლილებისთვის<НаименованиеТаблицы>

გამოყენების მაგალითი:

Query.Text = "SELECT | უფასო ნარჩენები. ნომენკლატურა, | უფასო ნარჩენები. საწყობი, | უფასო ნარჩენები. დარჩენილია მარაგში | FROM | დაგროვების რეგისტრაცია. უფასო ნარჩენები. ნარჩენები, როგორც უფასო ნარჩენები, დაგროვების რეგისტრაცია | დაგროვების მიზნით | უფასო ნარჩენები. ნარჩენები";

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

Სინტაქსი: ᲓᲐᲚᲐᲒᲔᲑᲐ<НаименованиеПоля>ავტომატური შეკვეთა

გამოყენების მაგალითი:

Query.Text = "SELECT | უფასო ნარჩენები. ნომენკლატურა AS ნომენკლატურა, | თავისუფალი ნარჩენები. საწყობი AS საწყობი, | თავისუფალი დარჩენილი ნარჩენები. საწყობში დარჩენილი | FROM | რეგისტრაცია დაგროვება. უფასო ნარჩენები. დარჩენილი AS უფასო ნარჩენები | BDERORma | |ნომენკლატურა |AUTO ORDER VANIE";

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

Სინტაქსი: ᲘᲗ ᲓᲐᲯᲒᲣᲤᲔᲑᲐ<НаименованиеПоля1>, .... , <НаименованиеПоляN>

გამოყენების მაგალითი:

Query.Text = "SELECT | ItemsInWarehouses.Nomenclature AS Nomenclature, | ItemsIn Warehouses.Warehouse, | SUM(ItemsInWarehouses.InStock) AS INSTOCK |FROM | რეგისტრაცია დაგროვება. ItemsIn Warehouses AS. ItemsIn Warehouses AS | ItemsInWarehouses. საწყობი აჰ.საწყობი" ;

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

Სინტაქსი: ქონა<агрегатная функция с условием>

გამოყენების მაგალითი:

Query.Text = //ირჩევს დაჯგუფებულ ჩანაწერებს, სადაც InStock ველი 3-ზე მეტია "SELECT | ItemsInStocks.Nomenclature AS Nomenclature, | ItemsInWarehouses.Warehouse, | SUM(ItemsInStocks.InStock) AS INSTOCK.FROM | RegisterAccumStocksInStock | ჯგუფის მიხედვით | პროდუქტები საწყობებში.ნომენკლატურა, | პროდუქცია საწყობებში.საწყობი | |ხელმისაწვდომია | AMOUNT(პროდუქტები საწყობებში. მარაგში) > 3" ;

12. სამშენებლო INDEX BY- გამოიყენება შეკითხვის ველის ინდექსირებისთვის. ინდექსირებასთან დაკავშირებული შეკითხვას უფრო მეტი დრო სჭირდება, მაგრამ აჩქარებს ძიებას ინდექსირებული ველებში. გამოყენება შესაძლებელია მხოლოდ ვირტუალურ ცხრილებში.

Სინტაქსი: ინდექსი BY<Поле1, ... , ПолеN>

გამოყენების მაგალითი:

Query.Text = "SELECT | Ts.NameOS, | Ts.FolderNumber, | Ts.CodeOS, | Ts.Term, | Ts.Type | PLACE DataTs | FROM | &Ts AS Ts | | INDEX BY | Ts.NameOS, | Ts .CodeOS";

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

Სინტაქსი: სად<Условие1 ОператорЛогСоединения УсловиеN>

გამოყენების მაგალითი:

Query.Text = //შერჩეულია CompensationRemaining-ის მქონე ყველა ჩანაწერი<>0 და //AmountForCalcCompRemaining > 100 "SELECT | CompensationRPORemains.Counterparty, |CompensationRPORemains.Child, | CompensationRPORemains.CompensationRemains.CompensationRPORemains.AmountForCalcCompRemains.AmountForCalcCompRemains.AmountForCalcCompRemains.AmountForCalcCompRemains.AmountForCalcCompRemainsz.AmountForCalcCompRemainsz.RegistrationROMpens.Place. RPRemains | WHERE |კომპენსაციაRPORრჩება.კომპენსაციადარჩება<>0 | და CompensationRPORemains.AmountForCalcCompRemaining> 100";

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

Სინტაქსი: შედეგები<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>BY<ОБЩИЕ> <Поле1, ... , ПолеN>

გამოყენების მაგალითი:

Request.Text = "SELECT | გათვლები. კონტრაგენტის ხელშეკრულება. ხელშეკრულების ტიპი როგორც კონტრაქტის ტიპი, | გამოთვლები. კონტრაქტის ხელშეკრულება AS კონტრაქტი, | გამოთვლები. კონტრაქტი, | გამოთვლები. ორმხრივი ანგარიშსწორების ბალანსის ოდენობა, როგორც ნაშთი | FROM | დაგროვების რეესტრი. ორმხრივი ანგარიშსწორება კონტრაგენტებთან ნაშთები გამოთვლების სახით | სულ | თანხა (ბალანსი) |პროგრამული უზრუნველყოფა | ზოგადი, | ხელშეკრულების ტიპი";

ფიგურაში გამოსახულია დაჯგუფებები, რომლებიც ჩამოყალიბდა მოთხოვნის შესრულებისას, ზედა ეხება განყოფილებას GENERAL, ხოლო მეორე - Counterparty AgreementAgreement Type ველს.

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

შექმენით მოთხოვნა

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

//მოთხოვნის შექმნა
მოთხოვნა = ახალი მოთხოვნა;

//შეავსეთ მოთხოვნის ტექსტი
მოთხოვნა. ტექსტი = "აქ ვწერთ მოთხოვნის ტექსტს";

//მოთხოვნაზე პარამეტრების გადაცემა
მოთხოვნა. SetParameter("ParameterName" , ParameterValue) ;

//მოთხოვნის შესრულება
შედეგი = შეკითხვა. Run() ;

//შეკითხვის შედეგი ატვირთეთ შერჩევაში
ნიმუში = შედეგი. Choose();

//შეკითხვის შედეგის ატვირთვა მნიშვნელობათა ცხრილში
ცხრილი = შედეგი. განტვირთვა() ;

//ბოლო მოქმედებები შეიძლება გაერთიანდეს
Fetch = შეკითხვა. Run() . Choose();
//ან
ცხრილი = შეკითხვა. Run() . განტვირთვა() ;

1C შეკითხვის ენის საფუძვლები

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

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

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

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

მოთხოვნა. ტექსტი = "აირჩიე
| *
|საიდან
| დირექტორია. კონტრაგენტები"
;

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

მოთხოვნა. ტექსტი = "აირჩიე
| კოდი,
| სახელი,
| მშობელი
|საიდან
| დირექტორია. კონტრაგენტები"
;

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

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

მოთხოვნა. ტექსტი = "აირჩიე
| Clients.Code AS ნომერი,

| 1000 AS FieldWithValue
|საიდან
;

Fetch = შეკითხვა. გაუშვით (). Choose();

Bye შერჩევა. შემდეგი () მარყუჟი
ClientNumber = ნიმუში. ნომერი;
ClientName = შერჩევა. სახელი;
ღირებულება = ნიმუში. FieldWithValue;
ბოლო ციკლი ;

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

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

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

//დაუკვეთეთ კლიენტები სახელით A-დან Z-მდე და აირჩიეთ პირველი 10
მოთხოვნა. ტექსტი = აირჩიეთ პირველი 10
| Clients.Code AS ნომერი,
| Clients.Name AS Name,
| 1000 AS FieldWithValue
|საიდან

|შეკვეთა
| სახელი"
;

//აირჩიეთ უახლესი ანბანური კლიენტი
მოთხოვნა. ტექსტი = აირჩიეთ TOP 1
| Clients.Code AS ნომერი,
| Clients.Name AS Name,
| 1000 AS FieldWithValue
|საიდან
| დირექტორია Counterparties AS კლიენტები
|შეკვეთა
| სახელი DECREASE"
;

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

//მომხმარებლისთვის დაშვებული მონაცემების შერჩევა
მოთხოვნა. ტექსტი = "არჩევა დაშვებულია
| Clients.Code AS ნომერი,
| Clients.Name AS Name,
| 1000 AS FieldWithValue
|საიდან
| დირექტორია. Counterparties AS Clients"
;

//გაუმეორებელი ელემენტების შერჩევა
მოთხოვნა. ტექსტი = "აირჩიეთ სხვადასხვა
| Clients.Code AS ნომერი,
| Clients.Name AS Name,
| 1000 AS FieldWithValue
|საიდან
| დირექტორია. Counterparties AS Clients"
;

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

Გაგრძელება იქნება…

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

1C 8.3 (8.2) შეკითხვის ენის ძირითადი უპირატესობები SQL-თან შედარებით:

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

შეკითხვის ენის ნაკლოვანებები 1C-ში:

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

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

გამომდინარე იქიდან, რომ 1C-ში მოთხოვნები მხოლოდ მონაცემების მიღების საშუალებას გაძლევთ, ნებისმიერი მოთხოვნა უნდა დაიწყოს სიტყვით "SELECT". ამ ბრძანების შემდეგ მიეთითება ველები, საიდანაც უნდა იქნას მიღებული მონაცემები. თუ მიუთითებთ "*", შეირჩევა ყველა ხელმისაწვდომი ველი. სიტყვის „FROM“-ის შემდეგ მიეთითება ადგილი, საიდანაც შეირჩევა მონაცემები (დოკუმენტები, რეგისტრები, დირექტორიები და ა.შ.).

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

არჩევა
სახელწოდება AS ნომენკლატურის სახელწოდება
FROM
დირექტორია.Nomenclature AS Nomenclature

"SELECT" ბრძანების გვერდით შეგიძლიათ მიუთითოთ საკვანძო სიტყვები:

  • სხვადასხვა. მოთხოვნა შეარჩევს მხოლოდ რიგებს, რომლებიც განსხვავდებიან მინიმუმ ერთ ველში (დუბლიკატების გარეშე).
  • FIRST n, სად – სტრიქონების რაოდენობა შედეგის დასაწყისიდან, რომლებიც უნდა შეირჩეს. ყველაზე ხშირად, ეს კონსტრუქცია გამოიყენება დახარისხებასთან ერთად (ORDER BY). მაგალითად, როდესაც თქვენ უნდა აირჩიოთ დოკუმენტების გარკვეული რაოდენობა, რომლებიც ბოლოა თარიღით.
  • ნებადართულია. ეს დიზაინი საშუალებას გაძლევთ აირჩიოთ მონაცემთა ბაზიდან მხოლოდ ის ჩანაწერები, რომლებიც ხელმისაწვდომია მიმდინარე მომხმარებლისთვის. ამ საკვანძო სიტყვის გამოყენებაზე დაყრდნობით, მომხმარებელი მიიღებს შეცდომის შეტყობინებას, როდესაც ცდილობს მოითხოვოს ჩანაწერები, რომლებზეც მას არ აქვს წვდომა.

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

ცვლილებისთვის

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

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

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

სად

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

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

არჩევა (ქეისი)

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

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

არჩევა
მიღება T&U.Link,
არჩევანი
WHEN AcmissionT&U.Performed
შემდეგ "დოკუმენტი გავიდა!"
სხვა "დოკუმენტი არ იყო განთავსებული..."
დასრულება როგორც დამატებითი ველი
FROM
დოკუმენტი საქონლისა და მომსახურების მიღება

შეუერთდი

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

მარცხნივ/მარჯვენა კავშირი

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

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

არჩევა
ქვითარი და U. ნომენკლატურა,
ფასები.ფასი
FROM
დოკუმენტი საქონლისა და მომსახურების მიღება საქონელი როგორ მიღება და სპეციფიკაციები
შიდა შეერთება რეგისტრაციაInformation.PricesNomenclature.SliceLast AS ფასები
Software Receipt&U.Nomenclature = Prices.Nomenclature

მართალში ყველაფერი ზუსტად საპირისპიროა.

სრული კავშირი

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

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

შიდა შეერთება

განსხვავება INNER JOIN-სა და FULL JOIN-ს შორის არის ის, რომ თუ ჩანაწერი არ არის ნაპოვნი მინიმუმ ერთ ცხრილში, მოთხოვნა საერთოდ არ აჩვენებს მას. შედეგად, დოკუმენტიდან „საქონლისა და მომსახურების მიღება“ შეირჩევა მხოლოდ ის პუნქტი, რომლებისთვისაც არის ჩანაწერები საინფორმაციო რეესტრში „საქონლის ფასები“, თუ წინა მაგალითში „FULL“ შევცვალეთ „INTERNAL“-ით.

ᲘᲗ ᲓᲐᲯᲒᲣᲤᲔᲑᲐ

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

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

არჩევა
,
MAX(ფასი.ფასი) ფასი
FROM

ᲘᲗ ᲓᲐᲯᲒᲣᲤᲔᲑᲐ
ფასები.ნომენკლატურა.ნომენკლატურის ტიპი

შედეგები

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

შედეგების შეჯამება შესაძლებელია მთელი ცხრილისთვის (საკვანძო სიტყვის "GENERAL" გამოყენებით), რამდენიმე ველისთვის, იერარქიული სტრუქტურის მქონე ველებისთვის (საკვანძო სიტყვები "HIERARCHY", "ONLY HIERARCHY"). შედეგების შეჯამებისას არ არის აუცილებელი აგრეგატული ფუნქციების გამოყენება.

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

არჩევა
ფასები.ნომენკლატურა.ნომენკლატურის ტიპი AS ნომენკლატურის ტიპი,
ფასები.ფასი ფასის მიხედვით
FROM
ინფორმაციის რეესტრი ნომენკლატურის ფასები უახლესი AS ფასების სურათი
შედეგები
MAXIMUM (ფასი)
BY
ტიპინომენკლატურა

ქონა

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

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

არჩევა

MAX(ფასი.ფასი) ფასი
FROM
ინფორმაციის რეესტრი ნომენკლატურის ფასები უახლესი AS ფასების სურათი
ᲘᲗ ᲓᲐᲯᲒᲣᲤᲔᲑᲐ
ფასები.ნომენკლატურა.ნომენკლატურის ტიპი
ქონა
MAXIMUM(ფასები.ფასი) > 1000

ᲓᲐᲚᲐᲒᲔᲑᲐ

ORDER BY ოპერატორი ახარისხებს შეკითხვის შედეგს. ჩანაწერების თანმიმდევრული თანმიმდევრობით ჩვენების უზრუნველსაყოფად გამოიყენება AUTO ORDER. პრიმიტიული ტიპები დალაგებულია ჩვეულებრივი წესების მიხედვით. მითითების ტიპები დალაგებულია GUID-ის მიხედვით.

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

არჩევა
თანამშრომლები.სახელი AS სახელი
FROM
Directory.Employees HOW თანამშრომლები
ᲓᲐᲚᲐᲒᲔᲑᲐ
სახელი
ავტომატური შეკვეთა

სხვა 1C შეკითხვის ენის კონსტრუქციები

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

შეკითხვის ენის მახასიათებლები

  • SUBSTRINGკვეთს სტრიქონს მითითებული პოზიციიდან სიმბოლოების განსაზღვრულ რაოდენობამდე.
  • წელი...მეორესაშუალებას გაძლევთ მიიღოთ რიცხვითი ტიპის არჩეული მნიშვნელობა. შეყვანის პარამეტრი არის თარიღი.
  • პერიოდის დასაწყისი და პერიოდის დასასრულიგამოიყენება თარიღებთან მუშაობისას. დამატებით პარამეტრად მითითებულია პერიოდის ტიპი (DAY, MONTH, YEAR და ა.შ.).
  • ADDKDATEსაშუალებას გაძლევთ დაამატოთ ან გამოაკლოთ გარკვეული ტიპის განსაზღვრული დრო თარიღს (SECOND, MINUTE, DAY და ა.შ.).
  • განსხვავებაგანსაზღვრავს განსხვავებას ორ თარიღს შორის, გამომავალი მნიშვნელობის ტიპის მითითებით (DAY, YEAR, MONTH და ა.შ.).
  • ISNULLანაცვლებს გამოტოვებულ მნიშვნელობას მითითებული გამოსახულებით.
  • წარმომადგენლობა და წარმომადგენლობითი ბმულებიმიიღეთ მითითებული ველის სიმებიანი წარმოდგენა. მიმართეთ ნებისმიერ მნიშვნელობას და მხოლოდ საცნობარო მნიშვნელობებს, შესაბამისად.
  • TYPE, TYPE VALUESგამოიყენება შეყვანის პარამეტრის ტიპის დასადგენად.
  • ᲑᲛᲣᲚᲘარის ლოგიკური შედარების ოპერატორი ატრიბუტის მნიშვნელობის ტიპისთვის.
  • EXPRESSგამოიყენება მნიშვნელობის სასურველ ტიპზე გადასაყვანად.
  • თარიღი დროიღებს "თარიღი" ტიპის მნიშვნელობას რიცხვითი მნიშვნელობებიდან (წელი, თვე, დღე, საათი, წუთი, წამი).
  • მნიშვნელობა 1C მოთხოვნაში იგი გამოიყენება წინასწარ განსაზღვრული მნიშვნელობების მითითებისთვის - დირექტორიები, ჩამოთვლები, მახასიათებლების ტიპების გეგმები. გამოყენების მაგალითი: " სადაც Legal Individual = Value(Enumeration. Legal Individual. Individual)«.

შეკითხვის შემქმნელი

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

  • "ცხრილები და ველები" - შეიცავს ველებს, რომლებიც უნდა შეირჩეს და მათ წყაროებს.
  • "კავშირები" - აღწერს პირობებს CONNECTION სტრუქტურისთვის.
  • „დაჯგუფება“ - შეიცავს დაჯგუფების სტრუქტურების აღწერას და მათზე დაყრდნობით შეჯამებულ ველებს.
  • „პირობები“ - პასუხისმგებელია მოთხოვნის მონაცემების შერჩევაზე.
  • "Advanced" - დამატებითი მოთხოვნის პარამეტრები, როგორიცაა საკვანძო სიტყვები "SELECT" ბრძანებისთვის და ა.შ.
  • „შეერთება/ფრთები“ - მითითებულია ცხრილების შეერთების შესაძლებლობები და მითითებულია მეტსახელები (კონსტრუქცია „HOW“).
  • „შეკვეთა“ პასუხისმგებელია შეკითხვის შედეგების დახარისხებაზე.
  • "სულები" - მსგავსია "დაჯგუფება" ჩანართი, მაგრამ გამოიყენება "TOTALS" კონსტრუქციისთვის.

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


მოითხოვეთ კონსოლი

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

შეგიძლიათ ჩამოტვირთოთ შეკითხვის კონსოლი ITS დისკზე ან .

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

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

მოთხოვნის მაგალითი:

არჩევა
ბანკები.სახელი,
ბანკები.CorrAccount
FROM
დირექტორია.ბანკები HOW ბანკები

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

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

შეკითხვის ენის კონსტრუქციების აღწერა

შეკითხვის სტრუქტურა

მონაცემების მისაღებად საკმარისია გამოიყენოთ "SELECT" და "FROM" კონსტრუქციები. უმარტივესი მოთხოვნა ასე გამოიყურება:

SELECT * FROM Directories.Nomenclature

სადაც “*” ნიშნავს ცხრილის ყველა ველის არჩევას და Directories.Nomenclature – ცხრილის სახელს მონაცემთა ბაზაში.

მოდით შევხედოთ უფრო რთულ და ზოგად მაგალითს:

არჩევა
<ИмяПоля1>ᲠᲝᲒᲝᲠ<ПредставлениеПоля1>,
ჯამი (<ИмяПоля2>) ᲠᲝᲒᲝᲠ<ПредставлениеПоля2>
FROM
<ИмяТаблицы1>ᲠᲝᲒᲝᲠ<ПредставлениеТаблицы1>
<ТипСоединения>ნაერთი<ИмяТаблицы2>ᲠᲝᲒᲝᲠ<ПредставлениеТаблицы2>
BY<УсловиеСоединениеТаблиц>

სად
<УсловиеОтбораДанных>

ᲘᲗ ᲓᲐᲯᲒᲣᲤᲔᲑᲐ
<ИмяПоля1>

ᲓᲐᲚᲐᲒᲔᲑᲐ
<ИмяПоля1>

შედეგები
<ИмяПоля2>
BY
<ИмяПоля1>

ამ მოთხოვნაში ჩვენ ვირჩევთ ველების მონაცემებს "FieldName1" და "FieldName1" ცხრილებიდან "TableName1" და "TableName", ველებს მივანიჭებთ სინონიმებს "HOW" ოპერატორის გამოყენებით და ვაკავშირებთ მათ გარკვეული პირობის "TableConnectionCondition" გამოყენებით. “.

მიღებული მონაცემებიდან ვირჩევთ მხოლოდ იმ მონაცემებს, რომლებიც აკმაყოფილებს პირობას „WHERE“ „მონაცემთა შერჩევის პირობა“, შემდეგ ვაჯგუფებთ მოთხოვნას ველში „Field Name1“ და ვაჯამებთ „Field Name2“ ვქმნით ჯამებს ველისთვის. "Field Name1" და საბოლოო ველი "Field Name2".

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

ზოგადი დიზაინები

მოდით შევხედოთ 1C 8.2 შეკითხვის ენის ზოგად სტრუქტურებს.

ᲞᲘᲠᲕᲔᲚᲘ

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

აირჩიეთ პირველი 100
ბანკები.სახელი,
ბანკები კოდი AS BIC
FROM
დირექტორია.ბანკები HOW ბანკები
ᲓᲐᲚᲐᲒᲔᲑᲐ
ბანკები.სახელი

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

ნებადართულია

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

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

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

სხვადასხვა

„DIFFERENT“-ის გამოყენება ხელს შეუშლის დუბლიკატი ხაზების შეყვანას 1C შეკითხვის შედეგში. დუბლირება ნიშნავს, რომ ყველა მოთხოვნის ველი ემთხვევა.

აირჩიეთ პირველი 100
ბანკები.სახელი,
ბანკები კოდი AS BIC
FROM
დირექტორია.ბანკები HOW ბანკები

ცარიელი მაგიდა

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

მაგალითი 1C 8 დახმარებისგან:

SELECT Link.Number, EMPTY TABLE.(No., ერთეული, რაოდენობა) როგორც შემადგენლობა
დოკუმენტიდან. ხარჯის ინვოისი
შეუთავსეთ ყველაფერი
აირჩიეთ ბმული.ნომერი, შიგთავსი.(ხაზის ნომერი, პროდუქტი, რაოდენობა)
FROM Document.Invoice Document.Invoice.Composition.*

ISNULL

ძალიან სასარგებლო ფუნქცია, რომელიც საშუალებას გაძლევთ თავიდან აიცილოთ მრავალი შეცდომა. YesNULL() საშუალებას გაძლევთ შეცვალოთ NULL მნიშვნელობა სასურველით. ძალიან ხშირად გამოიყენება გაერთიანებულ ცხრილებში მნიშვნელობის არსებობის შესამოწმებლად, მაგალითად:

არჩევა
ნომენკლატურის მითითება ბმული,
IsNULL (ნარჩენი ნივთი. დარჩენილი რაოდენობა, 0) AS რაოდენობა დარჩენილი
FROM


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

ISNULL(Invoice Received.Date, InvoiceIssued.Date)

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

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

არჩევა
იხილეთ (ბმული), //სტრიქონი, მაგალითად „წინასწარი ანგარიში No123 10/10/2015 წ.
View(DeletionMark) AS DeleteMarkText, //სტრიქონი, „დიახ“ ან „არა“
იხილეთ მითითებები(DeletionMark) AS DeleteMarkBoolean //ლოგიკური, მართალია ან მცდარი
FROM
Document.Advance Report

EXPRESS

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

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

EXPRESS(TableCost.Subconto1 AS Directory.Cost Items). აქტივობის ტიპი საგადასახადო აღრიცხვის ხარჯებისთვის

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

EXPRESS(კომენტარი როგორც ხაზი (150))

განსხვავება

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

IS NULL-ის გამოყენების მაგალითი 1C მოთხოვნაში:

ᲐᲘᲠᲩᲘᲔ
Ref
მარცხენა კავშირი RegisterAcumulations.ProductsIn Warehouses.Remaining AS Product Remaining
პროგრამული უზრუნველყოფის NomenclatureRef.Link = გაყიდული საქონლის კომიტეტებიRemains.Nomenclature
WHERE NOT Remaining პროდუქცია დარჩენილი რაოდენობა არის NULL

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

წინასწარ განსაზღვრული მნიშვნელობები

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

გამოყენების მაგალითი:

WHERE Nomenclature.Type of Nomenclature = Value(Directory.Nomenclature.Types of Nomenclature.Product)

WHERE კონტრაგენტები. საკონტაქტო ინფორმაციის ტიპი = მნიშვნელობა (აღრიცხვა. საკონტაქტო ინფორმაციის ტიპები. ტელეფონი)

WHERE ანგარიშის ნაშთები. საბუღალტრო ანგარიში = ღირებულება (ანგარიშების სქემა. მოგება. მოგება დაკარგვა)

კავშირები

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

მარცხენა და მარჯვენა კავშირი

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

Მაგალითად:

ის დააბრუნებს Counterparties-ის მთელ ცხრილს და შეავსებს ველს „ბანკი“ მხოლოდ იმ ადგილებში, სადაც დაკმაყოფილდება პირობა „Counterparties.Name = Banks.Name“. თუ პირობა არ არის დაკმაყოფილებული, ბანკის ველი დაყენდება NULL.

RIGHT JOIN 1C ენაზეაბსოლუტურად მსგავსი LEFT კავშირი, ერთი განსხვავების გარდა - ინ კავშირის უფლება"მთავარი" ცხრილი მეორეა და არა პირველი.

სრული კავშირი

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

Მაგალითად:

FROM

სრული კავშირი
დირექტორია.ბანკები HOW ბანკები

BY

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

შიდა შეერთება

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

Მაგალითად:

FROM
დირექტორია Counterparties AS კლიენტები

შიდა შეერთება
დირექტორია.ბანკები HOW ბანკები

BY
კლიენტები.სახელი = ბანკები.სახელი

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

ასოციაციები

JOIN და JOIN ALL კონსტრუქციები აერთიანებს ორ შედეგს ერთში. იმათ. ორის შესრულების შედეგი „გაერთიანდება“ ერთში, საერთოში.

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

როგორ გამოვიყენოთ INDEX BY

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

არჩევა
ვალუტის განაკვეთები უახლესი კვეთა ვალუტა AS ვალუტა,
ვალუტის განაკვეთები უახლესი კვეთა.
განათავსეთ ვალუტის განაკვეთები
FROM
ინფორმაციის რეგისტრაცია.ვალუტის კურსი.ბოლო ნაჭერი(&პერიოდი,) AS ვალუტის კურსიბოლო ნაჭერი
ინდექსი BY
ვალუტა
;
არჩევა
ფასებინომენკლატურა.ნომენკლატურა,
ფასები ნომენკლატურები.ფასი,
ფასები ნომენკლატურები.ვალუტა,
ვალუტის კურსები. კურსი
FROM
ინფორმაციის რეგისტრაცია.ნომენკლატურის ფასები.ბოლო ნაჭერი(&პერიოდი,
ნომენკლატურა B (&ნომენკლატურა) AND PriceType = &PriceType) როგორც ფასინომენკლატურა
LEFT JOIN ვალუტის კურსები ვალუტის კურსების სახით
პროგრამული უზრუნველყოფის ფასებიNomenclatures.Currency = Currency Rates.Currency

დაჯგუფება

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

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

რაოდენობა, რაოდენობა, რაოდენობა სხვადასხვა, მაქსიმალური, მინიმალური, საშუალო.

მაგალითი #1:

არჩევა
საქონლისა და მომსახურების საქონლის გაყიდვები ნომენკლატურა,
SUM(Sales of GoodsservicesGoods.Quantity) AS რაოდენობა,
SUM(Sales of GoodsservicesGoods.Amount) AS Amount
FROM

ᲘᲗ ᲓᲐᲯᲒᲣᲤᲔᲑᲐ
საქონლისა და მომსახურების საქონლის გაყიდვები ნომენკლატურა

მოთხოვნა იღებს ყველა ხაზს საქონელთან და აჯამებს მათ რაოდენობასა და რაოდენობას ნივთების მიხედვით.

მაგალითი No2

არჩევა
ბანკები.კოდი,
რაოდენობა (სხვადასხვა ბანკები. ბმული) დუბლიკატების რაოდენობა
FROM
დირექტორია.ბანკები HOW ბანკები
ᲘᲗ ᲓᲐᲯᲒᲣᲤᲔᲑᲐ
ბანკები.კოდი

ეს მაგალითი აჩვენებს BIC-ების ჩამონათვალს "ბანკების" დირექტორიაში და აჩვენებს რამდენი დუბლიკატი არსებობს თითოეული მათგანისთვის.

შედეგები

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

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

არჩევა




FROM
დოკუმენტი საქონლისა და მომსახურების გაყიდვები საქონელი როგორ მოვახდინოთ საქონლის და მომსახურების საქონლის გაყიდვა
ᲓᲐᲚᲐᲒᲔᲑᲐ

შედეგები
SUM (რაოდენობა),
ჯამი (ჯამობა)
BY
ნომენკლატურა

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

ზოგადი შედეგები

თუ თქვენ გჭირდებათ ჯამების მიღება ყველა "სულისთვის", გამოიყენეთ "GENERAL" ოპერატორი.

არჩევა
საქონლის და მომსახურების გაყიდვები საქონლის ნომენკლატურა AS ნომენკლატურა,
საქონლის და მომსახურების საქონლის გაყიდვები AS დოკუმენტის ბმული,
გაყიდვები საქონლისა და მომსახურების საქონლის რაოდენობა, როგორც რაოდენობა,
საქონლისა და მომსახურების საქონლის გაყიდვები თანხა ას ოდენობით
FROM
დოკუმენტი საქონლისა და მომსახურების გაყიდვები საქონელი როგორ მოვახდინოთ საქონლის და მომსახურების საქონლის გაყიდვა
ᲓᲐᲚᲐᲒᲔᲑᲐ
საქონლისა და მომსახურების საქონლის გაყიდვები ბმული.თარიღი
შედეგები
SUM (რაოდენობა),
ჯამი (ჯამობა)
BY
ᲡᲐᲔᲠᲗᲝᲐ,
ნომენკლატურა

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

რომელშიც დაჯგუფების 1 დონე არის ყველა საჭირო ველის აგრეგაცია.

მოწყობა

ოპერატორი ORDER BY გამოიყენება მოთხოვნის შედეგის დასალაგებლად.

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

არჩევა

FROM
დირექტორია.Nomenclature AS Nomenclature
ᲓᲐᲚᲐᲒᲔᲑᲐ
სახელი

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

ავტომატური შეკვეთა

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

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

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

ვირტუალური მაგიდები

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

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

  • პირველის გაჭრა;
  • ამ უკანასკნელის მოჭრა.
  • ნარჩენები;
  • რევოლუციები;
  • ნაშთები და ბრუნვა.
  • მოძრაობები ქვეკონტოდან;
  • რევოლუციები;
  • სიჩქარე Dt Kt;
  • ნარჩენები;
  • ნაშთები და ბრუნვა
  • ქვეკონტო.
  • ბაზა;
  • გრაფიკის მონაცემები;
  • მოქმედების ფაქტობრივი პერიოდი.

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

არჩევა
პროდუქტები საწყობებში ნაშთები და ბრუნვა ნომენკლატურა,
პროდუქტები საწყობებში დარჩენილი და ბრუნვა.დარჩენილი საწყისი რაოდენობა,
პროდუქტები საწყობებში რჩება და ბრუნვა.რაოდენობა ბრუნვა,
საქონელი საწყობებში დარჩენილი და ბრუნვა. რაოდენობა შემომავალი,
საქონელი საწყობებში დარჩენილი და ბრუნვა.მოხმარება,
პროდუქტები საწყობებში ნარჩენები და ბრუნვა. რაოდენობა საბოლოო დარჩენილი
FROM
RegisterAccumulations.GoodsIn Warehouses.RemainsAndTurnover AS საქონელისაწყობებშიRemainsAndTurnover

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

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

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

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

ამ პარამეტრების გამოყენების მაგალითი:

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

ალგორითმი ვირტუალური ცხრილებისთვის

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

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

  1. ჩვენ ვიღებთ უახლოეს გამოთვლილ მნიშვნელობას თარიღისა და გაზომვების თვალსაზრისით ჯამების ცხრილში.
  2. გადაადგილების ცხრილიდან თანხას „ვამატებთ“ ჯამების ცხრილიდან.


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

Query Builder-ის გამოყენება

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

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

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

1C მოთხოვნის კონსტრუქტორის აღწერა

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

ცხრილები და ველები ჩანართი

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

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

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

კავშირების ჩანართი

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

დაჯგუფების ჩანართი

ამ ჩანართზე სისტემა საშუალებას გაძლევთ დააჯგუფოთ და შეაჯამოთ ცხრილის შედეგის საჭირო ველები. აღწერს კონსტრუქციების გამოყენებას GROUP BY, SUM, MINIMUM, AVERAGE, MAXIMUM, QUANTITY, NUMBER DIFFERENT.

პირობების ჩანართი

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

გაფართოებული ჩანართი

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

დაჯგუფება ჩანაწერების შერჩევა:

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

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

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

უერთდება / მეტსახელის ჩანართი

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

შეკვეთის ჩანართი

ეს განსაზღვრავს მნიშვნელობების დალაგების თანმიმდევრობას (ORDER BY) - კლებადი (DESC) ან აღმავალი (ASC).

ასევე არის საინტერესო დროშა - ავტომატური შეკვეთა(მოთხოვნაში - AUTO ORDERING). ნაგულისხმევად, 1C სისტემა აჩვენებს მონაცემებს "ქაოტური" თანმიმდევრობით. თუ ამ დროშას დააყენებთ, სისტემა დაალაგებს მონაცემებს შიდა მონაცემების მიხედვით.

Query Batch ჩანართი

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

ღილაკი „შეკითხვა“ შეკითხვის დიზაინერში

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

ამ ფანჯარაში შეგიძლიათ შეცვალოთ მოთხოვნა და შეასრულოთ იგი.


შეკითხვის კონსოლის გამოყენებით

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

მოდით უფრო ახლოს მივხედოთ ამ ხელსაწყოს.

ჩამოტვირთეთ 1C შეკითხვის კონსოლი

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

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

1C შეკითხვის კონსოლის აღწერა

დავიწყოთ შეკითხვის კონსოლის დათვალიერება ძირითადი დამუშავების პანელის აღწერით:

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

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

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

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

პარამეტრების მოთხოვნა:

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

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

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

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

ასევე ზედა პანელში არის ღილაკი შეკითხვის კონსოლის პარამეტრების გამოსაძახებლად:

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

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

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

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

მოთხოვნა = ახალი მოთხოვნა;
მოთხოვნა.ტექსტი = ”
|არჩევა
| ვალუტები.ლინკი
|საიდან
| დირექტორია.ვალუტები AS ვალუტა“;
RequestResult = Request.Execute();

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



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

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

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

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

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

უფლება:

არჩევა

FROM
დაგროვების რეესტრი ორმხრივი ანგარიშსწორებები ორგანიზაციების მონაწილეებთან ნაშთები (
,
ორგანიზაცია = &ორგანიზაცია
AND Individual = &Individual) HOW ორმხრივი ანგარიშსწორებები ორგანიზაციების მონაწილეებთან ნაშთები

არასწორი:

არჩევა
ორმხრივი ანგარიშსწორებები ორგანიზაციების ნაშთების მონაწილეებთან თანხის ბალანსი
FROM
დაგროვების რეესტრი ორმხრივი ანგარიშსწორებები ორგანიზაციების მონაწილეებთან ნაშთები (,) HOW ორმხრივი ანგარიშსწორებები ორგანიზაციების მონაწილეებთან ნაშთები
სად
ორმხრივი ანგარიშსწორებები ორგანიზაციების ნაშთების მონაწილეებთან ორგანიზაცია = & ორგანიზაცია
და ორმხრივი ანგარიშსწორებები ორგანიზაციების ნაშთების მონაწილეებთან. ინდივიდუალური = &ინდივიდუალური

რთული ტიპის ველის მნიშვნელობის მიღება წერტილის გამოყენებით

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

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

არასწორი:

არჩევა
ჩანაწერების ნაკრები.ჩამწერი.თარიღი,
ჩანაწერების ნაკრები. რაოდენობა
FROM
RegisterAccumulations.ProductsOrganizations AS SetRecords

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

მარჯვენა:

არჩევა
არჩევანი
WHEN ProductsOrg.Registrar LINK Document.Sales of Products and Services
შემდეგ EXPRESS (პროდუქტები ორგანიზაცია. რეგისტრატორი AS დოკუმენტი. საქონლის სერვისების გაყიდვები). თარიღი
WHEN GoodsOrg.რეგისტრატორის ლინკი დოკუმენტი.საქონლის სერვისების მიღება
შემდეგ EXPRESS(GoodsOrg.რეგისტრატორი AS დოკუმენტი.საქონლის სერვისების მიღება).თარიღი
დასრულება თარიღად,
პროდუქტებიორგ.რაოდენობა
FROM
RegisterAcumulations.ProductsOrganizations AS ProductsOrganization

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

მარჯვენა:

არჩევა
პროდუქტები ორგანიზაციები.თარიღი,
პროდუქტებიორგანიზაციები.რაოდენობა
FROM
დაგროვების რეესტრი.ორგანიზაციების საქონელი AS.ორგანიზაციის საქონელი

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

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

არასწორი:

აირჩიე…

მარცხნივ შეერთება (
SELECT FROM RegisterInformation.Limits
სად…
ᲘᲗ ᲓᲐᲯᲒᲣᲤᲔᲑᲐ...
) მიერ…

მარჯვენა:

აირჩიე…
დააყენეთ ლიმიტები
საინფორმაციო რეესტრიდან. ლიმიტები
სად…
ᲘᲗ ᲓᲐᲯᲒᲣᲤᲔᲑᲐ...
ინდექსი...;

აირჩიე…
საქონლისა და მომსახურების გაყიდვები
LEFT Join ლიმიტები
BY…;

ჩანაწერების შეერთება ვირტუალური ცხრილებით

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

შერჩევის გამოყენება არაინდექსირებული ველების საფუძველზე

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

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

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

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

ლოგიკური OR-ის გამოყენება პირობებში

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

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

კლიუევი ვ.ვ.

http://prof1c.kklab.ru

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

Საღამო მშვიდობისა

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

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

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

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

და დაწერე შემდეგი კოდი:

Procedure ButtonExecutePress(Button) მოთხოვნა = New Request() ; მოთხოვნა. ტექსტი = " SELECT | * | FROM| დოკუმენტი . მყიდველისთვის გადახდის ინვოისი" ; შედეგი = მოთხოვნა. შესრულება (). განტვირთვა (); პროცედურის დასასრული

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

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

Მნიშვნელოვანი:
ასევე მინდა აღვნიშნო, რომ შეკითხვის ენის წერისას, კონფიგურაციის ობიექტები უნდა იყოს მიმართული მხოლობით რიცხვში და არა მრავლობითში. Ამაში
შემთხვევაში, Documents ობიექტი კონფიგურაციაში (Documents ფილიალი) - მოთხოვნა შეიცავს Document-ს. ასევე დოკუმენტების შემადგენლობას - ვიღებთ წერტილის (.) - და დოკუმენტის სახელს.

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

შემდეგ ჩვენ ვინახავთ ჩვენს დამუშავებას ფაილში, ამისათვის დააწკაპუნეთ File->Save As და ჩაწერეთ ფაილის სახელი, ჩემი დამუშავებისთვის დავაყენე სახელი "ExternalProcessing1Demo", რათა არ მოძებნოთ დამუშავება დიდი ხნის განმავლობაში. შეგიძლიათ შეინახოთ იგი სამუშაო მაგიდაზე, შემდეგ ჩვენ მოგვიწევს მისი გახსნა)).

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

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

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

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

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

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

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

მოდით გადავდგათ ნაბიჯი - შევასრულოთ მითითებული კოდის ხაზი. ამისათვის დააჭირეთ ღილაკს ან მენიუში Debug->Step through... (F 10).

და რას ვხედავთ ჩვენს ტაბლეტში:

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

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

Შეჯამება:

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

დათვალიერება