1s 8.3 so'rovidagidek ifoda eting. Funksiyalar turi va turi qiymati

So'rovlar tili ishlab chiquvchilar uchun 1C 8.3 ning asosiy mexanizmlaridan biridir. So'rovlar yordamida siz ma'lumotlar bazasida saqlangan har qanday ma'lumotlarni tezda olishingiz mumkin. Uning sintaksisi SQL ga juda o'xshash, ammo ba'zi farqlar mavjud.

1C 8.3 (8.2) so'rovlar tilining SQL-ga nisbatan asosiy afzalliklari:

  • mos yozuvlar maydonlarini bekor qilish (ob'ekt tafsilotlariga bir yoki bir nechta nuqtalarni ko'rsatish);
  • natijalar bilan ishlash juda qulay;
  • virtual jadvallarni yaratish qobiliyati;
  • so'rov ingliz va rus tillarida yozilishi mumkin;
  • blokirovkalardan qochish uchun ma'lumotlarni bloklash qobiliyati.

1C da so'rovlar tilining kamchiliklari:

  • SQL-dan farqli o'laroq, 1C so'rovlarida ma'lumotlarni o'zgartirishga ruxsat bermaydi;
  • saqlangan protseduralarning etishmasligi;
  • satrni raqamga aylantirishning mumkin emasligi.

Keling, 1C so'rovlar tilining asosiy konstruksiyalari bo'yicha mini qo'llanmamizni ko'rib chiqaylik.

1C-dagi so'rovlar faqat ma'lumotlarni olishga imkon berishi sababli, har qanday so'rov "SELECT" so'zi bilan boshlanishi kerak. Ushbu buyruqdan keyin ma'lumotlarni olish kerak bo'lgan maydonlar ko'rsatiladi. Agar siz "*" ni belgilasangiz, barcha mavjud maydonlar tanlanadi. Ma'lumotlar tanlanadigan joy (hujjatlar, registrlar, ma'lumotnomalar va boshqalar) "FROM" so'zidan keyin ko'rsatiladi.

Quyida ko'rib chiqilgan misolda "Nomenklatura" katalogidan butun nomenklaturaning nomlari tanlangan. "QANDAY" so'zidan keyin jadvallar va maydonlar uchun taxalluslar (nomlar) ko'rsatilgan.

TANLANG
Nomenklatura Nomenklatura nomi AS Nomenklatura nomi
FROM
Katalog.Nomenklatura AS Nomenklaturasi

“SELECT” buyrug'i yonida siz kalit so'zlarni belgilashingiz mumkin:

  • TURLI. So'rov faqat kamida bitta maydonda farq qiluvchi qatorlarni tanlaydi (dublikatlarsiz).
  • BIRINCHI n, Qayerda n- natijaning boshidan tanlanishi kerak bo'lgan qatorlar soni. Ko'pincha, bu konstruktsiya saralash (ORDER BY) bilan birgalikda qo'llaniladi. Masalan, sana bo'yicha yaqinda bo'lgan ma'lum miqdordagi hujjatlarni tanlashingiz kerak bo'lganda.
  • RUXSAT BERILGAN. Ushbu dizayn ma'lumotlar bazasidan faqat joriy foydalanuvchi uchun mavjud bo'lgan yozuvlarni tanlash imkonini beradi. Ushbu kalit so'zdan foydalanishga asoslanib, foydalanuvchi kirish huquqiga ega bo'lmagan yozuvlarni so'rashga urinayotganda xato xabarini oladi.

Ushbu kalit so'zlar birgalikda yoki alohida ishlatilishi mumkin.

O'ZGARISH UCHUN

Ushbu taklif o'zaro nizolarni oldini olish uchun ma'lumotlarni bloklaydi. Tranzaktsiya tugaguniga qadar bloklangan ma'lumotlar boshqa ulanishdan o'qilmaydi. Ushbu bandda siz qulflanishi kerak bo'lgan maxsus jadvallarni belgilashingiz mumkin. Aks holda, hamma bloklanadi. Dizayn faqat avtomatik qulflash rejimiga tegishli.

Ko'pincha balanslarni olishda "O'ZGARISH UCHUN" bandi qo'llaniladi. Axir, dasturda bir vaqtning o'zida bir nechta foydalanuvchilar ishlaganda, kimdir balansni olsa, boshqasi ularni o'zgartirishi mumkin. Bunday holda, olingan qoldiq endi to'g'ri bo'lmaydi. Agar siz ushbu taklif bilan ma'lumotlarni bloklasangiz, birinchi xodim to'g'ri balansni olguncha va u bilan barcha kerakli manipulyatsiyalarni bajarmaguncha, ikkinchi xodim kutishga majbur bo'ladi.

TANLANG
O'zaro hisob-kitoblar.Xodim,
O'zaro hisob-kitoblar.O'zaro hisob-kitoblar summasi Balans
FROM
Jamg'armalar reestri Xodimlar bilan o'zaro hisob-kitoblar Balanslar AS O'zaro hisob-kitoblar
O'ZGARISH UCHUN

QAYERDA

Dizayn yuklangan ma'lumotlarga qandaydir tanlovni qo'yish uchun zarur. Registrlardan ma'lumotlarni olishning ba'zi hollarda virtual jadvallar parametrlarida tanlash shartlarini ko'rsatish maqsadga muvofiqdir. "WHERE" dan foydalanilganda birinchi navbatda barcha yozuvlar olinadi va faqat keyin tanlov qo'llaniladi, bu so'rovni sezilarli darajada sekinlashtiradi.

Quyida ma'lum bir lavozim uchun aloqa xodimlarini olish so'roviga misol keltirilgan. Tanlash parametri quyidagi formatga ega: &ParameterName (parametr nomi ixtiyoriy).

TANLASH (CASE)

Dizayn to'g'ridan-to'g'ri so'rov matnida shartlarni belgilash imkonini beradi.

Quyidagi misolda “AdditionalField” hujjatning joylashtirilgan yoki joylashtirilmaganligiga qarab matnni o'z ichiga oladi:

TANLANG
Qabul T&U.Link,
TANLOV
Qabul T&U. Amalga oshirilganda
KEYIN "Hujjat qabul qilindi!"
BOSHQA "Hujjat e'lon qilinmadi..."
Qo'shimcha maydon sifatida tugaydi
FROM
Hujjat.Tovar va xizmatlarni qabul qilish QANDAY qabul qilish T&S

QO'SHILING

Muayyan munosabatlar sharti asosida ikkita jadvalni birlashtiradi.

CHAP/O'NG ULANISH

LEFT qo'shilishning mohiyati shundaki, birinchi ko'rsatilgan jadval to'liq olinadi va ikkinchisi ulanish shartiga ko'ra unga bog'lanadi. Agar ikkinchi jadvalda birinchi jadvalga mos yozuvlar bo'lmasa, ularning qiymatlari sifatida NULL o'zgartiriladi. Oddiy qilib aytganda, asosiy jadval birinchi ko'rsatilgan jadval va ikkinchi jadvalning ma'lumotlari (agar mavjud bo'lsa) allaqachon uning ma'lumotlari bilan almashtirilgan.

Masalan, “Tovar va xizmatlarni qabul qilish” hujjatlaridan ob’ektlarni va “Tovar narxlari” axborot reestridan narxlarni olish kerak. Bunday holda, agar biron bir pozitsiya uchun narx topilmasa, uning o'rniga NULLni almashtiring. Hujjatdagi barcha elementlar narxi bor yoki yo'qligidan qat'iy nazar tanlanadi.

TANLANG
Kvitansiya va U.Nomenklatura,
Narxlar.Narx
FROM
Hujjat.Tovar va xizmatlarni qabul qilish.Tovarlarni QANDAY qabul qilish T&C
ICHKI QO'SHILMA RegistrMa'lumot.NarxlarNomenklatura.SliceOxirgi AS Narxlar
Dasturiy ta'minot kvitansiyasi va U.Nomenklatura = Narxlar.Nomenklatura

TO'G'RIDA hammasi aksincha.

TO'LIQ ULANISH

Ushbu turdagi ulanish avvalgilaridan farq qiladi, natijada birinchi jadvalning ham, ikkinchisining ham barcha yozuvlari qaytariladi. Belgilangan havola sharti asosida birinchi yoki ikkinchi jadvalda hech qanday yozuv topilmasa, uning o'rniga NULL qaytariladi.

Oldingi misolda to'liq ulanishdan foydalanilganda, "Tovar va xizmatlarni qabul qilish" hujjatidagi barcha elementlar va "Tovar narxlari" registridagi barcha so'nggi narxlar tanlanadi. Birinchi va ikkinchi jadvallarda topilmagan yozuvlarning qiymatlari NULL ga teng bo'ladi.

ICHKI QO‘SHILMA

INNER JOIN va FULL JOIN o'rtasidagi farq shundaki, agar jadvallarning kamida bittasida yozuv topilmasa, so'rov uni umuman ko'rsatmaydi. Natijada, agar oldingi misolda "TO'LIQ" ni "INTERNAL" bilan almashtirgan bo'lsak, "Tovarlar va xizmatlarni qabul qilish" hujjatidan faqat "Tovar narxlari" ma'lumotlar reestrida yozuvlar mavjud bo'lgan bandlar tanlanadi.

GURUH BO'YICHA

1C so'rovlarida guruhlash sizga ma'lum bir umumiy xususiyatga (maydonlarni guruhlash) ko'ra jadval qatorlarini (guruhlash maydonlarini) yig'ish imkonini beradi. Guruhlash maydonlari faqat agregat funktsiyalari yordamida ko'rsatilishi mumkin.

Quyidagi so'rovning natijasi ular uchun maksimal narxlar bilan mahsulot turlarining ro'yxati bo'ladi.

TANLANG
,
MAX(Price.Price) AS Narx
FROM

GURUH BO'YICHA
Narxlar.Nomenklatura.Nomenklatura turi

NATIJALAR

Guruhlashdan farqli o'laroq, jamilardan foydalanilganda, barcha yozuvlar ko'rsatiladi va ularga jami qatorlar qo'shiladi. Guruhlash faqat umumlashtirilgan yozuvlarni ko'rsatadi.

