1C so'rovida hujjat sifatida ifodalash 8.3. Hujjat.Invoice.Tarkib hisob-faktura sifatida




Ushbu maqolada biz "Express" funktsiyasi tomonidan taqdim etilgan 1C so'rovlar tilida turdagi konvertatsiya qilish imkoniyatlarini tahlil qilamiz.
Keling, ushbu funktsiyadan foydalanishning bir nechta variantlarini ko'rib chiqaylik.
Va birinchi variant - raqamlarni yaxlitlash.

Buning uchun siz quyidagi formatda Express funksiyasidan foydalanishingiz kerak:

Ekspress(<Число>Raqam sifatida(<ДлинаЧисла>,<Точность>))

Qayerda:
Raqam— yaxlitlash kerak bo'lgan maydon
Uzunlik raqamlari- maksimal raqam uzunligi
Aniqlik— raqamni yaxlitlash aniqligi

Uzunlik va aniqlik parametrlari musbat sonlar bo'lishi kerak.
Ushbu funktsiya qanday ishlashini quyidagi rasmda ko'ring.

Ikkinchi foydalanish holati - string casting. Ko'pincha konfiguratsiyalar cheksiz uzunlikdagi satrlardan foydalanadi, bu esa ba'zi cheklovlarni keltirib chiqaradi. Masalan, biz cheksiz uzunlikdagi satrlarni taqqoslay olmaymiz.
Quyidagi so'rovda FullName maydoni cheksiz uzunlikdagi qatorga ega va bu so'rov ishlamaydi.

Uning ishlashi uchun cheksiz uzunlikdagi maydonni ma'lum uzunlikdagi satrga aylantirish kerak, bu quyidagi formatdagi Express funktsiyasi yordamida amalga oshiriladi:

Ekspress(<Строка>String sifatida (<ДлинаСтроки>)

Qayerda
Chiziq uzunligi– satr qisqartiriladigan maksimal uzunlik.
Keling, so'rovni qayta ishlaymiz: shartda biz cheksiz qatorni ma'lum uzunlikdagi satrga aylantiramiz. Keyin hech qanday xato bo'lmaydi.

Keling, uni qo'llashning oxirgi va eng muhim variantini ko'rib chiqaylik: kompozit turdagi maydonlar bilan ishlashda.
Quyida kompozit maydonlardan foydalanadigan ikkita so'rov mavjud. Birinchisi noto'g'ri, ikkinchisi to'g'ri.

Bular. Murakkab turdagi maydonni olishingiz kerak bo'lganda, har doim bu maydonning qiymatini faqat Express funksiyasidan foydalangan holda turni translyatsiya qilgandan keyin oling. Bunday holda, hujjatlar va ma'lumotnomalar quyidagi formatga ega bo'ladi:

Ekspress(<Документ>Hujjat sifatida.<ИмяТаблицы>)
Ekspress(<Справочник>katalog sifatida.< ИмяТаблицы >)
.

Qayerda
Jadval nomi- ob'ekt nomi.

Kompozit turlar bilan ishlashda har doim ekspress funksiyasidan foydalaning, u so'rovni sezilarli darajada optimallashtiradi.

Agar siz hali ham so'rovlar tilining konstruktsiyalarida "suzayotgan bo'lsangiz" va hatto eng oddiy so'rovlar ham sizga qiyinchilik tug'dirsa, men sizga "1C da boshlang'ichdan professionalgacha so'rovlar" kursimni tavsiya qilaman. Qaerda bu va boshqa ko'plab masalalar batafsilroq muhokama qilinadi.

Ushbu kursning o'ziga xos xususiyati nimada:
Kurs 1C da so'rovlar tili bilan tanish bo'lmaganlar uchun mo'ljallangan;
O'quv materiali yaxshi tuzilgan va o'rganish oson;
Bir necha o'nlab darslar;
Foydali amaliy misollar;
Barcha darslar tushunarli va sodda tilda taqdim etiladi

O'quvchilarim uchun 25% chegirmali kupon: hrW0rl9Nnx

Men imkon qadar tez-tez turli xil qiziqarli bepul maqolalar va video darsliklarni chiqarishga harakat qilaman. Shuning uchun, agar biron bir miqdorni o'tkazish orqali loyihamni qo'llab-quvvatlasangiz, men juda xursand bo'laman:

Siz istalgan miqdorni to'g'ridan-to'g'ri o'tkazishingiz mumkin:
Yandex.Money - 410012882996301
Web Money - R955262494655

Mening guruhlarimga qo'shiling.

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) | Kunlar soni 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 | AVTO ORDER VANIE";

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: GROUP BY<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Foydalanish misoli:

Query.Text = "TANLASH |ItemsInWarehouses.Nomenklatura AS Nomenklaturasi, |ItemsInWarehouses.Warehouse, | SUM(ItemsInWarehouses.InStock) INSTOCK OF |FROM | RegisterAccumulations.ItemsInWarehouses |ROGarehouses menklatura, | ItemsAtWarehouse ah.Warehouse" ;

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.FROMASRemains. |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. Kontraparta 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
GROUP BY
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.

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 va texnik shartlar
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.

GROUP BY

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

GROUP BY
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
GROUP BY
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.

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

Yangi boshlanuvchi dasturchilar uchun so'rovlar tili 1C 8.3: turlar bilan ishlash funktsiyalari va operatorlari (VALUE TYPE, TYPE, REFERENCE, ISNULL, EXPRESS)

Katalog, hujjat yoki boshqa amaliy ob'ektning har bir atributi (xususiyati, maydoni) o'z turiga ega ekanligini eslaylik. Va biz ushbu turni konfiguratorda ko'rishimiz mumkin:

So'rovlar tilida detallar turlari bilan ishlash uchun funktsiyalar va operatorlarning butun sinfi mavjud. Keling, ularga qaraylik.

VALUE TYPE funksiyasi

Bu funksiya bitta parametr (qiymat) oladi va uning turini qaytaradi. Rasmda tasvirlangan rekvizitlar uchun (yuqorida) Ta'mi katalog Ovqat quyidagilar qaytariladi:

Endi rekvizitlarni ko'rib chiqaylik O'ziga xos xususiyat katalogda Shaharlar:

Ko'ryapsizmi, bu tayanch bir nechta turlardan biri bo'lishi mumkin: Chiziq, Katalog. Ta'mlar, Katalog. Ranglar. Bu turdagi detallar KOMPOZIT deyiladi.

Agar biz 1C: Enterprise rejimida bunday tafsilotning qiymatini to'ldirishga harakat qilsak, tizim bizdan qaysi turdagi qiymat kiritilishini so'raydi:

Va faqat bizning tanlovimizdan so'ng u tanlangan turning qiymatini kiritishimizga imkon beradi.

Shunday qilib, bir xil turdagi katalog elementlari ( Katalog. Shaharlar) bir xil atributda saqlashi mumkin bo'ladi ( O'ziga xos xususiyat) har xil turdagi qiymatlar (String, Colors yoki Flavors).

Buni katalog elementlarini bosish orqali o'zingiz ko'rishingiz mumkin Shaharlar 1C: Korxona rejimida. Siz darsning sinov versiyasini o'qiyapsiz, to'liq darslar mavjud.

Bu erda farqlovchi xususiyat qiymati katalog elementidir Lazzatlar:

Bu qator:

Va bu erda odatda ma'lumotnomaning elementi Ranglar:

Bular kompozit ma'lumotlar turi biz uchun ochadigan imkoniyatlardir!

Funktsiya qanday ishlashiga hayronman QIMMATLAR TURI rekvizitlarda Distinctive element, kompozit ma'lumotlar turiga ega:

Bu allaqachon juda qiziq. Keling, har bir qatorni alohida ko'rib chiqaylik.

Rossiya elementi uchun o'ziga xos xususiyatning qiymati turi tengdir NULL. Bu turga birinchi marta duch keldik. Ushbu turdagi qiymatlar faqat ma'lumotlar bazasi bilan ishlashda etishmayotgan qiymatni aniqlash uchun ishlatiladi.

