Internet Derazalar Android
Kengaytirmoq

1C qatoridagi ramzning paydo bo'lishini qanday topish mumkin. Biz tomonidan amalga oshirilayotgan sxema nima

Ushbu maqolada sizga 1C korxonasini tezkor qidirish funktsiyasi haqida aytib beraman 8 korxonasi 8. Tezkor qidiruv nima? Juda onson. Tezkor qidirish - bu 1C yozuvlarining katta ro'yxatlarida navigatsiya usullaridan biridir. Bular hujjatlar, kataloglar ro'yxati, rejalar jadvallari ko'rsatilgan barcha narsalar bo'lishi mumkin.

Tezkor qidiruv nima?

1C korxonasida tezkor qidiruv funktsiyasi juda qulay va sizga katta ma'lumotlar to'planishini o'tkazmaslikka imkon beradi (masalan, aylantirish panelidan foydalanish) va darhol ro'yxatdagi kerakli joyga boring. Afsuski, 8-korxona 8-korxonaning yangi foydalanuvchilar (shu jumladan 1C buxgalteriya 8) dastlabki qidirish qobiliyatidan foydalanmaydilar (va ular bo'lishi mumkin) juda katta). Ushbu maqolada 1C-da tezkor qidiruvdan foydalanishda sizga yordam beradi.

Avvalo, shuni ta'kidlash kerakki, boshqariladigan shakllarda 1C korxonasining konfiguratsiyalarida, boshqariladigan shakllarda qurilgan, tezkor qidiruvlar boshqacha tarzda oldingi versiyalar 1c. Shuning uchun, biz tezkor qidiruvdan foydalanishni alohida tahlil qilamiz boshqariladigan formalar va oddiy.

Tezkor qidirish 1C-da 8.2

8.0 dan 8,2 gacha bo'lgan 1C hisoblangan versiyalarida Funktsiya mo'ljallangan o'tish Ro'yxatning istalgan qismiga. Masalan, raqamda ko'rsatilgan hisob rejasi oynasiga qarang.


Oynaning bir qismini ta'kidladi. Qizil o'qni ko'rsatadigan chiziqlardan ruxsatsiz uchburchakka e'tibor bering. Boshqa Windows dasturlarida bo'lgani kabi, ro'yxatlar mavjud (masalan, dirijerda), ushbu markerning holati (uchburchak) bu ro'yxatni butunlay saralashni belgilaydi - qaysi ustunda marker o'rnatilgan, bir xil va butun ro'yxat saralanadi. Rasmda marker Kod ustunida, shuning uchun hisob raqami kodi bo'yicha schyot-fakturada saralanadi.

Damerni bitta ustundan boshqasiga boshqa joyga ko'chirish mumkin, istalgan ustunda ( sarlavha ustunida!) Sichqoncha. Agar marker joriy ustunda turgan bo'lsa, shundan so'ng CLICK-ni teskari tomonga o'zgarishi (i.e., ko'proq yoki vitse-ga ko'ra). Bu har qanday uchun standart xulq windows dasturlari. 1C korxonasida ushbu markerning o'ziga xos xususiyati va u qanday qilib tezkor qidiruv bilan bog'liq?

Tezkor qidirish 1C ro'yxatida 8-korxonani marker turgan ustun bilan amalga oshiriladi. Bunday holda, hisob rejasi bo'yicha tezkor qidiruv ustun kodeksida amalga oshiriladi.

Bu erda edi muhim qism Maqolalar, lekin JavaScript-da u ko'rinmaydi!

1C-da tezkor qidiruvdan zavqlanish kerak? Oson! Shunchaki ushbu ustunda topishni xohlaganingizni chop etishni boshlang.. Marker bor joyda. Masalan, yuqoridagi rasmda siz hisob raqamini kiritishingiz kerak. Masalan, siz 50 ta kassirni topishni xohlaysiz. Bunday holda, kiriting ( sichqoncha hech qaerga tegmang!) Klaviaturadan 50 raqami va agar ushbu ustunda bir xil raqam bilan hisob mavjud (va u, albatta, bu quyidagi yo'nalishdagi hisob qaydnomasi mavjud bo'lsa, ushbu satrni o'zi ajratib turadi. Natijada quyida hisob-kitob rejasining skrinshotida ko'rsatilgan.

veb-sayt_

GROUT ko'rsatadigan matn, yuvishim shart emas - U g'oyib bo'ladi.

Agar siz yuqorida ko'rsatilgan misolda "chipta" so'zini yozishni boshlasangiz, oynaning pastki qismidagi matn kiritiladi va keyin to'planadi. Bu sodir bo'ladi, chunki tezda boshlamoq Ushbu ustunda kamida bitta qatorning boshiga mos keladigan tezkor qidiruv satri kamida bitta liniyaning boshiga mos keladi, 1C korxona istalganligi aniqlanmaydi va avtomatik ravishda o'chiriladi. Bor siz ikkita qoidani eslashingiz kerak.

1-korxonada 8 ta tezkor qidiruv liniyaning boshida amalga oshiriladi, i.e. Ustun ushbu ustunning qatorlaridan birining boshlanishi bilan kiritilgan kirish matnining tasodifini qidiradi.
Bu muhim tavsiyani anglatadi: ma'lumotnomalarga ma'lumot kiritishda, narsalarni tezkor qidirish bilan qidirish qulay ekanligiga qo'ng'iroq qiling. Masalan, aksilterty nomi "Notefirma" MChJdan ko'ra "Notefirma massiv" deb yozish yaxshiroqdir. Va bundan ham ko'proq, siz uchun tirnoq va boshqa keraksiz belgilardan foydalanmaslik kerak (biz nomni shakldagi ismni to'ldirish haqida gapiryapmiz).

Agar siz matnni kiritishni boshlagan bo'lsangiz va u qidirish - bu ustunda nima qidirayotganingiz yo'q! Bunday holda, kirish tilini, shuningdek tezkor qidiruv amalga oshirilgan ustunni tekshiring. Oddiy xato - ustun emas. Masalan, marker Kod ustuniga o'rnatiladi va qidiruv hisob nomidan amalga oshiriladi.

Tezkor qidirish 1c hisobi 8.3

Endi 1C Korxonaning 8.3-versiyasida tezkor qidiruv o'rtasidagi farq nima ekanligini ko'raylik. Foydalanish asosan 8.2 versiyasiga o'xshash, ammo esdalikning bir muhim farq bor.

INTERKIKA 8.3, shuningdek, boshqariladigan shakllarda boshqa konfiguratsiyalarda (bitta) yangi interfeys) Filtr kabi ishlaydi. Oddiy qilib aytganda, ushbu qidiruv funktsiyasi natijasida ro'yxatning bir qismi yashirin.

Buni qanday ishlatish kerak, biz hozir siz bilan tanishamiz. Avvaliga, quyida keltirilgan 1C hisob qaydnomasi rejasining 8.3-sonli skrinshotga qarang.

veb-sayt_

Ko'rinib turibdiki, ustunlardan birida bir xil marker. Izlash, shuningdek, marker o'rnatilgan ustun tomonidan amalga oshiriladi. Hammasi o'zgarishsiz qoladi. Ammo, agar siz matnni yozishni boshlasangiz (misolda, hisob raqamida), keyin quyidagilar bo'ladi.

veb-sayt_

Ko'rinib turibdiki, qidiruv maydonchasi avtomatik ravishda ochildi. Agar siz deraza asboblar panelidagi qidirish tugmachasini bossangiz (Rasmda ta'kidlangan). Natijada, qidiruv oynasini bosganingizda, topilmani (rasmda ochiladigan menyu orqasida yashiringan) yoki shunchaki kiring, so'ngra quyidagi natijalarni oling.

veb-sayt_

Aftidan ko'rinadi tezkor qidirish 1C-da 8.3 shunchaki qidiruv shartlarini qondiradigan ro'yxatning ko'rinadigan qismini qoldiradi. Bunday holda, topilgan tugmachani yo'qoladi va o'rniga u xoch bilan lins paydo bo'ladi (strenie-da), siz rostlash paytida dastlabki holat (Bu tezkor qidiruv natijasida topilgan satrni ta'kidladi.

1C hisobidagi tezkor qidiruvning yana bir muhim xususiyati 8.3 - Taspof 8.2 versiyasida bo'lgani kabi chiziqning yuqori qismida, lekin ustunning har qanday qismi bilan bir-biriga o'xshashlikni qidirishdir. Shunday qilib, agar hamkasb "Ltd.Pimra MChJ" deb nomlangan bo'lsa va "Notefirma massi" ni kiritishni qidirishda, so'ngra yana satr bo'ladi!

Biz xulosalar chiqaramiz

Shunday qilib, 1C-da tezkor qidiruv 8.2 va oldingi versiyalar ro'yxatni kerakli satrga aylantirish uchun mo'ljallangan, va buxgalteriya 8.3 Tezkor qidirish ro'yxatning keraksiz qismini doimiy ravishda o'chirish, ro'yxatning keraksiz qismini yashirish.

Asosiy eslatmalar Zasiteriyal

02/07/2013 Qulf qidirish

8.3.3.641 versiyasida amalga oshiriladi.

Biz chiziqda kirishni jiddiy yaxshiladik. Buning uchun biz kirish maydonida yangi foydali qidiruv mexanizmini amalga oshirishimiz kerak edi. Endi u ma'lumotlar bazasida joylashgan millionlab yozuvlarda tezda ishlashi mumkin.

Biz foydalanuvchilar tomonidan kelib chiqadigan tintuv vazifalarini tahlil qildik. Turli qidiruv algoritmlaridan foydalanadigan platformadagi mexanizmlarning auditi o'tkazildi. Natijada, liniyani sifat jihatidan yangi imkoniyatlarga kiritish.

Endi foydalanuvchilar faqat chiziqning boshida emas, balki ismni qidirishlari mumkin. Ular to'liq matnli qidiruvdan foydalanishlari va hatto qidiruvni fon vazifasi yordamida bajarishlari mumkin. To'liq matnli qidirish uchun quyidagi chiziqni kiritishda samarali ishlash uchun qo'shimcha ravishda ushbu qidiruv mexanizmini optimallashtiramiz va uning ishlashini oshirdik.

Siz chiziqda kiritilgan barcha yangi xususiyatlar, biz konfiguratsiya ob'ekti tahrirlash uchun oynaning derazasini alohida belgilab qo'ydik:

Masalan, siz qidiruv nafaqat chiziqning istalgan joyida amalga oshirilishini va nafaqat boshida amalga oshirilishini belgilashingiz mumkin:

Keyin foydalanuvchi shunchaki qidirilgan satr boshlanadigan belgilarni emas, balki so'zlarning parchalarini qabul qilishi mumkin:

Liniyani kiritishda to'liq matnli qidiruvdan foydalanish alohida mulk tomonidan faollashtirilgan:

To'liq matnli qidiruvdan foydalanib, foydalanuvchilar, masalan, nomidan quyidagi so'zlar bo'yicha mos ma'lumotlarni tezda topish uchun ko'p ma'lumotlar hajmini tezda topishlari mumkin:

Shuningdek, ular bir nechta mashhur so'zlarni qidirishlari mumkin. Qurilishi tugallanmagan so'zlar mumkin bo'lgan kombinatsiyalar avtomatik ravishda to'ldiriladi:

Agar ma'lumotlar katta bo'lsa, ikkala holatda ham siz qidirish fon ishidan foydalangan holda qidirish kerakligini ko'rsatishingiz mumkin:

Keyin kirish maydonining yonida, hisobot namoyish etilganda ko'rsatilgan rasmga o'xshash foydalanuvchilar uchun animatsion rasm ko'rsatiladi:

  • agar kirish maydonida ishlatilgan ob'ektda katta miqdordagi ma'lumotlar kutilmasa, biz sizlarga istalgan joyni qidirishni yoqishingizni maslahat beramiz;
  • agar ob'ekt rejalashtirilgan bo'lsa katta miqdorda Keyin ma'lumotlar:
    • sizga to'liq matnli va fon qidiruvini o'z ichiga olishingizni maslahat beramiz;
    • shu bilan birga, siz istalgan joyda simli chiziqni qidirishingiz mumkin, ammo fon qidirish bilan bir vaqtda va afzal matnli qidiruv bilan birga; To'liq matnli qidiruv orqali amalga oshiriladigan qidiruvlarning ko'pi uchun.

Agar kerak bo'lsa, siz zaruriy echimni bajarish jarayonida siz mumkin bo'lgan barcha ro'yxatlar mavjud.

Mijozda - mijoz kiritish maydonidagi tadbirkorlar Avtomatik) va Ijroiya nafaqasi :

Serverda - menejerning menejeri modulida qidiruv amalga oshiriladi. Tadbirda ishlov beruvchida Sud jarayoni :

Tabiiyki, bu joyda, serverda qidirish usulini bekor qilish mumkin emas "To'g'ridan-to'g'ri" yoki "Fon topshirig'i" . Chunki kod ijrosi allaqachon serverga o'tkaziladi.

Qator - biri ibtidoiy tur 1C tizimidagi ma'lumotlar: 8-Korxona turi bo'lgan o'zgaruvchilar chiziq matnni o'z ichiga oladi.

Tur o'zgaruvchilarining qiymatlari chiziqo'ralgan ikki karra tirnoq. Bir nechta o'zgaruvchilar bu tur katlanaf bo'lishi mumkin.

Per1 \u003d "1 so'z";
Per2 \u003d "2 so'z";
Per3 \u003d Per1 + "" + Per2;

Natijada Per3. muhim bo'ladi 1 so'z 1 so'zi ".

Bundan tashqari, 1C tizimida: 8 Korxonada 8 ta yo'nalishdagi funktsiyalarni taqdim etadi. Asosiy narsani ko'rib chiqaylik:

Kiradi (<Строка>, <Подсказка>, <Длина>, <Многострочность>) — funktsiya foydalanuvchi qiymatini belgilashi mumkin bo'lgan dialog oynasini chiqish uchun mo'ljallangan o'zgaruvchan tur Chiziq. Parametr <Строка> bu majburiy va o'z ichiga olgan o'zgaruvchining nomi yozib olinadi. Parametr <Подсказка> ixtiyoriy - bu sarlavha dialog oynasi. Parametr <Длина> ixtiyoriy, shoular maksimal uzunlik Kiritilgan chiziqlar. Odatiy nolga teng, bu cheksiz uzunlikni anglatadi. Parametr <Многострочность> ixtiyoriy. Kirish rejimini belgilaydi ko'p chiziqli matn: Haqiqat - ko'p chiziqli matnni liniyalarni ajratuvchilari bilan kiriting; Yolg'on - oddiy chiziqni kiriting.

Satrlar Enikode kodlashidagi belgi kodini bilib, kiritilishi mumkin:

Belgi (<КодСимвола>) — kod raqam sifatida kiritilgan.

Harf \u003d belgisi (1103); // i i

Shuningdek, har qanday belgi kodini topishga imkon beradigan teskari funktsiya mavjud.

Kodimvol (<Строка>, <НомерСимвола>) — raqam shaklida Unicode kodlashidagi belgilangan belgi sonini qaytaradi.

Matnni ro'yxatga olishni amalga oshirish funktsiyalari:

VREGA (<Строка>) - Barcha satrlarni yuqori registrga o'zgartiradi.

Nrega (<Строка>) - Barcha satrlarni kichik harfga o'zgartiradi.

TRega (<Строка>) - Sarlavha registrida barcha satr belgilarini o'zgartiradi. Ya'ni, barcha so'zlardagi birinchi harflar katta harfga va pastki qismidagi qolgan harflar.

Satrdagi belgilarni qidiring va almashtiring:

Topmoq(<Строка>, <ПодстрокаПоиска>) - Qidiruv substeringini qidirishning belgi raqamini toping. Masalan:

Toping ("satr", "Oka"); // to'rt

Strnet<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) - Qidiruv substerasini qidirishning belgi raqamini topish, kirish raqami tegishli parametrda ko'rsatilgan. Bunday holda, qidiruv parametrda ko'rsatilgan belgi bilan boshlanadi O'rnatish.Izlash boshidan yoki satr oxirida mumkin. Masalan:

4 raqami \u003d strnet ( "O'lim", "O", yo'nalishi. Birinchi, 1, 4); // 7.

Kuchuct (<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) - Qidiruv substeratsiyasining barcha yozuvlarini topadi va uni almashtirishning o'rnini bosuvchi almashtirishga almashtiradi.

Qattiq ("satr", "Oka", "); // sahifa

Bo'sh chiziq (<Строка>) - Muhim belgilar mavjudligi uchun satrni tekshiradi. Agar mazmunli belgilar bo'lmasa yoki umuman belgilar bo'lmasa, unda qiymat qaytariladi Haqiqat. Aks holda - Yolg'on.

Strirling (<Строка>, <ПодстрокаПоиска>) - manbada qidirish substıkligining sonini hisoblaydi.

Strirling ( "Davolash, o'rganish va o'qish", "o'rganish" , "" ) ; // 3.

Storb (<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — satrda parametrlarni raqam bilan amalga oshiradi. Satrda shakli almashtirish markerlari bo'lishi kerak: "% 1% n". Raqamli markerlar, agar parametrning qiymati bo'lsa Aniqlanmagan, bo'sh satr almashtirildi.

Storb ( "Parametr 1 \u003d% 1, parametr 2 \u003d% 2", "1" , "2" ) ; // parametr 1 \u003d 1, parametr 2 \u003d 2

Qo'riqni o'zgartirish funktsiyalari:

Sher (<Строка>, <ЧислоСимволов>) - Birinchi birinchi strey belgilarini qaytaradi.

Huquqlar (<Строка>, <ЧислоСимволов>) - Eng so'nggi satrlarni qaytaradi.

Muhitlar (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - uzunligi bo'ylab satrni qaytaradi<ЧислоСимволов>ramzdan boshlab<НачальныйНомер>.

Sokrel (<Строка>) Ketma-ket birinchi ma'no belgisining chap tomonidagi ahamiyatsiz belgilarni kesib tashlaydi.

Copp (<Строка>) - satrda oxirgi muhim ramz huquqiga ahamiyatsiz belgilar bilan kesib tashlaydi.

Sokrlp (<Строка>) - ketma-ket birinchi ma'no belgisining chap tomonidagi va satrdagi oxirgi muhim ramzning o'ng tomonidagi ahamiyatsiz belgilar bilan kesilgan.

Plastikstka (<Строка>, <НомерСтроки>) - raqamli ko'p chiziqli qatorni oladi.

Boshqa xususiyatlar:

Strlin (<Строка>) - satrda belgilar sonini qaytaradi.

Chrokelost (<Строка>) - Ko'p chiziqli satrda qatorlar sonini qaytaradi. Agar satr avvalgi qatorga tarjima qilish belgisidan ajratilgan bo'lsa, yangi hisoblanadi.

Tesh (<Строка1>, <Строка2> ) - Ro'yxatdan o'tmasdan ikkita chiziqni taqqoslaydi. Funktsiya ob'ektga o'xshaydi Taqqoslash. Qaytish:

  • 1 - Agar birinchi satr ikkinchisidan kattaroq bo'lsa
  • -1 - agar ikkinchi qator avvalgisidan kattaroq bo'lsa
  • 0 - agar qatorlar teng bo'lsa

Ish tashlash ("birinchi qator", "ikkinchi satr"); // biri

Mening ismim - Pavel Barkets, men SoftPointda ishlayman. 10 yildan ortiq vaqt davomida biz ishlash optimallashtirish vazifalarini hal qildik. Va hal qilingan muammolarning ko'pligiga qaramay, ularning soni kamaytirilmaydi, balki geometrik rivojlanishda o'sadi. Ma'lumotlar hajmi oshadi va ushbu ma'lumotlar bilan ishlarni optimallashtirish uchun vazifalar murakkab. Bu jarayon muqarrar.

Maqola - optimallashtirish uchun noalityal yondashuvlar. Ko'rib chiqiladi ikki jihatlar:

  • Birinchidan - stressni qidiring. Foydalanuvchilar ko'pincha undan foydalanishadi va ko'plar ko'p, ehtimol, allaqachon sezilarli kutishga duch kelishgan, subktsiya izlash etarli emas.
  • Ikkinchi - katta hujjatlarni bajarish, masalan, oyning yopilishi, narxni hisoblash. Shubhasiz, ko'pchilik buxgalter bu hujjatlarni 5-9 soat davomida, kechasi va hech qanday vaqtni o'tkazishi bilan shug'ullanishdi. Eng qiziqarli narsa shundaki, klassik optimallashtirish usullari har doim ham yordam bermaydi. Agar siz, agar siz bo'lsa, bunday hujjatlarni olib, balog'at o'lchovini o'lchashda ishlang, shuni ko'radi eng katta raqam Vaqt vaqtincha yoki haqiqiy tuzilmalarga - jadvallar, registrlar va boshqalarga yozishga vaqt sarflanadi. Va bu vazifani klassik usul bilan hal qilib bo'lmaydi.

Stressni qidiring

Birinchi mavzu - Stressni qidiring. Bu yil davomida men ushbu operatsiyadagi muammolar bilan bir necha bor tashrif buyurdim. Siz Sug'urta kompaniyasiga siyosatni kengaytirish uchun kelsangiz, telefon raqamini topishga taklif qilasiz. Bu emasligi aniq klassik qidiruv Telefonning to'liq raqamida, foydalanuvchi sakkizdan yuqori, ettita yoki qandaydir tarzda, xonaning raqamlarini qidirib topishi mumkin. Bunday holda, uzoq muddatli qidiruv ishlari qo'llaniladi - bir qator vaziyatlarda kechikish bir necha soniya bo'lishi mumkin va u daqiqagacha bo'lishi mumkin.

Boshlang'ich belgilarni qidiring

Izlash boshlang'ich belgilar yordamida amalga oshirilganda birinchi misoldan boshlayman. Bu foydalanuvchi kerakli qiymatdan boshlanganligini aniq bilsa, substingni topishda alohida holat.

Boshlang'ich belgilarni qidirish 1Cda jamoadan foydalanib amalga oshiriladi (yoki ingliz tilidagi versiyada), oxirida "%" qiymatini ko'rsatadigan ("%" boshqa belgilar ketma-ketligini anglatadi. Masalan, biz quyidagilarni qidiramiz:

"Ivano%" kabi ism

Shuni esda tutingki, agar tizimda ushbu sohada indeks bo'lsa, unda indeks qidirish SQL so'rovida ishlatiladi - Bu indeks bo'yicha qidiruv.

"Qidiruv paneli kabi" holat qiymatlar oralig'ida qidirish bilan tengdir. Ma'lum bir holatda, biz "Ivano%" ni qidirayotganimizda, "Ivanp" bilan tugashni boshlagan va "Ivanp" bilan tugash boshlangan familiyalar doirasida ("p ramz" bilan tugaydi "O" belgisi).

Zamonaviy optimiziklar mustaqil ravishda so'rov so'rovini qidirish uchun so'rov sifatida o'zgartiradilar. Shuning uchun, agar tizimda ushbu sohada indeks bo'lsa, so'rovni SQL atamalari nuqtai nazaridan izohlashda bunday natijaga erishasiz - optimigerni diapazon orqali qidirish shaklida so'rov yuboradi.

Shunday qilib, siz indeks yordamida klassik qidiruv o'tkazishingiz mumkin (indeks qidirish). Bu bilan hech qanday muammo yo'q yoki ularni oddiy tarzda hal qiling.

Kirish uchun qidirish

Endi noma'lum bo'lganda misolni oling, uning qaysi joylashuvi bizning xohlagan qiymatimiz va satrga kirish qidiruvi amalga oshirilmoqda. Bu holda, ikkala tomonning "%" "%" stendida.

SQL-da bunday so'rovni o'zgartirganda, biz faqat buyruq o'zgarishi (qiymati ikki "%").

Bajarish rejasining tafsilotlarini ko'rib chiqing. Bu yerda biz bir xil indeks qidirayotganini ko'ramiz, lekin bu holda u samarali ishlamaydi.

Gap shundaki, biz ko'rib chiqamiz, bir nechta sohalardan iborat.

  • Ulardan birinchisi buxgalteriya ajratuvchi.
  • Keyinchalik qidiruv maydoniga to'g'ridan-to'g'ri ketadi.

Va shuning uchun "indeks qidirish" ni bajarish nuqtai nazaridan ko'rsatiladi, bu buni anglatadi qidiruv birinchi ajratgichning birinchi maydonida amalga oshiriladi - Yuqoridagi slaydda buni ko'rishingiz mumkin bizning istalgan desc qiymatimizda qidirish mutlaqo ishlatilmaydi.

Bunday vaziyatda nima qilish kerak? Amaliyotda men kirish uchun so'rovlarni ishlatishni taqiqlagan foydalanuvchilar men juda tez-tez bor edi. Va ba'zi hollarda foydalanuvchilar ushbu funktsiyani ishlatmadilar, chunki bajarilish vaqti juda ahamiyatlidir va siz ishlashni davom ettirishingiz kerak. Shuning uchun ular boshqa yo'llar bilan o'rashlari kerak edi - ro'yxatlarda tanlangan, birinchi belgilar va hokazolarni topishga harakat qilgan.

Ammo bu tizimni noto'g'ri idoralar va noto'g'ri idrok etishdan noroziligiga olib keladi. Foydalanuvchi tizim biror narsa bilan kurasholmasligini tushunadi va u bo'lishi kerak. Bu to'g'ri emas.

Subktlashni topish vazifasini hal qilish uchun noalitalizatsiya yondashuvi

Endi ko'rib chiqamiz ushbu vazifani hal qilish uchun nostivial yondashuv.

Bir qator tsikllar bilan ifodalanadi:

  • Birinchi - zamonaviy yildan beri disklar cheksiz o'lchamga egaEhtimol, siz ishlatishingiz mumkin bo'lgan diskdagi bo'shliq, siz juda katta.
  • Ikkinchi - foydalanuvchi bir-ikkita ramzni qidirmoqda, lekin ba'zi bir parcha uchun. Masalan, hech birimiz "AL" ni qidirmaymiz - bu juda kichik tanlovdosh. Belgilarning muhim ketma-ketligini qidiring. Bu erda biz olti ramzni qidirishni tanladik.

"Alexe" kerakli sathining misoli shaklda qayd etildi va u bilan sinovdan o'tkaziladi.

  • Aytaylik, bizda mijozning familiyasi, ismi va otasining otasining ismi bor dala bor. Birinchi qadam, biz avtomatik ravishda ushbu qiymatni oltita belgidan iborat "1" deb belgilab qo'yamizva biz bir qator parchalarni olamiz (yuqorida yuqoriga qarab), bu har doim kerakli qiymatga tegishli. Biz nazariy jihatdan foydalanuvchiga kirish mumkin bo'lgan parchalar oldik. Aynan, o'tmishda slayd olti belgi qidirayotganimizni aniqladi. Ulardan beshtasi bo'lishi mumkin va to'rt bo'lishi mumkin, shunchaki tuzilish hajmi ko'proq bo'ladi.

  • Ikkinchi bosqichda biz biz ushbu to'plamlarni alohida tuzilishga yozamiz (Bu stol, axborot registri va hokazo bo'lishi mumkin) va ma'lum bir parcha turli xil qiymatlarga tegishli bo'lgan namunani oling.

  • Uchinchi bosqichda, biz 1C so'rovini dizaynni qidirishda biz mumkin bo'lgan kombinatsiyalar sonini filtrlaydi va ushbu qo'shimcha tuzilishdan chiqadi (bu qo'shimcha tuzilmadan chiqadi (bu axborot registridan bo'lishi mumkin) ) zarur bo'laklarga tegishli bo'lgan barcha narsalar.

Masalan, foydalanuvchi "askarlar" familiyasi bilan mijozni qidirmoqda. Bu sakkizta belgidan iborat, bu xizmat tuzilishini qidirayotgan oltita belgidan iborat uchta bo'lak bo'ladi. Keyinchalik, barchasini so'rovda birlashtiring. Shunday qilib, qo'shimcha filtrlash olinadi.

Natijada, biz "%" belgidan qutulamiz (i.e.) biz har doim ramzi har doim bo'ladigan belgilar bo'ladi va biz bilan kurashadigan ichki so'rovnomada indeks qidirish bo'ladi.

Amalda, bu juda qiziqarli voqea sodir bo'ladi - o'nlab, yuzlab marta tezlashish. Bundan tashqari, bularning barchasi 1C vositasi bilan amalga oshirilishi mumkin, bu juda yaxshi. Siz mantiqni qayta yozishingiz shart emas, foydalanuvchi qidiruv so'rovi tezlashayotganidan xursand bo'ladi. Masalan, 4 soniyadan 0,05 sekundgacha tezlashishni tezlashtirish, agar biz dastlab ikki daqiqaga murojaat qilsak, u ikkinchi soniyadan kam bo'lgan bo'lar edi.

Sizga ko'rsatgan mexanizm ba'zi eksperimental misol emas, u haqiqiy mijozlar uchun ishlaydi.

Tayyorlov faoliyati

Endi men sizga tayyorgarlik faoliyati haqida aytib beraman.

  • Avval ro'yxatdan o'tish boshlang'ich qiymatlarini to'ldirish kerak.. Buning uchun biz me'yoriy oynani rejalashtirishimiz kerak.
  • Keyingi, biz ma'lumotlarning mustahkamligi bilan bog'liq bo'lishimiz kerak - bu vositalar qiymatni o'zgartirish uchun obuna bo'lishi kerakShunday qilib, bu parchalar avtomatik ravishda tiklanadi.
  • Va oxirgi - standart qidiruv shaklini qo'shing.

Ro'yxatdan o'tish 1C va SQL bilan amalga oshirilishi mumkin.

Aytishim mumkinki, bunday tuzilishni 17 million qiymatga to'ldirish 20-25 minutni egallaydi. Tabiiyki, ushbu nuqtada foydalanuvchilar katalogning qiymatlarini o'zgartirmasliklari kerak.

Agar biz parchaning bir qismidan bir million belgidan bir million qiymatni hisoblasak, u 4,7 Gb ni tashkil qiladi. Sizda borligingiz uchun rejangiz kerak. Agar sizda katalogda bo'lsa, masalan, 100 million qiymat, keyin diskda mavjud bo'lgan joyni rejalashtirishingiz kerak.

Ommaviy parcha statistikasini hisobga olish zarurati

Bu usul har doim tez ishlaydimi?

Bu ta'sir qiladi ommabop parchalar statistikasi.

  • Masalan, siz Aleksey ismini Aleksey ismini alekseyning ismiga kirishi mumkin bo'lgan "Alekseyevich" ismini alekseyevich nomi bilan, Alekseyevich nomi bilan va boshqa joyga kirishi mumkin. Ushbu parcha 50-100 ming arizalar bo'lishi mumkin.
  • Va kamdan-kam ishlatiladigan bo'laklar mavjud.

Shunday qilib, parchalarda mashhurlik statistikasi paydo bo'ladi.

Eslab qoling agar parchalarning mashhurligi past bo'lsa (100 element) bo'lsa, biz tezlashamiz - 0,1 soniya.

Agar substing juda mashhur bo'lsa (50 ming element), keyin biz tanazzulga tushamizVa optimallashtirish yo'q, shundan kattaroq.

Shunday qilib, quvvatlangan so'rovlarni bajarish sxemasini tuzish kerakUnda biz birinchi navbatda Samariya ommaviy miqyosining ahamiyati borligini bilib oldik. Bu 1C-da uch-beshta chiziq bilan amalga oshiriladi. Shu bilan birga, agar satr mashhur bo'lsa, u birinchi filialda, keyin esa, ikkinchisida bo'ladi.

Tezlashtirish qanday tezlashmoqda? Shakldan qidirish Izlash shaklida olib borilmoqda, keyin biz ma'lumotni statistika bilan ro'yxatdan o'tkazishni so'raymiz, biz bir narsani olamiz va qanday foydalanish kerakligini tanlang.

Va endi SQL so'rovi SQL serverida qanday bajarilganligini ko'rib chiqamiz.

Slayd soddalashtirilgan sxemani taqdim etadi:

  • optimizerni talab qilish;
  • biz so'rovda ishlatiladigan dala statistikasiga qaraymiz;
  • biz qaysi qatl qilishni ishlatishni tanlaymiz, ya'ni so'rovni bajarish strategiyasini tanlang (masalan, investitsiya qilingan tsikl).

Biz tomonidan amalga oshirilayotgan sxema nima?

  • Biz o'zingiz qildik indeks. 1C indeks emas, balki indeks emas, balki standart SQL indeksi emas, balki ushbu muammoni hal qilish uchun zarur bo'lgan indeks;
  • Bundan tashqari, o'z ehtiyojlari bilan to'qnashdi statistika;
  • Va siz o'zingiz kerak optimizatorUshbu statistika bo'yicha qaysi biri qaysi ipni tanlash uchun qaror qiladi.

Ushbu mantiqqa asoslanib, bu jarayon indekslar, statistika va optimizizoz biz uchun qanday ma'nosini ko'rsatadi.

SQLda statistikaga nima xizmat qilishni bilmagan, bu mantiqqa qarang, agar u noto'g'ri yoki ahamiyatsiz bo'lsa, biz noto'g'ri filialga boramiz. So'rov sekinlashadi. Biz qanday sifatli va to'g'ri statistikaga xizmat qilishni tushunamiz - bu unumdorlikni, indeksga ta'sir qiladi.

Agar indeks bo'lmasa - biz barcha qiymatlarni tekshiramiz.

Shunday qilib, biz hech bo'lmaganda intigitsitni yaratdik, ammo optimizatoringiz. Aytishimiz mumkinki, ular SQL va boshqa DBMS va boshqa tuzilmalarni yaratadigan "barmoqlarda" kuzatib borishadi.

"Katta" hujjatlarni tezlashtirish

Men ikkinchi mavzuga boraman - katta hujjatlarni tezlashtirish.

Biz tez-tez ba'zi tartibga solish muolajalariga duch kelmoqdamiz: Oyning yopilishi, agentlik hisobotini, narxni hisoblash. Ushbu og'ir, katta hujjatlar olib boriladi va ko'p vaqt tugadi. Va biz nosozlikni ko'rib, ushbu operatsiyalarga talasak, biz buni ko'ramiz 1c liniyasi qiymatlarni bir nechta stolga kiritadi va asosiy vaqt u bilan bog'liq.. Va bu haqda hech narsa qilish mumkin emas. Taklif qilinishi mumkin bo'lgan yagona tavsiyalar diskni tezlashtirish (ushbu echimning samaradorligi juda shubhali va dastlabki tahlilni talab qiladi).

Men hikoyaga qaytishni taklif qilaman va u 1Cda qanday amalga oshirilganini ko'rib chiqing, 8.0 dan 8.3 gacha - bu chiziq bilan amalga oshirildi. SQL server har safar qayta ko'rib chiqilgan, uni qayta ishlangan, deya qo'shimcha qilib, bajarilgan protsedurani yaratdi, qo'shilgan, deya qo'shimcha qilib, buyruqni 1C gacha muvaffaqiyatga qaytarib yubordi va quyidagi so'rovni oldi. Va bosqichma-bosqich 1C dastur serveridan SQL-ni MS ga olib bordi.

Hujjatda 40 ta yozuvingiz bo'lsa, hech qanday muammo bo'lmasligi kerakligi aniq. Agar sizda 10 ming va ko'proq yozuvlar bo'lsa (normativ hujjatlar, million yozuvda), keyin bu jarayon juda uzoq vaqt talab etadi. Bitta yozuv juda tez qayta ishlanadi, ammo hujjatda ular juda ko'p. Yaroqat nima? So'rovda, so'rovning ijrosi bo'yicha, ushbu signalni 1C tizimida qayta ishlashda to'rtta bosqichning yig'indisi. Barcha bosqichlar yig'ilib, million liniya bilan ko'paytiriladi va uzoq muddatli umidlarimiz olinadi. Bu dahshatli emasligi aniq.

1C-da 8,3 dan boshlab yaxshilanishlar amalga oshiriladi. Endi vaqtincha jadvallar va axborot registrlariga kiritish so'rovi SQL serverida tayyorlanadi va uni keyingi ijro klassik RPC qo'ng'iroqlari yordamida amalga oshiriladi 1C Kirish provayderi (ona yoki ode db) guruhlari yozuvlari va ularni n iplar bilan joylashtiradi (odatda 100 qator).

Shunday qilib, tezlashuv 30% dan 300% gacha erishiladi. Ammo bu hali ham etarli emas, chunki bugungi kunda sizda 10 ming liniya bor, ertaga 20 ming liniya. Bu muammoning asosiy echimi emas, siz hali ham u uchragansiz, lekin atigi olti oyga.

Nima eng tezkor uyqu SQL-serverda va haqiqatan ham har qanday DBMS-da?

u Ommaviy ravishda joylashtiring.. 1C 1-sonli qo'shimcha ishlatiladi, ammo boshqa vazifalar uchun. "Katta" hujjatlar bilan ishlash, shuningdek, qo'shimchalarni kiritish va SQL server ma'lumotlar bazasiga bir qatorga ega bo'lgan yozuvlarni qo'shib tezlashtirishni juda xohlaydi.

Keling, nimaga erishilganligini ko'rib chiqaylik. Ushbu misolda qabul qilindi 5 marta qayerda tezlashishni tezlashtirish, lekin siz tezlashishingiz mumkin va 10 marta. Uning nazariy jihatdan asosiy muammo shundaki, u tezroq bo'ladi - bu diskning tezligi. Disk shishanglik bo'lishi mumkin.

Shuningdek indeks sifatida bunday mezonni eslab qolish muhimdir.. Agar biz stolda indekslarni yangilamasdan stolda kiritilgan bo'lsak, biz jiddiy tezlashishni oldik (natijada bir soniyadan kam). Bu erda biz har bir kiritish stolda yangilangan indeksni talab qiladiganligi sababli biz 69 soniya davomida olamiz.

Qanday bo'lmasin, bu usul 5-10 marta ta'sirga erishishga imkon beradi.

Bundan tashqari, bu erda birlashish, ajratish kabi imkoniyatlar bunday imkoniyatlar hisoblanmaydi. Ommaviy ravishda joriy davrga kiritilganligini bilsak, vaziyatni yaxshilash mumkin edi va biz ahamiyatsiz bo'linmani boshqa qismga olib chiqamiz. Bu yanada katta ta'sir bo'lar edi. Shuni ta'kidlashadiki, tezlashishi juda yaxshi.

Optimallashtirish variantlari cheksizdir

Shunday qilib, optimallashtirish variantlari cheksizdir. Yagona narsa bu ishtirok etish emas. Optimallashtirishdan oldin, rejalashtirilgan ta'siri ham bo'lishini hisoblash har doim tushunarli. Shuningdek, ba'zi vaziyatlarda muammoning ko'tarishi bo'yicha maslahat berardim, so'rovni optimallashtirishning klassik usullaridan va ba'zilari umuman boshqacha natijaga olib kelishi mumkin.

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

Ushbu maqola hisobotning hisobotiga binoan "Infostart" tadbirida 2017 yildagi konferentsiyasida yoziladi.