Natijalarni butun jadval bo'yicha ("GENERAL" kalit so'zidan foydalangan holda), bir nechta maydonlar uchun, ierarxik tuzilishga ega bo'lgan maydonlar uchun ("HIERARCHY", "FAQAT IEARCHY" kalit so'zlari) umumlashtirish mumkin. Natijalarni umumlashtirishda agregat funktsiyalardan foydalanish shart emas.

Yuqoridagi misolga o'xshash misolni guruhlash yordamida ko'rib chiqamiz. Bunday holda, so'rov natijasi nafaqat guruhlangan maydonlarni, balki batafsil yozuvlarni ham qaytaradi.

TANLANG
Narxlar.Nomenklatura.Nomenklatura turi AS Nomenklatura turi,
Narxlar.Narx AS Narx
FROM
Axborot reyestri. Nomenklatura narxlari. So'nggi AS narxlarining surati
NATIJALAR
MAKSIMUM(narx)
BY
TuriNomenklatura

EGA

Bu operator WHERE operatoriga o'xshaydi, lekin faqat agregat funktsiyalar uchun ishlatiladi. Qolgan maydonlar, ushbu operator tomonidan ishlatiladiganlardan tashqari, guruhlangan bo'lishi kerak. WHERE operatori jamlangan funksiyalarga taalluqli emas.

Quyidagi misolda mahsulotning maksimal narxlari, agar ular 1000 dan oshsa, mahsulot turi bo'yicha guruhlangan holda tanlanadi.

TANLANG

MAX(Price.Price) AS Narx
FROM
Axborot reyestri. Nomenklatura narxlari. So'nggi AS narxlarining surati
GURUH BO'YICHA
Narxlar.Nomenklatura.Nomenklatura turi
EGA
MAKSIMUM(Narxlar.Narx) > 1000

SARALASH TURI

ORDER BY operatori so‘rov natijasini tartiblaydi. Yozuvlar izchil tartibda ko'rsatilishini ta'minlash uchun AVTO TARTIBI qo'llaniladi. Ibtidoiy turlar odatiy qoidalarga muvofiq tartiblangan. Malumot turlari GUID bo'yicha tartiblangan.

Xodimlarning nomlari bo'yicha tartiblangan ro'yxatini olish misoli:

TANLANG
Xodimlar.Nomi AS Ismi
FROM
Directory.Employees QANDAY Xodimlar
SARALASH TURI
Ism
AVTO Buyurtma

Boshqa 1C so'rovlar tili konstruktsiyalari

  • ARALASHTIRMOQ- ikkita so'rov natijalari bittaga.
  • HAMMANI BIRLASHTIRISH– COMBINE ga o‘xshash, lekin bir xil qatorlarni guruhlashsiz.
  • BO'SH JADOL- ba'zan so'rovlarga qo'shilganda bo'sh jadvalni ko'rsatish uchun ishlatiladi.
  • JOY- murakkab 1C so'rovlarini optimallashtirish uchun vaqtinchalik jadval yaratadi. Bunday so'rovlar ommaviy so'rovlar deb ataladi.

So'rov tilining xususiyatlari

  • SUBSTRING satrni belgilangan joydan belgilangan belgilar soniga qisqartiradi.
  • YIL...IKKINCHI raqamli turdagi tanlangan qiymatni olish imkonini beradi. Kirish parametri sana hisoblanadi.
  • DAVRANNING BOSHLANISHI VA DAVRANNING OXIRISHI sanalar bilan ishlashda foydalaniladi. Qo'shimcha parametr sifatida davr turi (KUN, OY, YIL va boshqalar) ko'rsatilgan.
  • ADDKDATE sanadan ma'lum turdagi vaqtni qo'shish yoki ayirish imkonini beradi (SECOND, MINUTE, DAY, va hokazo).
  • DIFFERENCE DATE chiqish qiymatining turini (KUN, YIL, OY va boshqalar) ko'rsatib, ikki sana orasidagi farqni aniqlaydi.
  • ISNULL etishmayotgan qiymatni belgilangan ifoda bilan almashtiradi.
  • VAKOLLIK VA VAKOLLIK havolalari belgilangan maydonning string tasvirini oling. Har qanday qiymatlarga va faqat mos yozuvlar qiymatlariga qo'llang.
  • TYPE, TYPE QIYMATLAR kirish parametrining turini aniqlash uchun ishlatiladi.
  • LINK atribut qiymati turi uchun mantiqiy taqqoslash operatori.
  • EXPRESS qiymatni kerakli turga aylantirish uchun ishlatiladi.
  • DATE VAQT raqamli qiymatlardan (yil, oy, kun, soat, daqiqa, soniya) "Sana" turidagi qiymatni oladi.
  • MA'NOSI 1C so'rovida u oldindan belgilangan qiymatlarni ko'rsatish uchun ishlatiladi - kataloglar, ro'yxatlar, xarakteristikalar turlari bo'yicha rejalar. Foydalanish misoli: " Bu yerda Yuridik Jismoniy shaxs = Qiymat (Ro‘yxat. Yuridik shaxs. Jismoniy shaxs)«.

So'rovlar yaratuvchisi

1C bilan so'rovlarni yaratish uchun juda qulay o'rnatilgan mexanizm mavjud - so'rovlar dizayneri. Unda quyidagi asosiy yorliqlar mavjud:

  • "Jadvallar va maydonlar" - tanlanishi kerak bo'lgan maydonlar va ularning manbalarini o'z ichiga oladi.
  • "Ulanishlar" - CONNECTION tuzilishi uchun shartlarni tavsiflaydi.
  • "Guruhlash" - guruhlash tuzilmalari va ular asosida jamlangan maydonlar tavsifini o'z ichiga oladi.
  • "Shartlar" - so'rovdagi ma'lumotlarni tanlash uchun javobgardir.
  • "Kengaytirilgan" - qo'shimcha so'rov parametrlari, masalan, "SELECT" buyrug'i uchun kalit so'zlar va boshqalar.
  • "Qo'shishlar/taxalluslar" - jadvallarni birlashtirish imkoniyatlari ko'rsatilgan va taxalluslar ko'rsatilgan ("QANDAY" konstruktsiyasi).
  • "Buyurtma" so'rovlar natijasini saralash uchun javobgardir.
  • "Jami" - "Guruhlash" yorlig'iga o'xshaydi, lekin "JAMI" konstruktsiyasi uchun ishlatiladi.

Pastki chap burchakdagi "So'rov" tugmasini bosish orqali so'rov matnini ko'rish mumkin. Ushbu shaklda uni qo'lda tuzatish yoki nusxalash mumkin.


So'rov konsoli

Korxona rejimida soʻrov natijasini tezda koʻrish yoki murakkab soʻrovlarni tuzatish uchun dan foydalaning. U so'rov matnini o'z ichiga oladi, parametrlarni o'rnatadi va natijani ko'rsatadi.

Siz so'rovlar konsolini ITS diskida yoki orqali yuklab olishingiz mumkin.

Ushbu maqolada biz siz bilan hamma narsani muhokama qilmoqchimiz 1C so'rovlar tilining funktsiyalari, shuningdek so'rovlar tili konstruktsiyalari. Funktsiya va dizayn o'rtasidagi farq nima? Funktsiya qavslar va ulardagi mumkin bo'lgan parametrlar bilan chaqiriladi va konstruktsiya qavssiz yoziladi. Shubhasiz 1C so'rovlar tilining barcha tuzilmalari va funktsiyalari ma'lumotlarni yig'ish jarayonini moslashuvchan va ko'p funktsiyali qilish. Bu funksiyalar va konstruksiyalar so‘rov maydonlariga, ba’zilari esa shartlarga ham tegishli.

1C Query tili funksiyalari

Chunki aniq tavsif 1C so'rovlar tilining funktsiyalari tuzilmalarning tavsiflariga qaraganda ancha kam uchraydi, biz funktsiyalarni ko'rib chiqishga qaror qildik. Endi keling, ularning har birini alohida ko'rib chiqamiz, uning maqsadi, sintaksisi va foydalanish misolini tavsiflaymiz, shuning uchun:

1. Funktsiya DATE VAQT- bu funksiya “Sana” turi bilan doimiy maydon hosil qiladi.

Sintaksis: DATE VAQT(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)

Foydalanish misoli:

2. DATE FARQI funksiyasi- o'lchovlardan birida (yil, oy, kun, soat, daqiqa, soniya) ikkita sana o'rtasidagi farqni qaytaradi. O'lchov parametr sifatida o'tkaziladi.

Sintaksis: DIFFERENCE DATE(<Дата1>, <Дата2>, <Тип>)

Foydalanish misoli:

Query.Text = "TANLASH | DIFFERENCEDATE(DATETIME(2015, 4, 17), DATETIME(2015, 2, 1), DAY) | Miqdor kunlar AS";

3. VALUE funksiyasi- ma'lumotlar bazasidan oldindan belgilangan yozuv bilan doimiy maydonni o'rnatadi, shuningdek, istalgan turdagi bo'sh havolani olishingiz mumkin.

Sintaksis: VALUE(<Имя>)

Foydalanish misoli:

Request.Text = "SELECT //oldindan belgilangan element | VALUE(Directory.Currencies.Dollar) AS Dollar, //boʻsh havola | VALUE(Hujjat.Tovar va xizmatlarni qabul qilish.EmptyLink) AS Kvitansiya, //oʻtkazish qiymati | VALUE(Transfer) . Yuridik Jismoniy shaxs. Jismoniy shaxs) AS Jismoniy shaxs, //oldindan belgilangan hisob | VALUE(Hisoblar rejasi. Oʻz-oʻzini qoʻllab-quvvatlovchi. Materiallar) AS Hisob_10" ;

4. SELECT funksiyasi- bizning oldimizda kodda ishlatiladigan IF konstruktsiyasining analogi mavjud, faqat bu 1C so'rovlarida qo'llaniladi.

Sintaksis: QACHON TANLASH<Выражение>KEYIN<Выражение>BOSHQA<Выражение>OXIRI

Foydalanish misoli:

Request.Text = //agar summa 7500 dan ortiq bo'lsa, unda 300 rubl chegirma bo'lishi kerak, // shuning uchun agar shart ishga tushirilsa, funktsiya // Sumni qaytaradi - 300 //aks holda so'rov shunchaki Sumni qaytaradi. "TANLASH | TANLASH | QACHON TCReceipts.Sumi > 7500 | KEYIN TCReceipts.Amount - 300 | BOSHQA TCReceipts.Sumagʻi | CHEKIRILGAN YUQORI |DAN | Hujjat.TovarlarXizmatlari.Tovarlarni TCReceipts AS QABULLANISh";

5. EXPRESS funksiyasi- doimiy maydonni ma'lum bir tip bilan ifodalash imkonini beradi.

Sintaksis: EXPRESS(FieldName AS TypeName)

Foydalanish misoli:

Query.Text = "TURLI TANGLA | Sotish.Registrator.Number, | TANLANG | QAChON Sotish.Registrator LINK Hujjati.Iste'mol qilinadigan | KEYIN EXPRESS (Sotuv.Registrator Hujjat.Iste'mol qilinadigan) | BOSHQA TANLASH | Qachon Sotish.Registrator LINK hujjati |. KEYIN EXPRESS(Sotish.Registrator AS Hujjat.Implementation) | OXIRISh | ... | Raqam sifatida END | FROM | Jamgʻarmalarni roʻyxatdan oʻtkazish.Xaridlarni xaridlar sifatida”;

EXPRESS funksiyasidan aralash turdagi sohalarda foydalanishning boshqa varianti bormi, ular qayerda uchraydi? Eng oddiy misol - har qanday registr uchun "Registrator". Xo'sh, nega biz registratorda turni belgilashimiz kerak bo'lishi mumkin? Keling, registratordan "Raqam" maydonini tanlaganimizda vaziyatni ko'rib chiqaylik, raqam qaysi jadvaldan tanlanadi? Hammaga to'g'ri javob! Shuning uchun, so'rovimiz tez ishlashi uchun biz EXPRESS funksiyasidan foydalanib, aniq turni belgilashimiz kerak

Foydalanish misoli:

Query.Text = "SELECT | EXPRESS(Nomenclature.Comment AS Line(300)) AS Comment, | EXPRESS(Nomenclature.Sum AS Number(15,2)) AS Sum |FROM | Directory.Nomenklatura AS Nomenklatura";

6. ISNULL funktsiyasi(muqobil imlo ISNULL) - agar maydon NULL tipida bo'lsa, u holda u funktsiyaning ikkinchi parametri bilan almashtiriladi.

Sintaksis: ISNULL(<Поле>, <ПодставляемоеЗначение>)

Foydalanish misoli:

Shuni ham yodda tutingki, DOIMO NULL turini qandaydir qiymat bilan almashtirish tavsiya etiladi, chunki NULL turi bilan taqqoslash, NULLni NULL bilan solishtirsangiz ham, har doim FALSE qiymatini qaytaradi. Ko'pincha NULL qiymatlar jadvallarni birlashtirish natijasida hosil bo'ladi (ichkidan tashqari barcha turdagi birlashmalar).

Query.Text = //To'liq elementni va uning balanslarini tanlang //agar ba'zi elementda balans bo'lmasa, //NULL maydoni bo'ladi, u 0 qiymati bilan almashtiriladi "SELECT | No. Link, | ISNULL" (MahsulotlarStockInStockRemains.InStockRemaining, 0) AS Qoldiq | FROM | Katalog.Nomenklatura AS № | CHAP BOG'LANISH To'planishlarni ro'yxatdan o'tkazish. Omborlardagi tovarlar. Qolganlar AS TovarlarIchki omborlarda qoldiqlari | ON (TovarlarInStockda Qolganlar; Havola No.)

7. VAKILISH funksiyasi- so'rov maydonining ko'rinishini olish imkonini beradi.

Sintaksis: PERFORMANS(<НаименованиеПоля>)

Foydalanish misoli:

Query.Text = "TANLAMA | TANLASH

1C so'rovlar tilida tuziladi

Biz siz bilan yuqorida muhokama qildik 1C so'rovlar tilining funktsiyalari, endi o'ylash vaqti keldi 1C so'rovlar tilida konstruktsiyalar, ular kamroq muhim va foydali emas, keling, boshlaylik.

1. Qurilish LINK- mos yozuvlar turini tekshirish uchun mantiqiy operator. Ko'pincha murakkab turdagi maydonni ma'lum bir turga nisbatan tekshirishda uchraydi. Sintaksis: LINK<Имя таблицы>

Foydalanish misoli:

Request.Text = //agar yozuvchi qiymat turi hujjat qabuli bo'lsa, //keyin so'rov "Tovarlarni qabul qilish" ni qaytaradi, aks holda "Tovarlarni sotish" "TANLASH | TANLASH | QAChON Qolganlar.Registrator LINK Document.Tovarlarni qabul qilish va Xizmatlar | KEYIN ""Qabul qilish"" | BOSHQA ""Iste'mol"" | Harakat turi sifatida tugaydi | FROM | Jamg'arma reestri. Omborlarda qolgan mahsulotlar AS qoldi" ;

2. Orasida dizayn- bu operator qiymat belgilangan diapazonda yoki yo'qligini tekshiradi.

Sintaksis: ORASIDA<Выражение>VA<Выражение>

Foydalanish misoli:

Request.Text = //kodi 1 dan 100 gacha bo'lgan oraliqda bo'lgan butun nomenklaturani oling "SELECT | Nomenklatura.Link |FROM | Directory.Nomenklatura AS Nomenklatura |QAYERDA | Nomenklatura.Kod 1 dan 100 gacha" ;

3. Qurilish B va B IEARXIYASI- qiymat o'tkazilgan ro'yxatda mavjudligini tekshiring (massivlar, qiymatlar jadvallari va boshqalarni ro'yxat sifatida o'tkazish mumkin). IN HIERARCHY operatori ierarxiyani ko'rish imkonini beradi (Hisoblar rejasidan foydalanish misoli).

Sintaksis: IN(<СписокЗначений>), IERARXİYADA(<СписокЗначений>)

Foydalanish misoli:

Request.Text = //hisobning barcha sub-hisoblarini tanlang "TANLASH | O'z-o'zini qo'llab-quvvatlovchi. Hisob AS bog'lanishi | FROM | Hisoblar jadvali. O'z-o'zini qo'llab-quvvatlovchi AS O'z-o'zini qo'llab-quvvatlovchi | QAYER | O'z-o'zini qo'llab-quvvatlovchi. IEARXIYA QIYMATIDAGI bog'lanish (Chart of the Diagram). Hisob-kitoblar. O‘zini-o‘zi ta’minlovchi. Tovarlar)”;

4. O'xshash dizayn- Bu funksiya satrni string naqsh bilan solishtirish imkonini beradi.

Sintaksis: LIKE "<ТекстШаблона>"

Qator naqsh variantlari:

% - ixtiyoriy belgilarning istalgan sonini o'z ichiga olgan ketma-ketlik.

Bitta ixtiyoriy belgi.

[...] - kvadrat qavslar ichida keltirilgan har qanday bitta belgi yoki belgilar ketma-ketligi. Ro'yxatga olish diapazonlarni belgilashi mumkin, masalan, a-z, ya'ni diapazonga kiritilgan ixtiyoriy belgi, jumladan, diapazon oxirlari.

[^...] - kvadrat qavslar ichida sanab o'tilgan har qanday bitta belgi yoki belgilar ketma-ketligi, inkor belgisidan keyin sanab o'tilganlardan tashqari.

Foydalanish misoli:

Query.Text = //TABUR ildizini o'z ichiga olgan va //yoki kichik yoki bosh harf t bilan boshlanadigan butun nomenklaturani toping "TANLAMA | Nomenklatura. Havola | FROM | Katalog. Nomenklatura AS Nomenklatura | QAYER | Mahsulotlar. Nomenklatura. LIKE "" [Tt ]abur%""" ;

5. Dizayn RUXSAT BERILGAN- bu operator ma'lumotlar bazasidan faqat qo'ng'iroq qiluvchining o'qish ruxsatiga ega bo'lgan yozuvlarni tanlash imkonini beradi. Ushbu huquqlar rekord darajada (RLS) tuzilgan.

Sintaksis: ALLOWED SELECT kalit so'zidan keyin yoziladi

Foydalanish misoli:

Request.Text = "RUXSAT BERILGAN | Qarama-qarshi tomonlar. Havola | FROM | Katalog. Qarama-qarshi tomonlar kontragent sifatida";

6. TURLI dizayn- takroriy yozuvlar mavjud bo'lmagan yozuvlarni tanlash imkonini beradi.

Sintaksis: VARIOUS SELECT kalit soʻzidan keyin yoziladi

Foydalanish misoli:

Request.Text = //o'quvchi huquqlarga ega bo'lgan yozuvlarni tanlaydi "TURLI TANGLA | Counterparties.Name |FROM | Directory. Kontragentlar kontragent sifatida" ;

Shuningdek, TURLI konstruksiyadan RUXSAT BERILGAN operator va boshqa operatorlar bilan foydalanish mumkin.

Foydalanish misoli:

Request.Text = //o'quvchi huquqlariga ega bo'lgan turli yozuvlarni tanlaydi "TANLASH RUXSAT BERILGAN TURLI | Counterparties.Name |FROM | Directory. Kontragentlar kontragent sifatida";

7. BIRINCHI dizayn- so'rov natijasidan parametrda ko'rsatilgan yozuvlar sonini tanlaydi.

Sintaksis: FIRST<число>

Foydalanish misoli:

Request.Text = //"FIRST 4 | CCD raqamlarini tanlang. Havola | FROM | Katalog. CCD raqamlari AS CCD raqamlari" katalogidan dastlabki 4 ta CCD raqamini tanlang;

8. O'ZGARISH UCHUN dizayn- jadvalni blokirovka qilishga imkon beradi, faqat tranzaktsiyalarda ishlaydi (faqat avtomatik qulflar uchun tegishli).

Sintaksis: O'ZGARISH UCHUN<НаименованиеТаблицы>

Foydalanish misoli:

Query.Text = "TANLAMA | Bo'sh qolgan qoldiqlar. Nomenklatura, | Bo'sh qolgan qoldiqlar. Ombor, | Bo'sh qolgan qoldiqlar. Zaxirada qolgan | FROM | Jamg'armalar reestri. Bo'sh qoldiqlar. Qolganlar Erkin qolganlar Qolganlar AS | O'ZGARTIRISH | . Erkin qoldiqlar. Qolganlar";

9. Dizayn BUYURUM BO'YICHA- ma'lumotlarni ma'lum bir soha bo'yicha tartibga soladi. Agar maydon havola bo'lsa, u holda bayroqni o'rnatishda AVTO Buyurtma Saralash havolani ko'rsatish bo'yicha amalga oshiriladi; agar bayroq o'chirilgan bo'lsa, havolalar xotiradagi havola manzilining kattaligi bo'yicha saralanadi.

Sintaksis: SARALASH TURI<НаименованиеПоля>AVTO Buyurtma

Foydalanish misoli:

Query.Text = "TANLASH | Boʻsh qolgan qoldiqlar. Nomenklatura AS Nomenklatura, | Boʻsh qolgan qoldiqlar. Ombor AS Ombor, | Boʻsh qolgan qoldiqlar. Zaxirada qolgan | FROM | Jamgʻarmalarni roʻyxatdan oʻtkazing. Boʻsh qolgan. | Nomenklatura | Buyurtmani AVTO QAYTALASH”;

10. Dizayn GROUP BY- so'rovlar qatorlarini ma'lum maydonlar bo'yicha guruhlash uchun ishlatiladi. Raqamli maydonlar har qanday agregat funksiyasi bilan ishlatilishi kerak.

Sintaksis: GURUH BO'YICHA<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Foydalanish misoli:

Query.Text = "TANLASH | Omborlardagi mahsulotlar.Nomenklatura AS Nomenklaturasi, | Omborlardagi mahsulotlar.Omborda, | SUM(Ombordagi tovarlar.Stock) AS |FROM | RegisterTo'planishlar.MahsulotlarOmborlarda ASUP | ature, | Omborlardagi mahsulotlar.Ombor" ;

11. Dizayn EGA- WHERE konstruktsiyasiga o'xshash ma'lumotlarni tanlash shartiga agregat funksiyasini qo'llash imkonini beradi.

Sintaksis: EGA<агрегатная функция с условием>

Foydalanish misoli:

Query.Text = //InStock maydoni 3 "tanlash GURUH BO'YICHA | Omborlardagi mahsulotlar.Nomenklatura, | Omborlardagi mahsulotlar.Omborda | |MAVJUD | MUMKIN (Ombordagi mahsulotlar. InStock) > 3" ;

12. Qurilish INDEX BY- so'rov maydonini indekslash uchun ishlatiladi. Indekslash bilan so'rovni bajarish uchun ko'proq vaqt ketadi, lekin indekslangan maydonlar bo'ylab qidirishni tezlashtiradi. Faqat virtual jadvallarda foydalanish mumkin.

Sintaksis: INDEX BY<Поле1, ... , ПолеN>

Foydalanish misoli:

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. Dizayn QAYERDA- har qanday tanlov maydonlariga shart qo'yish imkonini beradi. Natija faqat shartni qondiradigan yozuvlarni o'z ichiga oladi.

Sintaksis: QAYERDA<Условие1 ОператорЛогСоединения УсловиеN>

Foydalanish misoli:

Query.Text = //Kompensatsiya Qolgan barcha yozuvlar tanlangan<>0 va //AmountForCalcCompRemaining > 100 "SELECT | CompensationRPORemains.Counterparty, |CompensationRPORemains.Child, | CompensationRPORemains.CompensationRemaining, | CompensationRPORemains.AmountForCalcCompRemains |Place DataTzForCalcCompRemaining.Place DataTz stat ki |QAYERDA |KompensatsiyaRPORqolgan.KompensatsiyaQolgan<>0 | Va CompensationRPORemains.AmountForCalcCompRemaining> 100" ;

14. Dizayn NATIJALARI... UMUMIY- jamilarni hisoblash uchun ishlatiladi; dizayn jamilar hisoblab chiqiladigan maydonlarni va jami maydonlarga qo'llaniladigan agregat funktsiyalarni belgilaydi. TOTAL qurilishidan keyin har bir maydon uchun jamilardan foydalanilganda ma'lumotlar guruhlanadi. Ixtiyoriy GENERAL konstruksiya mavjud; undan foydalanish qoʻshimcha guruhlashni ham taʼminlaydi. Quyida so'rov natijasining namunasini ko'rasiz.

Sintaksis: NATIJALAR<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>BY<ОБЩИЕ> <Поле1, ... , ПолеN>

Foydalanish misoli:

Request.Text = "TANLA | Hisob-kitoblar. Kontraparta shartnomasi. Shartnoma turi AS Shartnoma turi, | Hisob-kitoblar. Kontragent shartnomasi AS Shartnoma, | Hisob-kitoblar. Qarama-qarshi tomon, | Hisob-kitoblar. Balans AS o‘zaro hisob-kitob balansi summasi | FROM | Jamg‘armalar reestri. Mut. Qarama-qarshi tomonlar bilan hisob-kitob. Balanslar AS Hisob-kitoblar | JAMI | SUMUMI (balans) |Dastur ta’minoti | UMUMI, | Shartnoma turi”;

Rasmda so'rovni bajarish jarayonida shakllangan guruhlar ko'rsatilgan, yuqoridagisi UMUMIY bo'limga, ikkinchisi esa kontragent shartnomasining kelishuv turi maydoniga tegishli.

Endi qolganlarini ko'rib chiqaylik.

1C so'rovlarida satrlar bilan ishlash funktsiyalari

1C so'rovlarida qatorli ma'lumotlar bilan ishlash uchun bir nechta funktsiyalar va operatorlar mavjud.

Birinchidan, so'rovlardagi satrlarni qo'shish mumkin. Buning uchun "+" operatoridan foydalaning:

So'rov. Matn = "Tanlash
"" Qator: " " + Source.Name
;

Ikkinchidan, siz chiziqning bir qismini tanlashingiz mumkin. Buning uchun funksiyadan foydalaning SUBSTRUKSIYA. Funktsiya o'rnatilgan 1C tiliga o'xshaydi. U uchta parametrga ega:

  1. Manba qatori.
  2. Tanlangan qator boshlanishi kerak bo'lgan belgi raqami.
  3. Belgilar.

