1c dinamik ro'yxat jadvalini o'zgartirish. Dinamik ro'yxat bilan ma'lumotlarni olish va keshlash usullari

Har qanday dasturlash tilida topilishi mumkin bo'lgan ibtidoiy ma'lumotlar turlaridan tashqari, 1C da o'ziga xos turlari mavjud. Ularning har biri tizimda foydalanishning o'ziga xos xususiyatlari, usullari, funktsiyalari, maqsadi va nuanslariga ega. Ushbu turlardan biri dinamik ro'yxat bo'lib, u ko'plab amaliy vazifalarni sezilarli darajada osonlashtiradi. Shuning uchun ishlab chiquvchilar ushbu universal vositani bilishi va boshqarishi kerak.

1C da dinamik ro'yxatlarning xususiyatlari

Ushbu turning maqsadi, turidan qat'i nazar, har qanday ma'lumotlar bazasi jadvallaridan ma'lumotlarni ko'rsatishdir. Mexanizm SKD asosida yaratilgan va shunga o'xshash imkoniyatlarga ega. Ammo bu siz 1C tilida so'rov yozishingiz kerak degani emas, garchi bu imkoniyat mavjud va undan foydalanish kerak. Siz shunchaki ma'lumotlari sizni qiziqtirgan jadvalni belgilashingiz mumkin va 1C mustaqil ravishda oddiy so'rovni yaratadi.

Dinamik ro'yxat qanday tuzilganligini va u qanday ma'lumotlarni ko'rsatishini ko'rish uchun siz konfiguratorda joylashgan boshqariladigan shakllarni ochishingiz kerak: tafsilotlar ro'yxatida uning xususiyatlarini ochish uchun kontekst menyusidan foydalaning va "Maxsus ro'yxat" ga e'tibor bering. So'rov" bandi. Agar katakcha bo'lmasa, "Asosiy jadval" parametri ma'lumotlar olingan ma'lumotlar bazasi jadvalini aks ettiradi. Aks holda, dinamik ro'yxat maxsus so'rov ma'lumotlarini aks ettiradi, uni ro'yxat sozlamalarini ochish orqali ko'rish mumkin.

Maxsus so'rovlar sxemasi ko'proq qo'llaniladi, chunki bu turli xil ma'lumotlarni birlashtirish va ko'rsatish uchun ajoyib imkoniyatni beradi. Ko'pincha, bu mexanizm ombor qoldiqlarini, tovarlar narxini, tushumlarni, xarajatlarni yoki xaridlarni aks ettirish uchun ishlatiladi. Uni ehtiyotkorlik bilan ishlatishingiz kerak, chunki murakkab so'rovlar uchun unumdorlik pasayishi mumkin.

Dinamik ro'yxatning yana bir foydali xususiyati "Ro'yxat sozlamalari" yozuvini bosganingizda ochiladi. Ushbu menyu, hatto standart maydonlar to'plamidan foydalanganda ham oxirgi foydalanuvchilar uchun ma'lumotni yanada qulayroq va tushunarli qilish imkonini beradi. So'rov o'zboshimchalik bilan yoki yo'qligidan qat'i nazar, siz "Sozlamalar" yorlig'ini ko'rasiz, bu erda siz quyidagilarni belgilashingiz mumkin:

  • Dinamik ro'yxatni tanlash;
  • Guruhlar;
  • Tartiblash;
  • Dekor.

Parametrlardan foydalanish dinamik ro'yxatlarni universal va juda moslashuvchan qiladi. Siz ularni boshqariladigan shakldagi tafsilotlarga ham bog'lashingiz mumkin va ma'lumotlar foydalanuvchi tanlagan parametrlarga qarab o'zgaradi. Ushbu mexanizmlardan foydalanishni hayotdagi muammolar misollarini ko'rib chiqish orqali tushunish va qadrlash mumkin.

Misol sifatida, nomenklatura qoldiqlarini boshqariladigan shaklda aks ettirish vazifasini ko'rib chiqing. Haqiqiy amaliyotda bunday buyurtmalar turli xil konfiguratsiyalarda tez-tez uchraydi va dinamik ro'yxat vosita sifatida idealdir. Ushbu vazifani bajarish uchun biz maxsus so'rov, dinamik ro'yxat parametrlari va uning sozlamalaridan foydalanishimiz kerak.

Aniqroq bo'lishi uchun keling, alohida tashqi ishlov berishni yaratamiz va unga dinamik ro'yxatni joylashtiramiz. Rejalarimizni amalga oshirish uchun nomenklaturali jadval etarli bo'lmaydi, shuning uchun biz o'zboshimchalik bilan so'rovga ruxsat berishimiz kerak. Unda biz katalogning ob'ektlar ro'yxati va balanslar reestri bilan chap ulanishini tasvirlaymiz va katalogni asosiy jadval sifatida o'rnatamiz. Ushbu sxema dinamik ro'yxat bilan ishlaydigan foydalanuvchilarga elementlarni qo'shish yoki o'zgartirish imkonini beradi.



Nomenklatura roʻyxatini tanlang. Nom AS nomi, Ombordagi tovarlar Qolganlar. Ombor sifatida omborlar, Tovarlar Ombordagi qoldiqlar. Miqdor Katalogdan qolgan miqdor. US treasuresRemaining software NomenclatureList.Link = ProductsInWarehousesRemainings.Nomenklatura WHERE

Bizning so'rovimiz "CurrentDate" parametridan foydalanganligi sababli, ishlov berishdan oldin uning qiymatini belgilashimiz kerak. Buning uchun "When CreatedOnServer" protsedurasidagi forma modulida standart buyruq yordamida unga "CurrentSessionDate" funksiyasini tayinlang. Shuningdek, biz dinamik ro'yxatni nazorat formasida ko'rsatishimiz va aniqlik uchun maydonlar tartibini o'zgartirishimiz kerak. Shakl elementlariga (yuqori chap qism) “Nomenklatura qolgan” atributini torting va shakldagi jadvaldagi maydonlar tartibini o‘zgartirish uchun ko‘k o‘qlardan foydalaning.

&Serverda yaratilayotganda server protsedurasi boʻyicha (muvaffaqiyatsizlik, standart ishlov berish) nomenklaturasi qoladi Parametrlar ParameterValue("CurrentDate", CurrentSessionDate()) EndProcedure


Ushbu bosqichda biz 1C da tashqi ishlovimizni ochishimiz va dinamik ro'yxat ishlayotganini ko'rishimiz mumkin. Biz balanslarni ko'rib chiqishimiz, elementlar va guruhlar yaratishimiz va qidirishimiz mumkin. Ko'pincha mijozlar balanslarni ko'radigan sanani tanlash imkoniyatini qo'shishni so'rashadi. Dinamik ro'yxatga ega bo'lgan shaklda bunga qo'shimcha maydon va uning yordamida parametrlarni o'rnatish orqali erishiladi.

"Sana" turidagi "Sana qolgan" atributini qo'shing va uni shakl elementlariga o'tkazing. Dala voqealarida biz "OnChange" hodisasini yaratamiz va dinamik so'rovda ishlatiladigan "CurrentDate" parametrini o'rnatish uchun kodni yozamiz. Shaklni ochganda, foydalanuvchi balanslarni qaysi sanada ko'rishini darhol anglashi uchun biz "When CreatedOnServer" protsedurasiga kichik o'zgarishlar kiritamiz.



&OnServerProcedureWhenCreatingOnServer(Failure, StandardProcessing)RemainingDate = CurrentSessionDate(); Element Remains.Parameters.SetParameterValue("CurrentDate", RemainingDate); Protseduraning tugashi &Mijoz protsedurasi bo'yicha Qolgan sana O'zgarganda(Element)Nomenklatura Qolgan.Parameters.SetParameterValue("CurrentDate",RemainingDate); EndProcedure

Natijada, bizning Dinamik ro'yxat shaklimiz istalgan sanadagi qoldiqlarni aks ettirishi mumkin.

Biz ushbu asboblar to'plamining imkoniyatlarining faqat kichik qismini ko'rib chiqdik, ammo bu dinamik ro'yxatning ushbu turining qulayligini tushunish uchun allaqachon etarli. Shunga o'xshash mexanizm ko'plab vazifalar uchun ishlatiladi, lekin u ko'pincha boshqariladigan shakllardagi odatiy konfiguratsiyalarda topiladi:

  1. Tanlov;
  2. Ro'yxatlar.

Dinamik ro'yxat va uning so'rovini standart boshqariladigan shakllarda olish uchun ishlab chiquvchi konfiguratorda kerakli shaklni ochishi kerak. Tafsilotlar bo'limida "DynamicList" ma'lumotlar turi bilan ma'lumotlarni toping (ko'pincha u qalin rang bilan ta'kidlangan). Uning xususiyatlari so'rov matni, tanlovlar va boshqa sozlamalarni o'z ichiga oladi.

Chop etish (Ctrl+P)

Dinamik ro'yxat

1. Umumiy ma’lumotlar

