43
NULL - etishmayotgan qiymatlar. 26
Nol qiymat bilan adashtirmaslik kerak! NULL raqam emas, bo'sh joy, bo'sh havola yoki Aniqlanmaganga teng emas. 18
NULL - turni shakllantiruvchi qiymat, ya'ni. NULL turi va bu turdagi bitta qiymat mavjud. NULL... 1C platformasida ma'lumotlar bazasi jadvallariga so'rovlarni yaratish va bajarish uchun Query dasturlash tilining maxsus ob'ekti qo'llaniladi. Ushbu ob'ekt New Request konstruktsiyasini chaqirish orqali yaratiladi. Qulay so'rov... Maqola taqdim etadi foydali fokuslar 13
1C v.8.2 so'rovlari bilan ishlashda, shuningdek so'rovlar tili haqida unchalik ma'lum bo'lmagan ma'lumotlar. Men berishga harakat qilmayman

to'liq tavsif so'rov tili, lekin men faqat to'xtalib o'tmoqchiman ... LIKE - satrning naqshga o'xshashligini tekshirish uchun operator. SQL da LIKE ning analogi.

  • SIMILAR operatori uning chap tomonida ko'rsatilgan ifoda qiymatini o'ngda ko'rsatilgan naqsh qatori bilan solishtirish imkonini beradi. So'zning ma'nosi ...

    Ko'pincha 1C so'rovlarida siz sanalar bilan ishlashingiz kerak. Ayniqsa, davriy ma'lumotlarni o'z ichiga olgan metadata ob'ektlariga so'rov yuborilganda. Qoida tariqasida, bu registrlar (ma'lumotlar, jamg'arish, hisob-kitoblar, buxgalteriya hisobi). Keling, sanalar bilan ishlash uchun 1C so'rovlar tilining eng ko'p ishlatiladigan funktsiyalarini ko'rib chiqaylik. Biz ma'lumotlar registriga asoslangan misollar tuzamiz
    Xodimlar tashkilotlari
    ZUP konfiguratsiyasi 2.5 versiyasi.
    DATETIME

    Yil, oy, kun, soat, daqiqa, soniyani ko'rsatish orqali so'rovda sanani (vaqt bilan yoki vaqtsiz) olish imkonini beradi.

    Sintaksis:
    DATETIME(yil, oy, kun, soat, daqiqa, soniya) Odatda soat, daqiqa va soniya ko'rsatilmaydi. Keling, kichik misol keltiraylik. Query Console-ga quyidagi matnni kiriting: DATETIME NI TANLASH(2016, 1, 1) so'rov tili, lekin men faqat to'xtalib o'tmoqchiman ... So'rovni bajarish natijasida biz sanani olamiz - 01/01/2016 Aslida, so'rovda sana shu tarzda ko'rsatilgan vaziyatni tasavvur qilish qiyin. Axir, siz davrni belgilashingiz kerak bo'lganda, parametrlar ishlatiladi. Ammo bu funktsiya alohida ahamiyatga ega bo'lgan holat mavjud. Bu maydonlarda yoki so'rov shartlarida bo'sh sanani ko'rsatishimiz kerak bo'lganda. Eslatib o'taman, 1C tili uchun bo'sh sana 0001.01.01 shaklga ega. Shunday qilib, so'rovda bo'sh sanani olish uchun uni ko'rsatish kifoya:

    Tashkilotlar Xodimlarini TANLASH. Davr, Tashkilotlar Xodimlari. Xodim, Tashkilotlar Xodimlari. Lavozim, Tashkilotlar Xodimlari. Tashkilot Bo'linmasi Ro'yxatdan o'tish Ma'lumotlari. Tashkilotlar Xodimlari Tashkilotlar Xodimlari QAYERDA Tashkilotlar Xodimlari (VAQT, 1-Davlat.Talish sanasi) , 1)

  • DAVRAN BOSHLANISHI

    Belgilangan sana uchun u tegishli bo'lgan davrning boshini qaytaradi.
    Xodimlar tashkilotlari
    DAVR BOSHI(Sana, davr turi)
    PeriodType quyidagi qiymatlarni qabul qilishi mumkin: MINUT, SOAT, KUN, HAFTA, OY, CHORAK, YIL, O'NLIK, YARIM YIL
    Query Console-ga kiriting:

    DAVRAN BOSHLANISHNI TANLASH(DATETIME(2016, 1, 15), MONTH)

    So'rov qaytariladi - 01/01/2016
    Va endi bir misol. Ma'lumki, reestrning davriyligi so'rov tili, lekin men faqat to'xtalib o'tmoqchiman ... bir kun. Haqiqiy qayd davri o‘rniga oyning boshlanish sanasi ko‘rsatiladigan so‘rov yarataylik.

    DAVRAN BOSHINI (Tashkilotlar Xodimlari. Davr, OY) Oy boshi sifatida Tashkilotlar xodimlari. Xodimlar, Tashkilotlar xodimlari. Lavozimi, Tashkilotlar xodimlari. Tashkilot bo'linmasi Ro'yxatga olish ma'lumotlaridan. Tashkilotlar Xodimlari.

  • DAVRAN OXIRISHI

    Sintaksis davr boshidagi kabi. Va nomidan ko'rinib turibdiki, sana va davr turi bo'yicha davr oxirini qaytaradi. Biz buni batafsil ko'rib chiqmaymiz. Keling, bir kichik misol bilan cheklanamiz.
    Talab:

    DAVRAN OXIRASINI TANLASH(DATETIME(2016, 1, 15), MONTH)

    Qaytadi 01/31/2016 23:59:59
    Ko'rib turganingizdek, qiymat ikkinchisiga aniq qaytariladi.

  • ADDKDATE

    Belgilangan vaqt oralig'ini sanaga qo'shadi.
    Xodimlar tashkilotlari
    ADDKDATE(Sana, davr turi, miqdori)
    PeriodType funksiya bilan bir xil qiymatlarni oladi DAVRAN BOSHLANISHI
    Masalan, fevral sanasini tanlaymiz:

    QO'SHIMCHI DATE (DATETIME(2016, 2, 15), MONTH, 2)

    Biz sanani olamiz 04/15/2016 0:00:00 Fevral qisqa oy bo'lishiga qaramay, qabul qilingan sana asl sana bilan bir xil. Oylardagi kunlar soni haqida o'ylamaslik juda qulay.
    Miqdor ham salbiy bo'lishi mumkin. Keyin interval teskari yo'nalishda hisoblanadi.

  • DIFFERENCE DATE

    Belgilangan o'lchov birliklarida ikki sana o'rtasidagi farqni hisoblang.
    Xodimlar tashkilotlari
    SANA FARQI (Boshlanish sanasi, tugash sanasi, davr turi)
    Davr turi quyidagi qiymatlarni olishi mumkin: IKKINCHI, MINUTE, SOAT, KUN, OY, CHORAK, YIL
    Masalan:

    DIFFERENCE DATE (DATETIME(2016, 2, 15), DATETIME(2016, 3, 1), DAY)

    15 qaytaradi

