1c virtual jadvalidagi holat. So'rovlar dizayneridagi "So'rov" tugmasi

Haqiqiy muammolarda namunalarni tashkil qilishda, aksariyat hollarda ma'lumotlarni tanlash ma'lum mezonlarga muvofiq tashkil etiladi.

Agar tanlov haqiqiy stoldan qilingan bo'lsa, hech qanday qiyinchiliklar yuzaga kelmaydi. Ma'lumotlar mutlaqo ahamiyatsiz tarzda qayta ishlanadi:

Agar so'rovdagi manba virtual jadval bo'lsa, vaziyat biroz murakkablashadi.


So'rovlar tili virtual jadvallar tanloviga ikkita usulda shart qo'yish imkonini beradi: WHERE bandida va virtual jadval parametrlaridan foydalanish. Ikkala usul ham bir xil natijaga olib keladi (ba'zi aniq holatlar bundan mustasno), ammo shunga qaramay, ular ekvivalentdan uzoqdir.

Biz allaqachon bilamizki, virtual jadvallar virtual deb ataladi, chunki ular aslida ma'lumotlar bazasida emas. Ular faqat ularga so'rov berilgan paytda shakllanadi. Shunga qaramay, biz uchun (ya'ni so'rovni yozuvchilar) virtual jadvallarni haqiqiy deb hisoblash qulay. Biz tuzgan so'rov virtual jadvalga kirsa, 1C Enterprise 8 tizimida nima bo'ladi?

Birinchi bosqichda tizim virtual jadval tuzadi. Ikkinchi bosqichda natija jadvalidan WHERE bandida ko'rsatilgan shartni qondiradigan yozuvlar tanlanadi:
Ko'rinib turibdiki, yakuniy namuna virtual jadvaldagi barcha yozuvlarni (va shuning uchun ma'lumotlar bazasidan) emas, balki faqat berilgan shartni qondiradiganlarni o'z ichiga oladi. Va qolgan yozuvlar shunchaki natijadan chiqarib tashlanadi.

Shunday qilib, tizim shunchaki foydasiz ishni emas, balki ikki baravar foydasiz ishlarni ham bajaradi! Birinchidan, resurslar keraksiz ma'lumotlar asosida virtual jadval yaratishga sarflanadi (rasmda ular "A va B ma'lumotlar sohalari" deb belgilangan), so'ngra ushbu ma'lumotlarni yakuniy natijadan filtrlash bo'yicha ish olib boriladi.

Virtual jadvalni yaratish bosqichida keraksiz ma'lumotlardan foydalanishni darhol to'xtatish mumkinmi? Bu mumkin ekan. Virtual jadval parametrlari aynan shu uchun mo'ljallangan:

Virtual jadvalni parametrlash orqali biz so'rov tomonidan qayta ishlanadigan ma'lumotlar miqdorini darhol cheklaymiz.

"Qo'shish usuli" virtual jadval parametrining qiymatlari o'rtasidagi farq nima?
Qo'shish usuli "harakatlar" ga o'rnatilganda, faqat harakatlar bo'lgan davrlar qaytariladi. "Harakatlar va davr chegaralari" o'rnatilganda, u holda yuqoridagi harakatlarga 2 ta yozuv qo'shiladi: VT parametrlarida ko'rsatilgan davr boshida va oxirida harakatlar. Ushbu 2 ta yozuv uchun “Registrator” maydoni bo‘sh bo‘ladi.

Saytdan olingan ma'lumotlar

1C 8-dagi so'rovlar tili taniqli "tuzilgan dasturlash tili" ning soddalashtirilgan analogidir (ko'pincha SQL deb ataladi). Ammo 1C-da u faqat ma'lumotlarni o'qish uchun ishlatiladi; ob'ekt ma'lumotlar modeli ma'lumotlarni o'zgartirish uchun ishlatiladi.

Yana bir qiziqarli farq - bu rus sintaksisi. Garchi aslida siz ingliz tilidagi konstruktsiyalardan foydalanishingiz mumkin.

Misol so'rovi:

TANLANG
Banklar. Ism,
Banks.CorrAccount
FROM
Katalog.Banklar QANDAY Banklar

Ushbu so'rov bizga ma'lumotlar bazasida mavjud bo'lgan barcha banklarning nomi va vakillik hisobi haqidagi ma'lumotlarni ko'rish imkonini beradi.