Bu to'g'ri, chunki Rossiya elementi oddiy katalog elementi emas, balki guruhdir Shaharlar, shuning uchun uning maydoni yo'q O'ziga xos xususiyat. Va etishmayotgan qiymatning turi, yuqorida o'qiganimizdek, har doim tengdir NULL.

Perm uchun o'ziga xos xususiyatning qiymati turi tengdir Lazzatlar. Bu to'g'ri, chunki Perm shahri uchun ma'lumotlar bazasiga kiritilgan o'ziga xos xususiyatning qiymati katalog elementiga havoladir. Lazzatlar.

Krasnoyarsk uchun atributning turi tengdir Ranglar, chunki ma'lumotlar bazasida tanlangan qiymat katalog elementiga havoladir Ranglar.

Voronej uchun atributning turi tengdir Chiziq, chunki ma'lumotlar bazasiga kiritilgan qiymat oddiy satrdir.

Hindiston yana bir guruh, shuning uchun hech qanday ahamiyatga ega emas. Va etishmayotgan qiymatning turi, biz eslaganimizdek, tengdir NULL.

Gap shundaki. Agar siz katalog elementiga kirsangiz Shaharlar nomi bilan San-Paulu, keyin siz maydonni ko'rasiz O'ziga xos xususiyat umuman to'ldirilmagan. Bo‘sh. A kompozit turdagi barcha bo'sh maydonlar alohida ma'noga ega Aniqlanmagan.

BILAN TA'RILMAGAN biz ham birinchi marta duch kelyapmiz. Ma'nosi TA'RILMAGAN boshqa turga mansub bo'lmagan bo'sh qiymatdan foydalanish zarur bo'lganda ishlatiladi. Aynan shu holat bizda. Va qiymat turi TA'RILMAGAN, ehtimol siz allaqachon taxmin qilganingizdek, tengdir NULL.

Funktsiya TYPE

Bu faqat bitta parametrni oladi - ibtidoiy turning nomi ( LINE, NUMBER, DATE, BUL) yoki havola turini olmoqchi bo'lgan jadval nomi.

Ushbu konstruktsiyaning natijasi ko'rsatilgan tur uchun Type tipidagi qiymat bo'ladi.

Noaniq eshitiladi, shunday emasmi?

Keling, ushbu dizaynning qo'llanilishini ko'rib chiqaylik va hamma narsa darhol joyiga tushadi.

Biz barcha katalog yozuvlarini tanlashimiz kerak deylik Shaharlar, ular kompozit rekvizitlarga ega O'ziga xos xususiyat turi qiymatiga ega LINE:

Endi atribut qiymatlari bo'lgan barcha yozuvlarni tanlaymiz O'ziga xos xususiyat katalog elementlariga havolalardir Ranglar(jadval Katalog. Ranglar):

Orqaga chekinish

Esingizda bo'lsa, katalogning ba'zi elementlari Shaharlar rekvizitlari yo'q O'ziga xos xususiyat. Funktsiya QIMMATLAR TURI u ishlab chiqaradigan bunday elementlar uchun NULL.

So'rovda bunday elementlarni qanday tanlash mumkin? Buning uchun maxsus mantiqiy operator taqdim etiladi IS NULL(funksiya bilan adashtirmaslik kerak ISNULL, biz quyida ko'rib chiqamiz). Siz darsning sinov versiyasini o'qiyapsiz, to'liq darslar mavjud.

Quyida undan foydalanish misoli keltirilgan:

Ajoyib. Lekin siz San-Pauluning elementi yo'qligini payqadingizmi, rekvizitlar qiymati turi O'ziga xos xususiyat uni ham berdi NULL. Nima uchun bu sodir bo'ldi?

Ammo gap shundaki, tafsilotlarni to'ldirish uchun guruhlar (Rossiya, Hindiston, Braziliya) uchun vaziyat O'ziga xos xususiyat printsipial jihatdan imkonsiz, chunki ularda umuman yo'q, San-Paulu elementi uchun vaziyatdan farq qiladi, ular uchun rekvizitlarni to'ldirish mumkin, lekin u shunchaki to'ldirilmaydi va biz eslaganimizdek, maxsus qiymat TA'RILMAGAN.

Zarur bo'lgan barcha yozuvlarni tanlash uchun O'ziga xos xususiyat mavjud, lekin to'ldirilmagan, boshqa konstruktsiyadan foydalanish kerak:

Ammo bo'sh (to'ldirilmagan) atributlarni aniqlash uchun UNDEFINED bilan taqqoslash faqat kompozit turlar uchun ishlaydi.

Aytgancha, IS NULL mantiqiy operatori quyidagi ko'rinishdagi inkor shakliga ega:

Mantiqiy operator LINK

Masalan, katalogdan tanlaymiz Shaharlar faqat kompozit atribut qiymatiga ega bo'lgan yozuvlar O'ziga xos xususiyat katalog elementiga havoladir Lazzatlar:

Esingizda bo'lsa, biz xuddi shu muammoni hal qilishimiz mumkin QIMMATLAR TURI Va TYPE:

ISNULL funktsiyasi

Funktsiya qiymatni almashtirish uchun mo'ljallangan NULL boshqa ma'noga.

Buning ma'nosini eslaymiz NULL so'ralgan atribut (maydon, xususiyat) mavjud bo'lmasa qaytariladi.

Masalan, rekvizitlar O'ziga xos xususiyat katalog guruhlari uchun Shaharlar:

Funktsiya ISNULL ga teng bo'lsa, boshqa qiymat chiqarishimizga yordam beradi NULL. Siz darsning sinov versiyasini o'qiyapsiz, to'liq darslar mavjud. Bu holda "Bunday tayanch yo'q!" qatori bo'lsin:

Ma'lum bo'lishicha, agar funktsiyaning birinchi parametri ISNULL teng emas NULL, keyin u qaytib keladi. Agar u NULL bo'lsa, ikkinchi parametr qaytariladi.

EXPRESS funksiyasi

Bu funksiya faqat kompozit turga ega bo'lgan maydonlar uchun. Bunday maydonning ajoyib namunasi mulkdir O'ziga xos xususiyat katalog elementlari uchun Shaharlar.

Esda tutganimizdek, kompozit maydonlar konfiguratorda ko'rsatilgan bir nechta turlardan biri bo'lishi mumkin.

Maydon uchun O'ziga xos xususiyat shunday to'g'ri turlari bor LINE, Katalog. Ranglar Va Katalog. Ta'mlar.

Ba'zida kompozit maydonning qiymatlarini ma'lum bir turga o'tkazish kerak bo'ladi.

Keling, barcha maydon qiymatlarini sanab o'tamiz O'ziga xos xususiyat yozish Malumot. Ranglar:

Natijada, turdagi barcha element qiymatlari Katalog. Ranglar, to'ldirilgan holda qoldi va belgilangan turga aylantirildi. Boshqa turdagi barcha qiymatlar ( LINE, Katalog. Ta'mlar) endi teng NULL. Bu funktsiyadan foydalangan holda turdagi quyishning o'ziga xos xususiyati EXPRESS.

Siz turni ibtidoiy turga o'tkazishingiz mumkin ( BUL, NUMBER, LINE, DATE) yoki mos yozuvlar turiga. Siz darsning sinov versiyasini o'qiyapsiz, to'liq darslar mavjud. Ammo quyma amalga oshirilayotgan tur ushbu kompozit maydon uchun turlar ro'yxatiga kiritilishi kerak, aks holda tizim xatoga yo'l qo'yadi.

Sinovdan o'ting

Sinovni boshlang

1. Eng to‘g‘ri gapni tanlang

2. Bir nechta turlardan birining qiymatlarini qabul qila oladigan detallar deyiladi

3. Atribut qiymatining turini aniqlash uchun funksiyadan foydalaning

4. Kompozit tipdagi bo'sh detallar muhim ahamiyatga ega