1C 8.3 so'rovida null yo'q. Null qiymatlar (bo'sh va null () mavjud)

NULL- etishmayotgan qiymatlar.
Nol qiymat bilan adashtirmaslik kerak! NULL raqam emas, bo'sh joy, bo'sh havola yoki Aniqlanmaganga teng emas.

NULL - turni shakllantiruvchi qiymat, ya'ni. NULL turi va bu turdagi bitta qiymat mavjud.

NULL qiymatlar quyidagi holatlarda so'rovda paydo bo'ladi:
a) Boshqa jadvalda tegishli yozuv topilmagan tashqi birikma (agar chapda - ikkinchisida, o'ngda - birinchida, to'liq bo'lsa - ikkalasida)
b) Guruh uchun elementlarning tafsilotlariga kirish va aksincha.
c) tanlash maydonlari ro'yxatida NULL (SELECT)
d) Buzilgan havola tafsilotlariga kirish

IS NULL SELECT operatorida ishlatiladi (qiymatning bo'shligini tekshirish kabi (Qiymat IS NULL)):
Kod 1C v 8.x
TANLOV
QAChON QIYMAT NULL BO'LSA, SO'NG ResultIfNULL
ELSE ma'nosi
OXIRI

boshqa misol:
Kod 1C v 8.x SELECT
Buxgalteriya ob'ektlari Qolgan QAChON TANLOV. Qolgan miqdor NULL BO'LSA KEYIN 0
BOSHQA QO'LLANGAN NOmenklaturani hisobga olish
FROM

QAYERDA

Funktsiya ISNULL(qiymat, ResultIfNULL) agar u NULL bo'lmasa, birinchi parametrning qiymatini, aks holda ikkinchi parametrning qiymatini qaytaradi
SELECT...END yopildi, lekin ISNULL afzalroq.
Kod 1C v 8.x
TANLANG
ISNULL(Katalog.Nomenklatura.Maqola, "---") AS Maqola,
Katalog.Nomenklatura.Taqdimot AS Nomenklatura

boshqa misol:
Kod 1C v 8.x
TANLANG
Nomenklatura katalogi,
ISNULL(AccountingItemRemaining.QuantityRemaining, 0) AS QuantityRemaining
FROM
Katalog.Nomenklatura AS KatalogNomenklaturalar
LEFT CONECTION Registr jamg'armalari Buxgalteriya balansi
Software Item AccountingRemains.Nomenklatura = Nomenklatura Directory.Link
QAYERDA
Nomenklatura katalogi.ThisGroup = FALSE
Ushbu misolda ob'ektlar katalogining barcha elementlari olinadi, shundan so'ng har bir element uchun jamg'arma registridan joriy qoldiqlar olinadi. Chunki Balans mavjud bo'lmagan element uchun virtual balanslar jadvali yozuvni qaytarmaydi, keyin "Buxgalteriya hisobi. Qolgan miqdor" maydoniga ulanish natijasida mavjud bo'lgan element uchun NULL qiymatlari bo'ladi. balanslari yo'q edi. NULL qiymati o'rniga so'rov natijasi 0 qiymatiga ega bo'lishini ta'minlash uchun biz kerakli almashtirishni amalga oshiradigan ISNULL() funktsiyasidan foydalandik.

ISNULL quyidagi sabablarga ko'ra CHOICE dan farq qiladi:
a) ISNULL bo'lsa, so'rovni yaxshiroq o'qish mumkin (oddiyroq)
b) ISNULL bo'lsa, agar murakkab ifoda belgilansa, u bir marta hisoblangani uchun tezroq ishlaydi
c) Agar ISNULL bo'lsa, almashtirish ifodasi, agar u String (uzunlik) yoki Number (bit chuqurligi) turi bo'lsa, tekshirilayotgan ifoda turiga aylantiriladi.

Oddiy tenglikdan foydalanib, siz NULL qiymatlarini tekshira olmaysiz, chunki SQL uchta qiymatli mantiqdan foydalanadi - True, False, NULL va bunday taqqoslash natijasi noma'lum bo'ladi, bu 1C 8.0 da FALSE ga o'xshaydi.
NULL<>0, shuning uchun chap tashqi birikmalar uchun qarang. Balanslar, narxlar jadvallari bilan nomenklatura, o'zaro hisob-kitoblarga ega kontragentlar, bunday yozuvlar bo'lmasa, 0 ga teng bo'lmagan NULL bo'ladi. Eng yaxshi yechim - ISNULL.

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 yuzaga keladi.

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 asosida. Quyida 1C 8.3 da NULLni tekshirishning ikkita usuli mavjud.

1C 8.3 so'rovlar tili funksiyasi ISNULL() ikkita kirish 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 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.

Bunday holda, ba'zi lavozimlar uchun reestrda narx bo'lmasligi mumkin bo'lgan vaziyat yuzaga kelishi 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
Narxlar NULL bo'lganda
KEYIN 0
BOShQA Narxlar.Narx
Joriy Narx BO'YICHA TUGASH
FROM
Tovarlar va xizmatlarni qabul qilish to'g'risidagi hujjat
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 bo'yicha) va sonli turlar (bit chuqurligi) uchun tekshirilayotgan ifoda turiga qisqartiriladi.

So'rovlar bilan ishlashda har qanday dasturchi bo'sh qiymatlar bilan u yoki bu tarzda o'zaro ta'sir qilishi kerak. Bo'sh qiymat deganda nimani tushunamiz?

Null qiymat yoki qiymat yo'q yoki ma'lumotlar turi uchun standart qiymatdir. Ibtidoiy turlarda hamma narsa juda oddiy: standart qiymat boshlang'ich nuqta bo'lib xizmat qiladigan boshlang'ich qiymatdir.

Null qiymatlarning turlari

Keling, so'rovda duch kelishi mumkin bo'lgan yoki talab qilinadigan bo'sh qiymatlarning turlarini ko'rib chiqaylik.

  • Raqam turi uchun bo'sh qiymat nolga teng - 0.
  • String turi uchun - bo'sh qator - "".
  • Sana turi uchun - birinchi yilning 1 yanvari - 01/01/0001 00:00:00. Aynan shu kundan boshlab vaqt 1C da hisoblanadi.*
  • Boolean turi uchun standart qiymat texnik jihatdan False, lekin mantiqan turning ikkala qiymati ham to'ldirilgan. Shuning uchun, bo'sh qiymatning noto'g'ri yoki noto'g'ri ekanligini aniqlash muayyan algoritm mantig'iga asoslanadi.

*Ehtiyot bo'ling, 1C tashqarisida turli xil boshlanish nuqtalari bo'lgan turli sanalarni hisoblash tizimlari mavjud.

Yo'qotilgan qiymat faqat turga to'liq mos keladi Null. Bu tur faqat bitta qiymatni o'z ichiga oladi, bu qiymat yo'qligini bildiradi.

O'xshash tur Aniqlanmagan shuningdek, faqat bitta qiymatni o'z ichiga oladi, lekin Undefined ma'lumotlarning yo'qligini anglatmaydi, faqat tur uchun standart qiymatni aniqlashning mumkin emasligini bildiradi. Aniqlanmagan - kompozit turlar uchun standart qiymat, jumladan, aniq belgilanmaganlar. Masalan, turi aniq belgilanmagan ustundagi qiymatlar jadvalining yangi qatoridagi qiymat.

Co ma'lumotnoma turlari ancha kam noaniqlik bor. Barcha mos yozuvlar turlari null qiymat beradi. Bo'sh qiymat ma'lumotlar turini ko'rsatadigan bir xil ma'lumotnomadir, lekin o'ziga xos qiymat uchun noyob identifikatorsiz. Buning yordamida biz bo'sh havolaga odatdagidek munosabatda bo'lishimiz va unga platforma tomonidan taqdim etilgan barcha usullarni qo'llashimiz va u bilan to'laqonli qiymat bilan ishlashimiz mumkin.

So'rovda nol qiymatlar bilan ishlash

So'rov natijasiga nol qiymatni aniq kiritishingiz yoki mavjud qiymatlarni null qiymatga solishtirishingiz kerakmi, siz so'rovingizda null qiymatlarni qanday tasvirlashni bilishingiz kerak.

Turlari Raqam, satr, mantiqiy so'rovda o'rnatilgan tilda tasvirlangan:

ExampleTypeNumber AS 0 NI, ExampleTypeString AS "Salom dunyo" AS, True AS ExampleTypeBoolean ni tanlang

Aniqlanmagan, asosan ibtidoiy tip bo'lib, xuddi shunday tasvirlangan:

To'plamni tanlang.Periodni to'plash registridan.Partiya sifatida qoladigan joyda.DocumentBatch = Aniqlanmagan

Bo'sh mos yozuvlar qiymatlarini aniqlash biroz qiyinroq. Barcha mos yozuvlar obyektlari EmptyReference ning oldindan belgilangan xizmat qiymatiga ega. Buning yordamida bo'sh havolani bitta usulda - Value funktsiyasi orqali tanlash mumkin:

Qiymatni tanlang(Directory.Nomenclature.EmptyLink) Nomenklaturani qanday bo'shatish kerak

Null qiymatlari bilan ishlash imkoniyatlari biroz boyroq. Boshqa ibtidoiy tiplar singari, Null ham o'rnatilgan tildagi kabi tasvirlangan. Bundan tashqari, maxsus Is Null operatori va IsNull funksiyasi mavjud.

  • Is Null operatori tanlangan qiymatni Null qiymati bilan taqqoslaydigan mantiqiy ifoda yaratish imkonini beradi.
  • IsNull funksiyasi Null bo'lmasa, birinchi argumentni, aks holda ikkinchi argumentni qaytaradi.

Bo'sh qiymatlarni belgilaydigan iboralar ifodalarni qo'llab-quvvatlaydigan har qanday so'rov bo'limlarida ishlatilishi mumkin. Masalan, "Tanlash" bo'limiga bo'sh havola yoki "Shart" ga Null chek qo'shishingiz mumkin.

Amaliy misollar

Qiymat funksiyasidan foydalanish

Mahsulotlarni tanlang.Nomenklatura sifatida havola, Mahsulotlar.Link = Qiymat(Directory.Nomenclature.EmptyLink) Shu kabiLinkTueMahsulotlardan TueMahsulot sifatida bo'sh

Is Null operatoridan foydalanish

Mahsulotlarni tanlang. Nomenklatura, Mahsulotlar sifatida havola.

Chapda null yoki to'liq qo'shilish

Null tekshirish

Misol umumiy amaliy vaziyatni ko'rsatadi, agar chap qo'shilish bilan ikkinchi jadvaldagi birinchi jadvalga mos kelmaydi. Bunday holda, ikkinchi jadvalning barcha maydonlari Null bo'ladi.

TueProducts.Linkni Nomenklatura sifatida tanlang, Qolgan miqdor miqdor sifatida qoladi.Qolgan miqdor TueMahsulotidan TueMahsuloti sifatida qolmagani uchun null. Chap ulanish Ro'yxatdan o'ting.Akkumulyatsiyalar.Omborlardagi mahsulotlar.TueMahsulotlar bo'yicha qoldiqlar.Link = Qolganlar.Nomenklatura

Null qiymatlarni qayta ishlash

Yo'qolganlarni almashtirish uchun ba'zi bir standart qiymatlarni olishning umumiy usulini namoyish qilish uchun oldingi so'rovni o'zgartirish. Ushbu misolda, IsNull funksiyasidan foydalanib, etishmayotgan qoldiq qiymati mantiqan to'g'ri 0 bilan almashtiriladi.