So'rovlar tili eng sodda va samarali usul ma'lumot olish. Yuqoridagi misoldan ko'rinib turibdiki, so'rovlar tilida siz metadata nomlaridan foydalanishingiz kerak (bu konfiguratsiyani tashkil etuvchi tizim ob'ektlari ro'yxati, ya'ni kataloglar, hujjatlar, registrlar va boshqalar).

So‘rovlar tili konstruksiyalarining tavsifi

So'rovlar tuzilishi

Ma'lumotlarni olish uchun "SELECT" va "FROM" konstruktsiyalaridan foydalanish kifoya. Eng oddiy so'rov quyidagicha ko'rinadi:

Kataloglardan * ni tanlang.Nomenklatura

Bu yerda “*” jadvalning barcha maydonlarini tanlashni bildiradi, Kataloglar.Nomenklatura – ma’lumotlar bazasidagi jadval nomi.

Keling, yanada murakkab va umumiy misolni ko'rib chiqaylik:

TANLANG
<ИмяПоля1>QANAQASIGA<ПредставлениеПоля1>,
summa(<ИмяПоля2>) QANAQASIGA<ПредставлениеПоля2>
FROM
<ИмяТаблицы1>QANAQASIGA<ПредставлениеТаблицы1>
<ТипСоединения>MURAJAT<ИмяТаблицы2>QANAQASIGA<ПредставлениеТаблицы2>
BY<УсловиеСоединениеТаблиц>

QAYERDA
<УсловиеОтбораДанных>

GURUH BO'YICHA
<ИмяПоля1>

SARALASH TURI
<ИмяПоля1>

NATIJALAR
<ИмяПоля2>
BY
<ИмяПоля1>

IN bu so'rov“JadvalName1” va “JadvalNami” jadvallaridan “MaydonName1” va “MaydonName1” maydonlarining ma’lumotlarini tanlaymiz, “QANDAY” operatori yordamida maydonlarga sinonimlarni belgilaymiz va “TableConnectionCondition” ma’lum sharti yordamida ularni bog‘laymiz.

Qabul qilingan ma’lumotlardan “QAYERDA” “Ma’lumotlarni tanlash sharti” dan faqat shartga javob beradigan ma’lumotlarni tanlaymiz.Keyin, “Maydon nomi2”ni jamlagan holda so‘rovni “Maydon nomi1” maydoni bo‘yicha guruhlaymiz.Maydon bo‘yicha jami ma’lumotlarni yaratamiz. "Maydon nomi1" va oxirgi maydon "Maydon nomi2".

Oxirgi qadam ORDER BY konstruktsiyasidan foydalangan holda so'rovni saralashdir.

Umumiy dizaynlar

1C 8.2 so'rovlar tilining umumiy tuzilmalarini ko'rib chiqaylik.

BIRINCHIn

Yordamida ushbu operatordan n ta birinchi yozuvlarni olishingiz mumkin. Yozuvlarning tartibi so'rovdagi tartib bilan belgilanadi.

BIRINCHI 100 TANLANG
Banklar. Ism,
Banklar. Kod AS BIC
FROM
Katalog.Banklar QANDAY Banklar
SARALASH TURI
Banklar. Ism

So'rov "Banklar" katalogining alifbo tartibida tartiblangan birinchi 100 ta yozuvini oladi.

RUXSAT BERILGAN

Ushbu dizayn mexanizm bilan ishlash uchun tegishli. Mexanizmning mohiyati foydalanuvchilar uchun ma'lumotlar bazasi jadvalidagi ma'lum yozuvlar uchun o'qishni (va boshqa harakatlarni) cheklashdan iborat, lekin umuman jadval emas.

Agar foydalanuvchi unga kirish imkoni bo'lmagan yozuvlarni o'qish uchun so'rovdan foydalanishga harakat qilsa, u xato xabarini oladi. Bunga yo'l qo'ymaslik uchun siz "RUXSAT" konstruktsiyasidan foydalanishingiz kerak, ya'ni so'rov faqat unga ruxsat berilgan yozuvlarni o'qiydi.

TANLASH RUXSAT BERILGAN
Qo'shimcha ma'lumotlar ombori. Havola
FROM
Qo'shimcha ma'lumotlar ombori

TURLI

"DIFFERENT" dan foydalanish 1C so'rovi natijasiga takroriy satrlarni kiritishni oldini oladi. Takrorlash barcha so'rov maydonlarining mos kelishini anglatadi.

BIRINCHI 100 TANLANG
Banklar. Ism,
Banklar. Kod AS BIC
FROM
Katalog.Banklar QANDAY Banklar

Bo'sh jadval

Ushbu qurilish so'rovlarni birlashtirish uchun juda kam qo'llaniladi. Qo'shilish paytida siz jadvallardan birida bo'sh ichki jadvalni ko'rsatishingiz kerak bo'lishi mumkin. Buning uchun "EmptyTable" operatori juda mos keladi.

1C 8 yordamidan misol:

Bog'lanish.Raqam, BO'SH JADVAL.(No., Buyum, Miqdor) Tarkibi sifatida tanlang.
Hujjatdan.Xarajat hisob-fakturasidan
HAMMANI BIRLASHTIRISH
Havolani tanlang.Raqam, Tarkib.(LineNumber, Mahsulot, Miqdor)
FROM Document.Invoice Document.Invoice.Composition.*

ISNULL

Ko'p xatolardan qochish imkonini beruvchi juda foydali xususiyat. YesNULL() NULL qiymatini kerakli qiymatga almashtirish imkonini beradi. Birlashtirilgan jadvallarda qiymat mavjudligini tekshirishda juda tez-tez ishlatiladi, masalan:

TANLANG
Nomenklatura Ref. Havola,
IsNULL(Item Remaining.QuantityRemaining,0) AS QuantityRemaining
FROM


Boshqa usullarda foydalanish mumkin. Misol uchun, agar har bir satr uchun qiymat qaysi jadvalda mavjudligi ma'lum bo'lmasa:

ISNULL(InvoiceReceived.Date, Invoice Issued Date)

HOW - jadval yoki maydonga nom (sinonim) belgilash imkonini beruvchi operator. Biz yuqorida foydalanish misolini ko'rdik.

Ushbu konstruktsiyalar juda o'xshash - ular kerakli qiymatning satrli tasvirini olish imkonini beradi. Yagona farq shundaki, REPRESENTATION har qanday qiymatlarni o'zgartiradi string turi, va REPRESENTATIONLINKS faqat havola. MA'LUMOT VAKOLONIYaSI dan optimallashtirish uchun ma'lumotlar tarkibi tizimi so'rovlarida foydalanish tavsiya etiladi, agar, albatta, ma'lumotnoma ma'lumotlar maydonini tanlashda foydalanish rejalashtirilmagan bo'lsa.

TANLANG
View(Link), //string, masalan “Advans hisoboti № 123, 10/10/2015
Koʻrish(DeletionMark) AS DeleteMarkText, //string, “Ha” yoki “Yoʻq”
ViewReferences(DeletionMark) AS DeleteMarkBoolean // mantiqiy, rost yoki noto'g'ri
FROM
Hujjat. Oldindan hisobot

EXPRESS

Express sizga maydon qiymatlarini o'zgartirish imkonini beradi to'g'ri tur ma'lumotlar. Siz qiymatni ibtidoiy turga yoki mos yozuvlar turiga aylantirishingiz mumkin.

Malumot turi uchun ekspress murakkab turdagi maydonlarda so'ralgan ma'lumotlar turlarini cheklash uchun ishlatiladi, ko'pincha tizim ish faoliyatini optimallashtirish uchun ishlatiladi. Misol:

EXPRESS(TableCost.Subconto1 AS Directory.Cost Items).Tipe ActivityForSoliqBuxgalteriya xarajatlari

Primitiv tiplar uchun bu funksiya ko'pincha cheksiz uzunlikdagi maydonlardagi belgilar sonini cheklash uchun ishlatiladi (bunday maydonlarni solishtirish mumkin emas). Xatoni oldini olish uchun " Taqqoslashda yaroqsiz parametrlar. Maydonlarni solishtira olmaysiz
cheksiz uzunlik va mos kelmaydigan turdagi maydonlar
", siz bunday maydonlarni quyidagicha ifodalashingiz kerak:

EXPRESS(Izoh AS qatori(150))

DIFFERENCE DATE

1C da 267 ta video darslarni bepul oling:

1C so'rovida IS NULL dan foydalanishga misol:

TANLANG
Ref
CHAP ULANISH To'planishlarni ro'yxatga olish.Omborlardagi mahsulotlar. Qolgan mahsulot sifatida
Dasturiy ta'minot nomenklaturasiRef.Link = Sotilgan tovarlarQo'mitalari qoldiqlari.Nomenklatura
QAYoDA BO'LMAGAN Tovarlar Qolgan miqdori NULL

So'rovdagi ma'lumotlar turini quyidagicha aniqlash mumkin: TYPE() va VALUETYPE() funksiyalaridan foydalanish yoki foydalanish mantiqiy operator LINK. Ikki funktsiya o'xshash.

Oldindan belgilangan qiymatlar

1C so'rovlar tilida so'rovlarda o'tkazilgan parametrlardan foydalanishga qo'shimcha ravishda siz oldindan belgilangan qiymatlardan yoki dan foydalanishingiz mumkin. Masalan, o'tkazmalar, oldindan belgilangan kataloglar, schyotlar jadvallari va hokazo.Buning uchun “Value()” konstruksiyasidan foydalaniladi.

Foydalanish misoli:

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

QAYERGA kontragentlar. Aloqa ma'lumotlari turi = Qiymat (Ro'yxat. Aloqa ma'lumotlarining turlari. Telefon)

WHERE Hisob balanslari. Buxgalteriya hisobi = Qiymat(Hisoblar jadvali.Profit.ProfitsLoss)

Ulanishlar

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.

Masalan:

U kontragentlarning to'liq jadvalini qaytaradi va "Bank" maydonini faqat "Counterparties.Name = Banks.Name" sharti bajariladigan joylarda to'ldiradi. Agar shart bajarilmasa, Bank maydoni o'rnatiladi NULL.

1C tilida TO'G'RI 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:

FROM

TO'LIQ ULANISH
Katalog.Banklar QANDAY Banklar

BY

So'rovlar tili ikkala jadvalni faqat yozuvlarga qo'shilish sharti bajarilgan taqdirdagina to'liq qaytaradi. Chap/o'ng qo'shilishdan 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
Ma'lumotnoma kontragentlar AS mijozlari

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.

Uyushmalar

JOIN va JOIN ALL konstruksiyalari ikkita natijani birlashtiradi. Bular. ikkita bajarish natijasi bitta, umumiy biriga "birlashtiriladi".

Ya'ni, tizim odatdagilar bilan bir xil ishlaydi, faqat vaqtinchalik jadval uchun.

INDEX BY dan qanday foydalanish kerak

Biroq, e'tiborga olish kerak bo'lgan bir nuqta bor. Vaqtinchalik jadvalda indeks yaratish ham vaqt talab etadi. Shuning uchun, agar vaqtinchalik jadvalda 1-2 dan ortiq yozuvlar bo'lishi aniq ma'lum bo'lsa, "" konstruktsiyasidan foydalanish tavsiya etiladi. Aks holda, ta'sir aksincha bo'lishi mumkin - indekslangan maydonlarning ishlashi indeksni yaratish uchun ketadigan vaqtni qoplamaydi.

TANLANG
Valyuta kurslari Oxirgi kesma. Valyuta AS Valyuta,
Valyuta kurslari Oxirgi kesma.
PUT valyuta kurslari
FROM
Ma'lumot registr.Valyuta kurslari.Oxirgi bo'lim(&davra,) AS Valyuta kurslariOxirgi bo'lim
INDEX BY
Valyuta
;
TANLANG
Narxlarnomenklaturasi.Nomenklatura,
NarxlarNomenklaturalari.Narxlar,
NarxlarNomenklaturalari.Valyuta,
Valyuta kurslari. Kurs
FROM
Axborot reestri. Nomenklatura narxlari. Oxirgi bo'lak(&Davra,
Nomenklatura B (&Nomenklatura) VA NarxType = &NarxTipe) AS Narxnomenklaturasi
LEFT JOIN Valyuta kurslari Valyuta kurslari sifatida
Dasturiy ta'minot narxlariNomenklaturalar.Valyuta = Valyuta kurslari.Valyuta

Guruhlash

1C so'rovlar tili sizga maxsus foydalanish imkonini beradi agregat funktsiyalari so'rov natijalarini guruhlashda. Guruhlash dublikatlarni "yo'q qilish" uchun agregat funktsiyalarsiz ham ishlatilishi mumkin.

Quyidagi funktsiyalar mavjud:

Miqdor, Miqdor, Turli soni, Maksimal, Minimal, O'rtacha.

1-misol:

TANLANG
Tovarlarni sotish va xizmatlar Tovarlar nomenklaturasi,
SUM(Sotish of GoodsServicesGoods.Quantity) AS Miqdori,
SUM(Tovarlarni sotishXizmatlarTovarlar.Summa) AS Sum
FROM

GURUH BO'YICHA
Tovarlarni sotish va xizmatlar Tovarlar nomenklaturasi

So'rov tovarlar bilan barcha qatorlarni oladi va ularni miqdor va miqdorlar bo'yicha jamlaydi.

Misol № 2

TANLANG
Banklar.kod,
QUANTITY(TURLI Banklar.Link) Dublikatlar soni AS
FROM
Katalog.Banklar QANDAY Banklar
GURUH BO'YICHA
Banklar. Kod

Ushbu misol "Banklar" katalogida BIClar ro'yxatini ko'rsatadi va ularning har biri uchun nechta dublikat mavjudligini ko'rsatadi.

Natijalar

Natijalar - tizimdan ma'lumotlarni olish usuli ierarxik tuzilma. Yig'ma funktsiyalardan, xuddi guruhlar uchun bo'lgani kabi, xulosa maydonlari uchun ham foydalanish mumkin.

Natijalarni amalda qo'llashning eng mashhur usullaridan biri bu tovarlarni partiyaviy hisobdan chiqarishdir.

TANLANG




FROM
Hujjat.Tovarlar va xizmatlarni sotish.Tovarlar Tovar va xizmatlarni sotish QANDAY tovar va xizmatlar
SARALASH TURI

NATIJALAR
SUM(Miqdor),
SUM(sum)
BY
Nomenklatura

So'rov natijasi quyidagi ierarxik bo'ladi:

Umumiy natijalar

Agar siz barcha "jamilar" bo'yicha jamlanmalarni olishingiz kerak bo'lsa, "GENERAL" operatoridan foydalaning.

TANLANG
Tovarlar va xizmatlarni sotish Tovarlar Nomenklaturasi AS Nomenklaturasi,
Tovarlar va xizmatlarni sotish. AS hujjatiga havola,
Tovar va xizmatlarni sotish Tovarlar Miqdor AS Miqdor,
Tovar va xizmatlarni sotish
FROM
Hujjat.Tovarlar va xizmatlarni sotish.Tovarlar Tovar va xizmatlarni sotish QANDAY tovar va xizmatlar
SARALASH TURI
Tovar va xizmatlarni sotish Tovarlar havola Sana
NATIJALAR
SUM(Miqdor),
SUM(sum)
BY
KO'PROQ,
Nomenklatura

So'rovni bajarish natijasida biz quyidagi natijaga erishamiz:

Guruhlashning qaysi 1 darajasi barcha kerakli maydonlarni yig'ishdir.

Tartibga solish

ORDER BY operatori so‘rov natijasini saralash uchun ishlatiladi.

Ibtidoiy turlar (string, raqam, mantiqiy) uchun saralash odatiy qoidalarga amal qiladi. Malumot turi maydonlari uchun saralash kod yoki mos yozuvlar ko'rinishida emas, balki havolaning ichki ko'rinishi (noyob identifikator) orqali amalga oshiriladi.

TANLANG

FROM
Katalog.Nomenklatura AS Nomenklaturasi
SARALASH TURI
Ism

So'rov nomenklatura katalogida alifbo tartibida tartiblangan nomlar ro'yxatini ko'rsatadi.

Avtomatik buyurtma

Saralashsiz so'rovning natijasi tartibsiz ravishda taqdim etilgan qatorlar to'plamidir. 1C platformasi ishlab chiquvchilari bir xil so'rovlarni bajarishda qatorlar bir xil ketma-ketlikda chiqishiga kafolat bermaydi.