Bu erda biz 1C so'rovlar tilining eng ko'p ishlatiladigan funktsiyalarini ko'rib chiqdik. Qolganlari juda kam qo'llaniladi. Agar kerak bo'lsa, ular bilan ishlash misollarini 1C platformasiga o'rnatilgan yordamda topish mumkin.

Ushbu maqolada biz siz bilan hamma narsani muhokama qilmoqchimiz 1C so'rovlar tilining funktsiyalari, va 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 DATETIME- bu funksiya “Sana” turi bilan doimiy maydon hosil qiladi.

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

Foydalanish misoli:

2. DATE FARQI funksiyasi- o'lchovlardan birida (yil, oy, kun, soat, daqiqa, soniya) ikki 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) AS Jismoniy shaxs, //oldindan belgilangan hisob QIYMATI(Hisoblar rejasi. O'z-o'zidan hisob.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, funksiya //Miqdorni qaytaradi - 300 //aks holda so'rov shunchaki miqdorni qaytaradi. "TANLASH | TANLASH | QACHON TCReceipts.Sumag'i > 7500 | KEYIN TCReceipts.Amount - 300 | BOSHQA TCReceipts.Sumag'i | Chegirma bilan chegirma bilan tugaydi | FROM |

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

Sintaksis: EXPRESS(FieldName AS TypeName)