So'rov. Matn= "TANLANG
SUBSTRING("
"Qator:" ", 4, 3) Natijada"; // Natija: oka

Funktsiya ISNULL

NULL - 1C: Enterprise platformasidagi maxsus ma'lumotlar turi. Bundan tashqari, bu turdagi yagona mumkin bo'lgan qiymat. NULL so'rovlarda bir nechta hollarda paydo bo'lishi mumkin: so'rov manbalarini ulashda, agar jadvallardan birida mos keladigan qiymat topilmasa; mavjud bo'lmagan ob'ektning tafsilotlariga kirishda; agar so'rov maydonlari ro'yxatida NULL ko'rsatilgan bo'lsa (masalan, bir nechta jadvallardan tanlov natijalarini birlashtirishda) va hokazo.

Chunki NULL na null, na bo'sh satr, na hatto qiymatdir Aniqlanmagan, ko'pincha uni foydaliroq ma'lumotlar turi bilan almashtirish foydali bo'ladi. Funktsiya aynan shu maqsadda ishlab chiqilgan. ISNULL.

U ikkita parametrga ega:

  1. Qiymat tekshirilmoqda.
  2. Birinchi parametr NULL bo'lib chiqsa, uni almashtirish qiymati.

So'rov. Matn= "TANLANG
ISNULL(Source.Remainder, 0) AS Qoldiq"
; // Agar so'rov natijasi maydon qoldig'i bo'lsa = NULL,
// keyin u 0 ga almashtiriladi va siz u bilan matematik amallarni bajarishingiz mumkin

Funksiyalar PERFORMANS Va KIRISH havolalari

Bu funksiyalar turli qiymatlarning satr tasvirlarini olish uchun mo'ljallangan. Ya'ni, ular havolalarni, raqamlarni, mantiqiy qiymatlarni va boshqalarni o'zgartiradilar. oddiy matnga. Ularning orasidagi farq funktsiyada PERFORMANS har qanday ma'lumotlar turlarini matnga (string) va funksiyaga aylantiradi KIRISH havolalari- faqat havola qiladi va qolgan qiymatlarni o'zgartirilmagan holda qaytaradi.

So'rov. Matn= "TANLANG
Mantiqiy O'VNATISH (TO'G'RI),
Raqam sifatida taqdim etish (4),
VAKILIK (Source.Link) havola sifatida,
VAKILIK (DATETIME(2016,10,07)) Sana sifatida"
;
// Mantiqiy = "Ha", Raqam = "4", Havola = "Hujjat kassa kirim orderi No.... dan..."
// Sana = "07.10.2016 0:00:00"

So'rov. Matn= "TANLANG
Mantiqiy,
RAQAM OLIB VAKILIK MA'LUMOT (4).
PRESENTINGLINK(Source.Link) havola sifatida,
VAKILIK MA'LUMOT (DATETIME(2016,10,07)) Sana sifatida"
;
// Mantiqiy = TRUE, Raqam = 4, Havola = "Hujjat kassa kirim orderi №.... dan..."
// Sana=07.10.2016 0:00:00

Funksiyalar TYPE Va QIMMATLAR TURI

Funktsiya TYPE 1C: Enterprise platformasi ma'lumotlar turini qaytaradi.

So'rov. Matn= "TANLANG
TYPE (raqam)
TYPE (String),
TYPE (Hujjat. Xarajat kassa orderi)”
;

Funktsiya QIMMATLAR TURI unga berilgan qiymat turini qaytaradi.

So'rov. Matn= "TANLANG
QIMMATLAR TURI (5) Raqam sifatida,
TYPE ("
"Chiziq" ") AS String,
TYPE (Source.Link) AS Malumot
Directory.Source AS Manbadan"
;
//Raqam=Raqam, String=String, Katalog = DirectoryLink.Source

Ushbu funktsiyalardan foydalanish qulay, masalan, so'rovda olingan maydon qandaydir turdagi qiymat ekanligini aniqlash kerak bo'lganda. Masalan, kontragentlarning aloqa ma'lumotlarini Kontakt ma'lumotlari reestridan olamiz (u erda nafaqat kontragentlarning, balki tashkilotlar, jismoniy shaxslar va boshqalarning aloqalari saqlanadi):

So'rov. Matn= "TANLANG

FROM

QAYERDA
VALUES TYPE(ContactInformation.Object) = TYPE(Directory.Counterparties)"
;

Funktsiya MA'NOSI

Funktsiya Ma'nosi dan foydalanmasdan to'g'ridan-to'g'ri so'rovda 1C konfiguratsiya ob'ektlaridan foydalanishga imkon beradi.

Oldingi misolga yana bir shart qo'shamiz. Siz faqat kontragentlaringizning telefon raqamlarini olishingiz kerak.

So'rov. Matn= "TANLANG
Aloqa ma'lumotlari. Kirish
FROM
Axborot reestri Aloqa ma'lumotlari QANDAY Aloqa ma'lumotlari
QAYERDA
VALUES TYPE(ContactInformation.Object) = TYPE(Directory.Counterparties)
VA ContactInfo.Type = VALUE(Enum.ContactInfoTypes.Phone)"
;

Shuni ta'kidlash kerakki, bu funktsiya faqat oldindan belgilangan qiymatlar bilan ishlatilishi mumkin, ya'ni. konfiguratordan to'g'ridan-to'g'ri kirish mumkin bo'lgan qiymatlar bilan. Ya'ni, funktsiya MA'NOSI foydalanuvchilar tomonidan yaratilgan katalog elementlari bilan ishlatib bo'lmaydi, lekin ro'yxatlar, oldindan belgilangan katalog elementlari, qiymatlar bilan ishlashi mumkin. EmptyLink.

Operator LINK

Operator LINK so'rov orqali qaytarilgan qiymatlarni ma'lum bir mos yozuvlar turiga tegishli yoki yo'qligini tekshirish uchun mo'ljallangan. Xuddi shu vazifani funktsiyalar yordamida bajarish mumkin TYPE Va QIMMATLAR TURI(ular kengroq qamrovga ega va yuqorida muhokama qilingan).

Masalan, kontragentlar uchun aloqa ma'lumotlarini tanlash vazifasi shu tarzda hal qilinishi mumkin:

So'rov. Matn= "TANLANG
Aloqa ma'lumotlari. Kirish
FROM
Axborot reestri Aloqa ma'lumotlari QANDAY Aloqa ma'lumotlari
QAYERDA
ContactInformation.Object LINK Directory.Counterparties"
;

Operator EXPRESS

Operator EXPRESS 1C so'rovlarida ikki holatda ishlatiladi:

  • ibtidoiy tipning xususiyatlarini o'zgartirish kerak bo'lganda;
  • murakkab ma'lumotlar turiga ega bo'lgan maydonni bitta turdagi maydonga aylantirish kerak bo'lganda.

Primitiv ma'lumotlar turlariga quyidagilar kiradi: raqam, satr, sana, mantiqiy. Ushbu ma'lumotlar turlarining ba'zilari qo'shimcha xususiyatlarga ega. Turi Raqam uzunligi va aniqligi, turi bor Chiziq - uzunligi yoki cheksiz.

Operator EXPRESS ma'lumotlar turini emas, balki qo'shimcha xususiyatlarni o'zgartirishga imkon beradi. Masalan, u cheksiz uzunlikdagi ipni cheklangan uzunlikdagi ipga aylantira oladi. Agar so'rov natijalarini shunday maydon bo'yicha guruhlashingiz kerak bo'lsa, bu foydali bo'lishi mumkin. Cheksiz uzunlikdagi maydonlar bo'yicha guruhlash mumkin emas, shuning uchun biz uni 200 belgidan iborat bo'lgan qatorga aylantiramiz.

So'rov. Matn= "TANLANG
MAQDAN (TOVAR va xizmatlarning TURLI kelishi. Havola) Link AS
FROM
Hujjat.Tovar va xizmatlarni qabul qilish QANDAY Tovar va xizmatlarni qabul qilish
GURUH BO'YICHA
EXPRESS(Tovarlar va xizmatlarni qabul qilish. Qator AS (200))"
;

Ba'zi hollarda, kompozit ma'lumotlar turiga ega bo'lgan maydonlarga so'rovlar 1C platformasi tomonidan optimal tarzda qayta ishlanmasligi mumkin. Bu so'rovlar vaqtini uzaytiradi, shuning uchun oldindan birikma turini bitta turga aylantirish foydali bo'lishi mumkin.

So'rov. Matn= "TANLANG
EXPRESS(Tovar aylanmasi harakati. Hujjat AS. Buyurtma. Mijoz buyurtmasi). Sana Buyurtma sanasi,
Tovarlar aylanmasi.Nomenklatura
FROM
Jamg'armalarni ro'yxatdan o'tkazish. Tovarlar harakati. Tovar aylanmasi AS Tovarlar harakati.
QAYERDA
Tovarlarning aylanmasi.Order LINK Document.Mijoz buyurtmasi"
;

Operatorlar TANLOV Va IS NULL

Operator TANLOV operatorga o'xshash AGAR o'rnatilgan 1C tilida, lekin biroz qisqartirilgan funksionallikka ega.

Aytaylik, biz Aloqa ma'lumotlari registridan kontakt ma'lumotlarini olishni xohlaymiz va shu bilan birga, alohida so'rov maydonida uning kontragentga yoki jismoniy shaxsga tegishli ekanligini ko'rsatamiz.

So'rov. Matn= "TANLANG
Aloqa ma'lumotlari. Kirish,
TANLOV
QAChON QIYMATLAR TYPE(ContactInformation.Object) = TYPE(Directory.Counterparties)
KEYIN "
Qarama-qarshi tomon "
BOSHQA TANLOV
QAChON QIYMATLAR TYPE(ContactInformation.Object) = TYPE(Directory.Individuals)
KEYIN "
Individual"
BOSHQA "Boshqa birov" "
OXIRI
Egasi sifatida tugaydi
FROM
Axborot reestri. Kontakt ma'lumotlari AS Aloqa ma'lumotlari"
;

Misoldan ko'rinib turibdiki, dizaynda TANLOV so‘zdan keyin har doim shart bo‘ladi QACHON; so'zdan keyin shart rost bo'lsa qo'llaniladigan qiymat KEYIN va shart bajarilmasa, so'zdan keyin qo'llaniladigan qiymat BOSHQA. Barcha uchta dizayn elementi TANLOV majburiydir. Elementni o'tkazib yuborish BOSHQA, xuddi operatordan foydalanganda bo'lgani kabi AGAR o'rnatilgan 1C tilida bu mumkin emas. Shuningdek, operatordan TANLOV dizaynning o'xshashi yo'q ELSEIF, lekin siz investitsiya qilishingiz mumkin TANLOV boshqasida, bizning misolimizda bo'lgani kabi.

Operator IS NULL dizaynda foydalaniladi TANLOV so'rov maydonini NULL turi bilan solishtirish uchun.

So'rov. Matn= "TANLANG
TANLOV
QIYMAT NULL BO'LSA, 0 ga teng
ALSE Ma'nosi
OXIRI"
;

Bundan tashqari, operator IS NULL so‘roq sharoitlarida, masalan, gapda qo‘llanishi mumkin QAYERDA.

Ko'pchilik 1C 8 so'rovlar tilida EXPRESS funktsiyasini turdagi konvertor sifatida talqin qiladi, ammo u umuman bu maqsadlar uchun mo'ljallanmagan. Kesim ostidagi tafsilotlar...

Shunday qilib, ko'p odamlar noto'g'ri, ular maydonni tip bilan o'zgartirishi mumkin deb hisoblashadi Chiziq turi bilan maydonda Raqam yoki qatordagi havola. Aslida, EXPRESS operatori quyidagilarni o'zgartirishi mumkin:

  • ibtidoiy turdagi sozlamalar;
  • qo'shma tipdagi maydonni bitta turdagi maydonga;

Keling, ushbu vaziyatlarni batafsil ko'rib chiqaylik ...

Primitiv tip sozlamalarini konvertatsiya qilish

Keling, ma'lumotlarni cheksiz turdagi qator bo'yicha guruhlashni xohlagan vaziyatni ko'rib chiqaylik, masalan, bunday satr ko'pincha hujjatlardagi sharhdir. Bunday holda, biz sharhlar bo'yicha guruhlana olmaymiz; xatoga yo'l qo'yamiz. Shuning uchun biz cheksiz uzunlikdagi satrni cheklangan uzunlikdagi satrga aylantirishimiz va keyin uni guruhlashimiz kerak. Masalan, bir xil izohli hujjatlar sonini hisoblaylik:

TANLANG
EXPRESS(Admission.Comment AS LINE(300)) AS Comment,
QUANTITY(Incoming.Link) havola sifatida
FROM
Hujjat.Kirish zali AS Kirish zali

GURUH BO'YICHA
EXPRESS(Qabul. Izoh QATR (300))

Yana bir holat - so'rov hisob-kitoblardan foydalanganda, chiqishda biz ko'p sonli kasrli raqamni olishimiz mumkin (1100.001568794). So'rov tugallangandan so'ng, bu raqamni qayta ishlamaslik uchun siz uni darhol kerakli uzunlikka qisqartirishingiz mumkin, ammo raqam kesilayotganini va yaxlitlanmaganligini tushunish muhimdir. Misol:

TANLANG
Sotish.Mahsulot,
EXPRESS(Sotuv.Miqdor * Sotish.Narx RAQAM(15, 2))
FROM

Murakkab turni bitta turga aylantirish

Ro'yxatga olish registrlari ko'pincha qo'shma turga ega; uni bitta turga aylantirish uchun konstruktsiyadan foydalaning EXPRESS Biroq, namuna olish bosqichida siz amalga oshirish hujjatini kvitansiya hujjatiga aylantirmoqchi bo'lsangiz, so'rov, albatta, xato bilan bajarilmaydi, shuning uchun konvertatsiya qilishdan oldin siz havola turini tekshirishingiz kerak. Bu shunday bema'nilik))) Bularning barchasi nima uchun kerak, deb so'rayapsiz. Men javob beraman, bu yozma qisqalik hisobiga yashirin so'rovlarni optimallashtirish momentlaridan biridir. Keling, ushbu nuqtaning qo'llanilishini misol bilan ko'rib chiqaylik.