TueProducts.Link ni Nomenklatura sifatida tanlang, IsNull (Remaining.QuantityRemaining, 0) TueProducts sifatida TueProducts miqdori sifatida Chap ulanish To'planishlarni ro'yxatdan o'tkazing.Omborlardagi mahsulotlar. TueProducts bo'yicha qoldiqlar.Link = Qolganlar.Nomenklatura

Ushbu maqolada biz bo'sh qiymatlarning har xil turlarini va ularning xususiyatlarini ko'rib chiqdik, so'rovlarda bo'sh qiymatlarning har xil turlarini aniqlash usullarini o'rgandik va amaliy qismda biz muhokama qilingan materialni qo'llash qulayligiga amin bo'ldik.

Salom.
Ibtidoiy ma'lumotlar turlarini davom ettirib, biz yaqinda ularni ko'rib chiqdik va bugun biz bu haqda gaplashamiz NULL yozing.

NULL turi faqat bitta qiymatni, “NULL” qiymatini o'z ichiga olishi mumkin bo'lgan literaldir.
NULL - Null havolasi, bo'sh joy yoki Aniqlanmagan turiga teng emas.

Ma'lumotlar bazasi bilan ishlashda (jadvallarni birlashtirishda) foydalaniladi, ma'lumotlar bazasi bilan ishlashda etishmayotgan qiymatni aniqlash uchun ishlatiladi.
Ushbu qiymatni o'zgaruvchiga belgilash orqali NULL qiymatini olish mumkin:
O'zgaruvchi = NULL.

NULL tipidagi qiymatlar bir jadvaldagi element boshqasidan mos keladigan elementga ega bo'lmaganda birlashmalar natijasida hosil bo'ladi. NULL tipidagi qiymat o'ziga xos xususiyatlarga ega:
- NULL qiymatni har qanday boshqa argument bilan solishtirish har doim yolg'onni qaytaradi;

NULL qiymatini aniqlash uchun konstruksiyadan foydalaning IS NULL (NULL).
NULL turini aylantirish uchun funksiyadan foydalaning ISNULL (isNULL).

So'rov natijasida NULL qiymatlarini o'z ichiga olgan maydonlarni kesish uchun quyidagi konstruktsiyalar qo'llaniladi: - NULL emas - NULL emas

Misollar

NULL qiymatini tekshirishga misol

SELECT katalog. Nomenklatura. Ism, katalog. Nomenklatura. PurchasingPrice WHERE katalogi. Nomenklatura. PurchasePrice Ha NULL

ISNULL() funksiyasiga misol
ISNULL() funksiyasining qaytariladigan qiymati: agar birinchi parametrda NULL qiymati bo'lmasa, birinchi parametrning qiymati, aks holda ikkinchi parametrning qiymati. Agar birinchi parametrning turi qator yoki raqam bo'lsa, ikkinchi parametr birinchi parametr turiga aylantiriladi.

// Miqdor maydoni bo'yicha miqdorni oling. Hech qanday yozuv bo'lmasa, 0 ni oling Hujjatdan Miqdor sifatida ISNULL(SUM(Miqdor), 0 ) ni tanlang. Expense Inc. Murakkab

Hurmat bilan, 1C Programmer.
Fikrlaringizni qoldiring, men sizning fikringiz bilan qiziqaman.

1C so'rovlar tili 7.7 va 8 versiyalari o'rtasidagi asosiy farqlardan biridir. 1C dasturlashni o'rganishda eng muhim nuqtalardan biri so'rovlar tilidir. 1C 8.3 da so'rovlar ma'lumotlarni olish uchun eng kuchli va samarali vositadir. So'rovlar tili ma'lumotlar bazasidan ma'lumotlarni qulay tarzda olish imkonini beradi.

Sintaksisning o'zi klassik T-SQL-ni juda eslatadi, bundan tashqari 1C da so'rovlar tilidan foydalangan holda siz faqat Select konstruktsiyasi yordamida ma'lumotlarni qabul qilishingiz mumkin. Til, shuningdek, murakkabroq konstruksiyalarni qo'llab-quvvatlaydi, masalan, (so'rov ichidagi so'rov). 1C 8 dagi so'rovlar ham kirill, ham lotin tilida yozilishi mumkin.