Foydalanish misoli:

Query.Text = "TURLI TANLANG | Sotish.Registrator.Number, | TANLA | QAChON Sotish.Registrator LINK Document.Expense | KEYIN EXPRESS (Sotish.Registrator Hujjat.Xarajat AS) | BOSHQA TANLASH | Qachon Sotish.Registrator LINK hujjati |. Keyin EXPRESS(Sales.Registrator AS Document.Implementation) |

Yana bir variant - maydonlarda EXPRESS funksiyasidan foydalanish aralash turlar bular qayerdan topilgan? 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 ko'rsatishimiz 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 turi bo'lsa, u holda u funktsiyaning ikkinchi parametri bilan almashtiriladi.

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

Foydalanish misoli:

Shuni ham yodda tutingki, har doim NULL turini ba'zi bir qiymat bilan almashtirish tavsiya etiladi, chunki NULL turi bilan taqqoslash, NULLni NULL bilan taqqoslasangiz 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" (MahsulotlarInStockRemains.InStockRemaining, 0) AS Qolgan |. Katalog. Nomenklatura AS 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 Qolgan.Registrator LINK Document.Receipt of GoodsServices | Keyin ""Iste'mol" |. Omborlarda qolgan mahsulotlar reestri AS.

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 joylashgan 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). O'z-o'zini qo'llab-quvvatlaydigan 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 //kichik harf bilan yoki bilan boshlanadigan butun nomenklaturani toping. bosh harflar t "SELECT | Nomenklatura. Havola | FROM | Katalog. Nomenklatura AS Nomenklatura | QAYERDA | Mahsulotlar. Nomi 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 | . Bo'sh qoldiqlar";

9. Dizayn Buyurtma berish- ma'lumotlarni ma'lum bir soha bo'yicha tartibga soladi. Agar maydon havola bo'lsa, u holda bayroqni o'rnatishda AVTO Buyurtma Saralash, agar bayroq o'chirilgan bo'lsa, havolalarni ko'rsatish orqali amalga oshiriladi;

Sintaksis: Buyurtma berish<НаименованиеПоля>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 qoldiqlar. Qolgan bepul qolgan | BUYURT |. AVTO TARTIBINI O'QISh";

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 | MahsulotlarOmborlar.Nomenklaturasi AS Nomenklaturasi, | MahsulotlarOmborlar.Omborda , |. xazinalar.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 GROUP BY |.MahsulotlarInOmborlar.Amborda |.

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 DataTzRPAS.Compenation.FROMister ins |QAYERDA |KompensatsiyaRPORqolgan.KompensatsiyaQolgan<>0 | Va CompensationRPORemains.AmountForCalcCompRemaining> 100" ;

14. Dizayn NATIJALARI... UMUMIY- jamilarni hisoblashda foydalaniladi, dizayn jami maydonlar hisoblangan 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. Qarama-qarshi tomon 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 miqdori | FROM | Jamg'armalar reestri. Mut. Qarama-qarshi tomonlar bilan hisob-kitoblar AS Hisob-kitoblar |.

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