Aytaylik, siz RN Sales-dan har bir registratorning raqamini olishni maqsad qilgansiz. so'rov yozing:

TURLI TANLASH
Sotish.Registrator.Raqam
FROM
RegisterAccumulations.Sotish QANDAY Sotish

Aslida, hech narsa oddiyroq bo'lishi mumkin emas. Ammo 1C, ijro etilish bosqichida, ushbu so'rovni hech qanday ulanishlarsiz, bizda mumkin bo'lgan registratorlar mavjud bo'lgan chap ulanishlar bilan so'rovga aylantiradi. Bular. agar ushbu registrga 20 ta hujjat yozilsa, biz 20 ta chap qo'shilish bilan SQL so'rovini olamiz. Nima uchun bu sodir bo'lmoqda? O'rnatilgan 1C optimallashtiruvchisi nuqta orqali olingan maydonlarni juda yaxshi qayta ishlamasligi sababli, bu holda bu raqam atributidir. Bu piroglar, agar biz tez-tez hujjat raqamini olishni istasak, uni ro'yxatga olish ma'lumotlariga kiritish yoki EXPRESS operatoridan foydalanish maqsadga muvofiqdir, ammo qisqalik hisobiga:

TURLI TANLASH
Sotish.Registrator.Raqam,
TANLOV
QAChON Sales.Registrator LINK Document.Consumable
KEYIN EXPRESS (Sotish.Registrator Hujjat sifatida. Sarflanadigan)
BOSHQA TANLOV
QAChON Sales.Registrator LINK Document.Implementation
KEYIN EXPRESS (Sotish. Registrator Hujjat sifatida. Amalga oshirish)
OXIRI
...
Raqam sifatida tugaydi
FROM
RegisterAccumulations.Sotish QANDAY Sotish

Endi chap qo'shilish bitta aniq jadvalni o'z ichiga oladi.

Umuman olganda, siz diqqat bilan nuqta orqali ma'lumotlarga murojaat qilishingiz kerak, chunki 1C bu holda SQL so'rovida chap qo'shilishdan foydalanadi, bu esa ishlashga sezilarli ta'sir ko'rsatishi mumkin. Bu optimallashtirish nuqtalaridan biridir.

Shunday ekan, boshlaylik. So'rov - bu tizimdagi ma'lumotlar bazasi jadvallariga so'rovlarni yaratish va bajarish uchun ishlatiladigan 1C 8.2 da maxsus ob'ekt. So'rovni bajarish uchun so'rovlar ma'lumotlari manbalari sifatida qaysi jadvallar ishlatilishi, qaysi maydonlarni tanlash kerakligi, qanday saralash va guruhlar qo'llanilishi va hokazolarni tavsiflovchi so'rov matnini yaratishingiz kerak. So'rovlar haqida ko'proq ma'lumotni "1C 8.2 Dasturchilar uchun qo'llanma" kitobida o'qishingiz mumkin. 1C 8.2 so'rovlar tili sintaksisi bo'yicha boshqa SQL ma'lumotlar bazasi so'rovlari tillariga juda o'xshash, ammo farqlar ham mavjud. O'rnatilgan so'rovlar tilining asosiy afzalliklari qatorida, so'rovlarda maydonlarning yo'qolishini, virtual jadvallarning mavjudligini, jamilar bilan qulay ishlashni va so'rovlarda yozilmagan maydonlarni ta'kidlash kerak. Kamchiliklari shundaki, siz so'rovni chiqish maydoni sifatida ishlata olmaysiz, saqlangan protseduralardan foydalana olmaysiz va satrni raqamga aylantira olmaysiz.

1. So'rovning o'qish qobiliyatini oshirish va so'rov parametrlari sonini kamaytirish uchun so'rovda oldindan belgilangan konfiguratsiya ma'lumotlariga kirish uchun literaldan foydalanishingiz mumkin. QIYMAT (QIYMATNI TAKSIL qilish). Qiymatlarning ko'rinishi sifatida ro'yxatga olish qiymatlari, ma'lumotnomalarning oldindan belgilangan ma'lumotlari, hisoblash turlarining rejalari, xarakteristikalar turlarining rejalari, hisoblar jadvallari, bo'sh havolalar, marshrut nuqtalarining qiymatlari, tizim o'tkazmalari qiymatlari ( masalan, jamg‘arish harakati turi, hisob turi) dan foydalanish mumkin.

WHERE Shahar = VALUE(Directory.Cities.Moskva)

WHERE Shahar = VALUE(Directory.Cities.EmptyLink)

WHEREProductType = VALUE(Ro'yxat.MahsulotTypes.Service)

WHEREMovementType = VALUE(MovementTypeAccumulation.Incoming)

Yo'nalish nuqtasi QAYER =

VALUE(BusinessProcess.Agreement.RoutePoint.Agreement)

Qavslar ichidagi ifoda har doim oldindan belgilangan qiymat turiga mos keladigan birlik so'zdan (Katalog, sanab o'tish va boshqalar) boshlanadi.

2.So'rovda avtomatik buyurtma berish jarayonni sezilarli darajada sekinlashtirishi mumkin. Saralash kerak bo'lmasa, uni umuman ishlatmaslik yaxshiroqdir. Ko'p hollarda kalit so'z yordamida tartiblashni yozish samaraliroq bo'ladi SARALASH TURI.

3.Siz taxalluslardan foydalanganda noaniq maydon paydo bo'lmasligiga ishonch hosil qilishingiz kerak. Aks holda, tizim qaysi ob'ektga kirish kerakligini tushunmaydi.

Noaniq maydonga ega so'rovga misol:

TANLANG

Qolgan Tovarlar Qolgan. Miqdori Qolgan

Katalog.Nomenklatura AS Nomenklaturasi

CHAP BOG'LANISH Yig'malarni ro'yxatdan o'tkazing.Qolgan tovarlar.Qolgan tovarlar qolgan.

Dasturiy ta'minot Qolgan MahsulotlarQolgan.Nomenklatura = Nomenklatura.Link

Jadval taxallusni to'g'rilash kerak, masalan: "Katalog.Nomenklatura AS Nomenklatura1" va "Nomenklatura.Link" "Nomenklatura1.Link" ga mos ravishda tuzatilishi kerak.

4.Ba'zan kalit so'z yordamida mos yozuvlar maydonlarining ko'rinishini olish foydali bo'ladi PERFORMANS ma'lumotlar bazasiga takroriy kirish imkoni bo'lmasligi uchun havola bilan birga. Bu so'rov natijasini jadvalda ko'rsatishda foydalidir.

TANLANG

Vakillik (Hujjat. Qarama-qarshi tomon) oluvchi sifatida,

TAQDIM (Hujjat. Baza)

Document.Invoice AS Document

5.So'rovda foydalaning EXPRESS (Fayl AS turi) kompozit turdagi ma'lumotlar maydoni bilan ulanishdan keraksiz jadvallarni olib tashlash imkonini beradi. Bu so'rovning bajarilishini tezlashtiradi.

Misol (ro'yxatga oluvchi - Qolgan tovarlarni jamlash reestrining jismoniy jadvali uchun kompozit turdagi maydon, so'rovda tovar qabul qilinganligi to'g'risidagi hujjatlarning sanasi va soni tanlanadi, hujjat ma'lumotlariga kirishda Sana va raqam orqali Ro'yxatga oluvchi, ro'yxatga olish jadvalining tovar qoldig'i registrini ro'yxatdan o'tkazuvchisi bo'lgan hujjatlar jadvallari bilan bir nechta aloqasi yo'q ):

TURLI TANLASH
EXPRESS(Qolgan tovarlar.Registrator Hujjat AS. Tovarlarni qabul qilish).Raqam KABUL NORMASI,