Ushbu maqolada men 1C so'rovlar tilidagi asosiy kalit so'zlar haqida gapirishga harakat qilaman:

  • tanlang
  • ruxsat berilgan
  • har xil
  • ifodalash
  • birinchi
  • o'zgartirish uchun
  • ma'nosi
  • qiymat turi (va REFERENCE operatori)
  • tanlash
  • tomonidan guruhlash
  • ega
  • ISNULL
  • Ha NULL
  • ulanishlar - o'ng, chap, ichki, to'liq.

Shuningdek, 1C tilining ba'zi kichik fokuslari, ulardan foydalanib siz so'rov matnini optimal tarzda qurishingiz mumkin.

1C 8.2 tizimida so'rovlarni tuzatish uchun maxsus vosita - so'rovlar konsoli taqdim etiladi. Siz tavsifni ko'rishingiz va havoladan foydalanib yuklab olishingiz mumkin -.

Keling, 1C so'rovlar tilining eng muhim va qiziqarli operatorlarini ko'rib chiqaylik.

TANLASH

1C Enterprise 8 so'rovlar tilida har qanday so'rov kalit so'z bilan boshlanadi TANLANG. 1C tilida UPDATE, DELETE, CREATE TABLE, INSERT konstruktsiyalari mavjud emas, bu manipulyatsiyalar ob'ekt texnologiyasida amalga oshiriladi. Uning maqsadi faqat ma'lumotlarni o'qishdir.

Masalan:

TANLANG
Joriy katalog.Nomi
FROM
Katalog.Nomenklatura AS Joriy Katalog

So'rov element nomlari bilan jadvalni qaytaradi.

Struktura yaqinida TANLANG kalit so'zlarni topishingiz mumkin O'ZGARISH UCHUN, RUXSAT BERILGAN, TURLI, BIRINCHI

RUXSAT BERILGAN— jadvaldan faqat joriy foydalanuvchi huquqiga ega boʻlgan yozuvlarni tanlaydi.

TURLI— natijada takroriy satrlar boʻlmasligini bildiradi.

TANLASH (CASE)

Ko'pincha bu dizayn dasturchilar tomonidan kam baholanadi. Uning ishlatilishiga misol:

Joriy katalog. nomi,

QACHON Current Directory.Service KEYIN

"Xizmat"

Nomenklaturani QANDAY KO'RISHNI TUGASH

Katalog.Nomenklatura AS Joriy Katalog

Misol "Mahsulot turi" maydonida matn qiymatini qaytaradi - "Mahsulot" yoki "Xizmat".

QAYERDA

Qabul qilingan ma'lumotlarga tanlovni o'rnatishga imkon beruvchi 1C so'rovlar tilining dizayni. E'tibor bering, tizim barcha ma'lumotlarni serverdan oladi va shundan keyingina u ushbu parametr asosida tanlanadi.

TANLANG
Katalog.Nomi
FROM
Joriy katalog.Nomenklatura AS Joriy katalog
WHERE CurrentDirectory.Service = TRUE

Misolda biz "Xizmat" atributining qiymati "True" ga o'rnatilgan yozuvlarni tanlaymiz. Ushbu misolda biz quyidagi shartni bajarishimiz mumkin:

"XIZMAT QAYERDA"

Asosan, biz kalit so'zdan keyingi ifoda "True" ga teng bo'lgan qatorlarni tanlaymiz.

Siz iboralarda to'g'ridan-to'g'ri shartlardan foydalanishingiz mumkin:

QAYER Kodi = "005215"

Shartlarda "VALUE()" operatoridan foydalanib, 1C so'rovida oldindan belgilangan elementlar va raqamlarga kirishdan foydalaning:

QAYER Element turi = Qiymat (Ro'yxatga olish.Item turlari.Mahsulot)

Vaqt qiymatlari quyidagicha belgilanishi mumkin:

QAYERDA Qabul qilingan sana > DATETIME(2012,01,01):

Ko'pincha shartlar so'rovga o'tkaziladigan parametrlar sifatida belgilanadi:

1C da 267 ta video darslarni bepul oling:

WHERE NomenklaturaGroup= &NomenklaturaGroup

Atribut turiga shart qo'yish mumkin, agar u kompozit turga tegishli bo'lsa:

Agar siz qiymatlar ro'yxati yoki massivdan tanlashni cheklashingiz kerak bo'lsa, quyidagilarni qilishingiz mumkin:

Qayerda jamlanma reestri B (&Tanlash uchun hujjatlar ro'yxati).

Vaziyat, shuningdek, bir nechta shartlardan iborat murakkab bo'lishi mumkin:

QAYERDA Qabul qilingan sana > DATETIME(2012,01,01) VA NomenklaturaGroup= &NomenklaturaGuruhi VA EMAS xizmat

GURUH BO'YICHA

Natijani guruhlash uchun ishlatiladigan 1C 8.2 so'rovlar tilini loyihalash.

Masalan:

TANLANG
Tovar va xizmatlarni qabul qilish Tovarlar,.
SUM(Tovarlarni qabul qilishXizmatlarTovarlar.Quantity) AS Miqdor,
SUM(Tovarlarni qabul qilishXizmatlarTovarlar.Summa) AS Sum
FROM
Tovarlar va xizmatlarni qabul qilish to'g'risidagi hujjat

GURUH BO'YICHA
Tovarlarni qabul qilishXizmatlarTovarlar.Tovarlar

Ushbu so'rovda barcha tushumlar miqdori va miqdori bo'yicha jamlanadi.

Kalit so'zdan tashqari SUM Boshqa agregat funktsiyalardan foydalanishingiz mumkin: QUANTITY, TURLI SONI, MAKSIMUM, ENG KAM, OʻRTA.

EGA

Ko'pincha unutilgan dizayn, lekin bu juda muhim va foydali. Bu tanlovni yig'ish funksiyasi ko'rinishida belgilash imkonini beradi, bu dizaynda amalga oshirilmaydi QAYERDA.

1C so'rovida HAVING dan foydalanishga misol:

TANLANG
Tovar va xizmatlarni qabul qilish Tovarlar,.
SUM(Tovarlarni qabul qilishXizmatlarTovarlar.Quantity) AS Miqdori,
SUM(Tovarlarni qabul qilishXizmatlarTovarlar.Summa) AS summa
FROM
Tovar va xizmatlarni qabul qilish to'g'risidagi hujjat

GURUH BO'YICHA
Tovar va xizmatlarni qabul qilish Tovarlar

SUM(Tovarlarni qabul qilishXizmatlarTovarlar.Miqdori) > 5

Shunday qilib, biz 5 donadan ortiq kelgan mahsulotlar sonini tanlaymiz.

MA'NOSI()

Masalan:

WHERE Bank = Qiymat(Directory.Banks.EmptyLink)

WHERE Nomenklatura turi = Qiymat(Katalog.Nomenklatura turlari.Mahsulot)

WHERE Element turi = Qiymat (Ro'yxatga olish.Item turlari.Xizmat)

TYPE so‘rovda

Ma'lumotlar turini TYPE() va VALUETYPE() funksiyalari yoki mantiqiy REFERENCE operatori yordamida tekshirish mumkin.

EXPRESS()

1C so'rovlarida Express operatori ma'lumotlar turlarini aylantirish uchun ishlatiladi.

Sintaksis: EXPRESS(<Выражение>QANAQASIGA<Тип значения>)

Undan foydalanib, siz satr qiymatlarini sanaga yoki mos yozuvlar qiymatlarini satr ma'lumotlariga va hokazolarga o'zgartirishingiz mumkin.

Amaliy ilovalarda cheksiz uzunlikdagi maydonlarni konvertatsiya qilish uchun Express() operatori juda tez-tez ishlatiladi, chunki cheksiz uzunlikdagi maydonlarni tanlash, guruhlash va h.k. mumkin emas. Agar bunday maydonlar o'zgartirilmasa, siz xato olasiz Siz cheksiz uzunlikdagi maydonlarni va mos kelmaydigan turdagi maydonlarni taqqoslay olmaysiz.

TANLANG
Aloqa ma'lumotlari.Ob'ekt,
EXPRESS(ContactInfo.View AS ROW(150)) AS View
FROM
Axborot reestri Aloqa ma'lumotlari QANDAY Aloqa ma'lumotlari

GURUH BO'YICHA
EXPRESS(ContactInfo.Representation AS ROW(150)),
Aloqa ma'lumotlari.Ob'ekt

ISNULL (ISNULL)

Yozuvdagi qiymatni va agar u teng bo'lsa, tekshiradigan 1C so'rovlar tilining juda foydali funktsiyasi NULL, Bu sizga o'zingizning qiymatingiz bilan almashtirish imkonini beradi. Ko'pincha yashirish uchun balanslar va aylanmalarning virtual jadvallarini olishda foydalaniladi NULL va aniq 0 (nol) qo'ying.

ISNULL(Oydan oldingi soliqlar. AppliedFSS imtiyozi, 0)

ISNULL 1C so'rov tilining bunday funktsiyasi, agar qiymat bo'lmasa, nolni qaytaradi, bu xatolikdan qochadi.

QO'SHILING

Ulanishning 4 turi mavjud: CHAP, TO'G'RI, TO'LIQ, ICHKI.

CHAP va O'NG BOG'LANISH

Birlashmalar ma'lum bir shartga asoslangan ikkita jadvalni bog'lash uchun ishlatiladi. Xususiyat qachon CHAPGA QO'SHILING birinchi ko'rsatilgan jadvalni to'liq qabul qilamiz va ikkinchi jadvalni shartli ravishda bog'laymiz. Ikkinchi jadvalning shart bilan bog'lab bo'lmaydigan maydonlari qiymat bilan to'ldiriladi NULL.

1C so'rovida chap qo'shilish misoli:

U butun jadvalni qaytaradi va "Bank" maydonini faqat "Counterparties.Name = Banks.Name" sharti bajarilgan joylarda to'ldiradi. Agar shart bajarilmasa, Bank maydoni o'rnatiladi NULL.

1C 8.3 tilida RIGHT JOIN mutlaqo o'xshash LEFT ulanish, bitta farq bundan mustasno: ichida ULANISH HUQUQI"Asosiy" jadval birinchi emas, ikkinchisi.

TO'LIQ ULANISH

TO'LIQ ULANISH chap va o'ngdan farq qiladi, chunki u ikkita jadvaldagi barcha yozuvlarni ko'rsatadi va faqat shart bo'yicha ulanishi mumkin bo'lganlarni bog'laydi.

Masalan:

TO'LIQ ULANISH
Katalog.Banklar QANDAY Banklar

BY

So'rovlar tili ikkala jadvalni ham to'liq qaytaradi, agar yozuvlarni qo'shish sharti bajarilsa. Chap/o'ng birlashmasidan farqli o'laroq, NULL ikkita maydonda paydo bo'lishi mumkin.

ICHKI QO‘SHILMA

ICHKI QO‘SHILMA to'liqdan farq qiladi, chunki u faqat berilgan shartga muvofiq ulanishi mumkin bo'lgan yozuvlarni ko'rsatadi.

Masalan:

FROM
Kontragentlar AS mijozlari katalogi

ICHKI QO‘SHILMA
Katalog.Banklar QANDAY Banklar

BY
Clients.Name = Banks.Name

Bu so'rov faqat bank va kontragent bir xil nomga ega bo'lgan qatorlarni qaytaradi.

Xulosa

Bu 1C 8 so'rovlar tilidagi sintaksisning faqat kichik bir qismidir; kelajakda men ba'zi fikrlarni batafsil ko'rib chiqishga, ko'rsatishga va boshqalarga harakat qilaman!