Agar jadval yozuvlarini doimiy tartibda ko'rsatish kerak bo'lsa, siz Avtomatik buyurtma konstruktsiyasidan foydalanishingiz kerak.

TANLANG
Nomenklatura.Nom AS nomi
FROM
Katalog.Nomenklatura AS Nomenklaturasi
AVTO Buyurtma

Virtual jadvallar

1C-dagi virtual jadvallar boshqa shunga o'xshash sintaksislarda uchramaydigan 1C so'rovlar tilining o'ziga xos xususiyatidir. Virtual jadval - tez yo'l registrlardan profil ma'lumotlarini olish.

Har bir registr turida o'ziga xos virtual jadvallar to'plami mavjud bo'lib, ular registr sozlamalariga qarab farq qilishi mumkin.

  • birinchisining kesilishi;
  • ikkinchisining kesilishi.
  • qoldiqlar;
  • inqiloblar;
  • balanslar va aylanma.
  • subkontodan harakatlar;
  • inqiloblar;
  • tezlik Dt Kt;
  • qoldiqlar;
  • balanslar va aylanma
  • subkonto.
  • asos;
  • grafik ma'lumotlar;
  • haqiqiy amal qilish muddati.

Yechim ishlab chiqaruvchisi uchun ma'lumotlar bitta (virtual) jadvaldan olinadi, lekin aslida 1C platformasi ko'plab jadvallardan oladi va ularni kerakli shaklga aylantiradi.

TANLANG
Omborlardagi mahsulotlar qoldiqlari va aylanmasi.Nomenklatura,
Omborlardagi mahsulotlar Qolgan va aylanmasi. Miqdori Boshlang'ich Qolgan,
Omborlardagi mahsulotlar qoldiqlari va aylanmasi. Miqdori.
Ombordagi tovarlar qoldiqlari va aylanmasi. Miqdori,
Omborlardagi tovarlar qoldiqlari va aylanmasi. MiqdoriIste'mol,
Omborlardagi mahsulotlar QolganlarVa aylanmasi.MiqdorYakuniy Qolgan
FROM
Jamg'armalarni ro'yxatdan o'tkazing.Omborlardagi tovarlar.qoldiqlar va aylanmalar.

Ushbu so'rov sizga katta hajmdagi ma'lumotlarni tezda olish imkonini beradi.

Virtual jadval imkoniyatlari

Virtual jadvallar bilan ishlashning juda muhim jihati parametrlardan foydalanish hisoblanadi. Virtual jadval parametrlari tanlash va sozlash uchun maxsus parametrlardir.

Bunday jadvallar uchun "QAYER" konstruktsiyasida tanlovdan foydalanish noto'g'ri deb hisoblanadi. So'rov suboptimal bo'lishiga qo'shimcha ravishda, noto'g'ri ma'lumotlarni olish mumkin.

Ushbu parametrlardan foydalanishga misol:

Jamg'armalar reestri. Omborlardagi tovarlar. Balanslar va aylanmalar (va davr boshi, & davr oxiri, oy, davr harakati va chegaralari, nomenklatura = & talab qilinadigan nomenklatura)

Virtual jadvallar uchun algoritm

Misol uchun, "Qolganlar" turidagi eng ko'p ishlatiladigan virtual jadval ikkita jismoniy jadvaldan ma'lumotlarni saqlaydi - balanslar va harakatlar.

Virtual jadvaldan foydalanganda tizim quyidagi manipulyatsiyalarni amalga oshiradi:

  1. Biz jami jadvaldagi sana va o'lchovlar bo'yicha eng yaqin hisoblangan qiymatni olamiz.
  2. Harakat jadvalidagi summani jami jadvaldagi miqdorga "qo'shamiz".


Bunday oddiy harakatlar butun tizimning ish faoliyatini sezilarli darajada yaxshilashi mumkin.

Query Builder dasturidan foydalanish

So'rovlar yaratuvchisi- ma'lumotlar bazasi so'rovlarini ishlab chiqishni sezilarli darajada osonlashtiradigan 1C Enterprise tizimiga o'rnatilgan vosita.

So'rovlar yaratuvchisi juda oddiy, intuitiv interfeysga ega. Shunga qaramay, so'rovlar konstruktoridan foydalanishni batafsil ko'rib chiqamiz.

So'rov matni konstruktori kontekst menyusidan (sichqonchaning o'ng tugmasi) dastur kodining kerakli joyida ishga tushiriladi.

1C so'rov konstruktorining tavsifi

Keling, dizaynerning har bir yorlig'ini batafsil ko'rib chiqaylik. Istisno - bu boshqa muhokama uchun mavzu bo'lgan "Builder" yorlig'i.

Jadvallar va maydonlar yorlig'i

Ushbu yorliq ma'lumotlar manbasini va hisobotda ko'rsatilishi kerak bo'lgan maydonlarni belgilaydi. Aslini olganda, SELECT.. FROM konstruksiyalari bu yerda tasvirlangan.

Manba jismoniy ma'lumotlar bazasi jadvali, virtual registrlar jadvali, vaqtinchalik jadvallar, ichki so'rovlar va boshqalar bo'lishi mumkin.

Virtual jadvallarning kontekst menyusida siz virtual jadval parametrlarini o'rnatishingiz mumkin:

Ulanishlar yorlig'i

Yorliq bir nechta jadvallarning ulanishlarini tavsiflash uchun ishlatiladi va CONNECTION so'zi bilan konstruktsiyalarni yaratadi.

Guruhlash yorlig'i

Ushbu yorliqda tizim jadval natijasining kerakli maydonlarini guruhlash va umumlashtirish imkonini beradi. GROUP BY, SUM, MINIMUM, AVERAGE, MAXIMUM, MINIMUM, SONS OF THARENT konstruksiyalaridan foydalanishni tavsiflaydi.

Shartlar yorlig'i

WHERE qurilishidan so'ng so'rov matnida keladigan barcha narsalar uchun, ya'ni olingan ma'lumotlarga qo'yilgan barcha shartlar uchun javobgar.

Kengaytirilgan yorliq

Tab Qo'shimcha juda muhim bo'lgan barcha turdagi parametrlar bilan to'ldiring. Keling, har bir xususiyatni ko'rib chiqaylik.

Guruhlash Yozuvlarni tanlash:

  • Birinchi N- so'rovga faqat N yozuvni qaytaradigan parametr (BIRINCHI operator)
  • Hech qanday dublikat yo'q- qabul qilingan yozuvlarning o'ziga xosligini ta'minlaydi (DIFFERENT operator)
  • Ruxsat berilgan- faqat tizim hisobga olgan holda tanlash imkonini beradigan yozuvlarni tanlash imkonini beradi (RUXSAT BERILGAN qurilish)

Guruhlash So'rov turi so'rovning qanday turi bo'lishini aniqlaydi: ma'lumotlarni qidirish, vaqtinchalik jadvalni yaratish yoki vaqtinchalik jadvalni yo'q qilish.