EXPRESS(Qolgan tovarlar. Hujjat sifatida ro'yxatga oluvchi. Tovarlarni qabul qilish).

FROM
Jamg'armalar reestri. Qolgan tovarlar Qolgan tovarlar AS
QAYERDA
(EXPRESS(Qolgan tovarlar. Hujjat sifatida ro'yxatga oluvchi. Tovarlarni qabul qilish) BO'LGAN EMAS)

6.Agar 1C konfiguratsiyasida muayyan konfiguratsiya ob'ektlariga nisbatan cheklangan huquqlarga ega bo'lgan foydalanuvchilar mavjud bo'lsa, bunday ob'ektlarga so'rovda kalit so'zdan foydalanish kerak. RUXSAT BERILGAN so'rov xatosiz bajarilishi uchun (Ruxsat berilgan... ni tanlang)

7.Ich ichiga joylashtirilgan jadvallarni (masalan, jadval qismi bo'lgan hujjat) o'z ichiga olgan jadvallarni birlashtirganda kalit so'z foydali bo'lishi mumkin. EMPTYTABLE masalan, hujjatlardan birida jadval qismi bo'lmasa.

HAMMANI BIRLASHTIRISH

FROM Document.Invoice

8.Har biri bitta satrdan iborat bo'lgan jadvallarni birlashmalari bilan ishlaganda, jadvallar qatorlarini birlashtirish kerak bo'lishi mumkin (har ikkala jadvalda ham ularni birlashtirish uchun maydon yo'q). Bunga qurilish yordamida erishish mumkin " TO'LIQ ULANISH jadvali TRUE" Agar jadvallar bir nechta satrga ega bo'lsa, natijada ikkala jadval qatorlari sonining ko'paytmasiga teng qatorlar soni bo'ladi. Agar bitta jadvalda O satrlar mavjud bo'lsa, natijada olingan jadvaldagi qatorlar soni ikkinchi jadvaldagi qatorlar soniga teng bo'ladi. Bundan tashqari, bunday jadvallarni ulash uchun siz jadvallarning dekart mahsulotidan foydalanishingiz mumkin, bunda ikkala jadvaldagi barcha qatorlar kombinatsiyasi olingan jadvalda paydo bo'ladi. Shuni yodda tutishimiz kerakki, agar jadvallardan birida 0 qator bo'lsa, dekart mahsuloti 0 bo'ladi, shuning uchun to'liq qo'shilish yaxshiroq bo'ladi. Umuman olganda, to'liq ulanish o'rniga TO'G'RI Siz boshqa istalgan turdagi birlashmalardan foydalanishingiz mumkin, lekin bu holda jadvallardan birida nolga teng bo'lmagan qatorlar bo'lsa ham, natijada olingan jadval 0 qatorga ega bo'lishi ham mumkin. To'liq qo'shilish holatida, bu holat faqat bitta holatda yuzaga keladi, agar ikkala jadvaldagi qatorlar soni 0 bo'lsa. Agar jadvalda kamida bitta qator borligini bilsangiz, u holda siz foydalanishingiz mumkin CHap ULANISH shartli boshqa jadval bilan TO'G'RI.

Misol (to'liq qo'shilish uchun o'ylab topilgan):

TANLANG

K. Qarama-qarshi tomon

Ro'yxatga olish.Gender AS Jins

TO'LIQ ULANISH (Birinchi 1 D. Hujjatdan kontragentni tanlang. Tovarlarni sotish QANDAY D D. Vaqt bo'yicha tartibga solish)

ON(ROQIQ)

9. Muayyan maydon uchun noyob yozuvlarni olish uchun guruhlash o'rniga kalit so'zdan foydalanish to'g'riroqdir. TURLI so'rovda, chunki bu qurilish ancha aniq va kalit so'z GURUH BO'YICHA kengroq qo'llanilishiga ega va agar qo'shimcha ravishda agregat funktsiyalarni guruhlar bo'yicha hisoblash zarur bo'lsa, tez-tez ishlatiladi. Ba'zi hollarda cheklangan miqdordagi qatorlarni chiqarish kerak bo'ladi. Buning uchun so'rov tavsifida kalit so'zni ko'rsatishingiz kerak BIRINCHI va undan keyin - kerakli qatorlar soni.

uchun misol BIRINCHI:

Birinchi 5 ni tanlang

Katalog.Nomenklatura.Ism,

Katalog.Nomenklatura.PurchasingPrice

Saralash turi

Katalog.Nomenklatura.PurchasePrice pasayish

uchun misol TURLI:

Turli-ni tanlang

Hujjat.Iste'mol qilinadigan.Qarshi tomon

10.So‘rovdagi jamlash funksiyalaridan kalit so‘zsiz ham foydalanish mumkin GURUH. Bunday holda, barcha natijalar bir qatorga to'planadi.

Tanlang

Summa(Invoice.Amount) Miqdor sifatida

Hujjat.Invoice.Tarkib hisob-faktura sifatida

11.Tanlash maydonlaridagi so'rovlarda siz tanlov maydonlarining tafsilotlariga erkin kirishingiz mumkin. Bu xususiyat tanlangan maydonni yo'qotish deb ataladi. Agar ma'lumotlar manbai ichki o'rnatilgan jadval bo'lsa (hujjatning jadval qismi), u holda tanlov maydonlarida siz asosiy jadvalning maydonlariga ham kirishingiz mumkin (masalan, Bog'lanish maydoni orqali, asosiy jadvalning maydoniga kiring Hisob qaydnomasi)

TANLANG


Tovar va xizmatlarni qabul qilish Tovarlar Miqdor AS Miqdor,
Tovar va xizmatlarni qabul qilishGods.Link.Counterparty
FROM

QAYERDA
Tovar va xizmatlarni qabul qilishGoods.Link = &Link

Agar so'rovda guruhlar mavjud bo'lsa, maydonni yo'qotishdan foydalanishning o'ziga xos xususiyati bor. So'rov maydonlari ro'yxatidagi guruhlarga ega bo'lgan har qanday so'rovlarda siz guruhlash maydonlarining tafsilotlariga erkin kirishingiz mumkin.

TANLANG

Tovar va xizmatlarni qabul qilish Tovar nomenklaturasi,

Tovar va xizmatlarni qabul qilish Tovar nomenklaturasi.

SUM (Tovar va xizmatlarni qabul qilish Tovar. Miqdor) AS Miqdori,

Hujjat.Tovar va xizmatlarni qabul qilish.Tovarlar QANDAY Tovar va xizmatlarni qabul qilish Tovarlar

GURUH BO'YICHA

Tovar va xizmatlarni qabul qilish Tovar nomenklaturasi,

1C yordamida aytilishicha, agar guruhlash mavjud bo'lsa, so'rovlarni tanlash maydonlarida faqat guruhlash maydonlari va tanlov maydonlari uchun agregat funktsiyalari ishtirok etishi mumkin. Agregat funktsiyalar ichki o'rnatilgan jadval maydonlariga qo'llanilganda bitta istisno hol mavjud. Bunday holda, tanlov maydonlari ro'yxatida natijalarni ushbu maydonlar bo'yicha guruhlamasdan, yuqori darajadagi jadval maydonlariga kirish mumkin.

TANLANG

Tovar va xizmatlarni qabul qilish.Tovar.(SUM (Miqdor), Nomenklatura),

Tovar va xizmatlarni qabul qilish kontragent

Hujjat.Tovar va xizmatlarni qabul qilish QANDAY Tovar va xizmatlarni qabul qilish

GURUH BO'YICHA

Tovar va xizmatlarni qabul qilish.Tovar.(nomenklatura)

12. Ba'zan, guruhlashda biron bir maydonni belgilash o'rniga, so'rovlarni tanlash maydonlariga quyidagi parametrni kiritish foydali bo'ladi:

TANLANG
DocProducts.Nomenklatura,
&Qarshi tomon,
&davr,
SUM(DocProducts.Quantity * DocProducts.Q) AS Miqdori,
SUM(DocProducts.Amount) AS Sum
FROM
Document.Admission.Mahsulotlar DocProducts AS
QAYERDA
DocProducts.Link = &Link

GURUH BO'YICHA
DocProducts.Nomenklatura

Va keyin so'rov tanasida parametrni o'rnating:

Request.SetParameter("&Account", SelectAccount);

Query.SetParameter("&Don", Sana);

13. Universal so‘rovlarda parametrlardan so‘rovlar ma’lumotlari manbalarini tavsiflashda, sharoitlarda foydalanish mumkin. QAYERDA, jadvallarni birlashtirish sharoitida va virtual jadvallar parametrlarida. Umumiy so'rovlarni yaratishning ikkita usuli mavjud:

A) satrlarni birlashtirish mexanizmidan foydalanib, so'rov matniga o'zgaruvchilar qo'shish;

OrderingType = ?(SOME VARIABLE,"","DESC");

Query.Text = "Tanlash... Maydon 1 bo'yicha tartiblash " + OrderType + "...";

Query.Text = "1-maydonni tanlang...";

Agar SOME VARIABLE = 1 bo'lsa

Request.Text = Request.Text + ",Field2 ...";

endIf;

B) so'rovning turli qismlarida parametrlardan foydalaning (masalan, so'rovning ma'lumotlar manbalari bo'limida), so'ngra o'rnatilgan til usuli - STREPLACE(). Universal so'rovlarni loyihalashda ob'ektlarning xususiyatiga kirish foydali bo'ladi METADATA(), uning yordamida siz biron bir havola uchun jadval nomini aniqlashingiz mumkin (masalan, hujjat uchun bu shunday bo'ladi - Havola . METADATA().NAME), parametr orqali ba'zi universal protseduraga o'tdi.

Tanlang

DocTch.Nomenklatura,

&Ba'zi DocTC AS DocTC

Va keyin so'rov tanasida parametrni o'rnating

Request.Text = StrReplace(Request.Text, "&SomeDocTCH", "Hujjat."+Link.Metadata().Name+".Mahsulotlar");

Parametrlardan ixtiyoriy shartni yoqish uchun so'rov sharoitida foydalanish mumkin &Parameter OR NO SomeProperty:

Request.SetParameter(“&Parameter”, “Counterparty.Name=””Ivanov”””);

Literaldan foydalanish TO'G'RI so'rovdagi ba'zi filtrlarni olib tashlashingiz mumkin

Request.SetParameter("&Parameter", rost);

14.So'rovlar dizaynerida jadval kontekst menyusi buyrug'i juda foydali - " Jadval nomini o'zgartirish...", uning yordamida siz ma'lumotlar manbai uchun ba'zi bir umumlashtirilgan nomni topishingiz mumkin. Bir xil turdagi, tuzilishi o'xshash jadvallar uchun so'rovlarni yaratish uchun ikkinchi jadval uchun birinchi jadvalning so'rov matnini nusxalash foydali bo'lishi mumkin, o'ting. so'rovlar dizayneri oynasiga o'ting va jadvalning kontekst menyusidagi elementni tanlang - Jadvalni almashtiring... va ikkinchi jadvalni tanlang.

15.So'rovlar konstruktorining virtual jadvallari shartlari yoki parametrlari bo'limlarida ichki so'rovlar yaratish bilan ishlashda qavs ichidagi bo'sh joyni ajratib ko'rsatish texnikasi qo'llaniladi, keyin kontekst menyusida "So'rovlar konstruktori" bandi paydo bo'ladi va o'rnatilgan so'rovni tahrirlashda qavs ichidagi so'rovning hammasi shartda ajratib ko'rsatiladi.

Ichki so'rovga misol:

B mahsuloti (mahsulotni tanlang...)