1C konfiguratsiyasida mavjud bo'lgan barcha hujjatlar va shuning uchun deyarli barcha registrlar Sana turiga ega kamida bitta atributga ega bo'lishi kerak, shuning uchun har bir ishlab chiquvchi bilishi va tushunishi kerak:

  • Boshqa turdagi parametrlarni ko'rib chiqilayotgan turga qanday aylantirish mumkin;
  • 1C so'rovida bo'sh sanani qanday aniqlash mumkin;
  • Sana va vaqt chegarasi o'rtasidagi farq nima?

Aynan shu savollarga biz maqolamizda javob berishga harakat qilamiz.

Sana nima va uni qanday aniqlash mumkin

Ko'pgina boshqaruv qarorlarini qabul qilish va yozuvlarni saqlash 1 soniyadan ko'proq vaqtni talab qilmaganligi sababli, 1C platformasini ishlab chiquvchilar bu qiymat sana formatida mutlaq minimal bo'lishiga qaror qilishdi. Shunday qilib, dasturdagi voqea vaqtini tavsiflovchi har bir atribut quyidagilarni o'z ichiga olishi kerak:

  • Voqea sodir bo'lgan yil;
  • Ushbu tadbirning oyi;
  • kun.

Ko'rsatish shart emas: soat, daqiqa va soniya. Agar bu uchta parametr o'tkazib yuborilsa va yo'q qo'shimcha shartlar, dastur avtomatik ravishda kun boshiga vaqtni o'rnatadi.

Dunyoda mavjud sana formatlari sezilarli farqlarga ega:

  1. Rossiyada biz birinchi navbatda kunni, keyin voqea oyi va yil oxirida qo'yishga odatlanganmiz;
  2. AQSh aholisi sanani oydan boshlaydi;
  3. Chexlar, polyaklar va slovenlar yil - oy - kun formatida davrlarni qayd etadilar.

Bu 1C platformasi foydalanadigan oxirgi formatdir.

Sanaga aylantiring

Bir nechta qiymatlardan yoki satrdan Sana turi bilan parametrni olish uchun siz rasmda ko'rsatilgan koddan foydalanishingiz kerak. 1

Yuqoridagi rasmdan ko'rinib turibdiki, sanani bitta satr yordamida yoki vergul yordamida uning tarkibiy qismlariga bo'lish orqali aniqlash mumkin, natija o'zgarmaydi.

Sana yili to'rtta raqamdan iborat bo'lishi kerakligini, shu jumladan hodisaning mingyilligi va asrini, oy, kun, soat va soniyalar ikki belgidan, shu jumladan bosh nollardan iborat bo'lishi kerakligini tushunish muhimdir.

Dasturda vaqtni teskari sanash 0001 yil 1 yanvar kunidan boshlanadi. Yuqoridagi kod uchun bu qiymat ikki usuldan birida aniqlanishi mumkin (2-rasm).

Guruch. 2

Ikkinchi qatorda biz tadbirning soatlari, daqiqalari va soniyalarini o'tkazib yubordik, bu bizning kodimizning ishlashiga umuman ta'sir qilmadi.

1C so'rovlarida sanadan foydalanish xususiyatlari

1C platformasi tomonidan ishlatiladigan ko'pgina ma'lumotlar turlari uchun oldindan belgilangan bo'sh qiymatlar mavjud. Raqamlar uchun u 0 ga teng, havolalar uchun siz EmptyLink() qiymatini belgilashingiz mumkin, sana uchun bo'sh qiymat odatda boshlanish sanasi hisoblanadi va u bilan mos keladigan turdagi tafsilotlarni o'rnatishda solishtirish kerak. so'rov parametrlari.

Tushunish kerakki, ko‘rib chiqilayotgan turga ega bo‘lgan forma atributining qiymatida raqamlar ko‘rsatilmagan bo‘lsa ham, ya’ni oyna o‘xshash bo‘lsa (3-rasm), bu unda hech narsa ko‘rsatilmagan degani emas; bu parametrni bo'sh satr bilan taqqoslash ishlamaydi.

Guruch. 3

