Axborot registridagi so'nggi yozuvlarning suratini olish xususiyati. Axborot registridagi so'nggi yozuvlar bo'lagini olish xususiyati 1c hujjatning ma'lumotlar registridan eng so'nggi qismi.

/
Ma'lumotlarni qayta ishlashni amalga oshirish

Davriy ma'lumotlar registrlari uchun jamilarni hal qilish

Qo'llash doirasi: boshqariladigan dastur, mobil ilova, umumiy dastur.

1.1. Davriy ma'lumotlar registrlari uchun, agar quyidagi shartlarning barchasi bajarilgan bo'lsa, jami ma'lumotlarga ruxsat berish tavsiya etiladi:

  • reestrda katta hajmdagi ma'lumotlar kutilmoqda (masalan, ob'ektlar narxlari ko'rsatilgan reestr uchun asoslanadi; lekin valyuta kurslari bilan reestr uchun bu mantiqiy emas);
  • konfiguratsiya joriy ma'lumotlarni olish uchun joriy vaqtda ikkinchisining bo'limlariga va/yoki birinchisining bo'limlariga chastota so'rovlarini beradi (ya'ni, virtual jadvallar parametrlarida davr ko'rsatilmaganda). Birinchi bo'lak Va Oxirgi qism);
  • virtual jadvallar uchun qolgan shartlar esa Birinchi bo'lak Va Oxirgi qism faqat o'lchov qiymatlariga o'rnatiladi (va rejimdagi ajratgichlar Mustaqil va birgalikda);
  • ro'yxatga olish ma'lumotlariga kirish cheklovlari faqat o'lchamlardan (va rejimda bo'lgan cheklovchilardan) foydalanadi Mustaqil va birgalikda).

So'rovlar ma'lumotlar registrlari yig'indisidan foydalanganda barcha shartlarning to'liq ro'yxati uchun qarang1C: Enterprise platformasi uchun hujjatlar.

Misol uchun, agar konfiguratsiya registrga tez-tez bajariladigan so'rovlarni o'z ichiga olsa Narxlar nomenklaturalari tovarlarning joriy narxlarini olish uchun:

Elementni tanlang. Maqola AS Maqola, NarxlarNomenklaturasi. Narx AS Narx, . . . Katalogdan. Nomenklatura AS Nomenklatura CHAP ULANISH Axborot reestri. Narxlar nomenklaturalari. SliceLast(, PriceView = &Narxlar turi) QANDAY NarxlarNomenklaturalari Dasturiy ta'minot narxlari nomenklaturasi. Nomenklatura = Nomenklatura. Havola. . .

keyin, yuqorida sanab o'tilgan barcha boshqa shartlarga muvofiq, mulkni o'rnatish Jami ruxsat berish: oxirgi bo'laklar Bunday so'rovlarning bajarilishini sezilarli darajada tezlashtiradi, chunki tanlov to'g'ridan-to'g'ri qo'shimcha jadvallardan amalga oshiriladi, ularda faqat oxirgi qiymatlar (oxirgilarini kesish uchun) va birinchi qiymatlar (kesish uchun) saqlanadi. birinchilar).

1.2. Bundan tashqari, siz o'ylashingiz kerak muqobil variantlar ushbu shartlar bajarilishi uchun reestrga so'rovlarni qayta ko'rib chiqish.

Misol uchun, agar ba'zi hollarda registrdagi ma'lumotlar Narxlar nomenklaturalari kelajakdagi sanada qayd etiladi va ushbu reestrga tovarlarni tanlashda so'rov har doim joriy sana uchun bajariladi (sana virtual jadval parametrida aniq ko'rsatilgan. Oxirgi qism), keyin natijalar bunday so'rovlarning bajarilishini tezlashtirmaydi. Chunki jamilar faqat reestrning birinchi va oxirgi yozuvlari uchun tuzilgan.

Ammo, agar siz mahsulotni tanlash shaklini ochayotganda, kelajakdagi sanaga ega registratorlar bor yoki yo'qligini tahlil qilsangiz va ular bo'lmasa, sanani belgilamasdan ikkinchisining bir qismi uchun boshqa so'rovni bajarsangiz, bunday so'rov tezroq ishlaydi. .