Dinamik ro'yxat - bu ma'lumotlar bazasi jadvallaridan ixtiyoriy ma'lumotlarni formada ko'rsatish imkonini beruvchi maxsus ma'lumotlar turi. Buni amalga oshirish uchun siz ma'lumotlarni ko'rsatmoqchi bo'lgan jadvalni ko'rsatishingiz yoki olingan tanlovni so'rovlar tilida tasvirlashingiz kerak.
Mexanizm ma'lumotlar tarkibi tizimiga asoslanadi va olingan ma'lumotlarni saralash, tanlash, qidirish, guruhlash va shartli formatlash imkoniyatlarini ta'minlaydi. Bunday holda, ma'lumotlar manbai tizim tomonidan avtomatik ravishda yaratiladigan (belgilangan ma'lumotlar asosida) yoki ishlab chiquvchi tomonidan qo'lda yoziladigan so'rovdir.

Guruch. 1. Dinamik ro'yxatni yaratish variantlari

Turning forma atributlarini yaratishda Dinamik ro'yxat Ishlab chiquvchi ma'lumotlar so'rovini shakllantirishning ikkita usulini tanlashi mumkin:
● Asosiy jadvalni ko'rsatish orqali - bu holda siz faqat ma'lumot olishni istagan jadvalni (Asosiy jadval xususiyati) ko'rsatishingiz kerak va tizim avtomatik ravishda ma'lumotlar uchun so'rovni yaratadi (rasmning o'ng qismiga qarang). 1).
● So'rovni qo'lda yaratish - buning uchun siz Custom so'rov xususiyatini o'rnatishingiz kerak (1-rasmning chap tomoniga qarang). Shundan so'ng, ma'lumotlar bazasidan ma'lumotlarni olish uchun so'rovni qo'lda yaratish mumkin bo'ladi.
So'rov bir nechta jadvallardan ma'lumotlarni olishi mumkin, shuning uchun siz asosiy jadvalni belgilashingiz mumkin. Bu dinamik ro'yxat qaysi ma'lumotlarning asosiy va qaysi biri ikkinchi darajali ekanligini aniqlashi va ma'lumotlarni to'g'ri tanlashi va ko'rsatishi, shuningdek standart buyruqlar berishi uchundir. Biroq, so'rovda asosiy jadvalni aniqlashning iloji bo'lmasa, uni ko'rsatish mumkin emas, lekin keyin
dinamik ro'yxat asosiy jadvalga tegishli buyruqlarni bermaydi. Bundan tashqari, bu holda (asosiy jadvalni ko'rsatmasdan) dinamik ro'yxat bo'yicha ma'lumotlarni olish samaradorligi sezilarli darajada kamayadi.
Ishlashni yaxshilash uchun maxsus so'rovda faqat qo'shimcha ma'lumotlarni olish uchun foydalaniladigan har qanday ulanishlarni ma'lumotlar kompozitsiyasi tizimi so'rovlar tili kengaytmasi yordamida ixtiyoriy qilish tavsiya etiladi.
Shaklning asosiy atributi bo'lgan dinamik ro'yxat uchun forma parametri yordamida tanlov qiymatlarini o'rnatish mumkin. Tanlash. Buning uchun parametrda joylashgan strukturaning nomini ko'rsatish kerak Tanlash,
dinamik ro'yxatni tanlash maydoni nomiga to'g'ri keldi. Bunday holda, struktura xususiyatining qiymati tanlov elementining to'g'ri qiymati sifatida o'rnatiladi. Agar massiv, qat'iy massiv yoki qiymatlar ro'yxati dinamik ro'yxat shaklining Tanlash parametri elementining qiymati sifatida o'tkazilsa, u holda tanlovga to'g'ri qiymatda "Ro'yxatda" opsiyasi bilan shart qo'shiladi. qiymatlar ro'yxati joylashtirilgan (massiv va sobit massiv aylantiriladi).
Dinamik ro'yxatdagi ixtiyoriy so'rov maydon qiymatini yaratish uchun parametr ishlatiladigan so'rov bo'lishi mumkin, masalan:

TANLANG
TANLOV
QAChON Etkazib berish.Koeffitsient = 1 KEYIN &Taqdimot
BOShQA Etkazib berish. Koeffitsient
END AS nisbati
FROM

Bundan tashqari, agar parametr qiymatining turi ob'ekt atributining turidan farq qilsa (masalan, Takliflar 1 turiga ega Raqam, parametr qiymati esa turi hisoblanadi Chiziq), keyin maydonni to'g'ri ko'rsatish uchun siz parametr qiymatini kerakli turga aniq ko'rsatishingiz kerak:

TANLANG
TANLOV
QAChON Etkazib berish.Koeffitsient = 1 KEYIN EXPRESS(&String AS (100)) BOSHQA Etkazib berish. Koeffitsient
END AS nisbati
FROM
Hujjat.Mahsulotlarni yetkazib berish QANDAY Etkazib berish kerak