Pastda bayroq bor Qabul qilingan ma'lumotlarni keyinroq o'zgartirish uchun qulflang. Bu sizga ma'lumotlarni blokirovka qilishni o'rnatish imkoniyatini yoqishga imkon beradi, bu ma'lumotlar o'qilgan paytdan boshlab o'zgartirilgunga qadar xavfsizligini ta'minlaydi (faqat tegishli Avtomatik rejim blokirovkalar, dizaynni o'zgartirish).

Qo'shilishlar/taxalluslar yorlig'i

So'rovlar dizaynerining ushbu yorlig'ida siz turli jadvallar va taxalluslarni birlashtirish qobiliyatini o'rnatishingiz mumkin (QANDAY konstruktsiya). Jadvallar chap tomonda ko'rsatilgan. Agar siz bayroqlarni jadvalga qarama-qarshi qo'ysangiz, UNITE konstruktsiyasi qo'llaniladi, aks holda - UNITE ALL (ikki usul o'rtasidagi farq). O'ng tomonda turli jadvallardagi maydonlarning mosligi ko'rsatilgan, agar yozishmalar ko'rsatilmagan bo'lsa, so'rov NULLni qaytaradi.

Buyurtma yorlig'i

Bu qiymatlarni tartiblash tartibini belgilaydi (ORDER BY) - kamayish (DESC) yoki o'sish (ASC).

Qiziqarli bayroq ham bor - Avtomatik buyurtma(so'rovda - AVTO BUYURTMA). Odatiy bo'lib, 1C tizimi ma'lumotlarni "xaotik" tartibda ko'rsatadi. Agar siz ushbu bayroqni o'rnatsangiz, tizim ma'lumotlarni ichki ma'lumotlar bo'yicha saralaydi.

So'rovlar to'plami yorlig'i

So'rovlar dizayneri yorlig'ida siz yangilarini yaratishingiz va undan navigatsiya sifatida foydalanishingiz mumkin. So'rov matnida paketlar ";" (vergul) belgisi bilan ajratiladi.

So'rovlar dizayneridagi "So'rov" tugmasi

So'rov dizaynerining pastki chap burchagida "So'rov" tugmasi mavjud bo'lib, uning yordamida istalgan vaqtda so'rov matnini ko'rishingiz mumkin:

Ushbu oynada siz so'rovga o'zgartirishlar kiritishingiz va uni bajarishingiz mumkin.


So'rovlar konsolidan foydalanish

Query Console - bu murakkab so'rovlarni disk raskadrovka qilish va tezkor ma'lumot olishning oddiy va qulay usuli. Ushbu maqolada men Query Console-dan qanday foydalanishni tasvirlashga harakat qilaman va Query Console-ni yuklab olish uchun havolani taqdim etaman.

Keling, ushbu vositani batafsil ko'rib chiqaylik.

1C so'rovlar konsolini yuklab oling

Avvalo, so'rovlar konsoli bilan ishlashni boshlash uchun uni biron bir joydan yuklab olishingiz kerak. Davolash odatda ikki turga bo'linadi - boshqariladigan shakllar va muntazam (yoki ba'zan 8.1 va 8.2 / 8.3 deb ataladi).

Men ushbu ikki turni bitta davolashda birlashtirishga harakat qildim kerakli rejim operatsiya, kerakli shakl ochiladi (boshqariladigan rejimda, konsol faqat qalin rejimda ishlaydi).

1C so'rovlar konsolining tavsifi

Asosiy ishlov berish paneli tavsifi bilan so'rovlar konsoliga qarashni boshlaylik:

So'rovlar konsoli sarlavhasida siz oxirgi so'rovning bajarilish vaqtini millisekundlik aniqlik bilan ko'rishingiz mumkin, bu sizga turli dizaynlarni ishlash jihatidan solishtirish imkonini beradi.

Buyruqlar panelidagi birinchi guruh tugmalari joriy so'rovlarni tashqi faylga saqlash uchun javobgardir. Bu juda qulay, siz har doim murakkab so'rov yozishga qaytishingiz mumkin. Yoki, masalan, muayyan dizaynlarning odatiy namunalari ro'yxatini saqlang.

Chapdagi "So'rov" maydonida siz yangi so'rovlar yaratishingiz va ularni daraxt tuzilishida saqlashingiz mumkin. Ikkinchi guruh tugmalari so'rovlar ro'yxatini boshqarish uchun javobgardir. Uning yordamida siz so'rovni yaratishingiz, nusxalashingiz, o'chirishingiz, ko'chirishingiz mumkin.

  • Bajarishiltimos- oddiy bajarish va natijalar
  • Paketni amalga oshirish– so‘rovlar to‘plamidagi barcha oraliq so‘rovlarni ko‘rish imkonini beradi
  • Vaqtinchalik jadvallarni ko'rish– jadvalda vaqtinchalik soʻrovlar qaytaradigan natijalarni koʻrish imkonini beradi

So'rov parametrlari:

So'rov uchun joriy parametrlarni o'rnatish imkonini beradi.

So'rov parametrlari oynasida quyidagilar qiziq:

  • Tugma So'rovdan oling ishlab chiquvchining qulayligi uchun so'rovdagi barcha parametrlarni avtomatik ravishda topadi.
  • Bayroq Barcha so'rovlar uchun umumiy parametrlar- o'rnatilganda, so'rovlarning umumiy ro'yxatida so'rovdan so'rovga o'tishda uni qayta ishlash parametrlarni tozalamaydi.

Qiymatlar ro'yxati bilan parametrni o'rnating Bu juda oddiy, faqat parametr qiymatini tanlashda qiymatni tozalash tugmachasini bosing (xoch), tizim sizga ma'lumotlar turini tanlashni taklif qiladi, bu erda siz "Qiymatlar ro'yxati" ni tanlashingiz kerak:

Shuningdek, yuqori panelda so'rovlar konsoli sozlamalarini chaqirish uchun tugma mavjud:

Bu yerda siz so'rovlarni avtomatik saqlash va so'rovlarni bajarish parametrlarini belgilashingiz mumkin.

So'rov matni konsol so'rovi maydoniga kiritiladi. Buni oddiygina so'rov testini kiritish yoki maxsus vosita - so'rovlar dizaynerini chaqirish orqali amalga oshirish mumkin.

1C 8 so'rovlar dizayneri kiritish maydonini bosganingizda kontekst menyusidan (sichqonchaning o'ng tugmasi) chaqiriladi:

Shuningdek, ushbu menyuda bundaylar mavjud foydali xususiyatlar, masalan, soʻrovga qator uzilishlarini (“|”) oʻchirish yoki qoʻshish yoki soʻrov kodini ushbu qulay shaklda olish:

So'rov = Yangi so'rov;
So'rov.Matn = ”
|SELECT
| Valyutalar.Link
|FROM
| Directory.Currencies AS Valyutalar”;
RequestResult = Request.Execute();

So'rovlar konsolining pastki maydoni so'rov natijalari maydonini ko'rsatadi, shuning uchun bu qayta ishlash yaratilgan:



Shuningdek, so'rovlar konsoli ro'yxatga qo'shimcha ravishda ma'lumotlarni daraxt shaklida ko'rsatishi mumkin - jami bo'lgan so'rovlar uchun.

So'rovni optimallashtirish

1C korxonasi 8.3 unumdorligini oshirishning eng muhim nuqtalaridan biri optimallashtirishso'rovlar. Bu nuqta ham juda muhim qachon sertifikatlashdan o'tish. Quyida biz bu haqda gaplashamiz tipik sabablar so'rovlar va optimallashtirish usullarining optimal ishlashi emas.

WHERE konstruktsiyasidan foydalangan holda virtual jadvaldagi tanlovlar

Virtual jadval ma'lumotlariga filtrlarni faqat VT parametrlari orqali qo'llash kerak. Hech qanday holatda virtual jadvalda tanlash uchun WHERE konstruktsiyasidan foydalanmaslik kerak, bu optimallashtirish nuqtai nazaridan jiddiy xatodir. WHERE yordamida tanlagan holda, aslida tizim HAMMA yozuvlarni oladi va shundan keyingina keraklilarini tanlang.

TO'G'RI:

TANLANG

FROM
Jamg'armalar reestri.Tashkilotlar ishtirokchilari bilan o'zaro hisob-kitoblar.Balanslar (
,
Tashkilot = &Tashkilot
VA Individual = &Individual) QANDAY Tashkilotlar ishtirokchilari bilan o'zaro hisob-kitoblar Balanslar

NOG'OS:

TANLANG
Tashkilotlar ishtirokchilari bilan o'zaro hisob-kitoblar Balanslar
FROM
Jamg'armalar reestri Tashkilotlar ishtirokchilari bilan o'zaro hisob-kitoblar Balanslar (,) QANDAY Tashkilotlar ishtirokchilari bilan o'zaro hisob-kitoblar Balanslar
QAYERDA
Tashkilotlar ishtirokchilari bilan o'zaro hisob-kitoblar Balanslar Tashkilot = & Tashkilot
VA Tashkilotlar ishtirokchilari bilan o'zaro hisob-kitoblar Balanslar Individual = &Individual

Nuqta yordamida murakkab turdagi maydon qiymatini olish

Nuqta orqali so'rovda murakkab turdagi ma'lumotlarni qabul qilganda, tizim murakkab tip maydonida iloji boricha ko'proq jadvallarni chap qo'shma bilan bog'laydi.

Masalan, registrni qayd qilish maydoniga - registratorga kirishni optimallashtirish juda istalmagan. Ro'yxatga oluvchi kompozit ma'lumotlar turiga ega, ular orasida registrga ma'lumotlarni yozishi mumkin bo'lgan barcha mumkin bo'lgan hujjat turlari mavjud.

NOGAN:

TANLANG
Record Set.Recorder.Sana,
RecordSet.Miqdor
FROM
RegisterAccumulations.ProductsOrganizations AS SetRecords

Ya'ni, aslida, bunday so'rov bitta jadvalga emas, balki 22 ma'lumotlar bazasi jadvaliga kirish imkonini beradi (bu registrda 21 ta registr turi mavjud).

TO'G'RI:

TANLANG
TANLOV
QACHON ProductsOrg.Registrator LINK Document.Mahsulotlar va xizmatlarni sotish
KEYIN EXPRESS(MahsulotlarTashkiloti.Registrator Hujjat AS. Sotish TovarServices).Sana
QACHON GoodsOrg.Registrator LINK Hujjat. Tovarlarni qabul qilishXizmatlar
KEYIN EXPRESS(GoodsOrg.Registrator AS Hujjat.Registrator of GoodsServices).Sana
KUNIDA TUGASH,
ProductsOrg.Quantity
FROM
RegisterAccumulations.ProductsOrganizations AS ProductsOrganization

Yoki ikkinchi variant - bunday ma'lumotlarni tafsilotlarga qo'shish, masalan, bizning holatlarimizda sana qo'shish.

TO'G'RI:

TANLANG
MahsulotlarTashkilotlar.Sana,
MahsulotlarTashkilotlar.Miqdori
FROM
Jamg'armalar reestri.Tashkilotlar tovarlari AS Tashkilotlar tovarlari

Qo'shilish holatidagi quyi so'rovlar

Optimallashtirish uchun qo'shilish sharoitida pastki so'rovlardan foydalanish mumkin emas, bu so'rovni sezilarli darajada sekinlashtiradi. Bunday hollarda VT dan foydalanish maqsadga muvofiqdir. Ulanish uchun siz faqat metadata va VT ob'ektlaridan foydalanishingiz kerak, ularni avvalroq ulanish maydonlari bo'yicha indekslagansiz.

NOGAN:

TANLASH …

Chapga qo‘shilish (
RegisterInformation.Limits dan tanlang
QAYERDA…
GURUH BO'YICHA...
) BY …

TO'G'RI:

TANLASH …
PUT chegaralari
Axborot registridan. Limitlar
QAYERDA…
GURUH BO'YICHA...
INDEX BY...;

TANLASH …
Hujjatdan.Tovar va xizmatlarni sotish
LEFT JOIN limitlari
BY …;

Yozuvlarni virtual jadvallar bilan birlashtirish

Virtual stolni boshqalarga ulashda tizim optimal ishlamaydigan holatlar mavjud. Bunday holda, so'rovning ishlashini optimallashtirish uchun siz virtual jadvalni vaqtinchalik jadvalga joylashtirishga harakat qilishingiz mumkin, vaqtinchalik jadval so'rovida birlashtirilgan maydonlarni indekslashni unutmang. Buning sababi, VT larning ko'pincha bir nechta jismoniy ma'lumotlar bazasi jadvallarida joylashganligi, natijada ularni tanlash uchun pastki so'rov tuziladi va muammo oldingi nuqtaga o'xshash bo'lib chiqadi.

Indekslanmagan maydonlarga asoslangan tanlovlardan foydalanish

So'rovlarni yozishda eng ko'p uchraydigan xatolardan biri bu indekslanmagan maydonlardagi shartlardan foydalanishdir, bu ziddir so'rovlarni optimallashtirish qoidalari. Agar so'rov indekslanmaydigan maydonlarda tanlovni o'z ichiga olgan bo'lsa, DBMS so'rovni optimal tarzda bajara olmaydi. Agar siz vaqtinchalik jadvalni olsangiz, ulanish maydonlarini ham indekslashingiz kerak.

Har bir shart uchun mos indeks bo'lishi kerak. Quyidagi talablarga javob beradigan indeks mos keladi:

  1. Indeks shartda ko'rsatilgan barcha maydonlarni o'z ichiga oladi.
  2. Bu maydonlar indeksning eng boshida joylashgan.
  3. Ushbu tanlovlar ketma-ket, ya'ni so'rov shartida ishtirok etmaydigan qiymatlar ular o'rtasida "bog'lanmaydi".

Agar ma'lumotlar bazasi to'g'ri indekslarni tanlamasa, butun jadval skanerdan o'tkaziladi - bu ishlashga juda salbiy ta'sir qiladi va butun yozuvlar to'plamining uzoq vaqt davomida bloklanishiga olib kelishi mumkin.

Mantiqiy OR dan sharoitlarda foydalanish

Hammasi shu, ushbu maqolada har bir 1C mutaxassisi bilishi kerak bo'lgan so'rovlarni optimallashtirishning asosiy jihatlari ko'rib chiqildi.

So'rovlarni ishlab chiqish va optimallashtirish bo'yicha juda foydali bepul video kurs, Men qattiq tavsiya qilaman yangi boshlanuvchilar va boshqalar uchun!

Agar mening nashrim siz uchun foydali bo'lsa, unga plyus berishni unutmang :-)

Bu erda to'plamdagi barcha vazifalar uchun rubrikator(har bir vazifa uchun forum mavzulariga havolalarni o'z ichiga olgan sahifa)
http://chistov.spb.ru/forum/16-969-1

Xo'sh, endi mening ishlanmalarim va tayyorgarlik jarayonida yaratgan yozuvlarim.
Yuqorida aytib o'tilgan ikkitasini iloji boricha kamroq takrorlashga harakat qilaman oxirgi nashrlar.

Shunday qilib, keling, boshlaylik:


Agar siz uni masofadan turib olsangiz, imtihon oxirida ish stolingizda ikkita ob'ekt bo'lishi kerak:

1. Yakuniy tushirish axborot bazasi(dt fayli)
2. Tushuntirish xati

Boshqa hech narsa bo'lmasligi kerak, oraliq nusxalar va hokazo.

Tushuntirish xatini yozishni unutmang!
Noaniq shakllangan vazifa bo'lsa, u erda aniq shunday va shunga o'xshash echim variantini tanlaganingizni yozing.
Bundan tashqari, kodning asosiy joylarida fanatizmsiz qisqacha sharhlar qoldirish yaxshidir, lekin imtihonchining savollari bo'lishi mumkin bo'lgan joyda yozish yaxshiroqdir.

Ammo bu haqda sizga imtihondan oldin o'qish uchun beriladigan ko'rsatmalarda aytiladi.
Oldindan bilish yaxshidir)


So'rovlarda ampersand belgisidan foydalanish.

Ba'zan vaqtni tejab, tartibni oldinga va orqaga almashtirishdan ko'ra qo'shimcha klaviaturadan yozish tezroq bo'ladi.
& = Alt+38

*************************************************************************************************
So'rovlarda TimePoint() dan foydalanish

Jamg'arma va buxgalteriya registrlariga so'rovlarda virtual jadval (davr) parametri sifatida hujjat sanasidan emas, balki kodda quyidagicha belgilangan Moment parametridan foydalanish kerak:

Moment = ?(O'tish rejimi = Hujjatni joylashtirish rejimi. Operatsion, Aniqlanmagan, Vaqt momenti());

*************************************************************************************************
Hujjatlarning harakatini reestr bo'yicha yaratishda, joylashtirishni qayta ishlash jarayonining boshida, joriy hujjatning harakatlarini reestr bo'yicha tozalash kerak.

Kod quyidagicha:

Movement.RegisterName.Write = Rost; Movements.RegisterName.Clear();

Jarayon davomida ushbu registrdagi yozuvlarni tahlil qilish kerak bo'lishi mumkin.
Shunday qilib, joriy yozuvlarni tahlil qilishda (xujjat o'zgartirilgunga qadar eskilari) ular aniq namunaga kiritilmasligi uchun yuqoridagi ikkita qatorga yana bitta qator qo'shishingiz mumkin:

Movement.RegisterName.Write();

Yoki, yozuvlarni tahlil qilishda, joriy hujjatning vaqt nuqtasini o'z ichiga olmaydigan chegarani aniq ko'rsating.

Ammo hamma joyda men ushbu uchta qatorning qurilishini ko'rsatdim:

Movement.RegisterName.Write = Rost; Movements.RegisterName.Clear(); Movement.RegisterName.Write();

*************************************************************************************************
Ma'lumotni blokirovka qilishning ikki yo'li mavjud, ular orasidagi tanlov ishlatilgan usulga bog'liq - eski yoki yangi:

1) Muntazam ravishda boshqariladigan blokirovka, hujjatlarni qayta ishlashning eski usuli (ma'lumotlarni blokirovka qilish ob'ekti)

Balanslar avval tekshirilib, keyin hisobdan chiqarilsa, o'rnating.
Harakatni shakllantirish uchun reestrdan ba'zi ma'lumotlarga ega bo'lishimiz kerak bo'lgan holatda.


Misol:

Hujjatda - miqdori, reestrda - miqdori va miqdori (narxi)
Demak, biz tovar miqdorini hujjatdan bilamiz - qanchasini hisobdan chiqaramiz, lekin narxi - yo'q.
Biz buni faqat registrdan bilib olamiz, lekin qoldiqlarni qabul qilish va harakatlarni qayd etish momenti o'rtasida hech kim registrni o'zgartirmasligini ta'minlash uchun balansni o'qishdan oldin ham registrni qulflashimiz kerak.
Shunday qilib, bu holda, Data Locking ob'ekti ishlatiladi. Va uni yaratishda registrni qaysi o'lchamlar bilan bloklayotganimizni ko'rsatish to'g'riroq (masalan, bizning holatlarimizda - faqat hujjatda ko'rsatilgan element bo'yicha) - keraksiz qulflar bo'lmasligi va boshqa foydalanuvchi boshqasini sotishi mumkin. element.


1. Data Lock obyekti yordamida blokirovka o‘rnating
2. Qolganlarini o'qing
3. Hisobdan chiqarish imkoniyatini tekshiramiz
4. Biz harakatlarni yaratamiz, masalan, tovarlarni hisobdan chiqaramiz
5. Hujjatni joylashtirgandan so'ng, blokirovka avtomatik ravishda olib tashlanadi (bloklash joylashtirish tranzaksiyasining bir qismi sifatida amal qiladi va tizim tomonidan avtomatik ravishda olib tashlanadi). Ya'ni, ob'ektni maxsus qulfdan chiqarishning hojati yo'q.

2) Hujjatlarni qayta ishlashning yangi metodologiyasi (LockForChange xususiyatidan foydalanib = True)

Harakatlarni shakllantirish uchun registrlardan ma'lumot kerak bo'lmasa ishlatiladi va biz hisobdan chiqarishda salbiyga kirgan yoki yo'qligini tekshirishimiz mumkin, agar qayd etilgandan so'ng registrdagi qoldiqlarga qarasak va manfiylar borligini ko'rsak. . Bunday holda, biz juda ko'p hisobdan chiqarganimizni tushunamiz va hisobdan chiqarish operatsiyasini bekor qilamiz.

Misol:
Keling, mahsulotni sotish operatsiyasini ko'rib chiqaylik.
Hujjatda - miqdor, registrda - faqat miqdor
Demak, biz tovar miqdorini hujjatdan bilamiz.
Hujjatda ko'rsatilgan miqdor bilan harakatlarni shakllantiramiz va ularni qayd qilamiz. Keyinchalik, biz registrni o'qiymiz, balanslarni ko'rib chiqamiz va salbiy holatlar mavjudligini tahlil qilamiz. Agar mavjud bo'lsa, xatoni ko'rsating va Rad etish = True o'rnating.

Ya'ni, ketma-ketlik quyidagicha:
1. Registr bo'ylab harakatlanish uchun BlockForChange xususiyatini o'rnating = True
2. Biz harakatlarni yaratamiz - tovarlarni hisobdan chiqaramiz
3. Harakatlarni yozib oling
4. Registrni o'qing va salbiy qoldiqlar yo'qligiga ishonch hosil qiling. Agar mavjud bo'lsa, ular ortiqcha narsalarni yozdilar, agar bo'lmasa, hamma narsa yaxshi.

Shunday qilib, bu holda, registrni qaysi o'lchamlar bilan bloklashimiz kerakligini ko'rsatishning hojati yo'q.
Harakatlarimizni yozib olishdan, harakatlarni shakllantirishdan va yozib olishdan oldin BlockForChange xususiyatini rostga o'rnatamiz.
Tizimning o'zi biz yozib olgan narsalarni tahlil qilib, kerakli o'lchovlar bo'yicha ro'yxatga olish vaqtida registrni bloklaydi.
Tugallangach, blokirovka olib tashlanadi.

Ushbu parametr (ikkinchi variant) soddaroq, u "hujjatlarni qayta ishlashning yangi metodologiyasi" deb ataladi va 1C iloji bo'lsa, undan foydalanishni tavsiya qiladi va agar birinchi variant ishlatilsa, ballarni olib tashlaydi, lekin ba'zi hollarda uni qo'llash mumkin emas va birinchi variant bilan Ma'lumotlarni qulflash ob'ekti ishlatiladi (yuqoridagi misolga qarang).

Shuni ham ta'kidlaymanki, tanlangan usuldan qat'i nazar, ular bilan ishlashdan oldin harakatlarni tozalash kerak (oldingi maslahatga qarang)

*************************************************************************************************
Ma'lumotlarni blokirovka qilish (yuqoridagi tavsifdan №1 blokirovka qilish usuli)

Ma'lumotlar o'qilgan va bu ma'lumotlar asosida harakatlar amalga oshirilganda boshqariladigan qulflash talab qilinadi
Boshqariladigan blokirovka kodini olishning eng tezkor usuli bu "Ma'lumotlarni bloklash" ni kiritish, Sintaksis Assistant-ga qo'ng'iroq qilish va oddiygina misol kodini u yerdan nusxalashdir. Keyin uni ro'yxatga olish va o'lchamlaringiz nomiga o'zgartiring.

Bu shunday ko'rinadi:

Lock = NewDataLock; Qulflash elementi = Locking.Add("Jamlash registr.GoodsInWarehouses"); LockElement.Mode = DataLockMode.Exclusive; BlockingElement.DataSource = PM; Locking Element.UseFromDataSource("Nomenklatura", "Nomenklatura"); Lock.Lock();

*************************************************************************************************
Hujjatlarning jadval qismini oddiygina "TC" deb atash yaxshiroqdir.

Hujjatlarning 99 foizida faqat bitta jadval qismi mavjud. Bunday birlashtirilgan nom jadval qismlari Bu sizga ko'p vaqtni tejashga yordam beradi, chunki:
1) Juda qisqa - tez yozing
2) Barcha hujjatlar uchun bir xil, kod yozishda uning nima deb atalishini eslab qolish shart emas

*************************************************************************************************
So'rov natijasini olish yoki texnik spetsifikatsiyaga yuklashdan oldin bo'shligini tekshirish kerak.

Umuman olganda, men barcha topshiriqlarda namuna olishdan foydalandim.

Namuna olish unumdorlik nuqtai nazaridan tizim uchun maqbulroqdir, chunki u faqat ma'lumotlarni o'qish uchun (TK dan farqli o'laroq) "o'tkirlashadi".

Lekin har qanday holatda, Select() usulidan oldin, so'rov natijasini bo'shliqqa tekshirish yaxshiroqdir, bu tizimdagi yukni yanada kamaytiradi.

Natija = Query.Run(); Agar Natija emas.Empty() Unda tanlang = Natija.Select(TravelQueryResult.ByGrouping); ... EndIf;

Va agar so'rovdan faqat bitta qiymat olishimiz kerak bo'lsa
(masalan, joriy yil uchun belgilangan buxgalteriya siyosatiga muvofiq faqat hisobdan chiqarish usuli):

Natija = Query.Run(); Agar Natija emas.Empty() bo'lsa, unda tanlang = Natija.Select(); Tanlash.Keyingi(); Xarajatlarni hisobdan chiqarish usuli = Namuna. Xarajatlarni hisobdan chiqarish usuli; endIf;

*************************************************************************************************
Buxgalteriya hisobi uchun "Operatsiya" hujjati

Buxgalteriya hisobi vazifalari uchun Operatsion hujjatni yaratish kerak.

Biz buning uchun e'lon qilishni butunlay o'chirib qo'yamiz ("Posting = Rad etish" xususiyatlarida), buxgalteriya registrida harakatlarni amalga oshirayotganini ko'rsatamiz va harakatlarni shaklga tortamiz.

*************************************************************************************************
Hujjatlarni tezkor qayta ishlash:

Bo `lish kerak kiritilgan:
Operatsion va buxgalteriya hisobida. hujjatlarni hisobga olish yoqilgan bo'lishi kerak ("Operatsiya" hujjatidan tashqari, pastga qarang).

Bo `lish kerak o'chirilgan:
hisoblash vazifalarida ish haqi hujjati uchun mantiqiy emas.

"Operatsiya" hujjati uchun e'lon qilish butunlay o'chirib qo'yilishi kerak (hujjatning "Posting = Taqiqlash" xususiyatlarida),
chunki u yozganda oddiygina ma'lumotlarni to'g'ridan-to'g'ri registrga yozadi.

*************************************************************************************************
"Ko'rsatilgan nomenklatura yoki ko'rsatilmagan bo'lsa, har qanday" shaklidagi so'rovdagi shart

So'rovlarda quyidagi vazifaga duch keladi: masalan, ko'rsatilgan nomenklaturaga ega hujjatlarni yoki nomenklatura ko'rsatilmagan bo'lsa, barcha hujjatlarni tanlash kerak.
Bu so'rovning o'zida quyidagi shart bilan hal qilinadi:

Nomenklatura = &Nomenklatura OR &Nomenklatura = Qiymat(Directory.Nomenklatura.EmptyLink)

Ammo bu shartni o'zgartirish yanada maqbul va to'g'ri bo'lar edi (yukonga rahmat):


Request.Text = Request.Text + "WHERE Nomenklatura = &Nomenklatura";

endIf;

8.3.5 da so'rov ob'ekti modeli paydo bo'lishi bilan shartni xavfsizroq qo'shish mumkin bo'ladi:

Agar ValueFilled (Nomenklatura) keyin
Query1.Selection.Add("Item = &Nomenklatura");
Request.SetParameter("Nomenklatura", Nomenklatura);
endIf;

*************************************************************************************************
So'rovlarda jadvallarni birlashtirish:

Umumiy yozuvlar soni birlashtirilgan jadvalning maydoni ko'rsatilishiga bog'liq emas, bu faqat tuzilgan munosabatlarga bog'liq.
Ya'ni, biriktirilgan jadvalning maydoni ko'rsatilmasligi mumkin.

Jadvalni hech qanday shartlarsiz biriktirmoqchi bo'lsangiz, shartlar yorlig'ida "TRUE" shartini yozing.
Bunday holda, jadval aniq birlashtiriladi.

*************************************************************************************************
Xususiyat turlari rejasidan foydalanish (PVX):

1. Ob'ektlarning xususiyatlarini tavsiflash mexanizmi sifatida foydalaning.

1.1. Biz PVX ni yaratamiz. Bular Xarakteristika turlari bo'ladi (masalan, rang, o'lcham, maksimal tezlik va boshqalar). Sozlamalarda xarakterli qiymatlarning barcha mumkin bo'lgan turlarini tanlang va agar kerak bo'lsa, 1.2-banddan ob'ektni yarating va uni sozlamalarda ko'rsating.

1.2. PVX ning qo'shimcha qiymatlari uchun biz xarakteristikaning qo'shimcha qiymatlari (yoki oddiygina xarakteristikalar qiymatlari) bo'ysunuvchi katalogini yaratamiz.
Agar ular mavjud kataloglarda bo'lmasa, u xususiyatlarni saqlaydi. Agar bizga kerak bo'lgan barcha xususiyatlar mavjud kataloglarda bo'lsa yoki bu qiymatlar elementar ma'lumotlar turlari bilan ifodalanishi mumkin bo'lsa, biz uni yarata olmaymiz. PVX sozlamalarida biz ushbu katalog qo'shimcha maqsadlarda ishlatilishini ko'rsatamiz. xususiyatlar qiymatlari.

1.3. Biz ma'lumotlar registrini yaratamiz, u aslida uchta ob'ektni bog'laydi:
- Biz xarakteristikalar mexanizmini bog'laydigan ob'ekt
- Turi Xususiyatlari (PVX turi)
- xarakteristikalar qiymati (turi - xarakteristikasi, bu PVX yaratilgandan keyin tizimda paydo bo'lgan yangi tur.
va xarakterli qiymat olishi mumkin bo'lgan barcha mumkin bo'lgan ma'lumotlar turlarini tavsiflash).
Axborot registrida biz Xarakteristik tipning Xarakteristik Qiymatning egasi ekanligini (tanlov parametriga havola), shuningdek, Xarakteristik Qiymat uchun tipli ulanishni yana Xarakteristik Tipdan ko'rsatamiz.

Yana bir xususiyat shundan iboratki, har bir yaratilgan xarakteristikalar uchun xarakterli qiymatning turini belgilashingiz mumkin, agar sizga ushbu xarakteristikaning qiymatini tavsiflash uchun barcha mumkin bo'lgan turlar kerak bo'lmasa.

2. Buxgalteriya registrining sub-konto mexanizmini yaratish uchun PVXdan foydalanish .

2.1. Biz PVC TypesSubconto-ni yaratamiz.

2.2. Biz ValuesSubConto bo'ysunuvchi katalogini yaratamiz (xususiyatlarda bo'lgani kabi, agar boshqa kataloglarda bunday bo'lmasa, u subconto qiymatlarini o'z ichiga oladi).

2.3. Aloqa hisoblar rejasi yordamida amalga oshiriladi.

*************************************************************************************************
Buxgalteriya registrlari resurslari:

Miqdor - balans,
Miqdor - balansdan tashqari va buxgalteriya xarakteristikasi bilan bog'liq Miqdor

*************************************************************************************************
Virtual buxgalteriya registrlari jadvallari:

Aylanma: bitta hisobning aylanmasi
TurnoverDtKt: har qanday ikkita hisob o'rtasidagi aylanma, ya'ni davr uchun barcha bir xil operatsiyalar.

*************************************************************************************************
Buxgalteriya registrlarida valyuta hisobi - qanday amalga oshiriladi:

Hisoblar rejasida "valyuta" buxgalteriya atributini yaratamiz.
Buxgalteriya registrida biz qo'shimcha ravishda yaratamiz:
- valyuta o'lchovi (bo'sh qiymatlarni taqiqlash, balansdan tashqari, buxgalteriya atributi - valyuta)
- Resurs CurrencyAmount (balansdan tashqari, buxgalteriya atributi - valyuta, u summani valyutada saqlaydi, masalan, $100)
Hammasi.

Shunday qilib, registrning tuzilishi:

O'lchovlar:
- Valyuta
Resurslar
- Miqdor
- miqdori (summa rublda)
- Valyuta summasi (valyutadagi summa)

Shunday qilib, valyuta buxgalteriya hisobi faqat Belarus Respublikasida an'anaviy buxgalteriya hisobini takomillashtirish bo'lib, u, masalan, resurs miqdorining mohiyatini o'zgartirmaydi.
(bu erda, odatdagidek, hisob chet el valyutasida yoki yo'qligidan qat'i nazar, summa rublda).
Va agar hisob uchun Valyuta hisobi xususiyati o'chirilgan bo'lsa, unda bu Belarus Respublikasining odatiy tuzilishi (resurslar - faqat miqdor va miqdor).

*************************************************************************************************
Virtual jadvalning bir bo'lagini olish uchun parametrlarni o'rnatishda biz shartlarni resurslarga emas, balki o'lchamlarga qo'yamiz.

Aks holda, biz ikkinchisidan bir tilim emas, balki olamiz oxirgi kirish belgilangan resurs qiymati bilan - bu o'lchamlar to'plamida oxirgi bo'lmasligi mumkin

*************************************************************************************************
Hisoblash registridagi resurs va tafsilotlarning ma'nosi

Hisoblash registrlarida resurs yaratish ushbu registr yordamida bazani hisoblashda uni olish imkonini beradi.
Va hatto berilgan davrga mutanosib ravishda, resurs qiymati qayta hisoblab chiqiladi (agar asosiy davr registrning davriyligiga to'g'ri kelmasa).

Va atributning qiymati faqat hisoblash registrining haqiqiy jadvalida mavjud, virtual jadvallarda mavjud emas.

*************************************************************************************************
Hisoblash registrining o'lchami xususiyatlarida "Asosiy" katagiga belgi qo'ying
Ushbu o'lchov kelajakda bazani olish uchun ishlatilishini anglatadi va bu uchun ishlatiladi qo'shimcha indeksatsiya ushbu maydon uchun qiymatlar.

*************************************************************************************************
Ro'yxatga olish yozuvlari to'plamini yozishda ta'tilning amal qilish muddatini oylar bo'yicha taqsimlash,
agar ta'til hujjatda bir qatorda bir vaqtning o'zida bir necha oy davomida ko'rsatilgan bo'lsa:

Joriy oyning boshlanish sanasi = Oyning boshi(TexLineMainAccruals.ActionPeriodStart); CurrentMonthEndDate = EndMonth(TexLineMainAccruals.ActionPeriodStart); CurrentMonth = Sana; WhileDateStartCurrentMonth<= НачалоМесяца(ТекСтрокаОсновныеНачисления.ПериодДействияКонец) Цикл Движение = Движения.ОсновныеНачисления.Добавить(); Движение.Сторно = Ложь; Движение.ВидРасчета = ТекСтрокаОсновныеНачисления.ВидРасчета; Движение.ПериодДействияНачало = Макс(ДатаНачалаТекМесяца, ТекСтрокаОсновныеНачисления.ПериодДействияНачало); Движение.ПериодДействияКонец = КонецДня(Мин(ДатаОкончанияТекМесяца, ТекСтрокаОсновныеНачисления.ПериодДействияКонец)); Движение.ПериодРегистрации = Дата; Движение.Сотрудник = ТекСтрокаОсновныеНачисления.Сотрудник; Движение.Подразделение = ТекСтрокаОсновныеНачисления.Подразделение; Движение.Сумма = 0; Движение.КоличествоДней = 0; Движение.График = ТекСтрокаОсновныеНачисления.График; Движение.Параметр = ТекСтрокаОсновныеНачисления.Параметр; Движение.БазовыйПериодНачало = НачалоМесяца(ДобавитьМесяц(Дата, -3)); Движение.БазовыйПериодКонец = КонецДня(КонецМесяца(ДобавитьМесяц(Дата, -1))); ДатаНачалаТекМесяца = НачалоМесяца(ДобавитьМесяц(ДатаНачалаТекМесяца, 1)); ДатаОкончанияТекМесяца = КонецМесяца(ДатаНачалаТекМесяца); КонецЦикла; КонецЕсли;

*************************************************************************************************
Gantt diagrammasini yaratish:

Formaga “Gantt Chart” tipidagi elementni joylashtiramiz, uni DG deb nomlaymiz, so‘ng “Yaratish” buyrug‘ini yaratamiz va forma moduliga quyidagilarni yozamiz:

&OnClient protsedurasi Generate(Buyruq) GenerateOnServer(); Protseduraning oxiri &Serverda Procedure GenerateOn Server() DG.Clear(); DG.Update = False; So'rov = Yangi so'rov("SELECT |AsosiyAccrualsActualActionPeriod.Employee, |BasicAccrualsActualActionPeriod.CalculationType, |AsociAccrualsActualActionPeriod.ActionPeriodActionPeriodStart As ActionPeriodStarticalActualActionPeriod.Start. ActionsEnd |FROM |Hisoblash registr.BasicHisoblash.ActualPeriodAktsiyalarAsosiyHisoblashAktualDavrAksiyalar |QAYERDA VA &Yakunlangan sana "); Query.SetParameter("StartDate", Period.StartDate); Request.SetParameter("EndDate", Period.EndDate); Select = Query.Run().Select(); While Selection.Next() Loop Point = DG.SetPoint(Selection.Employee); Series = DG.SetSeries(Selection.CalculationType); Qiymat = DG.GetValue(Point, Series); Interval = Value.Add(); Interval.Start = Sample.PeriodActionStart; Interval.End = Sample.ActionPeriodEnd; EndCycle; DG.Update = rost; Jarayonning oxiri

Aslida, bu erda biz uchun faqat tsikldagi kod muhim, qolganlari yordamchi, men ushbu kichik vazifani to'liq bajarishni berdim.
So'rovda biz uchun xodimning mavjudligi, to'lov turi, davrning boshlanish sanasi va tugash sanasi muhim ahamiyatga ega.
Kod aslida juda oddiy, eslab qolish oson, agar qiyin bo'lib tuyulsa, xavotirlanmang

*************************************************************************************************
Hisoblash vazifalaridagi "teskari" yozuvlarni qayta ishlash:

Tranzaktsiyalarni qayta ishlash protsedurasida (ob'ekt moduli) biz barcha harakatlarni shakllantiramiz, keyin boshqa davrlarda yozuvlar mavjud bo'lsa, biz ularni shunday olamiz.
(tizim ularni avtomatik ravishda yaratadi - bizga yordam beradi):

Qo'shish yozuvlari = Movements.MainAccruals.GetAddition(); // Qo'shimchani olish uchun harakatlarni yozib olishning hojati yo'q

Yozuv qo'shimchalari aylanishidan boshlab har bir texnologiya liniyasi uchun
Record = Movements.MainAccruals.Add();
FillPropertyValues(Record, TechString);
Record.RegistrationPeriod = TechString.RegistrationPeriodReversal;
Record.ActionPeriodStart = TechString.ActionPeriodStartReverse;
Record.ActionPeriodEnd = TechString.ActionPeriodEndReversal;
Tsiklning oxiri

Va yozuvlarni hisoblashda cheklarni qo'ying:

Agar TechMotion.Reversal bo'lsa
CurrentMovement.Sum = - CurrentMovement.Sum;
endIf;

*************************************************************************************************
Hisoblash vazifalarida asosiy hisob-kitoblarga nimalar kiritilganligi va qo'shimcha hisob-kitoblarga nimalar kiritilganligini qanday aniqlash mumkin.

Ammo bu har doim ham 100% aniq emas; Bundan tashqari, murakkabroq holatlar mavjud, garchi ularning bir nechtasi bor
(masalan, bir oydagi ish kunlari soniga bog'liq bo'lgan bonus - bu HE).

Asosiy to'lovlar:
Agar hisob-kitob turi jadvalga bog'liq bo'lsa (kalendar sanalari bilan ma'lumotlar reestrini anglatadi), u asosiy to'lovlarga tegishli.

OH misoli:
- Ish haqi
- Ish kunlari sonidan hisoblangan narsa (va buning uchun siz jadvaldan foydalanishingiz kerak): yoki amal qilish davrida (ish haqi kabi) yoki asosiy davrda

Qo'shimcha to'lovlar:
Hisoblangan summadan yoki ISHLAYDIGAN vaqtdan (me'yor emas!) Nima hisobga olinadi yoki umuman bog'liq emas - bu qo'shimcha. hisob-kitoblar.

Ya'ni: hisoblash uchun vaqt standarti qo'llaniladigan (ehtimol fakt ham) OH va haqiqiy ma'lumotlar yoki umuman hech narsa kerak bo'lmagan hisob-kitoblar DN hisoblanadi.

Yoki boshqacha aytganda:

Agar VR vaqt standartidan foydalansa, amal qilish muddati VR uchun kiritilishi kerak.

*************************************************************************************************
"Nomenklatura" katalogining ro'yxat shaklida "Ma'lumotnomalar bilan ishlash" o'rnatilgan yordam bo'limini ochish qobiliyatini qo'shing.

Formada buyruqni bajaring:

&OnClient
Protsedura yordami (buyruq)
OpenHelp("v8help://1cv8/EnterprWorkingWithCatalogs");
Jarayonning oxiri

Bo'lim chizig'ini quyidagicha aniqlaymiz:
Konfiguratsiya ob'ektining yordam ma'lumotlariga o'ting (konfiguratorda), so'z yozing, uni tanlang, Elementlar/Link menyusiga o'ting va 1C Yordamining kerakli bo'limini tanlang, shundan so'ng havola avtomatik ravishda kiritiladi. Bu murakkab ko'rinadi, lekin amalda bu oson.

*************************************************************************************************
Shakllar o'rtasidagi o'zaro ta'sirni amalga oshirish, masalan, tanlash:

1. Joriy shakldan "OpenForm()" usuli yordamida keraklini oching, tuzilmani parametrlari bilan ikkinchi parametr sifatida o'tkazing (agar kerak bo'lsa). Uchinchi parametr ushbu shaklga havolani o'tkazishi mumkin - ThisForm.

2. Ochilgan shaklda “When CreatedOnServer()” ishlov beruvchisida “Parameters.[ParameterName]” orqali 1-bosqichda o‘tkazilgan parametrlarni ushlashimiz mumkin. Ushbu shaklni ochishni boshlagan shaklga "Egasi" identifikatori orqali kirish mumkin (agar u, albatta, 1-bosqichda ko'rsatilgan bo'lsa).

Va eng muhimi, egasi shaklining eksport funktsiyalari mavjud bo'ladi. Ya'ni, biz manba formasining eksport funksiyasini chaqirishimiz va u erda tanlovni qayta ishlash uchun parametr sifatida biror narsani o'tkazishimiz mumkin. Va bu funktsiya asl shaklda kerakli narsalarni allaqachon to'ldiradi. Faqat bitta ogohlantirish bor - siz mijozlar protseduralari o'rtasida qiymatlar jadvalini o'tkaza olmaysiz, lekin biz uni vaqtincha saqlashga joylashtirishimiz va shunchaki VX manzilini o'tkazishimiz va keyin uni VX dan chiqarib olishimiz mumkin.

*************************************************************************************************
Shakl parametrlarining hayot aylanishi

Shaklni ochish vaqtida unga o'tkazilgan barcha parametrlar faqat "When CreateOnServer" protsedurasida ko'rinadi.
Yaratilgandan so'ng, barcha parametrlar yo'q qilinadi va endi shaklda mavjud bo'lmaydi.
Istisno forma muharririda "Kalit parametr" atributi bilan e'lon qilingan parametrlar uchundir.
Ular shaklning o'ziga xosligini aniqlaydi.
Shaklning o'zi mavjud ekan, bu parametr mavjud bo'ladi.

*************************************************************************************************
Taksi interfeysidan foydalanish

Rivojlanish jarayonida siz konfiguratsiya xususiyatlarida odatiy boshqariladigan interfeys 8.2 ni o'rnatishingiz mumkin - bu hamma narsani sezilarli darajada ixcham va tanish qiladi.
Bu, ayniqsa, agar siz masofadan ijaraga olsangiz, to'g'ri keladi - ekran o'lchamlari juda kichik va "taksi" interfeysi bilan hech narsa qilish mumkin emas.
Ishingiz tugagach, yana “Taksi” ni qo'yishni unutmang!Aks holda, imtihon topshiruvchi ballarni olib tashlaydi!

*************************************************************************************************

PS: E Barcha vazifalarda qo'llaniladigan alohida standart pastki vazifalar mavjud va siz ularni hal qilishingiz kerak (masalan, PVX dan foydalanish (yaxshi, bu juda kam uchraydi) va boshqalar). Va barcha vazifalarda ular oddiygina takrorlanadi (qaerdadir ba'zi kichik vazifalar mavjud, boshqa joyda, faqat turli xil kombinatsiyalarda). Bundan tashqari, ular uzoq vaqtdan beri yangi to'plamni chiqarishga va'da berishgan (agar ular hali yo'q bo'lsa), unda ko'proq muammolar bo'lishi kerak, ya'ni individual muammolarning echimlarini yodlashning ma'nosi yo'q, qanday qilishni o'rganish mantiqan. individual standart pastki vazifalarni hal qiling, keyin siz har qanday muammoni hal qilasiz.

PSS: Hamkasblar, agar kimdir imtihonga tayyorgarlik ko'rish va uni topshirish bo'yicha boshqa foydali ma'lumotlarga ega bo'lsa, iltimos, sharhlarda yozing va biz maqolaga qo'shamiz.

Jamg'arish registrlari 1C: Enterprise tizimida ikki turga bo'linadi: jamg'arish registrlari qoldiqlari va jamlash registrlari rpm.

Registr turi uni konfiguratorda yaratishda tanlanadi

Nomidan ko'rinib turibdiki, ba'zilari ma'lum bir sanadagi qoldiqlarni olish uchun mo'ljallangan, ikkinchisi esa tanlangan davr uchun aylanmani olish uchun mo'ljallangan. Yig'ish registrining turiga qarab, 1C: Enterprise platformasi turli xil virtual jadvallar to'plamini yaratadi. Ushbu maqolada biz yig'ish registrlarining virtual jadvallari bilan ishlashni ko'rib chiqamiz. Buning uchun biz qoldiqlarni to'plash uchun reestr yaratamiz - Mahsulotlar qoldi va inqilob jamg'armasi registri - Mahsulotlar aylanmasi.

Keling, ushbu registrlarning har biri uchun platforma qanday virtual jadvallarni taqdim etishini ko'rib chiqaylik.

Inqilob jamg'armasi registri

Aniqlik uchun keling, ro'yxatga olish uchun qaysi jadvallar mavjudligini ochib ko'raylik Mahsulotlar aylanmasi. Bu registrning o'zi jadvali - Mahsulotlar aylanmasi, ma'lumotlar bazasida jismoniy mavjud va bitta virtual jadval - Mahsulotlar aylanmasi

Standart stol bilan hamma narsa aniq. Keling, virtualni batafsil ko'rib chiqaylik.

Virtual stol aylanmasi

Ushbu jadval o'lchovlar bo'yicha resurs aylanmasini olish imkonini beradi. Bizning holatlarimizda ikkita o'lchov mavjud: Aksiya Va Mahsulot. Va bitta manba - Miqdori

Bizning reestrimizda quyidagi yozuvlar bo'lsin

Keling, so'rovlar dizayneriga qaytaylik va shunchaki jadvaldan tanlash bilan boshlaylik Mahsulotlar aylanmasi barcha maydonlar

Shunga ko'ra, so'rov quyidagicha ko'rinadi:

Mahsulotlarni tanlash.Oborot.Oborot.Mahsulot,mahsulotlarOborot.MiqdorRegistrdan oborot Jamgʻarish.MahsulotlarOborot.Oborot(,) AS MahsulotlarOborot.

So'rov natijasi quyidagicha ko'rinadi:

Ya'ni, biz butun vaqt davomida tovarlar va omborlar bo'yicha aylanma oldik. Faraz qilaylik, bizni omborlar qiziqtirmaydi va biz faqat tovarlar bo'yicha aylanma olishni xohlaymiz.

Buning uchun biz so'rovdan o'lchamni istisno qilamiz Aksiya

Mahsulotlarni tanlash.Tovar aylanmasi.Mahsulot, mahsulot aylanmasi.Miqdori Registrdan oborot Jamgʻarish.Mahsulot aylanmasi.Oborot(,) AS Mahsulotlar aylanmasi.

va natijada bizda faqat ikkita chiziq qoladi

Ammo, qoida tariqasida, reestrning butun mavjudligi uchun aylanmani olishning hojati yo'q. Asosan, ular ma'lum bir davr uchun kerak: oy, chorak, yil va boshqalar. Bundan tashqari, o'lchamlar bo'yicha tanlovlar (Mahsulot, Ombor) odatda talab qilinadi. Bunga foydalanish orqali erishiladi virtual jadval parametrlari. Konstruktordan parametrlarni to'ldirish qulay. Tugma orqali Virtual jadval imkoniyatlari Bizga kerak bo'lgan hamma narsani kiritishingiz mumkin bo'lgan dialog oynasi ochiladi:

Shundan so'ng bizning asl so'rovimiz quyidagi shaklni oladi

TANLASH Tovar aylanmasi.Ombor, Tovar aylanmasi.Mahsulot, Tovar aylanmasi.MiqdoriReestrdan oborot.Tovar aylanmasi.Tovar aylanmasi(&Davr boshi, &davr oxiri, Ombor) =&Xayr aylanmasi

Ko'rib turganimizdek, farq shundaki, virtual jadval nomidan keyin qavslar ichida so'rovni bajarishdan oldin to'ldirilishi kerak bo'lgan parametrlar mavjud.

Virtual jadvallar bilan endigina ishlashni boshlayotganlar ko'pincha parametrlardan foydalanish o'rniga odatdagidek tanlovni o'rnatish vasvasasiga tushishadi:

Registrdan Jamg'armalar.MahsulotlarOborot.Oborot(,) QANDAY MahsulotlarTovar aylanmasi QAYERDA MahsulotlarOborot.Ombor = &Ombor

Parametrlarni to'ldirishda biz o'tkazib yubordik Davriylik. Keling, ro'yxatni ochamiz va mumkin bo'lgan variantlardan birini tanlaymiz Oy. Biz chalkashmaslik uchun barcha boshqa parametrlarni olib tashlaymiz.

Shundan so'ng, jadval maydonlarida maydon paydo bo'lishini kuzatamiz Davr.

Uni tanlangan maydonlarga qo'shish orqali biz quyidagi so'rov matnini olamiz:

Mahsulotlarni tanlash.Oborot.Davlat,MahsulotlarOborot.Ombor,MahsulotlarOborot.Mahsulot,MahsulotlarOborot.MiqdorRegistrdan aylanma.Yigʻish.MahsulotlarOborot.Oborot(,Oy,)ASTTurn.

Biz so'rovni bajaramiz:

Shunday qilib, tanlangan vaqt oralig'ida biz inqiloblarni tanlangan chastotaga muvofiq kichikroq intervallarga bo'lishimiz mumkin.

Balansni to'plash registri

Teskari registrda bo'lgani kabi, keling, so'rovlar dizaynerida balansni to'plash registrida qanday virtual jadvallar mavjudligini ko'rib chiqaylik.

Ko'rib turganingizdek, balansni to'plash registrida uchta virtual jadval mavjud: Inqiloblar, Qolganlar, Qoldiqlar va aylanmalar. Keling, ularning har birini alohida ko'rib chiqaylik.

Virtual stol aylanmasi

Ro'yxatga olish turi bo'lishiga qaramasdan Qolganlar, shunga qaramay biz undan aylanma olishimiz mumkin. Bundan tashqari, bizda ikkita qo'shimcha manba mavjud: Kelyapti Va Iste'mol

Eslatib o‘tamiz, balans registriga yozuv kiritilganda jamg‘arish harakatining turi (daromad yoki chiqim) ko‘rsatiladi, aylanma reestrida esa harakat turi ko‘rsatilmaydi. Shu sababli, bu erda biz nafaqat davr uchun umumiy aylanmani, balki daromad va xarajatlarni alohida olish imkoniyati shaklida qo'shimcha bonusga egamiz. Ammo, albatta, agar metama'lumotlar shunga o'xshash o'lchovlar to'plamiga ega bo'lgan teskari registrni o'z ichiga olsa, aylanmani olish uchun undan foydalanish yaxshiroqdir. Umuman olganda, ushbu virtual jadval bilan ishlash virtual jadval bilan ishlashga o'xshaydi Inqiloblar yuqorida muhokama qilingan muzokaralar ro'yxati.

Virtual jadval balanslari

Ushbu jadval o'lchov bo'yicha resurslar balansini olish uchun ishlatiladi. Jadval parametrlarida biz balanslarni qabul qilish va tanlovlarni o'rnatish sanasini belgilashimiz mumkin:

Keling, kichik bir misolni ko'rib chiqaylik. Bizda quyidagi ro'yxatga olish yozuvlari mavjud:

Keling, barcha mavjud maydonlarni tanlaymiz va balanslarni olish sanasi sifatida iyun oxirini belgilaymiz. Biz o'lchovlar asosida tanlamaymiz. Keyin so'rov matni quyidagicha ko'rinadi:

Qolgan mahsulotlar.Ombor, MahsulotlarQolganlar.Qolganlar.Mahsulot,MahsulotlarQolganlar.Qolganlar.MiqdorRoʻyxatdan oʻtish.Toʻplanishlar.MahsulotlarQolganlar.Qolganlar(&Sana,) Mahsulotlar Qolganlar sifatida

Va uni amalga oshirgandan so'ng biz ushbu natijaga erishamiz

Virtual jadval balanslari va aylanmalari

Ushbu jadval ilgari muhokama qilingan ikkitasini birlashtiradi va tanlangan vaqt davri uchun aylanmani, shuningdek davr boshi va oxiridagi qoldiqlarni olish imkonini beradi. Shuningdek, siz tanlovni o'rnatishingiz mumkin.

Bitta hisobotda davr boshidagi va oxiridagi aylanma va qoldiqlarni bir vaqtning o'zida olish kerak bo'lganda, ushbu jadvaldan foydalanish oqlanishi mumkin. Boshqa hollarda, siz undan foydalanishni suiiste'mol qilmasligingiz kerak.