Imtiyozli maslahatchi. Faxriylar. Pensionerlar. Nogiron odamlar. Bolalar. Oila. Yangiliklar

1s 8.3 misolidagi so'rovlar. Kalit so'zlar va ma'lumotlarni o'zgartirish bloklari

1C 8 so'rovlar tili 1C dasturchisi uchun ajralmas vosita bo'lib, u sizga ixcham, sodda, tushunarli kod yozish va ma'lumotlar bilan ishlashda kamroq tizim resurslaridan foydalanish imkonini beradi. Ushbu maqola 1C 8 so'rovlar tiliga bag'ishlangan bir qator darslarni ochadi.Birinchi darsda biz ushbu tilning asosiy operatorining tuzilishini ko'rib chiqamiz - TANLANG. Ushbu operator yordamida siz ma'lumotlar bazasi jadvallaridan tanlovlar yaratishingiz mumkin. Jadvalning tanlangan ma'lumotlarini saralash, unga shartlar qo'yish, boshqa jadvallar ma'lumotlari bilan bog'lash va birlashtirish, turli maydonlar bo'yicha guruhlash va boshqalar.

So'rovlar tili 1C korxonasi 8 - Operator tuzilishi SELECT

SELECT operatorining tuzilishini ko'rib chiqamiz (operatorning ixtiyoriy qismlari kvadrat qavs ichida ko'rsatilgan). 1C so'rovlar tili ma'lumotlar namunalarini yaratish uchun keng ko'lamli vositalarni taqdim etadi.

[RUXSAT BERILGAN] [TURLI] [BIRINCHI A] [Maydon1] [Taxallus1 AS], [Maydon2] [Taxallus2 AS], ... [FieldM] [TaxallusB AS] [Vaqtinchalik jadval nomini qoʻying] [1-JADvalDAN AliasTableTable1 AS [[INNER JOIN] ][LEFT JOIN][FULL JOIN] 2-jadval taxallus sifatida 2-jadval [[INNER JOIN][LEFT JOIN][FULL JOIN] TableC AS taxallus TablesC BY Ifod1 [Va Expression2]...[Va IfodasiD]] .. ... 1-Ifoda [Va Ifoda2]...[Va IfodasiE]] ... [JadvalF AS TableF taxallus] ... ] [GroupingField1 BOʻYICHA GURUHLASH[,] ... [GroupingFieldG]] [QAYERDA Ifoda1 [VA] Ifoda2] ... [VA IfodaH]] [HAMMANI BIRLASH...] [; ...] [AggregationFunction(Field1)][,] [AggregationFunction(Field2)][,] ... [AggregationFunction(FieldI)] [UMUMIY] BOʻYICHA [AggregationFunction(FieldI)] [AggregationFunction(Field1)][,] [JAMISI [AggregationFunction(Field1)][,] [ GroupingField1][,] ... [GroupingFieldj]]

Maydonlar bilan ishlash uchun kalit so'zlar va bloklar

  • TANLANG— operatorning boshlanishini ko'rsatuvchi kalit so'z;
  • RUXSAT BERILGAN tanlov berilgan foydalanuvchi uchun o'qish huquqiga ega bo'lgan jadval yozuvlarini o'z ichiga olishi kerakligini ko'rsatadi;
  • TURLI namuna faqat turli (barcha sohalar bo'yicha) oqimlarni o'z ichiga olishi kerakligini ko'rsatadi. Boshqacha qilib aytganda, takroriy qatorlar namunadan chiqarib tashlanadi;
  • BIRINCHI A agar siz ushbu kalit so'zni ko'rsatsangiz, u holda so'rov bo'yicha tanlangan qatorlarning faqat birinchi A qismi tanlovga kiritiladi, bu erda A - natural son;
  • Maydon bloki— bu blok tanlovga kiritilishi kerak bo‘lgan maydonlarni ko‘rsatadi. Bu maydonlar tanlangan ustunlar bo'ladi. Eng oddiy holatda, maydon quyidagicha ko'rinadi: Table Alias.TableFieldName AS Field Alias

    Shu tarzda biz ushbu maydonni qaysi jadvaldan olganimizni ko'rsatamiz. 1C so'rovlar tili har qanday taxalluslarni ko'rsatishga imkon beradi, lekin ular bir xil SELECT bayonotida takrorlanmasligi kerak. Maydon murakkabroq bo'lishi mumkin, u jadval maydonlarining turli kombinatsiyalaridan, so'rovlar tili funktsiyalaridan va yig'ish funktsiyalaridan iborat bo'lishi mumkin, ammo biz ushbu qo'llanmada bunday holatlarni ko'rib chiqmaymiz;

Jadvallar bilan ishlash uchun kalit so'zlar va bloklar

  • Vaqtinchalik jadval nomini qo'ying- kalit so'z JOY ma'lum bir nomga ega bo'lgan vaqtinchalik jadval yaratish uchun mo'ljallangan bo'lib, u 1C 8 ma'lum bir seansda u tugaguncha yoki vaqtinchalik jadval yo'q qilinmaguncha operativ xotirada saqlanadi. Shuni ta'kidlash kerakki, bitta 1C 8 sessiyasida vaqtinchalik jadvallarning nomlari takrorlanmasligi kerak;
  • Jadvallar va munosabatlar bloki— blok ushbu so‘rovda foydalanilgan barcha jadvallarni hamda ular orasidagi munosabatlarni ko‘rsatadi. Blok kalit so'z bilan boshlanadi FROM, keyin birinchi jadvalning nomi va taxalluslari. Agar ushbu jadval boshqa jadvallar bilan bog'liq bo'lsa, unda munosabatlar ko'rsatiladi. 1C so'rovlar tilida quyidagi ulanish turlari to'plami mavjud:
    • ICHKI QO‘SHILMA— chap jadvaldagi yozuv faqat ulanish sharti bajarilgan taqdirdagina tanlovga kiritiladi, o‘ngdagi jadvaldagi yozuv faqat ulanish sharti bajarilgan taqdirdagina tanlovga kiritiladi;
    • CHap ULANISH— chapdagi jadvaldagi yozuv har qanday holatda tanlovga kiritiladi, o‘ngdagi jadvaldagi yozuv faqat ulanish sharti bajarilgan taqdirdagina tanlovga kiritiladi;
    • TO'LIQ ULANISH— tanlovga har qanday holatda birinchi navbatda chap jadvaldagi yozuv kiritiladi, keyin faqat ulanish sharti bajarilgan taqdirda, o‘ng jadvaldagi yozuv har qanday holatda birinchi navbatda tanlovga kiritiladi, keyin faqat ulanish sharti uchrashadi. Bunday holda, olingan ikki nusxadagi qatorlar namunadan chiqarib tashlanadi.

    Ulanish turidan keyin ikkinchi jadvalning nomi va taxalluslari ko'rsatiladi. Keyin kalit so'z keladi BY, undan keyin mantiqiy operatorlar tomonidan bir-biri bilan bog'langan aloqa shartlari VA, YOKI. Shartdagi har bir ifoda mantiqiy qiymatni qaytarishi kerak (True, False). Agar birinchi jadval ikkinchidan boshqa jadvallarga ulangan bo'lsa, u holda ulanish turi yana ko'rsatiladi va hokazo. Ulanishda ishtirok etuvchi jadvallarning har biri, o'z navbatida, boshqa jadvallarga ulanishi mumkin, bu so'rovlar tuzilishi diagrammasida ko'rsatilgan. Agar jadval birinchisiga aloqador bo'lmasa, u holda ulanish turisiz ko'rsatiladi, keyin uning ulanishlari kelishi mumkin va hokazo;

Kalit so'zlar va ma'lumotlarni o'zgartirish bloklari

  • Guruh bloki— bu blok jadval qatorlarini guruhlash uchun ishlatiladi. Agar kalit so'zdan keyin ko'rsatilgan maydonlarning qiymatlari bo'lsa, qatorlar bittaga birlashtiriladi GURUH BO'YICHA bir xil bo'lib chiqadi. Bunday holda, boshqa barcha maydonlar yig'indisi, o'rtacha, maksimal yoki agregat funktsiyalari yordamida minimallashtiriladi. Agregat funktsiyalari maydon blokida ishlatiladi. Misol: Maksimal(TableAlias.TableFieldName) AS FieldAlias
  • Vaziyat bloki- kalit so'zdan keyin ushbu blokda QAYERDA mantiqiy operatorlar bilan ajratilgan shartli ifodalar ko'rsatilgan VA, YOKI, tanlangan qatorlardan birortasi namunaga kiritilishi uchun agregatdagi barcha shartlar qiymatga ega bo'lishi kerak To'g'ri.
  • HAMMANI BIRLASHTIRISH— bu kalit soʻz soʻrovlarni birlashtirish uchun ishlatiladi (operatorlar TANLASH). 1C so'rovlar tili bir nechta so'rovlarni birlashtirishga imkon beradi. So'rovlar birlashtirilishi uchun ular bir xil maydonlar to'plamiga ega bo'lishi kerak;
  • «;» - nuqta-vergul bir-biridan mustaqil bo'lgan gaplarni ajratish uchun ishlatiladi TANLASH;
  • INDEX BY— kalit so‘z o‘zidan keyin ko‘rsatilgan maydonlarni indekslash uchun ishlatiladi;
  • Xulosa bloki- daraxtga o'xshash namunalarni qurish uchun ishlatiladi. Kalit so'zdan keyin ko'rsatilgan guruhlash maydonlarining har biri uchun BY, tanlashda alohida qator yaratiladi. Ushbu qatorda agregat funktsiyalardan foydalangan holda kalit so'zdan keyin ko'rsatilgan maydonlarning umumiy qiymatlari hisoblanadi. NATIJALAR.

1C 8 so'rovlar tilini o'rganishni davom ettirmoqchimisiz? Keyin keyingi maqolani o'qing.

Diqqat! Bu darsning kirish versiyasi bo'lib, uning materiallari to'liq bo'lmasligi mumkin.

Saytga talaba sifatida kiring

Maktab materiallariga kirish uchun talaba sifatida tizimga kiring

Boshlang'ich dasturchilar uchun so'rovlar tili 1C 8.3: shartli operator

So‘rovdagi shartli gap

Keling, oziq-ovqatning nomlari va kaloriya tarkibini oladigan so'rov yozamiz:

Endi so'rov natijasiga ustun qo'shamiz, unda biz quyidagi qoidalarga muvofiq oziq-ovqatning yog'li tarkibini ko'rsatamiz:

  • agar kaloriya miqdori 100 dan kam bo'lsa, unda yog 'miqdori past;
  • agar kaloriya miqdori 100 dan 200 gacha bo'lsa, unda yog 'miqdori normaldir;
  • agar kaloriya miqdori 200 dan ortiq bo'lsa, unda yog 'miqdori yuqori.

Bunga qanday erishish mumkin, chunki jadvalda Katalog. Oziq-ovqat ustun yo'q Yog 'tarkibi?

Ma'lum bo'lishicha, biz ushbu ustunni so'rov ichidagi shartli operator yordamida o'zimiz qo'shishimiz mumkin:

Keling, so'rov matnini batafsil ko'rib chiqaylik:

Bo'limda TANLANG Tanlov maydonlari ko'rsatilgan: Ism, Kaloriya tarkibi, va keyin uchinchi maydon o'rniga shartli operatorning konstruktsiyasi mavjud bo'lib, uning natijasi uchinchi ustunga tushadi.

Operator shartlari ketma-ket qayta ishlanadi. Agar ulardan biri rost bo'lib chiqsa, natijada tegishli qiymat qaytariladi. Agar shartlardan hech biri bajarilmasa, bo'limdagi qiymat qaytariladi BOSHQA.

Shunday qilib, yangi so'rov quyidagi kabi jadvalni qaytaradi:

Chekinish

E'tibor bering, so'rov qaytarilgan jadvalning uchinchi ustuni chaqiriladi Maydon 1. Bu nom tizim tomonidan avtomatik tarzda yaratilgan, chunki uchinchi ustun jadvaldagi hech qanday haqiqiy maydonga mos kelmaydi Katalog. Oziq-ovqat, bu nomni qaerdan olish mumkin.

Ammo unga bu ismni berish bizning qo'limizda. Buning uchun maydon tavsifidan so'ng darhol kalit so'zni yozishingiz kerak QANAQASIGA, va keyin bo'sh joy bilan ajratilgan ismning o'zini ko'rsating. Siz darsning sinov versiyasini o'qiyapsiz, to'liq darslar mavjud. Bu nom chaqiriladi maydon taxallus.

Taxalluslar har qanday maydonlarga, shu jumladan allaqachon nomga ega bo'lganlarga ham berilishi mumkin. Keling, taxallus qilaylik Ovqat maydon uchun Ism:

Funktsiyadan foydalanishga misol SUBSTRING:

Nomni tanlang, SUBSTRING QACHON TANILA (Ism, 1, 3) = "Ban" KEYIN "Bu banan" WHEN SUBSTRING(Ism, 1, 2) = "Chi" KEYIN "Bu chips" BOSHQA "Boshqa narsa" dan tugaydi. Malumot. Ovqat

Shartli bayonotning yanada murakkab natijalari

Shartli operatorning natijasi nafaqat satr, balki raqam, sana, mantiqiy yoki mos yozuvlar turi ham bo'lishi mumkin. Bu yuqorida sanab o'tilgan turlarning doimiysi yoki jadval maydoni bo'lishi mumkin. Siz darsning sinov versiyasini o'qiyapsiz, to'liq darslar mavjud.

Men seni olib kelaman umumiy misol, sanab o'tilgan barcha variantlarni namoyish qilish:

Sinovdan o'ting

Sinovni boshlang

1. Tanlash operatorining shartlari (u ham shunday deyiladi) qayta ishlanadi

2. Shartli operator har doim qaytaradi

3. Agar shartlardan hech biri bajarilmasa, tanlash operatori qiymatni qaytaradi

4. Shartli gapdagi ELSE bo‘limi

5. Tanlov shartlarida gap ishlatilishi mumkin

NULL qiymatning yo'qligidan boshqa narsa emas. Ko'pchilik buni raqamning "0" qiymati, ob'ektga bo'sh havola yoki bo'sh satr bilan aralashtirib yuboradi. Ushbu noto'g'ri tushuncha tufayli ko'plab xatolar paydo bo'ladi.

Agar so'rov mavjud bo'lmagan maydon, xususiyat yoki buzilgan havolaga tegishli bo'lsa, NULL qiymati paydo bo'ladi.

NULL uchun oddiy tenglikni tekshirishga ruxsat bermaydigan SQL-ga asoslangan. Quyida 1C 8.3 da NULLni tekshirishning ikkita usuli mavjud.

1C 8.3 so'rov tilining ISNULL() funksiyasi ikkita kiritish parametriga ega:

  • sinovdan o'tkaziladigan ifoda;
  • almashtirish ifodasi.

Agar tekshirilayotgan qiymat NULL bo'lsa, u holda bu funktsiya almashtirish ifodasining qiymatini qaytaradi. Agar qiymat NULLdan boshqa bo'lsa, tekshirilayotgan ifoda qaytariladi.

Quyida bir misol keltirilgan. U "Tovar va xizmatlarni qabul qilish" hujjatidan mahsulotning jadval qismining barcha bandlarini tanlaydi. Chapdagi qo'shilishdan foydalanib, har bir elementga "Tovar narxlari" ma'lumotlar registridagi oxirgi narx belgilanadi.

IN Ushbu holatda Vaziyat yuzaga kelishi mumkinki, ba'zi lavozimlar uchun reestrda shunchaki narx bo'lmasligi mumkin. Bunday holda, ISNULL funktsiyasi bizga odatiy nolni qaytaradi. Agar siz undan foydalanmasangiz, "Narx" maydonida NULL qiymati bilan arifmetik amallarni bajarishga harakat qilganingizda, biz xatoga duch kelamiz.

TANLANG

ISNULL(Narxlar.Price, 0) Joriy Narx AS
FROM



QAYERDA

SELECT iborasida NULL MUMKIN

ISNULL() ning ekvivalenti ISNULL bo'lib, u SELECT operatorida ishlatiladi va qiymat NULL ekanligini tekshiradi. Bu holda "IS" tenglikni anglatadi va oldingi misoldagi so'rov quyidagicha ko'rinadi:

TANLANG
Mahsulotlar. Nomenklatura AS Mahsulot,
TANLOV
QACHON narxlar.NARX NULL
KEYIN 0
BOShQA Narxlar.Narx
Joriy Narx BO'YICHA TUGASH
FROM
Hujjat.Tovar va xizmatlarni qabul qilish.Tovar AS Tovar
CHAP ULANISH RegisterMa'lumot.NarxlarNomenklatura.SliceOxirgi AS Narxlar
Dasturiy ta'minot mahsulotlari.Nomenklatura = Narxlar.Nomenklatura
QAYERDA
Products.Link = &LinkToDocument

ISNULL() va IS NULL funksiyalari orasidagi farqlar

Oldingi misollardan ko'rinib turibdiki, ikkala holatda ham so'rov bir xil ma'lumotlarni qaytaradi. ISNULL() funksiyasi SELECTION WHEN... IS NULL... END ning stenografiya versiyasidir, ammo quyidagi sabablarga ko'ra u hali ham afzalroqdir:

  1. ISNULL() funktsiyasi so'rovni optimallashtiradi. U bir marta o'qiladi, shuning uchun murakkab ifodani tekshirishda so'rov tezroq ishlaydi.
  2. ISNULL() funksiyasi konstruksiyani qisqartirib, so‘rovni o‘qilishi mumkin bo‘ladi.
  3. ISNULL() funksiyasini bajarishda almashtirish ifodasi satr turlari (satr uzunligi) va sonli turlar (bit chuqurligi) uchun tekshirilayotgan ifoda turiga qisqartiriladi.

So'rovlardagi shartlar 1C ma'lumotlar bazasi jadvalidagi barcha yozuvlarni emas, balki faqat bir yoki bir nechta tanlov mezonlariga javob beradiganlarni tanlash kerak bo'lganda qo'llaniladi.

1C so'rovlaridagi shartlar so'rovning o'zi va ma'lumotlar manbasining xususiyatlariga qarab turli yo'llar bilan o'rnatilishi mumkin.

"QAYER" kalit so'zi

Kalit so'z QAYERDA 1C so'rovlarida ma'lumotlar bazasidan tanlangan yozuvlarga shart qo'llanilganda ishlatiladi. Bunday holda, yozuvlarni filtrlash ularni ma'lumotlar bazasi jadvalidan tanlash bosqichida sodir bo'ladi.

Masalan, stol bor To'lovlar, xodimlarning ro'yxati va ularga to'langan to'lovlarni o'z ichiga oladi.

Agar siz kamida 10 000 to'lovni tanlashingiz kerak bo'lsa, so'rov shunday ko'rinadi.

So'rov. Matn= "TANLANG
| To'lovlar. Xodimlar,
| To'lovlar. Ish haqi
|FROM
| To'lovlar
|QAYERDA
| To'lovlar. Ish haqi >=10000"

So'rov natijasi quyidagi jadval bo'ladi.

"HAVING" kalit so'zi

Kalit so'z EGA 1C so'rovlarida u allaqachon tanlangan yozuvlar orasidan tanlash kerak bo'lganda foydalaniladi. Misol uchun, ushbu kalit so'z so'rov natijasida guruhlangan yozuvlarni filtrlash kerak bo'lganda ishlatiladi.

Keling, yuqorida muhokama qilingan misolga qaytaylik. Aytaylik, jadvaldan tanlash kerak To'lovlar jami 20 000 dan ortiq olgan xodimlar.Buni amalga oshirish uchun avval maydonlar bo'yicha guruhlashni kiritishingiz kerak. Xodim, maydon bo'yicha yig'indini hisoblang Ish haqi har bir xodim uchun, so'ngra olingan yozuvlardan shartga mos keladiganlarni tanlang.

So'rov matni shunday ko'rinadi.

So'rov. Matn= "TANLANG
| To'lovlar. Xodimlar,
| AMOUNT(To'lovlar.Maosh) AS ish haqi
|FROM
| To'lovlar
|GROUP BY
| To'lovlar. Xodim
|EGA
| AMOUNT(To'lovlar.Ish haqi) > 20000"

Ushbu so'rovni bajarish natijasi shunday bo'ladi.

Ushbu misol kalit so'zlar orasidagi farqni aniq ko'rsatadi QAYERDA Va EGA. Agar biz so'zni ishlatsak QAYERDA o'rniga EGA, keyin ish haqi 20 000 dan ortiq bo'lgan yozuvlar birinchi navbatda tanlanadi, keyin esa ulardan har bir xodim uchun miqdor hisoblab chiqiladi. Natijada, biz bo'sh so'rov natijasini olamiz, chunki hech bir xodim bir to'lovda 20 000 dan ortiq pul olmagan.

Virtual registr jadvallarida tanlash shartlari

1C: Enterprise tizimidagi barcha registrlarda virtual jadvallar mavjud: jamlash registrlari, axborot registrlari, buxgalteriya registrlari. Virtual jadvallar uchun shartlarni ikki usulda o'rnatishingiz mumkin:

  1. virtual jadval parametrlari orqali;
  2. so'rov bo'limlari orqali QAYERDA yoki EGA.

Bo'limlar orasidagi farqlar QAYERDA Va EGA biz allaqachon ko'rib chiqdik. So'rovning ushbu bo'limlaridagi shartlar virtual jadval parametrlari shartlaridan qanday farq qilishini tushunish uchun nima ekanligini tushunishingiz kerak. virtual ro'yxatga olish jadvallari 1C da. Ularning muhim xususiyati shundaki, ular axborot bazasida mavjud emas. Bu konfiguratsiyani optimallashtirish uchun 1C: Enterprise platformasi tomonidan bizga taqdim etilgan vositadir.

Shunday qilib, agar virtual jadvalning parametrlarida shart ko'rsatilgan bo'lsa, u holda u haqiqiy registr jadvalidagi yozuvlardan uning shakllanish bosqichida qo'llaniladi. Va bo'limlarda bo'lsa QAYERDA yoki EGA, keyin - allaqachon tuzilgan virtual jadvalning yozuvlariga.

Keling, bir misolni ko'rib chiqaylik. Davriy axborot registrining jadvali keltirilgan Valyuta kurslari.

Kurslari 30 rubldan past bo'lgan eng past sana uchun valyutalarni tanlashingiz kerak.

Virtual jadval parametrlarida shartli so'rov quyidagicha ko'rinadi:

Bunday holda biz bitta yozuvni olamiz: Dollar 28.3 02.01.2007 dan. Bu muammoning to'g'ri echimi bo'ladi.

Shartni bo'limga qo'ysak QAYERDA, keyin so'rov natijasi bo'sh bo'ladi, chunki birinchi navbatda har bir valyuta uchun birinchilardan kesiladi (natijada biz 01/01/2007 dan ikkita yozuvni olamiz. Dollar 30.25 Va Evro 40,5), keyin esa ulardan shartni qanoatlantiradigan yozuvlar tanlanadi. Ammo olingan ikkala yozuv ham bo'ysunadi Xo'sh< 30 qanoatlantirmang.

So'rovlar ma'lumotlar bazasidan ma'lumotlarni ajratib olish va qayta ishlash uchun uni foydalanuvchiga kerakli shaklda taqdim etish uchun mo'ljallangan. Bu erda ishlov berish maydonlarni guruhlash, qatorlarni saralash, jami hisoblash va hokazolarni anglatadi. 1C-da so'rovlar yordamida ma'lumotlarni o'zgartira olmaysiz!

So'rov berilgan ko'rsatmalarga muvofiq amalga oshiriladi - so'rov matni. So'rov matni sintaksis va qoidalarga muvofiq tuzilgan so'rov tili. 1C: Enterprise 8 so'rovlar tili standartga asoslangan SQL, lekin ba'zi farqlar va kengaytmalarga ega.

So'rov bilan ishlash sxemasi

So'rov bilan ishlashning umumiy sxemasi bir necha ketma-ket bosqichlardan iborat:

  1. So'rov ob'ektini yaratish va so'rov matnini o'rnatish;
  2. So'rov parametrlarini o'rnatish;
  3. So'rovni bajarish va natijani olish;
  4. So'rov natijasini chetlab o'tish va olingan ma'lumotlarni qayta ishlash.

1. Ob'ekt So'rov mulkka ega Matn, unga so'rov matnini belgilashingiz kerak.

// 1-variant
So'rov = Yangi so'rov;
So'rov . Matn =
"TANLANG
| Valyuta kurslari. Davr,
| Valyuta kurslari. Valyuta,
| Valyuta kurslari. Kurs
|FROM

|QAYERDA
;

// 2-variant
So'rov = Yangi so'rov("TANLASH
| Valyuta kurslari. Davr,
| Valyuta kurslari. Valyuta,
| Valyuta kurslari. Kurs
|FROM
| Ma'lumotlar reestri. Valyuta kurslari Valyuta kurslari AS
|QAYERDA
| Valyuta kurslari.Currency = &Currency");

2. Parametr qiymatlarini o'rnatish usuli yordamida amalga oshiriladi SetParameter(< Имя>, < Значение>) . So'rov matnidagi parametrlar "belgisi bilan ko'rsatilgan. & " va odatda tanlov sharoitida (QAYER bo'limi) va virtual jadval parametrlarida ishlatiladi.

so'rov);

3. Matnni tayinlash va parametrlarni o'rnatgandan so'ng, so'rovni bajarish va bajarish natijasini olish kerak. Amalga oshirish Execute() usuli bilan amalga oshiriladi, bu ob'ektni qaytaradi So'rov natijasi. So'rov natijalaridan siz:

  • Select usuli yordamida tanlovni oling (< ТипОбхода>, < Группировки>, < ГруппировкиДляЗначенийГруппировок>) ;
  • Yuklash usuli yordamida qiymatlarni qiymatlar jadvaliga yoki qiymatlar daraxtiga yuklang (< ТипОбхода>) .

// Namuna oling

Namuna = So'rov natijasi. Tanlang();

// Qiymatlar jadvalini olish
RequestResult = So'rov. Run();
Jadval = So'rov natijasi. Yukni tushirish();

4. Loop yordamida so'rov natijalarini tanlashni chetlab o'tishingiz mumkin:

Xayr Sample.Next() tsikli
Hisobot (Tanlash. Kurs);
EndCycle;

So'rov bilan ishlashning to'liq misoli quyidagicha ko'rinishi mumkin:

// 1-bosqich. So'rov yaratish va so'rov matnini o'rnatish
So'rov = Yangi so'rov;
So'rov . Matn =
"TANLANG
| Valyuta kurslari. Davr,
| Valyuta kurslari. Valyuta,
| Valyuta kurslari. Kurs
|FROM
| Ma'lumotlar reestri. Valyuta kurslari Valyuta kurslari AS
|QAYERDA
| Valyuta kurslari.Currency = &Currency";

// 2-bosqich. Parametrlarni o'rnatish
So'rov . SetParameter("Valyuta" , SelectedCurrency);

// 3-bosqich. So'rovni bajarish va namunani olish
RequestResult = So'rov. Run();
Namuna = So'rov natijasi. Tanlang();

// Tanlovni aylanib o'tish
Xayr Sample.Next() tsikli
Hisobot (Tanlash. Kurs);
EndCycle;

So'rov matnining tarkibi

So'rov matni bir nechta bo'limlardan iborat:

  1. Tavsif so'rovi— tanlanadigan maydonlar va maʼlumotlar manbalari roʻyxati;
  2. So'rovlarni birlashtirish— “BIRLASH” va “HAMMANI BIRLASH” iboralari;
  3. Natijalarni tashkil qilish— “Buyurtma BY...” iborasi;
  4. Avtomatik buyurtma— “AVTO BUYURTMA” iborasi;
  5. Natijalarning tavsifi- "NATIJALAR ... BY ..." iborasi.

Faqat birinchi bo'lim majburiydir.

Vaqtinchalik jadvallar va ommaviy so'rovlar

1C so'rovlar tili foydalanishni qo'llab-quvvatlaydi vaqtinchalik jadvallar— so‘rov natijasida olingan va vaqtinchalik saqlanadigan jadvallar.

Siz tez-tez so'rov manbai sifatida ma'lumotlar bazasi jadvallarini emas, balki boshqa so'rovni bajarish natijasini ishlatishingiz kerak bo'lgan vaziyatga duch kelishingiz mumkin. Ushbu muammoni ichki so'rovlar yordamida hal qilish mumkin yoki vaqtinchalik jadvallar. Vaqtinchalik jadvallardan foydalanish murakkab so'rov matnini uning tarkibiy qismlariga bo'lish orqali soddalashtirishga, shuningdek, ba'zi hollarda so'rovlarning bajarilishini tezlashtirishga va blokirovkalar sonini kamaytirishga imkon beradi. Vaqtinchalik jadvallar bilan ishlash uchun ob'ektdan foydalaning Vaqt jadvali menejeri. Kalit yordamida vaqtinchalik jadval tuziladi so'z dasturiy ta'minot REST va keyin vaqtinchalik jadval nomi.

ManagerVT = Yangi TemporaryTablesManager;
So'rov = Yangi so'rov;
So'rov . ManagerTemporaryTables = ManagerVT;

So'rov . Matn =
"TANLANG
| Valyutalar. Kod,
| Valyutalar. Nomi
|Valyutalardagi joy
|FROM
| Katalog. Valyutalar Valyutalar AS";

RequestResult = So'rov. Bajarish();

VTVcurrency vaqtinchalik jadvalini boshqa so'rovlarda ishlatish uchun siz ushbu so'rovlarga umumiy vaqtinchalik jadval menejerini belgilashingiz kerak - VT Manager.

To'plam so'rovi";" belgisi bilan ajratilgan bir nechta so'rovlarni o'z ichiga olgan so'rovdir. To'plamli so'rovni bajarishda unga kiritilgan barcha so'rovlar ketma-ket bajariladi va barcha vaqtinchalik jadvallarning natijalari barcha keyingi so'rovlar uchun mavjud bo'ladi. Vaqtinchalik jadval boshqaruvchisini ommaviy so'rovlarga aniq belgilash shart emas. Vaqtinchalik jadval menejeri tayinlanmagan bo'lsa, so'rov bajarilgandan so'ng barcha vaqtinchalik jadvallar darhol o'chiriladi.

To'plamli so'rovlar uchun ExecuteBatch() usuli mavjud bo'lib, u barcha so'rovlarni bajaradi va natijalar qatorini qaytaradi. To'plamli so'rovdagi vaqtinchalik jadvallar yozuvlar sonini saqlaydigan bir qator va bitta ustunli "Sab"li jadval bilan ifodalanadi. Ommaviy so'rovlarni tuzatish uchun siz usuldan foydalanishingiz mumkin Oraliq ma'lumotlar bilan to'plamni bajaring() : Bu yozuvlar sonini emas, balki vaqtinchalik jadvallarning haqiqiy mazmunini qaytaradi.

// To'plam so'rovi bilan ishlashga misol
So'rov = Yangi so'rov;
So'rov . Matn =
"TANLANG
| Valyutalar. Nomi
|FROM
| Katalog. Valyutalar Valyutalar AS
|;
|SELECT
| Nomenklatura. Ism
|FROM
| Katalog. Nomenklatura AS Nomenklaturasi”;

To'plam natijasi = so'rov. ExecuteBatch();

TZ valyutalari =PacketResult[ 0 ]. Unload();
TZNomenklatura = Paket natijasi[ 1 ]. Unload();

// To'plam so'rovida vaqtinchalik jadvallardan foydalanishga misol
So'rov = Yangi so'rov;
So'rov . Matn =
"TANLANG
| Mahsulotlar. QANDAY Mahsulotga havola
|VTPMahsulotlarini PLACE
|FROM
| Katalog. Nomenklatura QANDAY Mahsulotlar
|QAYERDA
| Mahsulotlar.Ishlab chiqaruvchi = &Ishlab chiqaruvchi
|;
|SELECT
| VTTProducts.Mahsulot,
| Kasb-hunar maktabi. Miqdori,
| Kasb-hunar maktabi.Narxi,
| Kasb-hunar maktabi.Link AS DocumentReceipts
|FROM
| VT mahsulotlari AS VT mahsulotlari
| CHAP BOG'LANISh Hujjat. Tovarlar va xizmatlarni qabul qilish. Tovarlar AS PTU
| Dastur VTPProducts.Product = PTU.Nomenklatura"
;

So'rov . SetParameter( "Ishlab chiqaruvchi", Ishlab chiqaruvchi);

RequestResult = So'rov. Run();
Namuna = So'rov natijasi. Tanlang();

Xayr Sample.Next() tsikli

EndCycle;

Virtual jadvallar

Virtual jadvallar- bu ma'lumotlar bazasida saqlanmaydigan, lekin platforma tomonidan yaratilgan jadvallar. Asosan, bu platforma tomonidan bajariladigan bir yoki bir nechta jismoniy jadvallarga qarshi ichki so'rovlardir. Virtual jadvallar ma'lumotni faqat registrlardan oladi va asosan yuqori ixtisoslashgan masalalarni echish uchun mo'ljallangan.

Quyidagi virtual jadvallar mavjud (mumkin parametrlar qavs ichida ko'rsatilgan):

  • Ma'lumot registrlari uchun:
    • SliceFirst(<Период>, <Условие>) — belgilangan sana uchun eng erta qaydlar;
    • SliceLast(<Период>, <Условие>) — belgilangan sana uchun oxirgi yozuvlar;
  • Jamg'arma registrlari uchun:
    • Qolganlar(<Период>, <Условие>) — belgilangan sanadagi qoldiqlar;
    • inqiloblar (<НачалоПериода>, <КонецПериода>, <Периодичность>, <Условие>) - davr operatsiyalari;
    • Qolgan va aylanma(<НачалоПериода>, <КонецПериода>, <Периодичность>, <МетодДополненияПериодов>, <Условие>) — davr uchun qoldiqlar va aylanmalar;
  • Buxgalteriya registrlari uchun:
    • Qolganlar(<Период>, <УсловиеСчета>, <Субконто>, <Условие>) — hisob, o‘lchamlar va subschyotlar bo‘yicha belgilangan sanadagi qoldiqlar;
    • inqiloblar (<НачалоПериода>, <КонецПериода>, <Периодичность>, <УсловиеСчета>, <Субконто>, <Условие>, <УсловиеКорСчета>, <КорСубконто>) — hisob-kitoblar, o'lchovlar, korr kontekstida davr uchun aylanma. hisoblar, subconto, kor. subkonto;
    • Qolgan va aylanma(<НачалоПериода>, <КонецПериода>, <Периодичность>, <МетодДополненияПериодов>, <УсловиеСчета>, <Субконто>, <Условие>) — hisob-kitoblar, o‘lchovlar va subschyotlar kontekstidagi qoldiqlar va aylanmalar;
    • OborotDtKt(<НачалоПериода>, <КонецПериода>, <Периодичность>, <УсловиеСчетаДт>, <СубконтоДт>, <УсловиеСчетаКт>, <СубконтоКт>, <Условие>) — Dt schyoti, Kt schyoti, Subconto Dt, Subconto Kt hisobi bo'yicha davr uchun aylanma;
    • MovementsSubconto(<НачалоПериода>, <КонецПериода>, <Условие>, <Порядок>, <Первые>) — subkonto qiymatlari bilan birgalikda harakatlar;
  • Hisoblash registrlari uchun:
    • Baza(<ИзмеренияОсновногоРегистра>, <ИзмеренияБазовогоРегистра>, <Разрезы>, <Условие>) — hisoblash registrining asosiy ma'lumotlari;
    • DataGraphics(<Условие>)—grafik ma’lumotlar;
    • ActualActionPeriod(<Условие>) haqiqiy amal qilish muddati hisoblanadi.

Virtual jadvallar bilan ishlaganda tanlashni QAYER holatida emas, balki virtual jadvallar parametrlarida qo'llash kerak. So'rovni bajarish vaqti ko'p jihatdan bunga bog'liq.

So'rov konstruktori

So'rov matnlarini kiritishni tezlashtirish uchun platformada maxsus vositalar mavjud: So'rov konstruktori Va Natijalarni qayta ishlash bilan so'rov konstruktori. Konstruktorlarni chaqirish uchun siz sichqonchaning o'ng tugmachasini bosishingiz va kerakli elementni tanlashingiz kerak:

Konstruktorlarni asosiy menyudan ham chaqirish mumkin Matn.

So'rovlar tuzuvchisidan foydalanib, dasturchi so'rov matnini interaktiv tarzda qurishi mumkin. Buning uchun sichqoncha yordamida kerakli jadvallar va maydonlarni tanlang, aloqalar, guruhlar, jami va hokazolarni o'rnating. Bu yondashuv vaqtni tejash va undan qutulish imkonini beradi mumkin bo'lgan xatolar. O'z ishi natijasida so'rovlar konstruktori so'rov matnini hosil qiladi.

Natijalarni qayta ishlashga ega so'rovlar konstruktori so'rov matnini yaratishdan tashqari, ma'lumotlarni qabul qilish va qayta ishlash uchun tayyor kod fragmentini yaratadi.

RequestSchema obyekti

Platforma ob'ekt yordamida so'rov matnini dasturiy ravishda yaratish va tahrirlash imkonini beradi So'rov sxemasi. Ob'ekt bitta xususiyatga ega So'rovlar to'plami, unda ob'ekt tahrirlangan barcha so'rovlarning xususiyatlarini saqlaydi bu daqiqa. RequestSchema ob'ekti quyidagi usullarni qo'llab-quvvatlaydi:

  • SetQueryText(< Текст>) — berilgan so‘rov matni asosida Query Packet xossasini to‘ldiradi;
  • GetQueryText() - Request Package xususiyati asosida yaratilgan so'rov matnini qaytaradi;
  • FindParameters() - so'rov parametrlarini qaytaradi.

RequestSchema obyekti bilan ishlash misolini ko'rib chiqamiz. Uchun dasturni shakllantirish so'rov matni

SARALASH TURI
Valyutalar. Kod

O'rnatilgan til kodi quyidagicha ko'rinishi mumkin:

RequestScheme = Yangi so'rov sxemasi;
Paket 1 = Requestscheme. RequestBatch[ 0 ];
Operator 1 = Paket 1. Operatorlar[ 0 ];
// manba qo'shish
Register Table = Operator1. Manbalar. qo'shish( "Katalog. Valyutalar", "Valyutalar");
// maydonlarni qo'shish
FieldLink = Operator1. Tanlanadigan maydonlar. Qo'shish("Currencies.Link" , 0 );
FieldCode = Operator1. Tanlanadigan maydonlar. Qo'shish ("Valyutalar. Kod", 1);
// maydon taxalluslarini belgilash
Paket 1 . Ustunlar[ 0 ]. Taxallus = "Valyuta" ;
Paket 1 . Ustunlar[ 1 ]. Taxallus = "Kod";
// shart qo'shish
Operator 1 . Tanlash. qo'shish( "Bayroqni o'chirish EMAS");
// buyurtma qo'shish
Paket 1 . Buyurtma. Qo'shish (FieldCode);
RequestText = RequestScheme. GetQueryText();

Tegishli nashrlar