16. Registrlarni muvozanatlash uchun so'rovlarda ACS hisobotlarini loyihalashda Davr parametri sifatida ifodadan foydalanish qulayroq va to'g'ri bo'ladi. Qo'shishToSana(Yakuniy Davr(Davlat,KUN),IKKINCHI,1), chunki virtual balanslar oxirgi soniyani hisobga olmaganda, davr boshida olinadi. Hujjatlar bilan +1 soniyali texnikadan foydalanish mumkin emas: hujjatlarni joylashtirishning yangi usuliga ko'ra, reestr qoldiqlari chegara ob'ekti tomonidan ko'rsatilgan Davr uchun, shu jumladan hujjatni taqdim etish vaqti bilan (bu sanada emas) olinishi kerak. hujjat +1 soniya!), va eski joylashtirish usuliga ko'ra - hujjatning vaqtida (va hujjat sanasida emas!). Bir davr uchun aylanma yoki ma'lumotlarni tahlil qilganda, turi bilan parametr qo'shish qulay Standart davr(bu holda kun oxirida intervalning oxirgi sanasini ko'rsatishga hojat yo'q). "Davrning boshlanishi" standart maydoni uchun "Ifoda" maydoniga siz kiritishingiz kerak "&Davr.Boshlanish sanasi" "Ifoda" maydoniga "Davr oxiri" standart maydoniga " deb yozing. &Davlat.Yakunlash sanasi". So'rovlar tili bo'yicha juda ko'p foydali ma'lumotlarni sintaksis yordamchisida emas, balki 1C 8.2 konfiguratorining to'liq yordamida (F1 tugmasi) topish mumkin.

17.So‘rovlar funksiyasi IsNull(inglizcha versiyasini yozish qulayroq IsNull) odatda raqamli so'rov maydonlari uchun Null qiymatlaridan xalos bo'lish uchun ishlatiladi. Ba'zi hollarda, masalan, ikkita jadvalning to'liq qo'shilishi, funktsiya IsNull (Parameter1,Parameter2) dizaynni muvaffaqiyatli almashtirishi mumkin TANLOV QACHON... KEYIN..BOSHQA....OXIR, har qanday maydon uchun NULL qiymatlari birinchi jadvalda ham, ikkinchisida ham bo'lishi mumkin bo'lganda (bu konstruktsiya maydon uchun Null bo'lmagan qiymatni olishga imkon beradi). Ammo shartli operatordan farqli o'laroq, buni yodda tutishimiz kerak TANLOV funktsiyasi IsNull ikkinchi argument turini birinchi argument turiga o'zgartiradi, agar argument turlari boshqacha bo'lsa, hisobga olinishi kerak!

IsNull(Reg.Qolgan,0)

IsNull(Doc.Mahsulot,Doc1.Item)

18. Shartli qurilishda TANLOV Muayyan qiymatga tenglikni tekshirishning oddiy holati uchun muqobil sintaksis mavjud, ammo u hujjatlashtirilmagan:

Tanlov ifodasi qachon 1, keyin “yuqori” qachon 2, keyin esa “o‘rta” boshqasi “past”

19. NULL qiymatni tekshirish operatori Ha Null(Ingliz tilidagi versiyasidan foydalanishni tavsiya qilishimiz mumkin Null). Bu konstruksiya ikkita qiymatni taqqoslaydigan har qanday operatsiya, hech bo'lmaganda bittasi Null bo'lganligi sababli paydo bo'ldi. Yozing Bu erda Ism = Null noto'g'ri. Bu operatorni inkor qilish shakli ham qiziq Null yo'q- noto'g'ri, lekin to'g'ri Ha Null emas yoki shakl Yo'q (1-maydon null)- bu He operatori bilan birgalikda ishlatiladigan barcha operatorlardan sezilarli farq.

20. Ba'zan operator shakli foydali bo'ladi IN sanab o'tilgan qiymatlardan biri bilan mosligini tekshirish uchun.

...Mahsulot qayerda. Nomi B (“Maishiy texnika”, “Kompyuterlar”)

Ma'lumotnomalar uchun operator shakli foydali bo'lishi mumkin IN ierarxiya a'zoligini tekshirish.

...IERARXİYADA Nomenklatura qayerda (&Guruh)

Operator IN ko'pincha pastki so'rov natijasiga qiymat kiritilganligini tekshirish uchun ishlatiladi.

Quyi so'rovda siz tashqi so'rov maydonlariga vaziyatda kirishingiz mumkin.

// Mavjud bo'lgan mahsulotlarning nomlarini tanlang

// fakturalarda

TANLANG

Mahsulotlar nomi

Katalog. Nomenklatura QANDAY Mahsulotlar

(TANLANG

Hisob-fakturaning tarkibi. Nomenklatura

Document.Invoice.Composition AS InvoiceComposition

InvoiceContent.Nomenklatura = Products.Link)

Operatsiya IN massivlar, qiymatlar ro'yxati, qiymatlar jadvallari, ichki so'rovlar bilan ishlatilishi mumkin. Bunday holda, shartlarni kamaytirish mumkin

Quyi so'rov uchun sintaksis

(ibora1, ifoda2,..., ifodaN) In (Ifoda1, ifoda2,..., ifodaN...ni tanlang)

Qiymatlar jadvali sintaksisi

(ibora1, ifoda2,..., ifodaN) (&TK) da TK qiymatlari jadvalida birinchi N ta ustun ishlatiladi

20. Internetda so'rovlar dizaynerining har doim qanday ishlashi haqida hazil bor CHAP jadvallarni birlashtirish (va ularni almashtirish), biz qanday belgilaganimizdan qat'iy nazar TO'G'RI:

1C: Korxona "chapga" sevadi.

21. So'rovlar konsolida murakkab so'rovlarni disk raskadrovka qilish qulay. Internetda ularning ko'plari bor. So'rovni tuzatgandan so'ng, siz uni nusxalashingiz mumkin va so'rovlar dizaynerida ajoyib tugma mavjud " So'rov", bu erda siz uni bir xil shaklda joylashtirishingiz va saqlashingiz mumkin (ilgari uni faqat konfiguratorda nusxalash va so'rovni chiziqni buzish belgisi yordamida formatlash mumkin edi). "So'rov" tugmasini bosganingizda ochiladigan oynada siz so'rovni tahrirlashingiz va bajarilish natijasini ko'rishingiz mumkin, bu juda qulay.

22.ACS hisobotlarini loyihalashda shuni yodda tutish kerakki, agar siz ma'lum bir maydon bo'yicha filtrlashni ta'minlashingiz kerak bo'lsa, so'rov matniga parametr qo'shish shart emas. Query Builder yorlig'iga ega " Ma'lumotlar tarkibi", bu erda shartlarga parametrlarni qo'shishingiz mumkin. Bundan tashqari, ACS hisoboti darajasida shartlar yorlig'i mavjud bo'lib, unda siz o'zboshimchalik bilan shartlarni qo'shishingiz va ularni tezkor sozlamalarda saqlashingiz mumkin. Bunday holda, shartlar universal bo'ladi (tenglik, tengsizlik, tegishlilik, ro'yxatga kiritish va boshqalar).

23. Hujjatlar bilan ishlashda virtual jadval maydoni bo'yicha saralashni qo'shish kerak bo'lishi mumkin VAQT LAZASI, lekin omadsizlik - ichki so'rovlarda bu maydon bo'yicha tartiblash to'g'ri ishlamaydi. Tamburlar bilan raqsga tushish yordam beradi: virtual maydon bo'yicha saralash VAQT LAZASI ikkita saralash bilan almashtiriladi: sana va havola bo'yicha. Shuningdek, ichki so'rovni alohida so'rovga ko'chirish orqali muammoni vaqtinchalik jadval orqali hal qilishingiz mumkin. Ko'pgina versiyalarda bu xususiyat yoki xato tuzatilmagan.

Belgilangan kontragent (aniqrog'i, hujjatning jadval qismi) uchun oxirgi e'lon qilingan hujjatni qabul qiladigan noto'g'ri so'rovga misol:

TANLANG

Sarf materiallari. qator raqami,

Sarflanadigan mahsulotlar.Mahsulot,

Iste'mol qilinadigan buyumlar. Miqdori,

Iste'mol qilinadigan mahsulotlar Narxi,

Sarflanadigan buyumlar.Miqdor

Hujjat. Sarflanadigan AS D

Mumkin echimlar:

A) bilan almashtiring SARALASH TURI yoqilgan

D.Date DESC tomonidan buyurtma.

B) Ichki so'rovni vaqtinchalik jadvalga ko'chirishingiz mumkin:

Hujjat. Sarflanadigan AS D

Va D.Counterparty = &Counterparty

////////////////////////////////////////////////////////////////////////////////

TANLANG

Sarf materiallari. qator raqami,

Sarflanadigan mahsulotlar.Mahsulot,

Iste'mol qilinadigan buyumlar. Miqdori,

Iste'mol qilinadigan mahsulotlar Narxi,

Sarflanadigan buyumlar.Miqdor

Hujjat. Sarf materiallari. Sarf materiallari AS

C) Hujjatning asosiy jadvaliga, shundan keyingina jadval qismiga murojaat qilish mumkin

TOP 1 TANLASH

Satr raqami,

mahsulot,

Miqdori,

Narxi,

so'm

Hujjat. Sarf materiallari AS Sarf materiallari

Xarajat.Qarshi taraf = &Qarshi tomon

Va sarf materiallari.O'tkazilgan

SARALASH TURI

Sarflanadigan.Vaqt lahzasi KASHAYDI

24. Hujjatning (katalogning) asosiy jadvaliga kirishda bo‘ysunuvchi jadval (jadval qismi)dagi ma’lumotlarga ham kirish mumkin. Bu imkoniyat deyiladi jadval maydonlariga havolani bekor qilish. Vazifaning misoli jadval bo'limida ma'lum bir mahsulotni o'z ichiga olgan hujjatlarni qidirish vazifasidir.

Ushbu so'rovning "Kvitansiya. Tovarlar" ichki jadvalidagi so'rovdan afzalligi shundaki, agar hujjatlarda dublikatlar mavjud bo'lsa, so'rov natijasi kalit so'zdan foydalanmasdan faqat noyob hujjatlarni qaytaradi. TURLI.

Taqqoslash:

Bu, ehtimol, hamma narsa. So'rovlar tilida hali men ko'rib chiqmagan savollar ko'pligi aniq. Ushbu maqolani yozish uchun men 1C 8.2 spec8.ru asosiy kursini tamomlaganimdan so'ng olingan ma'lumotlardan, shuningdek, "1C 8.2 Dasturchilar uchun qo'llanma" kitobidan va Internetdan foydalandim.



Tasodifiy maqolalar

Yuqoriga