Bo'sh sanani olganimizdan so'ng, biz uni so'rovimizga parametr sifatida belgilashimiz mumkin, ya'ni konstruktsiyadan foydalanishimiz mumkin (4-rasm)

Biroq, ba'zida parametr sifatida bo'sh sanani o'tkazmasdan, so'rov tanasi ichida tekshirish yaxshiroq bo'ladi. Buning uchun so'rov kodiga tegishli shartni kiritishingiz mumkin (5-rasm) va DateTime() so'rov funksiyasidan foydalaning.

Guruch. 5

Yuqoridagi so'rov matnida biz yil, oy va kunning bosh nollarini qoldirdik, shuningdek, soatlar, daqiqalar va soniyalarni ko'rsatmadik va dastur, ular aytganidek, bu taxminni yeb qo'ydi.

Sana va vaqt chegarasi

Boshqa qiziq fakt so'rovlar va sanalar o'rtasidagi munosabat bilan bog'liq bo'lgan ma'lumotlar bazasi jadvallariga kirishda "vaqt nuqtasi" tushunchasidan foydalanish.

Sub-millisekundda ko'rsatilgan aniqlik texnik hujjatlar ibtidoiy turni tavsiflashda, Sana yig'ish registrining virtual jadvallaridan yozuvlarni tanlashda eng aniq namoyon bo'ladi: agar jamg'arish registrida aylanma jadvaliga qo'shimcha ravishda Qolgan va Qolgan va Aylanma jadvallari mavjud bo'lsa, ulardan namuna olish amalga oshiriladi. ma'lum bir vaqtga chiqib, turli natijalar berishi mumkin.

Bu qanday va nima uchun sodir bo'lishini tushunish uchun oddiy misolni ko'rib chiqing:

  1. Savdo hujjati 12 soat 31 daqiqa 36 soniyada amalga oshirilgunga qadar Shakar nomenklaturasi bo'yicha qoldiqlar 30 kg;
  2. Hujjat belgilangan vaqtda 10 kg hisobdan chiqarildi;
  3. Qolgan jadvalga ko'ra hujjat sanasida 12 soat 31 daqiqa 36 soniyada tuzilgan hisobot 30 kg balansni ko'rsatadi;
  4. Jadvaldagi bir xil hisobotda bir vaqtning o'zida qoldiqlar va aylanmalar 20 kg balansni ko'rsatadi.

Bunday xatti-harakatning sababi nima va undan qanday qochish kerak?

Muammo shundaki, Qolgan jadvalda davr ochiq segment sifatida ko'rsatilgan, ya'ni hisobotni yaratish vaqtida qilingan harakatlar hisobga olinmaydi, ya'ni vaqt ichida ko'rsatilgan soniyaning boshida olinadi. parametr. Shu bilan birga, aylanmalar jadvali va Qoldiqlar va aylanmalar jadvali uchun vaqt chegaralari hisobga olinadi, ya'ni vaqt ko'rsatilgan soniya oxirida olinadi.

Ushbu vaziyatdan chiqishning bir necha yo'li mavjud:

  1. Qolganlar jadvalidan foydalanganda belgilangan vaqtdan 1 sekund kattaroq vaqtni ko'rsating;
  2. Faqat qoldiqlar va aylanmalar jadvalidan foydalaning (ishlash nuqtai nazaridan eng maqbul variant emas);
  3. Chegara tushunchasidan foydalaning.

Oxirgi variant rasmda ko'rsatilgan kod bilan ifodalanishi mumkin. 6.

Ob'ektimizning birinchi parametrida biz hisobotni yaratish kerak bo'lgan sanani ko'rsatamiz, ikkinchi parametr chegara turini aniqlaydi. Tanlovga ma'lum bir sanadagi harakatlar kiritilganligi biz uchun muhim bo'lganligi sababli, biz ushbu parametrni "Shu jumladan" holatiga o'rnatishimiz kerak.