2. Boshqa barcha hollarda davriy ma'lumotlar registrlari uchun jamlanmalarga yo'l qo'yilmasligi kerak. Avvalo, agar

  • ko'pincha (har doim) so'rovlar ma'lum bir davr uchun ma'lumotlarning birinchi/oxirgi davriy reestrining virtual jadvallariga (masalan, hujjat sanasi uchun) qilinadi.
  • virtual jadvallar uchun sharoitda Birinchi bo'lak Va Oxirgi qism Ko'pincha (har doim) pastki so'rovlar va birlashmalar ishlatiladi (tegishli jadvallar maydonlariga "nuqta orqali" qo'ng'iroqlar). Masalan, bu holatda:

3. Konfiguratsiyada umumiy summalarni qayta hisoblashning alohida mexanizmini taqdim etishning hojati yo'q, chunki jami jadvallarni yangilash har safar registrga yozuvlar to'plami yozilganda avtomatik ravishda amalga oshiriladi.

: Birinchi bo'lak Va Oxirgi qism Keling, 1C yordamida ushbu virtual jadvallar bilan ishlashni ko'rib chiqaylik. Ko'proq tez-tez ishlatiladi Oxirgi qism, shuning uchun undan boshlaylik.

Oxirgi bo'lak sizga o'lchovlar kontekstida ma'lum bir sana uchun ma'lumotlar registrining oxirgi yozuvini olish imkonini beradi. Oxirgi (birinchi) tilim jadvali uchun qavslar ichida vergul bilan ajratilgan ikkita parametrni belgilash mumkin. Birinchi parametr tilim tuzilgan sanani o'z ichiga oladi (agar parametr ko'rsatilmagan bo'lsa, tilim joriy sanada amalga oshiriladi). Ikkinchi parametr 1C so'rovlar tilida shart bo'lib, turli xil tanlovlarni o'rnatishga imkon beradi. Qoida tariqasida, bu tanlovlarda o'lchovlar qo'llaniladi. Bularning barchasi juda noaniq ko'rinadi, shuning uchun misolsiz qilish mumkin emas.
Shunday qilib, keling, ma'lumotlarning davriy reestriga ega bo'lamiz Narxi mahsulot va yetkazib beruvchi bo'yicha narxlarni saqlaydi. Ro'yxatga olish chastotasi - kun.

Reestrda quyidagi yozuvlar mavjud

Boshlash uchun biz quyidagi so'rovni bajarib, parametrlardan foydalanmasdan ikkinchisining bir qismini olamiz:

Davr AS PriceSliceLast.Period, PriceSliceLast.Mahsulot AS, PriceSliceLast.Patvayner AS Yetkazib beruvchi, PriceSliceLast.Summani Roʻyxatdan oʻtish maʼlumotlaridan.Price.Price.SliceOxirgi AS PriceSliceLast

Parametrlar ko'rsatilmaganligi sababli, tilim joriy sanada amalga oshiriladi - 02/01/2017. Natijada biz quyidagi jadvalni olamiz

Bu erda biz o'lchamlarning kombinatsiyasi Mahsulot + Yetkazib beruvchining yagona ekanligini ko'ramiz, ya'ni. Registr o'lchovlarining har bir kombinatsiyasi uchun maksimal sanaga ega bo'lgan yozuv olingan va qayd etilgan sana joriy sanadan kamroq yoki unga teng.

Aytaylik, biz ham xuddi shunday qilishimiz kerak, lekin biz sanasi 01/15/2017 dan kichik yoki unga teng bo'lgan yozuvlarni olishni xohlaymiz. Buni amalga oshirish uchun so'rovdagi so'nggi tilim jadvali bilan qatorni quyidagicha o'zgartirishingiz kerak

RegisterInformation.Price.SliceLast(&CutDate,) AS PriceSliceLast

So'rovni bajarishdan oldin, albatta, unga parametrni o'tkazishingiz kerak &CutSana. Endi so'rov natijasi shunday ko'rinadi

Va nihoyat, bizda tovarlar bo'lishi sharti bilan bir xil sana uchun eng so'nggilarining suratini olishimiz kerakligini tasavvur qiling. Qalam, va yetkazib beruvchi Kantselyariya buyumlari. Buning uchun so'rovda ikkinchi parametrni belgilang

FROM RegisterInformation.Price.Last Cut(&CutSana,Mahsulot = &Mahsulot VA Yetkazib beruvchi = &Etkazib beruvchi) OXIRGI Narx

Natijada biz faqat bitta rekordni olamiz

Ushbu qavs va vergullarning barchasida yo'qolmaslik uchun so'rovlar yaratuvchisidan foydalanish yaxshiroqdir. Men sizga oxirgi so'rovni misol sifatida ko'rsataman.

So'rovlar dizaynerida eng so'nggi bo'laklari bo'lgan jadvalni tanlagandan so'ng, tugmani bosishingiz kerak. Virtual jadval imkoniyatlari va ochilgan oynada yozing

Birinchi bo'lak uchun ishlash printsipi bir xil ekanligini taxmin qilish qiyin emas, faqat kesish sanasidan keyingi birinchi yozuv tanlangan.

IN sinov konfiguratsiyasi Bizda quyidagi manba ma'lumotlariga ega "Narxlar nomenklaturasi" davriy ma'lumotlar reestri mavjud:

Rasmda ro'yxatga olish kitobi metama'lumotlarining tuzilishi ham ko'rsatilgan. Ko'rib turganimizdek, registrda "Mahsulotlar" mos yozuvlar turiga ega "Mahsulot" o'lchami, shuningdek, "Narx" raqamli resursi va "OldPrice" atributi mavjud.

Aytaylik, hisobotda eski narx 50 dan kam yoki teng bo'lishi sharti bilan mahsulotlar va ularning narxlari bo'yicha so'nggi yozuvlarning bir qismini olishimiz kerak.

Ikkita so'rov varianti

Darhol aytaman, biz to'g'ri va noto'g'ri variantlarni ko'rib chiqamiz, ikkinchisidan boshlaylik. Bu yangi boshlanuvchi dasturchilar ko'pincha qiladigan xatodir. Shunday qilib, hisobot uchun quyidagi so'rov yozildi:

So'rov = Yangi so'rov; So'rov. Matn = " SELECT | | | | | FROM | Axborot reestri. Narxlar nomenklaturalari. Oxirgi parcha QANDAY NarxlarNomenklaturaEng so'nggi parcha|QAYERDA | NarxlarNomenklaturaSliceOxirgi. Eski narx< = 50 " ;

"QAYERDA" bo'limidagi holatga e'tibor bering. Bu asosiy xato! Ushbu so'rov bitta yozuvni qaytarmaydi va nima uchun: virtual jadvallardan foydalanganda, bizning holatimizda "So'nggi bo'lak" ma'lumotlar birinchi bo'lib ma'lumotlar bazasidan quyidagi shartlarga muvofiq olinadi. virtual jadval, so'ngra so'rov matnida tasvirlangan harakatlar amalga oshiriladi (guruhlar, "QAYER" bo'limidagi shartlar, saralash va boshqalar).

Shuning uchun, bizning misolimizda, so'rov natijani qaytarmaydi. Birinchidan, u ikkinchisining bir qismini oladi va shundan keyingina "Eski narx" atributiga shart qo'yadi. Bu diagrammada shunday ko'rinadi:

Muammoni to'g'ri hal qilish uchun "Eski narx" atributining sharti virtual jadval shartlariga o'tkazilishi kerak. To'g'ri so'rov matni shunday ko'rinadi:

So'rov = Yangi so'rov; So'rov. Matn = "TANLASH NarxlarNomenklaturaSliceOxirgi. Davr, NarxlarNomenklaturaSliceOxirgi. mahsulot, NarxlarNomenklaturaSliceOxirgi. Narxi, NarxlarNomenklaturaSliceOxirgi. Eski narx FROM Axborot reestri. Narxlar nomenklaturalari. SliceLast(, OldPrice< = 50 ) QANDAY NARXLARNomenklaturaSliceLatest"

Endi so'rov to'g'ri ma'lumotlarni oladi, chunki "OldPrice" atributining sharti hisobga olingan holda so'nggi narxlarning bir qismi olinadi.

natijalar

Shuni tushunish kerakki, yuqorida aytilganlar so'rovlarda virtual jadvallardan foydalanishning barcha holatlariga (jamlanma registrlari, buxgalteriya registrlari, vazifalar va boshqalar uchun) tegishli.

Bu virtual jadvallardan foydalanishning asosiy qoidasini ham nazarda tutadi: "virtual jadvaldan foydalanganda tanlash parametrlarini to'g'ridan-to'g'ri virtual jadvalga o'rnatganingizga ishonch hosil qiling, aks holda so'rov keraksiz ma'lumotlarni oladi va keyinchalik ular tanlash uchun ishlatiladi."

Ba'zan davriy ma'lumotlar registridan bir vaqtning o'zida bir nechta sanalar uchun ma'lumotlarni olish uchun so'rovdan foydalanish kerak. Oddiy misol - valyuta kurslari bilan ishlash. Keling, misol yordamida ushbu muammoni hal qilish algoritmini ko'rib chiqaylik.

Muammoni shakllantirish

Ma'lumotlar bazasida "Tovarlar va xizmatlarni sotish" hujjati yaratilgan bo'lib, uning sarlavhasida "Valyuta" atributi mavjud. So'rov har bir hujjat uchun hujjat sanasidagi sarlavhadan joriy valyuta kursini olishni talab qiladi. Valyuta kurslari “Valyuta kurslari” davriy axborot reestrida saqlanadi.
Ushbu muammoni to'g'ridan-to'g'ri hal qilish tsikldagi so'rov bo'lishi mumkin: ularning sanalari va valyutalari ko'rsatilgan barcha hujjatlarni olish va namunada so'nggi "Valyuta kurslari" registrining bir qismi bilan virtual jadvalga kirish. Lekin chunki tsikldagi so'rov "yomon", keling, bitta so'rov bilan vazifani bajarishga harakat qilaylik.

Yechim

Muammoni hal qilish uchun biz so'rovdagi jadvallardan foydalanamiz maydonlar tengligi uchungina emas, balki ulanishi mumkin.

Tovar va xizmatlarni sotish.. Havola, tovar va xizmatlarni sotish.. Valyuta, MAKSIMUM (valyuta kurslari. Davr) Davr ASKIDA TP davrlardagi oʻrni Sozlamalar stavkalari Hujjatdan. Tovarlar va xizmatlarni sotish QANDAY Tovarlar va xizmatlarni sotish Maʼlumotlar reestrini tark etish Valyuta kurslari Valyuta kurslari AS Xizmatchilarning tovarlarni sotishi.Valyuta = Valyuta kurslari.Valyuta va tovarlarni sotishXizmatlar.Sana >= Valyuta kurslari.Davr GURUH Dasturiy ta'minot tovarlar va xizmatlarni sotish.Havola, Tovarlar va xizmatlarni sotish.Valyuta; ////////////////////////////////////////////// /////////////////////////////////////////// VTP-davrlar stavkalarini o'rnatish.Link, VTP-davrlarni o'rnatish stavkalari.Valyuta, kurslar.VTP-davrlardan valyuta.kurs.VTP-davrlar sifatida tariflarni o'rnatish. Valyuta kurslari Valyuta kurslari AS VTP PeriodsRate Settings.Period = Valyuta kurslari.Period VA VTPDavrlarRate Settings.Currency = Valyuta kurslari.Currency

Ariza berish tartibi:

  1. Har bir hujjat uchun valyuta kursini belgilash muddatini olish. Hujjatlar "Valyuta kurslari" Jismoniy jadvaliga ulangan. Bu erda siz ulanish shartlariga e'tibor berishingiz kerak. Valyutalar teng bo'lishi kerak va hujjat sanasi >= axborot registrining davri.
    Bunday ulanish natijasida har bir hujjat uchun shartni qondiradigan qatorlar to'plami olinadi: hujjatning valyutasi bo'yicha almashuv kurslarining barcha qaydlari hujjat tuzilgan kundan kechiktirmay belgilanadi.
    Yakuniy bosqich maksimal stavka davrini olish uchun qatorlarni guruhlash bo'ladi. Natijada, har bir hujjat uchun kerakli valyuta kursini belgilash uchun zarur bo'lgan muddat olinadi (valyuta kursini belgilashning maksimal sanasi, lekin hujjat sanasidan oshmasligi kerak). Natija VTPeriodsSettingRates vaqtinchalik jadvaliga joylashtiriladi.
  2. Kurs olish. Vaqtinchalik VTPeriodsSetting Rates jadvali “Valyuta kurslari” Jismoniy jadvaliga ulangan. Ulanish hujjat valyutasiga va ikkinchi vaqtinchalik jadvalda belgilangan kursni belgilash davriga muvofiq amalga oshiriladi.