Agar tanlash o'rnatiladigan maydon funktsional parametrlar yordamida o'chirilgan bo'lsa, tanlov qiymati forma parametrlari yoki tanlov parametrlari havolalari sifatida uzatilgan bo'lsa ham, bunday maydon bo'yicha tanlash o'rnatilmaydi.
Dinamik ma'lumotlarni o'qish xususiyatidan foydalanib, siz dinamik ro'yxatga ma'lumotlarni kichik qismlarda o'qish zarurligini bildirasiz
(dinamik ro'yxat va ma'lumotlarni keshlash yordamida ma'lumotlarni olish usullari haqida ko'proq ma'lumot olish uchun pastga qarang). Ushbu atributdan qat'i nazar, quyidagi shartlar qo'llaniladi:

● Agar ko'rish rejimi ierarxik ro'yxatga o'rnatilgan bo'lsa, faqat joriy guruh ma'lumotlari va barcha asosiy elementlarning ma'lumotlari (bolalarsiz) o'qiladi.
● Agar daraxt ko'rinishi rejimi o'rnatilgan bo'lsa, faqat ochiq daraxt tugunlaridagi ma'lumotlar o'qiladi.
● Dinamik roʻyxat maʼlumotlarini bir martalik yuklash ierarxik koʻrish oʻrnatilgan boʻlsa (Display xususiyati Daraxtga oʻrnatilgan) va dastlabki daraxt koʻrinishi “Barcha darajalarni kengaytirish”ga oʻrnatilgan boʻlsa, qoʻllab-quvvatlanmaydi. Ma'lumotlarni olish uchun, ko'rsatilgan ro'yxatda tugunlar qancha bo'lsa, serverga shuncha so'rov yuboriladi.
Bitta ma'lumotni qidirishda dinamik ro'yxat, agar quyidagi shartlar bajarilsa, ilgari yaratilgan vaqtinchalik jadvallarni qayta ishlatadi:
● Roʻyxatdagi ommaviy soʻrovda asosiy toʻplam soʻrovidan keyin hech qanday soʻrov yoʻq.
● Vaqtinchalik jadvallarning tarkibi va ulardagi maydonlar paket so'rovining oldingi bajarilishidan o'zgarmaydi.

O'z ishida dinamik ro'yxat metadata ob'ekti tafsilotlarining quyidagi xususiyatlarining qiymatlaridan foydalanadi:
● format,
● tahrirlash formati,
● maslahat,
● salbiy qiymatlarni ta'kidlash uchun belgi,
● niqob,
● ko‘p qatorli rejim belgisi,
● kengaytirilgan tahrirlash belgisi,
● parol rejimi.
Ma'lumotlar kompozitsiyasi tizimining tanlovi va parametrlarini ko'rsatish va tahrirlashda tegishli maydonning tahrirlash formati qo'llaniladi.

2. Cheklovlar va xususiyatlar

Dinamik ro'yxatda tanlovni o'rnatayotganda, dinamik ro'yxatni ko'rsatish rejimi Ierarxik ro'yxat yoki Daraxt bo'lsa, tanlov guruhlarga ta'sir qilmasligini unutmang. “Guruhlar” deganda, katalog elementi yoki ThisGroup xossasi True ga o‘rnatilgan xarakterli turlar rejasi tushuniladi.
Egasi, ota-onasi, sanasi, davri va bu guruhning standart ma'lumotlariga dinamik ro'yxat tomonidan avtomatik ravishda qo'llaniladigan malakalar qo'llaniladi.
standart ma'lumotlar tarkibi tizimi vositalaridan foydalanish. Dinamik roʻyxat boʻyicha asosiy maydonlarga avtomatik ravishda qoʻllaniladigan tanlov maʼlumotlar kompozitsiyasi tizimining standart vositalari orqali ham, soʻrov matniga toʻgʻridan-toʻgʻri shartlar qoʻshish orqali ham qoʻllanilishi mumkin. IN asosiy jadval maydonlariga. Joylashtirish vositalaridan foydalangan holda tanlovlarni qo'llash natijasida ular ichki so'rovlarda ham, virtual jadvallar parametrlarida ham qo'llanilishi mumkin.

Dinamik ro'yxatlarni ishlab chiqishda barcha dinamik ro'yxatlarni maxsus so'rovlar bilan sinab ko'rish tavsiya etiladi. Tekshiruv jarayonida, agar ro'yxat so'rovi ichki so'rovlar yoki virtual jadvallarni o'z ichiga olgan bo'lsa va ularda standart ma'lumotlarning taxalluslariga mos keladigan taxallusli maydonlar Egasi, Ota-onasi, Sana, Davr, Bu Guruh yoki kalit maydonlar mavjudligiga ishonch hosil qilishingiz kerak. tanlash, keyin bu maydonlar ularning taxallusiga mos keladigan standart tafsilotlarga mos keladi. Agar bunday bo'lmasa, so'rovni mos keladigan tarzda o'zgartirishingiz kerak yoki
laqabi boshqacha edi.
Agar siz so'rovni qo'lda yaratishni tanlasangiz, so'rovga ba'zi cheklovlar qo'yiladi:
● Dinamik roʻyxat soʻrovida BIRINCHI bayonotdan foydalanish qoʻllab-quvvatlanmaydi. Agar siz dinamik ro'yxatdagi yozuvlar soni bilan cheklangan tanlovdan foydalanishingiz kerak bo'lsa, dinamik ro'yxatni yaratish so'rovini so'rovning haqiqiy mazmuni quyi so'rovga joylashtiriladigan tarzda qayta ishlashingiz va yozuvlar sonini cheklashingiz kerak. ushbu pastki so'rovda olingan. Quyi soʻrov oʻrniga vaqtinchalik jadvaldan ham foydalanishingiz mumkin.
● Tanlash, saralash va guruhlash qo‘llab-quvvatlanmaydi:

  • Jadval qismlarining tafsilotlariga ko'ra.
  • Maydonlarni ko'rish.
  • DataVersion maydoni.
  • Oldindan belgilanganDataName maydoni.
  • Hisoblar jadvali jadvali turi maydoni.
  • Maydon Akkumulyatsiya registrlari jadvalining harakat turi.
  • Maydon turi Reja jadvalining xarakterli turining qiymatlari.
  • Tur maydoni turi;
  • String tipidagi maydon (cheksiz uzunlik).
  • BinaryData tipidagi maydon.

● Subconto maydonlari bo'yicha saralash va guruhlash qo'llab-quvvatlanmaydi<НомерСубконто>va ViewSubconto<НомерСубконто>Jadvallar Harakatlari Buxgalteriya registrining pastki qismi.
● Agregat funktsiyalarni o'z ichiga olgan so'rovlar tili ifodalari bo'lgan maydonlar bo'yicha guruhlash qo'llab-quvvatlanmaydi.
● Asosiy jadval tanlanganda, dinamik roʻyxat soʻrovi quyidagi cheklovlarga ega:

  • Birlashishlar qo'llab-quvvatlanmaydi.
  • ORDER BY bo‘limi qo‘llab-quvvatlanmaydi. Siz so'rovni asosiy jadvalsiz ishlatishingiz yoki dinamik ro'yxat sozlamalari orqali kerakli tartibni o'rnatishingiz kerak.

● Agar dinamik roʻyxat ierarxik roʻyxat yoki daraxt sifatida koʻrsatilsa, u holda yozuvning kamida bitta ota-onasi koʻrsatilmasa, yozuv dinamik roʻyxat sifatida koʻrsatilmaydi. Boshqacha qilib aytganda, ierarxik ro'yxatning elementini ko'rsatish uchun dinamik ro'yxat ushbu elementning barcha ota-onalarini ro'yxatning yuqori qismigacha ko'rsatishi kerak. Bunday holda, ro'yxatning yuqori qismida biz ham nazarda tutamiz
dinamik roʻyxat orqali koʻrsatilgan ierarxik obyektning ildiz elementi yoki dinamik roʻyxat uchun shakl jadvali kengaytmasining ParentTopLevel xususiyati sifatida oʻrnatilgan element.

Quyidagi jadvallardan dinamik roʻyxatning asosiy jadvali sifatida foydalanish qoʻllab-quvvatlanmaydi:

● Har bir jadval yozuvini yagona identifikatsiya qiluvchi kalitga ega bo'lmagan jadval (ob'ekt jadvallari uchun havola va registr jadvallari uchun yozuv kaliti). Biroq, quyidagi jadvallar dinamik ro'yxatning asosiy jadvali sifatida o'rnatilishi mumkin (kalit bo'lmasa ham):

● Buxgalteriya registrining subconto jadvali;
● MovementsSubconto jadvalidan tashqari buxgalteriya registrining barcha virtual jadvallari;
● doimiy qiymatlar jadvallari (shu jumladan doimiylar jadvali);
● asosiy maydonlarsiz tashqi ma'lumotlar manbalarining jadvallari;
● tashqi ma'lumotlar manbalarining kub jadvallari;
● jamlash registrlari jadvallari:

  • inqilob jadvali;
  • balans jadvali;
  • aylanma va qoldiqlar jadvali.

● hisoblash registrlari jadvallari:

  • haqiqiy amal qilish muddati jadvali;
  • jadval ma'lumotlari;
  • asosiy ma'lumotlar.

● Ob'ektlarning jadval qismlarining jadvallari;
● ro'yxatga olish jadvallarini o'zgartirish (ma'lumotlar almashinuvi mexanizmlarida qo'llaniladi);
● ketma-ketlik jadvallari;
● Konvertatsiya jadvallari (davriy hisob-kitob mexanizmlarida qo'llaniladi).
● So‘rovda faqat tashqi birlashmada foydalaniladigan jadval.

Boshqacha qilib aytganda, ko'rsatilgan asosiy jadvalga ega dinamik ro'yxat, agar so'rovni bajarish natijasida,
ma'lumotlar manbai sifatida ko'rsatilgan bo'lsa, asosiy jadvaldan olingan qatorlar soni ko'paymaydi (tayinlangan tanlovni hisobga olgan holda). Agar so'rovni bajarish natijasida asosiy jadvaldan so'rov orqali olingan qatorlar soni ko'paysa, bu ro'yxat tomonidan ko'rsatilgan jadval yozuvlari kalitining o'ziga xosligining buzilishiga olib keladi. Bunday holda siz asosiy dinamik ro'yxat jadvalidan foydalanishni o'chirib qo'yishingiz kerak.
Dinamik ro'yxat bilan ishlashda siz ro'yxatda ko'rsatilgan tafsilotlarga kirish huquqlarini hisobga olishingiz kerak:
● Har doim foydalanish xususiyati bilan belgilangan, lekin joriy foydalanuvchi Ko‘rish huquqiga ega bo‘lmagan dinamik ro‘yxat ustunlaridagi ma’lumotlar mijoz tomoniga uzatilmaydi. Bunday ustunlar ma'lumotlariga kirish (CurrentData xususiyati va RowData() usuli yordamida)
mijoz tomonida mumkin emas.
● Agar joriy foydalanuvchi dinamik roʻyxatning asosiy maydonida Koʻrish huquqiga ega boʻlmasa, ushbu dinamik roʻyxatdan maʼlumotlarni olish kirish buzilishi xatosiga olib keladi.
Ro'yxat ro'yxatini ko'rsatadigan dinamik ro'yxat uchun ro'yxatni interaktiv tarzda sozlash imkoniyati yo'q.
Dinamik ro'yxatning ustunlari va sozlamalari tanlov maydonlarining taxalluslari yordamida so'rov maydonlari bilan bog'langan. Agar tanlov maydoni uchun so'rovda taxallus aniq ko'rsatilmagan bo'lsa va maydon tizimli bo'lsa, u holda o'rnatilgan tilning inglizcha versiyasi uchun maydon nomi taxallus sifatida ishlatiladi.
Belgilangan munosabatlar shuni anglatadiki, o'zgartirilganda (yoki avtomatik taxallus ishlatilgan maydon uchun taxallus aniq ko'rsatilganda)
dinamik ro'yxat ma'lumotlarini yaratuvchi so'rov maydonining taxalluslari, dinamik ro'yxat atributlari sozlamalari yo'qoladi, shakl elementlari ko'rsatilgan tafsilotlarni "yo'qotadi", dinamik ro'yxat sozlamalari noto'g'ri bo'ladi va hokazo.
Agar dinamik ro'yxatning ma'lumotlar manbai jadval bo'lsa (muntazam yoki virtual), bu sizga davr bo'yicha tanlashni o'rnatish imkonini beradi, agar foydalanuvchi shunday dinamik ro'yxatda ko'rsatish davrini o'rnatsa (Sana oralig'ini o'rnatish ... buyrug'i),
Belgilangan davr chegaralari tanlov qiymatlari yoki virtual jadval parametrlari sifatida o'rnatiladi. Agar til kengaytmasi orqali
ma'lumotlar tarkibi tizimi uchun so'rovlar, virtual jadval parametrlarining nomlari aniq ko'rsatilgan - ko'rsatilgan parametrlarga ega
ismlar. Ma'lumotlarni ko'rsatish yoki qayta ishlash muddatini nazorat qilish mumkin bo'lgan jadvallar:
● ro'yxatga olish jadvallari (asosiy yoki virtual), ular uchun davr bo'yicha tanlash mumkin (hisoblash reestri uchun - ro'yxatdan o'tish davri bo'yicha);
● hujjatlarning asosiy jadvallari, biznes jarayonlari va vazifalari;
● hujjat jurnallarining asosiy jadvallari;
● asosiy ketma-ketlik jadvallari, ketma-ketlik chegarasi jadvallari.
Dinamik ro'yxat so'rovi parametri massiv yoki qiymatlar ro'yxati bo'lishi mumkin. Biroq, agar parametr qiymatlar ro'yxati bo'lsa, tanlash qiymati sifatida faqat ro'yxatdagi birinchi qiymat ishlatiladi. Agar dinamik ro'yxat parametrlari bo'lgan so'rovdan foydalansa, parametr qiymatlarini dastlabki sozlash OnCreateOnServer ishlov beruvchisida bajarilishi kerak.
Dinamik ro'yxat ma'lumotlarini ko'rsatishda quyidagi fikrlarni yodda tuting:
● Dinamik roʻyxatning xususiyatlarini dasturiy ravishda oʻzgartirganingizda, roʻyxat bilan bogʻlangan buyruq panellari avtomatik ravishda qayta toʻldirilmaydi.
ushbu dinamik ro'yxat bilan.
● Agar bir nechta maydonlar guruhda guruhlash rejimiga ega bo‘lgan guruhga guruhlangan bo‘lsa va guruhlangan maydonlarda belgilash katakchasi sifatida ko‘rsatiladigan maydon mavjud bo‘lsa, bu belgilash katakchasi har doim hosil bo‘lgan katakchada birinchi bo‘lib ko‘rsatiladi (chap tomonda). matn).
Dinamik ro'yxatda ifodalari parametrlar, maydonlar yoki harflarni o'z ichiga olgan maydonlar uchun ma'lumotlar turini aniqlashda, natijada paydo bo'lgan turdagi maydonlar va harflar turlari bilan aniqlanadi. Agar parametr qiymati turi olingan ma'lumotlar turiga kiritilmagan bo'lsa, uning qiymati kesiladi.
Masalan, quyidagi misolda maydon Number turida bo'ladi.

TANLOV
YOLG'ON BO'LSA
KEYIN 5
BOSHQA
&Parametr
OXIRI

Parametr parametrini boshqa turdagi qiymatga o'rnatgan bo'lsangiz, ushbu maydon uchun dinamik ro'yxat 0 qiymatini oladi (Raqam turi uchun standart qiymat).
Agar bunday vaziyatda siz boshqa turdagi parametrni tanlashingiz kerak bo'lsa, so'rovlar tili konstruktsiyasidan foydalanish tavsiya etiladi. EXPRESS. Masalan,
agar yuqoridagi misolda parametrga 100 belgidan ortiq bo'lmagan satrni o'tkazish kerak bo'lsa, unda siz parametrning oddiy ko'rsatkichini aniq turdagi cast bilan ifoda bilan almashtirishingiz kerak:

TANLOV
YOLG'ON BO'LSA
KEYIN 5
BOSHQA
EXPRESS(&Parameter AS String(100))
OXIRI

Agar dinamik ro'yxat so'rovining ixtiyoriy matni tanlov maydonlarining ifodalarida parametrlardan foydalansa, siz konstruktsiyadan foydalangan holda parametrlar turini aniq ko'rsatishingiz kerak. EXPRESS. Masalan, o'rniga &Nomenklatura AS Nomenklaturasi foydalanish
EXPRESS(&Nomenklatura AS Katalog.Nomenklatura) AS Nomenklatura. Aks holda, qidiruv paneli orqali qidirish mumkin
noto'g'ri yoki xatoliklarni keltirib chiqaradi.

3. Dinamik ro'yxat bilan ma'lumotlarni olish va keshlash usullari

Ko'rsatish uchun ma'lumotlarni olishda dinamik ro'yxat uchta usuldan birini qo'llaydi:
1. Ma'lumotlar bazasidan o'qish bir vaqtning o'zida ro'yxat tomonidan ko'rsatilgan qatorlar sonidan bir oz ko'proq (lekin 20 dan kam bo'lmagan) ma'lumotlar elementlari soniga ega bo'laklarda amalga oshiriladi. Ma'lumotlar serverda keshlanmagan.
2. Ma'lumotlar bazasidan o'qish 1000 ma'lumotlar elementi sahifalarida amalga oshiriladi. Ma'lumotlar serverda keshlanmoqda. Ierarxik ma'lumotlar keshlanadi: har bir ota-ona uchun 2 sahifadan ko'p bo'lmagan elementlar keshlanadi. Har bir dinamik ro'yxatda 20 sahifadan ko'p bo'lmagan elementlar keshlanadi. Keshlash quyidagi jadvallar uchun dinamik roʻyxat orqali yoqiladi:
● Tanlov mezonlari;
● Buxgalteriya registrining barcha jadvallari, asosiy jadval va MovementsSubconto jadvalidan tashqari;
● Asosiy jadvaldan tashqari barcha jamlash registrlari jadvallari;
● Asosiy jadvaldan tashqari axborot registrining barcha jadvallari;
● Asosiy jadvaldan tashqari hisob registrining barcha jadvallari;
● Ijrochi tomonidan topshiriqlarning virtual jadvali;
● Kalitsiz tashqi manbalar jadvallari;
● Tashqi manbalardan olingan kublar.

3. Ma'lumotlar bazasidan o'qish 1000 elementli sahifalarda amalga oshiriladi. Birinchi qism 1 sahifaga teng. Har bir keyingi qism 1 sahifaga ko'payadi (oldingi namunaning oxiriga yetganda). "Ko'rish nuqtasi" ko'rsatilgan ma'lumotlarning oxiriga qanchalik yaqin bo'lsa, ma'lumotlar bazasidan namuna kattaroq o'qiladi va natijada ko'rsatilgan barcha ma'lumotlarga teng bo'ladi. Ma'lumotlar serverda keshlanmoqda. Kesh va dinamik ro'yxatdagi yozuvlarning maksimal soni - 1 000 000.
Dinamik ro'yxatning asosiy jadvalida nima tanlanganiga va Dinamik o'qish xususiyati qanday qiymatga ega bo'lishiga qarab, ma'lumotlarni o'qishning u yoki bu usuli qo'llaniladi:

● Asosiy jadval mulkining qiymati sifatida quyidagi jadvallardan biri ko'rsatilgan: ayirboshlash rejasi, ma'lumotnoma, hujjatlar ro'yxati, hujjatlar jurnali, xarakteristikalar turlari rejasi, hisoblar rejasi, hisob-kitob turlari rejasi, ish jarayoni, vazifa, jadval. biznes jarayonining nuqtalari:



● Asosiy jadval xossasining qiymati sifatida quyidagi jadvallardan biri ko‘rsatilgan: axborot registrining asosiy jadvali, jamg‘arish registri, buxgalteriya registri, hisob registrlari, MovementsSubconto hisob registrining virtual jadvali:

● Dinamik o‘qish xususiyati:
● O'rnatilgan: 1-usul ishlatiladi (usullarning tavsifi yuqorida keltirilgan).
● Qayta tiklash: 2-usul ishlatiladi (usullarning tavsifi yuqorida keltirilgan).

● Asosiy jadval xususiyati tanlov mezonlari jadvalini yoki ijrochi bo‘yicha topshiriqlar jadvalini o‘z ichiga oladi (Tasks By Performer):
● Jadval qatorini aniqlovchi kalit: Havola.

● Main table xossasi SliceFirst yoki SliceLast axborot registrining virtual jadvalini belgilaydi:
● Jadval qatorini aniqlovchi kalit: RecordKey.
● Dinamik o‘qish xususiyati qo‘llanilmaydi.
● 2-usul qo'llaniladi (usullarning tavsifi yuqorida keltirilgan).

● Asosiy jadval xususiyati virtual registr jadvallaridan biriga o‘rnatiladi, yuqorida sanab o‘tilganlardan tashqari:

● Dinamik o‘qish xususiyati qo‘llanilmaydi.

● Asosiy jadval xususiyati belgilanmagan, ixtiyoriy so‘rov ishlatiladi:
● Jadval qatorini aniqlovchi kalit: Raqam.
● Dinamik o‘qish xususiyati qo‘llanilmaydi.
● 3-usul qo'llaniladi (usullarning tavsifi yuqorida keltirilgan).

Ko'rsatish uchun ma'lumotlar mijozga qismlarga bo'linadi, ularning o'lchami ma'lumotlarni o'qishning 1-usulidagi qism hajmiga o'xshaydi (ushbu bo'limning boshida tasvirlangan).
Dinamik ro'yxatni o'z ichiga olgan shaklni yaratganingizda, har bir ko'rinadigan dinamik ro'yxat uchun 45 ta ma'lumot elementi dastlab mijozga uzatiladi (agar ro'yxatda 45 dan ortiq element bo'lsa). Agar dinamik ro'yxat 45 dan ortiq qatorlarni ko'rsatsa, etishmayotgan ma'lumotlar elementlarini olish uchun forma ochilganda qo'shimcha server chaqiruvi amalga oshiriladi.

4. Dinamik ro'yxat sozlamalari

Xususiyatlar ro'yxati sozlamalari - "Ochish" giperhavolasini bosish dinamik ro'yxatni ko'rsatishni sozlash uchun shaklni ochadi. Ro'yxatni o'rnatish ma'lumotlar tarkibi tizimidagi shunga o'xshash operatsiyalar bilan bir xil tarzda amalga oshiriladi.


Guruch. 2. Dinamik ro'yxatni shartli uslublash

Konfiguratsiyada dinamik ro'yxatni o'rnatishda dastur ishlab chiqaruvchisi quyidagilarni amalga oshirish imkoniyatiga ega:
● saralashni xohlagan maydonlarni o'rnating;
● ro‘yxatdagi ma’lumotlarning tanlanishini tavsiflash;
● shartli ko'rinish sozlamalarini belgilash;
● maʼlumotlarni guruhlash uchun maydonlarni oʻrnating.
Tizim tomonidan o'rnatilgan standart tartiblash sizni qoniqtirmasa, tartiblashni ishlab chiquvchiga o'rnatish mantiqan.

MASLAHAT. Shuni esda tutish kerakki, saralash maydonlarini noto'g'ri tanlash (shuningdek, ma'lumotlarni tanlash va guruhlash) dinamik namuna olish samaradorligiga salbiy ta'sir qiladi.
Ilova ishlab chiqaruvchisi nuqtai nazaridan dinamik ro'yxat sozlamalari o'zaro bog'langan bir nechta qismlardan iborat. Dinamik ro'yxat sozlamalarini boshqarishingiz mumkin bo'lgan asosiy xususiyat LinkerSettings. Ushbu ob'ekt tizim ishga tushganda dinamik ro'yxatga qo'llaniladigan yakuniy sozlamalarni aniqlaydigan uchta sozlamalar to'plamini o'z ichiga oladi:
● Parametrlar – Konfigurator rejimida yaratilgan sozlamalar. Dinamik ro'yxatning Buyurtma xususiyati dinamik ro'yxat sozlamalari yaratuvchisining Settings.Order xususiyatiga tezkor kirishni ta'minlaydi, shuning uchun quyidagi konstruktsiyalar ekvivalentdir:
List.Order va List.SettingsLinker.Settings.Order;
● UserSettings – bular 1C:Enterprise rejimida foydalanuvchi tomonidan o‘zgartiriladigan sozlamalar;
● Ruxsat etilgan sozlamalar – bu sozlamalar o‘rnatilgan tildan o‘rnatiladi. Ushbu xususiyat, shuningdek, uning parametrlari yordamida shaklga o'tkaziladigan tanlov qiymatlarini o'z ichiga oladi. Dinamik ro'yxat xususiyatlari Tanlash, Variantlar, Shartli ko'rinish dinamik ro'yxat sozlamalari yaratuvchisining belgilangan sozlamalariga tezkor kirishni ta'minlaydi. Boshqacha qilib aytganda, bu qo'ng'iroqlar ekvivalentdir:
List.Settings Composer.FixedSettings.Selection va List.Selection.
Dinamik ro'yxat uchun yakuniy sozlamalarni yaratishda turli xil sozlamalar variantlari quyidagicha birlashtiriladi:
● Agar har qanday turdagi sozlamalar butunlay moslashtirilgan deb belgilangan bo'lsa, natijada olingan sozlamalar maxsus sozlamalarni o'z ichiga oladi
(List.ComposerSettings.UserSettings). Bundan tashqari, agar biron bir sozlash elementlari mavjud emas deb belgilangan bo'lsa, u holda bu sozlamalar List.Settings Composer xususiyatidan olingan sozlamalarga joylashtiriladi. Sozlamalar.
● Har qanday turdagi sozlamalar toʻliq emas, balki element boʻyicha moslashtirilgan sifatida belgilangan boʻlsa, unda:
● Maxsus deb belgilangan elementlar List.SettingsComposer.CustomSettings xususiyatidan olingan sozlamalarga kiritiladi.
● Mavjud emas deb belgilangan elementlar List.SettingsComposer.Settings xususiyatidan olingan sozlamalarga kiritiladi.
● Ruxsat etilgan sozlamalar (List.SettingsComposer.FixedSettings) natijada paydo bo'lgan sozlamalarga "xuddi shunday" qo'shiladi. Shu bilan birga, sobit va foydalanuvchi sozlamalari bir xil nomdagi sozlamalarni o'z ichiga olishi mumkin emas, masalan, vaziyatda bir xil chap qiymatga ega tanlov.

Agar dinamik ro'yxat sozlamalari funktsional opsiyalardan foydalangan holda o'chirilgan sozlamalarni o'z ichiga olsa, dinamik ro'yxat ma'lumotlari olinganda ushbu sozlamalar mavjud sozlamalar ro'yxatidan o'chiriladi.
Qaysi sozlamalar foydalanuvchi uchun mavjud bo'lishini va qaysi biri yo'qligini nazorat qilish dinamik ro'yxat sozlamalari oynasida amalga oshiriladi.


Guruch. 3. Foydalanuvchi sozlamalariga kiritishni nazorat qilish

Oynaning pastki qismidagi tasdiqlash qutisi (3-rasmga qarang) sozlamalardagi barcha turdagi sozlamalarni (normal yoki tez) joylashtirish uchun javobgardir. Bu xususiyat tanlash, tartiblash, guruhlash va shartlashtirish uchun mavjud. Agar sozlamalar Tez tanlash tahrirlash rejimida belgilangan bo'lsa, dinamik ro'yxatni ko'rsatadigan shakl jadvalining Foydalanuvchi sozlamalari guruhi xususiyatida siz tezkor foydalanuvchi sozlamalari bilan bog'liq bo'lgan shaklning bo'sh guruhini belgilashingiz kerak. dinamik ro'yxat joylashgan bo'ladi. Agar guruh ko'rsatilmagan bo'lsa, foydalanuvchining tezkor sozlamalari shaklda ko'rsatilmaydi. Bundan tashqari, dinamik ro'yxat kengaytmasining CreateCustomSettingsFormItems() usuli yordamida o'rnatilgan tildan foydalanib, maxsus sozlamalarni yaratishni aniq chaqirish mumkin.
Shuningdek, foydalanuvchi sozlamalarida muayyan sozlamalar elementlarini joylashtirishni tanlash mumkin. Bu xususiyat tanlov va shartli dizayn elementlari uchun mavjud (3-rasmga qarang).

Agar dinamik ro'yxatni ochishda sizga biron bir maxsus sozlamalarni yuklash kerak bo'lsa, buni ikki usulda bajarish mumkin:
● UserSettings dinamik roʻyxat shakli parametridan foydalanish. Ushbu parametrdagi ma'lumotlar foydalanuvchining dinamik ro'yxat sozlamalariga joylashtiriladi.
● Dinamik roʻyxat shakli parametriUserSettingsKey yordamida. Shaklni ochishda ushbu parametrni ko'rsatsangiz, u holda ko'rsatilgan kalit bilan sozlamalar xotirasida joylashgan foydalanuvchi sozlamalari shaklning asosiy atributi bo'lgan dinamik ro'yxatga yuklanadi.

5. Dinamik ro'yxatda qidirish

Shaklda joylashgan dinamik ro'yxat ko'rsatilgan ma'lumotlarni interaktiv tarzda qidirish imkoniyatini beradi. Qidiruv quyidagi vositalar yordamida amalga oshirilishi mumkin: qidiruv paneli, qidiruv dialogi, joriy qiymatni qidirish, qidiruv tarixidan foydalanish va davrni belgilash (hujjatlarni ko'rsatadigan dinamik ro'yxatlar uchun). Qidiruv natijasi cheklangan yozuvlar to'plamidir
qidiruv mezonlariga mos keladigan dinamik ro'yxat (ma'lum foydalanuvchi uchun mavjud bo'lganlar).
Dinamik ro'yxatni qidirish imkoniyatlarini boshqarish uchun boshqariladigan shaklda dinamik ro'yxatni ko'rsatadigan uchta jadval xususiyati mavjud:
● Qidiruv satrining joylashuvi – qidiruv qatorining o‘rnini aniqlaydi. Quyidagi qiymatlarni qabul qilishi mumkin: Avto, Buyruqlar paneli, Yo'q, Yuqori, Pastki.


Guruch. 4. Dinamik ro'yxatda qidirish satri

Agar bu xususiyatning qiymati Buyruqlar paneliga o'rnatilgan bo'lsa, u holda qidiruv satri forma buyruqlar panelida (agar dinamik ro'yxat asosiy shakl atributi bo'lsa) yoki dinamik ro'yxat bilan bog'langan buyruqlar panelida ko'rsatiladi. Buyruqlar satriga joylashtirilgan qidiruv paneli har doim buyruqlar satrining o'ng chetiga bosiladi (qidiruv satrining o'ng tomonida joylashgan tugmalar bilan birga).
Agar xususiyat No ga o'rnatilgan bo'lsa, u holda qidiruv satri formada bo'lmaydi va qidiruv satrini yozishni boshlaganingizda dialog oynasi ochiladi.
Agar xususiyat Yuqoriga o'rnatilgan bo'lsa, qidiruv paneli ro'yxat buyruq satri va dinamik ro'yxatni ko'rsatadigan jadval o'rtasida joylashgan bo'ladi. Agar xususiyat Pastga o'rnatilgan bo'lsa, qidiruv qatori dinamik ro'yxatni ko'rsatadigan jadvaldan keyin darhol joylashtiriladi.


● Muvofiqlik rejimi xususiyati Foydalanilmasin yoki 8.3.4-versiyadan eski deb o‘rnatilgan bo‘lsa – qiymat Buyruqlar panelidir.
Qidiruv qatoriga quyidagi tarzda o'ting:
● Ctrl+F tugmalar birikmasini bosish orqali;
● Sichqoncha;
● Dinamik roʻyxatda yozishni boshlaganingizda (dinamik roʻyxatning SearchOnTyping xususiyati qiymatini hisobga olgan holda).
● View State Position – ko‘rish holati qayerda ko‘rsatilishini tavsiflaydi: qaysi maydonlar qidirilgan va qanday qiymatlar
har bir sohada izlandi. Quyidagi qiymatlarni qabul qilishi mumkin: Auto, None, Top, Bottom


Guruch. 5. Dinamik ro'yxatdagi qidiruv holati

Agar xususiyat No ga o'rnatilgan bo'lsa, u holda ko'rinish holati shaklda mavjud bo'lmaydi. Natijada, qidiruv tugallangan yoki tugallanmaganligini faqatgina Qidiruvni bekor qilish tugmasi mavjudligi orqali aniqlash mumkin bo'ladi.
Agar xususiyat Yuqoriga o'rnatilgan bo'lsa, ko'rish holati ro'yxat buyruqlar paneli va dinamik ro'yxatni aks ettiruvchi jadval o'rtasida joylashgan bo'ladi. Agar xususiyat Pastga o'rnatilgan bo'lsa, ko'rish holati dinamik ro'yxatni ko'rsatadigan jadvaldan keyin darhol joylashtiriladi.
Agar shakl 1C: Enterprise 8.3.4 va undan oldingi versiyalarida yaratilgan bo'lsa, xususiyat No ga o'rnatiladi. Agar shakl 1C: Enterprise 8.3.5 va undan yuqori versiyalarida yaratilgan bo'lsa, xususiyat Avtomatikga o'rnatiladi. Bu holda mulkning haqiqiy qiymati quyidagicha aniqlanadi:
● Moslik rejimi xususiyati 8.3.4-versiyaga (va undan pastroq) o'rnatilgan bo'lsa - qiymat No;
● Moslik rejimi xossasi Foydalanilmasin yoki 8.3.4-versiyadan eskiroq qilib o‘rnatilgan bo‘lsa – Yuqori qiymati;
● Search Control Position - Qidiruvni boshqarish tugmasi qayerda paydo bo'lishini aniqlaydi. Tugma quyidagi ma'lumotlarni o'z ichiga olgan menyuni ochadi: buyruqlar Joriy qiymat bo'yicha topish, Kengaytirilgan qidiruv, Qidiruvni bekor qilish, Vaqtni belgilash (hujjat va jurnal ro'yxatlari uchun) va qidiruv so'rovlari tarixi (oxirgi 5 so'rov). Xususiyat quyidagi qiymatlarni qabul qilishi mumkin: Auto, None, Buyruqlar paneli.


Guruch. 6. Dinamik ro'yxatda qidiruvni boshqarish

Agar xususiyat No ga o'rnatilgan bo'lsa, u holda qidiruvni boshqarish tugmasi formada bo'lmaydi (lekin buyruqlar "Ko'proq" menyusi yordamida mavjud bo'ladi). Buyruqlar paneli xossasining qiymati dinamik ro'yxatni ko'rsatadigan jadval bilan bog'langan buyruqlar satriga tugmani joylashtiradi.
Agar shakl 1C: Enterprise 8.3.4 va undan oldingi versiyalarida yaratilgan bo'lsa, xususiyat No ga o'rnatiladi. Agar shakl 1C: Enterprise 8.3.5 va undan yuqori versiyalarida yaratilgan bo'lsa, xususiyat Avtomatikga o'rnatiladi. Bu holda mulkning haqiqiy qiymati quyidagicha aniqlanadi:
● Moslik rejimi xususiyati 8.3.4-versiyaga (va undan pastroq) o'rnatilgan bo'lsa - qiymat No;
● Moslik rejimi xossasi Foydalanilmasin yoki 8.3.4-versiyadan eski deb o‘rnatilgan bo‘lsa – qiymat Buyruqlar paneli;
Agar formada bir nechta buyruqlar paneli mavjud bo'lsa, buyruqlar manbai boshqariladigan shaklning bitta jadvali (dinamik ro'yxat ma'lumotlarini ko'rsatish), u holda qidiruv liniyasi va qidiruvni boshqarish tugmasi faqat bitta buyruq panelida joylashgan bo'ladi:
● Yoki dinamik ro‘yxatning buyruqlar satrida (agar u avtomatik to‘ldirish yoqilgan bo‘lsa)
● Yoki qolgan buyruqlar panellaridan birida.

Keling, dinamik ro'yxatda qidiruvdan foydalanish xususiyatlarini ko'rib chiqaylik:
● Qidiruvdan foydalanishga qulay bo'lishi uchun (shu jumladan unumdorlik nuqtai nazaridan) dinamik ro'yxatning asosiy jadvali sifatida ishlatilishi mumkin bo'lgan barcha konfiguratsiya ob'ektlari uchun to'liq matnli qidiruvni yoqishingiz kerak. Shuningdek, to'liq matnli qidiruv dinamik ro'yxatda ko'rsatilishi mumkin bo'lgan va qidiruv talab qilinishi mumkin bo'lgan konfiguratsiya ob'ektlarining barcha tafsilotlarini o'z ichiga olishi kerak.
Agar ob'ekt to'liq matnli qidiruvdan chiqarib tashlangan bo'lsa, unda ko'rib chiqilayotgan qidiruv mexanizmi ishlaydi, ammo bunday qidiruvning samaradorligi juda past bo'ladi. To'liq matnli qidiruv bilan indekslanmagan ob'ektlarda qidiruvdan foydalanish tavsiya etilmaydi.
● Ilova yechimida toʻliq matnli qidiruv indeksini muntazam yangilab turuvchi muntazam vazifa boʻlishi kerak.

● Qidiruv dinamik roʻyxatning barcha ustunlari (va konfiguratsiya obyekti) boʻylab emas, faqat jadvalda koʻrsatilgan ustunlar orqali amalga oshiriladi.
● Dinamik roʻyxatda mos yozuvlar turlari boʻyicha ixtiyoriy koʻrinishga ega boʻlgan maydonlar boʻyicha qidirish quyidagi uchun ishlatiladigan maydonlar tomonidan amalga oshiriladi.
vakillikning shakllanishi (qarang bu yerda). Ko'rinishga kiritilgan maydonlar tegishli ob'ektning ViewFieldGettingProcessing() ishlov beruvchisini hisobga olgan holda olinadi.
● Belgilangan asosiy jadvalga ega dinamik roʻyxatlar uchun asosiy jadvalda toʻliq matnli qidiruvdan foydalaniladi. Asosiy jadvaldagi barcha indekslanmagan havolalar to'liq matnli qidiruv natijalariga qo'shiladi. Asosiy jadvalni to'liq matnli qidirish natijasi kalit maydonlar bo'yicha tanlov sifatida ishlatiladi. To'liq matnli qidiruv boshqa jadvallar ro'yxatida ko'rsatilgan maydonlarda ham amalga oshiriladi (agar maydon va konfiguratsiya ob'ekti to'liq matnli qidiruvdan foydalansa). To'liq matnli qidiruv yoqilmasa, ma'lumotlar bo'lishi mumkin
topildi, lekin qidiruvning o'zi juda sekin bo'ladi.
To'liq matnli qidiruvni amalga oshirishda xatolik yuzaga kelsa, qidiruv to'liq matnli qidiruvni qo'llamasdan amalga oshiriladi.
Misol uchun, bu ma'lumot bazasida ushbu harf bilan boshlangan bitta harf va ko'p sonli qatorlarni qidirishda sodir bo'lishi mumkin.
● Dinamik roʻyxatning asosiy jadvalidagi maydon uchun Teng qiyoslash turidagi tanlov ishlatilsa, toʻliq matnli qidiruvni amalga oshirishda ushbu jadval uchun qidiruv soʻroviga tanlov qiymati qoʻshiladi.
● Qidiruv qatori so‘zlarga bo‘lingan. Ushbu bo'lim quyidagi qoidalarga muvofiq amalga oshiriladi:
● Chiziq ajratuvchi sifatida boʻsh joy va yorliq belgilar yordamida uziladi.
● Keyin hosil bo'lgan har bir parcha qayta ishlanadi:
● Agar fragment joriy seans tiliga asoslangan sana tasviri (vaqt bilan yoki vaqtsiz) bo'lsa, so'z fragmentdir.
● Aks holda, fragment ajratuvchi sifatida “,.-/\” belgilaridan foydalangan holda bo‘linadi. Bunday holda, satrning har bir hosil bo'lgan qismi so'z sifatida qabul qilinadi.

● Har bir so'z uchun "OR tomonidan" birlashtirilgan o'ziga xos shartlar to'plami shakllantiriladi. Ushbu shartlar to'plami, agar ushbu maydon olingan jadvaldagi berilgan so'z uchun to'liq matnli qidiruv kamida bitta ob'ektni qaytarsa ​​yoki ushbu maydon uchun to'liq matnli qidiruv ishlatilmagan bo'lsa, yaratiladi. Shartlar quyidagicha shakllantiriladi:
● String tipidagi maydon uchun shart FieldName LIKE %Word%.
● Number tipidagi maydon uchun shart FieldName=Value ko‘rinishiga ega bo‘lib, bu yerda Qiymat Raqam turiga aylantirilgan so‘zdir. Agar castni amalga oshirib bo'lmasa, maydon qidiruvi amalga oshirilmaydi.
● Ushbu so'z joriy seans uchun belgilangan standart mantiqiy ko'rinishda pastki qator sifatida qidiriladi. Agar qidiruv so'zi ko'rinishda topilsa, u so'z topilgan ko'rinishga mos keladigan qiymatni qidiradi. Bunday holda, qidiruvda Format forma elementi xususiyati yordamida ko'rsatilgan ko'rinishlardan foydalanilmaydi.
● Sana tipidagi maydon uchun shart FieldName>=StartofDay(Word) ANDFieldName kabi ko'rinadi.<=КонецДня(Слово). Если Слово подобно дате, в которой год
bir yoki ikki raqam bilan ko'rsatilgan bo'lsa, yil joriy asrga qisqartiriladi va bu qiymat qidiruv shartiga qo'shiladi.
● Malumot maydonlari uchun qidiruv mos yozuvlar ko'rinishini shakllantirish uchun ishlatiladigan maydonlarda amalga oshiriladi. Ushbu maydonlarning har birida qidiring
yuqorida tavsiflangan qoidalarga muvofiq amalga oshiriladi. Qidiruv maxsus ma'lumotlar ko'rinishini shakllantirish uchun ishlatiladigan maydonlardan foydalanmaydi.
Har bir so'z uchun shartlar to'plami "VA" bilan birlashtirilgan.
● Boshida nolga ega boʻlgan qiymatlar uchun siz bosh nollari boʻlgan qatorni yoki nolsiz koʻrsatilgan qatorni qidirishingiz mumkin.
● Agar dinamik roʻyxat hujjatlar roʻyxatini yoki hujjat tarixini koʻrsatsa, siz koʻrsatgan roʻyxatni koʻrish oraligʻi kerakli dinamik roʻyxat uchun koʻrish holatini koʻrsatish uchun ajratilgan shakl sohasida ham koʻrsatiladi.
● Agar dinamik ro'yxatning asosiy jadvali tanlash mezoni bo'lsa, joriy qiymat bo'yicha qidirish buyrug'i mavjud emas.
● Topilgan satr bo'laklari jadvalda ko'rsatilganda ajratib ko'rsatiladi.
● Bitta ustun uchun faqat bitta qidiruv qatori qo'llab-quvvatlanadi. Allaqachon qidirilayotgan ustun uchun yangi qidiruv soʻrovini qoʻshganda, ikkita qidiruv soʻrovi qoʻshilgan oʻrniga qidiruv ifodasi almashtiriladi.
● Agar formada shakl elementi qoʻshimchasi boʻlmasa, dinamik roʻyxatni aks ettiruvchi jadval bilan bogʻlangan Qidiruv satrini koʻrsatish (shakl elementi qoʻshimchasi Manba xususiyati) boʻlsa, Ctrl+F tugmalar birikmasini bosish qidiruv dialogini ochadi.


Guruch. 7. Qidiruv dialog oynasi

Agar formada shakl elementi qoʻshimchasi mavjud boʻlsa, dinamik roʻyxatni aks ettiruvchi jadval (shakl elementi qoʻshimchasi Manba xususiyati) bilan bogʻlangan Qidiruv satrini koʻrsatish, u holda qidiruv dialogini ochish uchun Kengaytirilgan qidiruv buyrugʻidan foydalaning.
● Qidiruv oynasidan foydalanganda quyidagi fikrlarni yodda tuting:
● Klaviatura yorlig‘i yordamida qidiruv dialogini ochish joriy katakning qiymatini Nima qidirish kerak qatorida paydo bo‘lishiga olib keladi va “Qanday qidirish kerak” tugmasi qiymati “To‘liq moslik”ga o‘rnatiladi.

● Dinamik roʻyxatda qidiruv satrini toʻgʻridan-toʻgʻri yozishni boshlash orqali qidiruv dialogini ochish, “Qanday qidirish kerak” tugmasi qiymatining satrning bir qismi boʻyicha qiymatiga oʻrnatilishiga olib keladi va kiritilgan matn “Nima” qatorida tugaydi. qidiruv maydoniga.

6. Dinamik ro'yxat orqali ko'rsatilgan ma'lumotlarni olish

Dinamik ro'yxatlardan foydalanganda, qo'llaniladigan tanlovlar va qidiruvlarni hisobga olgan holda, hozirda dinamik ro'yxatda ko'rsatilgan ma'lumotlar bo'yicha turli xil amallarni bajarishingiz kerak bo'lishi mumkin. Bunday harakatlarga quyidagilar kiradi: ko'rsatilgan ma'lumotlarni qayta ishlash, masalan, tanlangan hujjatlarni qayta yuborish yoki tanlangan ob'ektlar uchun ba'zi tafsilotlarni o'rnatish, mavjud ob'ektlar ro'yxatini yaratish (dizayn bilan va boshqalar), masalan, chop etish yoki elektron jadval hujjatiga saqlash uchun.
Dinamik ro'yxatda ko'rsatiladigan ma'lumotlarni olish uchun siz GetExecutableDataCompositionSchema() va
GetExecutableDataCompositionSettings().
Ma'lumotni qabul qilish misoli:

Sxema = Elements.List.GetExecutableDataCompositionSchema();
Sozlamalar = Items.List.GetExecutableDataCompositionSettings();
LayoutLinker = newDataCompositionLayoutLinker();
LayoutLayout = LayoutComposer.Execute(Sxema, Sozlamalar);
CompositionProcessor = newDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout);
OutputProcessor = New OutputProcessorDataCompositionResultInTabularDocument;
ReturnOutputProcessor.Output(CompositionProcessor);

Qiymatlar to'plamiga ma'lumotlarni olish (jadval yoki qiymatlar ro'yxati) xuddi shu tarzda amalga oshiriladi.
Dinamik ro'yxat ma'lumotlarini shu tarzda olish amaliy echimlarni ishlab chiqishda e'tiborga olinishi kerak bo'lgan bir qator xususiyatlarga ega:
● Quyidagi jadval dizayni qo‘llab-quvvatlanmaydi:
● o'zgaruvchan chiziq ranglari;
● Sarlavha rasmi;
● podvalning surati;
● Footer fon rangi;
● Altbilgi matn rangi;
● Altbilgi shrifti;
● podvalda gorizontal holat;
● Parol rejimi.
● Boshqariladigan shakl uchun belgilangan shartli ko'rinish qo'llab-quvvatlanmaydi;
● Bog'lanish turidagi maydon bo'yicha ierarxik jadvalni o'sish tartibida buyurtma qilganda, bo'sh havolani o'z ichiga olgan yozuvlar doimo birinchi bo'lib joylashtiriladi.

Ko'zoynak orqali uy eslatmalari

21.04.2014 Dinamik roʻyxat maʼlumotlari olinmoqda

8.3.6.1977 versiyasida amalga oshirilgan.

Biz dinamik ro'yxat yordamida ko'rsatilgan ma'lumotlarni osongina va qulay tarzda olish imkoniyatini joriy qildik.

Nostandart, "maxsus" shaklda chop etish uchun sizga dinamik ro'yxat ma'lumotlari kerak bo'lishi mumkin. Yoki ular bilan muayyan harakatlarni amalga oshirish uchun. Masalan, ma'lum mezonlar asosida ro'yxatda tanlagan barcha pudratchilarga xat yuboring.

Bundan tashqari, foydalanuvchi elementlar ro'yxatidan tashqari, ushbu ro'yxat bilan bog'liq bo'lgan umumiy ma'lumotlarni ham ko'rishni xohlaydigan bir qator vazifalar mavjud. Masalan, ma'lum bir mahsulot guruhi va ma'lum bir etkazib beruvchining mahsulotlarini tanlab, u darhol ma'lumotlar bazasida bunday mahsulotlarning umumiy sonini ko'rishni xohlaydi.

Dinamik ro'yxatning o'zi sizga bu ma'lumotni taqdim eta olmaydi. Dinamik ro'yxatning maqsadi katta hajmdagi ma'lumotlarni tez ko'rishni ta'minlashdir. Shuning uchun, u ma'lumotlarni bir yoki ikkita ekranda ko'rsatish uchun zarur bo'lgan qismlarga o'qiydi. Va "hech narsa bilmaydi", masalan, u hisoblashi kerak bo'lgan ma'lumotlarning umumiy miqdori haqida.

Umuman olganda, foydalanuvchi xohlagan qo'shimcha ma'lumotni olish uchun siz ma'lumotlar bazasi so'rovini bajarishingiz kerak. Dinamik ro'yxatda ishlatilgani bilan aynan bir xil.

Ilgari siz buni qila olardingiz. Lekin bu har doim ham oson emas edi. Axir, dinamik ro'yxat ishlaydigan asl so'rovning matniga qo'shimcha ravishda, foydalanuvchi ma'lumotlarni aks ettiruvchi jadvalda interaktiv tarzda o'rnatgan barcha tanlovlar, saralashlar va boshqa parametrlarni bilishingiz kerak edi.

Endi bu muammoni oddiygina hal qilish mumkin. Dinamik ro'yxat jadvalida endi ikkita yangi usul mavjud:

  • GetExecutableDataCompositionSchema();
  • GetExecutableDataCompositionSettings().

Shunday qilib, siz ma'lumotlarni joylashtirish sxemasining o'zini va eng muhimi, uning barcha sozlamalarini olasiz, buning natijasida foydalanuvchi ro'yxatni xuddi shunday ko'radi. Siz qilishingiz kerak bo'lgan yagona narsa tartibni dasturiy ravishda tuzish va uni qiymatlar to'plamida (dasturni qayta ishlash uchun) yoki elektron jadval hujjatida (ko'rsatish uchun) ko'rsatishdir:

Natijada siz dinamik ro'yxat jadvalida ko'rsatilgan ustunlar va satrlarni o'z ichiga olgan tuzilmani (yoki hisobotni) olasiz.

Muhim nuqta shundaki, siz dinamik ro'yxat jadvalidan olingan tartib va ​​sozlamalar, boshqa narsalar qatori, ustunlarning ko'rinishi va qo'llaniladigan qidiruvni hisobga oladi. Sozlamalar alohida olinganligi sababli, siz o'zingizning maqsadlaringiz uchun maydonlar tarkibini o'zgartirishingiz va, masalan, foydalanuvchiga ko'rinadiganlarni emas, balki ro'yxatning barcha ustunlarini olishingiz mumkin.

Elektron jadval hujjatiga chiqishda yana bir yoqimli daqiqa bor. Umuman olganda, hisobotning ko'rinishi sxema va sozlamalar qabul qilingan vaqtda dinamik ro'yxat jadvalining ko'rinishiga mos keladi. Jadvalning shartli dizayni, shu jumladan. Shaklning shartli dizaynini hisobotga o'tkazmoqchi bo'lsangiz, sizga qo'shimcha harakatlar kerak bo'ladi.

Nihoyat, har bir yetti yoshli bolaning orzusi ushaldi. 7.7 dasturi foydalanuvchilari ob'ektlarning oddiy tanlovini qanchalik tez-tez so'rashgan? Balanslarni, narxlarni va filtrlarni o'rnatishni ko'rishingiz uchun. Biz turli xil fokuslar, jumladan, tashqi komponentlarni yozishimiz kerak edi. 1C 8.2 da dinamik ro'yxatlar paydo bo'ldi. Men bu nima ekanligini va ular bizga 1C 8.3 da nima berishi mumkinligini ko'rib chiqishni taklif qilaman.

1C ning ma'lum bir sinov konfiguratsiyasini asos qilib olaylik: "Korxona hisobi 3.0". Biz hozir tanlov qilmaymiz, shunchaki "Nomenklatura" katalogiga boshqa tanlov shaklini qo'shamiz va uni vaqtincha asosiy qilib olamiz:

Yaratilganda, tizim sukut bo'yicha shaklga "Dinamik ro'yxat" turidagi jadval maydonini qo'shadi.

Keling, uning xususiyatlariga kirib, u erda nima borligini ko'rib chiqaylik.

Avvalo, biz "Maxsus so'rov" katagiga qiziqamiz. Bu bizga dinamik ro'yxatning barcha afzalliklarini ochib beradi. Biz parametrlar bilan o'z so'rovimizni yozish imkoniyatiga ega bo'lamiz. Qutini belgilang va "Ochish" havolasini bosing:

ichida tugagan kod bilan oyna ochiladi. Hozircha "Nomenklatura" katalogining barcha maydonlari shunchaki ro'yxatga olingan.

1C da 267 ta video darslarni bepul oling:

Ko'rib turganingizdek, "" qo'ng'iroq tugmasi va ro'yxat tarkibini dinamik ravishda o'zgartirishga imkon beradigan katakcha mavjud. Ya'ni, boshqa foydalanuvchi katalogdagi biror narsani o'zgartirsa, u bizning ro'yxatimizda ham o'zgaradi. Bundan tashqari, "Sozlamalar" yorlig'i mavjud, ammo biz bu haqda keyinroq gaplashamiz.

Dinamik ro'yxatdagi maxsus so'rov

Birinchidan, balanslar va narxlar bilan kerakli so'rovni yarataylik. Shunga o'xshash:

"Sozlamalar" yorlig'i

Va endi eng yaxshi qism! "Sozlamalar" yorlig'iga o'ting. Va biz darhol birinchi yorliqda so'rovning istalgan maydoni uchun istalgan tanlovni amalga oshirishimiz mumkinligini ko'ramiz:

Dinamik ro'yxatda so'rov parametrlarini dasturiy ravishda o'rnatish 1C 8.3

Shuni unutmangki, bizda so'rovda ikkita parametr mavjud: "Davr" va "Narx turi". Biz ularni so'rovga o'tkazishimiz kerak, aks holda xatolik yuz beradi.

Keling, ushbu parametrlarni forma parametrlariga yozamiz va forma moduliga quyidagi qatorlarni qo'shamiz:

&OnServerProcedureWhenCreatingOnServer(Muvaffaqiyatsizlik, StandardProcessing) roʻyxati. Variantlar. SetParameterValue("Davr" , Parametrlar. Sana) ; Roʻyxat. Variantlar. SetParameterValue("PriceType", Parameters.PriceType) ; EndProcedure

Konfiguratsiyalarni yakunlash jarayonida har bir 1C dasturchisi dinamik ro'yxatlarga duch keladi.
Dinamik ro'yxat ma'lumotlar bazasi ob'ektlari yoki ob'ekt bo'lmagan ma'lumotlarning turli ro'yxatlarini ko'rsatish uchun ishlatiladigan interfeys ob'ekti - registr yozuvlari.
Masalan, dinamik ro'yxat elementlar ro'yxatini ko'rsatish uchun ishlatiladi:

Dinamik ro'yxatning imkoniyatlarini ko'rsatish uchun tashqi ishlov berishni yaratamiz va asosiy shaklni qo'shamiz. Keling, "Dinamik ro'yxat" turi bilan shaklga yangi atribut qo'shamiz. Keling, uning xususiyatlariga kirib, u erda nima borligini ko'rib chiqaylik.
Bizni "Maxsus so'rov" xususiyati qiziqtiradi. Uni yoqish bizga dinamik ro'yxatning barcha imkoniyatlarini ko'rsatadi. Biz 1C: Enterprise tizimi so'rovlar tilining deyarli barcha imkoniyatlaridan foydalangan holda so'rov yozish imkoniyatiga ega bo'lamiz. Qutini belgilang va "Ochish" havolasini bosing:

Odatiy bo'lib, bizning ro'yxatimizda barcha omborlar uchun umumiy balansga ega bo'lgan narsalar ro'yxati ko'rsatiladi. Bunday ro'yxatni amalga oshirish uchun quyidagi so'rovni qo'shing:


Asosiy jadval sifatida biz "Katalog.Nomenklatura" ni tanlaymiz, bu bizga nomenklatura ro'yxatidagi kabi dinamik ro'yxat bilan ishlashga imkon beradi - o'chirish uchun katalog elementlarini qo'shish, o'zgartirish, belgilash. Bundan tashqari, asosiy jadvalni o'rnatish ma'lumotlarni dinamik ravishda o'qish imkonini beradi - bu tanlov kerak bo'lganda qismlarga bo'linishini anglatadi.
Keyin ro'yxatimiz uchun forma elementlarini yaratishimiz kerak:

Agar biz ushbu shaklda ishlov berishni amalga oshirishga harakat qilsak, biz xatoga duch kelamiz:


Uni yo'q qilish uchun siz "Davr" parametri uchun qiymatni belgilashingiz kerak. Buning uchun dinamik ro'yxatning "Parameters" to'plamining "SetParameterValue" usulidan foydalanishingiz mumkin. Usul ikkita parametrni oladi:
. "Parametr" - Turi: String; DataCompositionParameter. Siz o'rnatmoqchi bo'lgan parametr yoki ma'lumotlar tarkibi parametrining nomi;
. "Qiymat" - Turi: ixtiyoriy. Belgilanadigan qiymat.
Shaklning "OnCreateOnServer" ishlov beruvchisida chaqirilishi mumkin:

Savolingiz bormi yoki maslahatchi yordamiga muhtojmisiz?


Biz foydalanuvchiga qoldiqlarni olish muddatini o'zgartirish imkoniyatini beramiz. Buning uchun atributni va u bilan bog'langan "Sana" shakl elementini qo'shing:


"Sana" forma elementining "OnChange" ishlov beruvchisida biz "SetParameterValue" usulini chaqiramiz va tegishli atributning qiymatini qiymat sifatida o'tkazamiz. Xuddi shunga o'xshash shaklning "Serverda yaratishda" protsedurasini o'zgartiramiz. Usul mijozda mavjud bo'lgani uchun serverga qo'ng'iroq qilishning hojati yo'q:


Endi sana o'zgarganda, balanslar avtomatik ravishda yangilanadi:




Faraz qilaylik, foydalanuvchilar joriy qoldiqlarni yoki rejalashtirilgan tushumlarni ko'rishni xohlaydilar. Keling, amalga oshirish variantlaridan birini ko'rib chiqaylik. Keling, mantiqiy turdagi forma atributini va tegishli kalitni qo'shamiz:


Kommutatorning qiymatini o'zgartirganda, biz so'rov matnini o'zgartiramiz. Buni amalga oshirish uchun biz "O'zgartirishda" hodisa ishlovchisidan "Olingan miqdorni ko'rsatish" forma elementi uchun foydalanamiz. Atribut qiymatiga qarab dinamik ro'yxatning "QueryText" xususiyatini o'zgartirishimiz kerak. Ushbu xususiyat mijozda mavjud emasligi sababli, server protsedurasini chaqirish kerak:


Kiritilgan o'zgarishlar natijasi:



Sizga maqola yoqdimi? Do'stlaringizga ulashing: