Uy / Internet / 1s 8 dinamik ro'yxatdan yaratish. Dinamik ro'yxat sozlamalari

1s 8 dinamik ro'yxatdan yaratish. Dinamik ro'yxat sozlamalari

Nihoyat, har qanday “etti o‘yinchi”ning orzusi ushaldi. 7.7-dastur foydalanuvchilari odatdagi elementlarni tanlashni qanchalik tez-tez so'rashdi. Shunday qilib, siz balanslarni, narxlarni va o'rnatilgan filtrlarni ko'rishingiz mumkin. Men tashqi komponentlarni yozishgacha turli xil fokuslar bilan chiqishga majbur bo'ldim. 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.

Keling, ba'zilarini asos qilib olaylik sinov konfiguratsiyasi 1C: "Korxona hisobi 3.0". Biz hozir tanlov qilmaymiz, shunchaki "Nomenklatura" ma'lumotnomasiga boshqa tanlov shaklini qo'shing va uni vaqtincha asosiy qilib qo'ying:

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

Keling, uning xususiyatlariga boramiz va u erda nima borligini ko'rib chiqamiz.

Avvalo, bizni "O'zboshimchalik bilan so'rov" katagiga qiziqtiramiz. Aynan u bizga dinamik ro'yxatning barcha afzalliklarini ochib beradi. Biz o'z so'rovimizni va parametrlar bilan yozish imkoniyatiga ega bo'lamiz. Qutini belgilang va "Ochish" havolasini bosing:

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

267 1C video darslarini bepul oling:

Ko'rib turganingizdek, qo'ng'iroq qilish tugmasi "" va ro'yxat tarkibini dinamik ravishda o'zgartirishga imkon beruvchi tasdiqlash qutisi 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. Ko'proq yoki kamroq shunga o'xshash:

Sozlamalar yorlig'i

Va endi eng mazali! "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:

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

Har qanday dasturlash tilida topilishi mumkin bo'lgan ibtidoiy ma'lumotlar turlaridan tashqari, 1C da noyob 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 soddalashtiradi. Shuning uchun ishlab chiquvchilar ushbu ko'p qirrali vositani bilishi va boshqarishi kerak.

1C da dinamik ro'yxatlarning xususiyatlari

Ushbu turning maqsadi har qanday ma'lumotlar bazasi jadvallaridagi ma'lumotlarni, uning turidan qat'i nazar, 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 siz undan foydalanishingiz kerak. Siz shunchaki jadvalni, sizni qiziqtirgan ma'lumotni belgilashingiz mumkin va 1C mustaqil ravishda oddiy so'rovni yaratadi.

Dinamik ro'yxat qanday shakllantirilishini va u qanday ma'lumotlarni ko'rsatishini ko'rish uchun siz konfiguratorda boshqariladigan shakllarni, u joylashganligini ochishingiz kerak: tafsilotlar ro'yxatida kontekst menyusi uning xususiyatlarini oching va "O'zboshimchalik bilan so'rov" bandiga e'tibor bering. Agar katakcha bo'lmasa, u holda "Asosiy jadval" parametri ma'lumotlar olingan ma'lumotlar bazasi jadvalini aks ettiradi. Aks holda, dinamik ro'yxat maxsus so'rov ma'lumotlarini aks ettiradi, ularni ro'yxat sozlamalarini ochish orqali ko'rish mumkin.

O'zboshimchalik bilan so'rovlar sxemasi ko'proq qo'llaniladi, chunki u turli xil ma'lumotlarni birlashtirish va ko'rsatish uchun ajoyib imkoniyat beradi. Ko'pincha, bu mexanizm aktsiya balanslari, tovarlar narxi, daromadlar, xarajatlar yoki xaridlarni aks ettirish uchun ishlatiladi. Uni ehtiyotkorlik bilan ishlatishingiz kerak, chunki murakkab so'rovlar bilan ishlash tushishi mumkin.

Dinamik ro'yxatning yana bir foydali xususiyati "Ro'yxat sozlamalari" yozuvini bosish orqali ochiladi. Ushbu menyu, hatto standart maydonlar to'plamidan foydalanganda ham, oxirgi foydalanuvchilar uchun ma'lumotlarni yanada qulayroq va tushunarli qilish imkonini beradi. Bu ixtiyoriy so'rov bo'ladimi yoki yo'qmi, siz "Sozlamalar" yorlig'ini ko'rasiz, unda siz quyidagilarni belgilashingiz mumkin:

  • Dinamik ro'yxatni tanlash;
  • guruhlarga ajratish;
  • tartiblash;
  • Roʻyxatdan oʻtish.

Parametrlardan foydalanish dinamik ro'yxatlarni ko'p qirrali va etarlicha moslashuvchan qiladi. Siz ularni boshqariladigan shakldagi rekvizitlarga ham bog'lashingiz mumkin va ma'lumotlar foydalanuvchi tanlagan variantlarga qarab o'zgaradi. Ushbu mexanizmlardan foydalanishni haqiqiy muammolar misollarini ko'rib chiqish orqali tushunish va qadrlash mumkin.

Misol sifatida nomenklatura qoldiqlarini boshqariladigan shaklda aks ettirish muammosini ko'rib chiqing. Haqiqiy amaliyotda bunday buyurtmalar turli xil konfiguratsiyalarda juda keng tarqalgan va dinamik ro'yxat vosita sifatida idealdir. Ushbu vazifani bajarish uchun biz ixtiyoriy so'rov, dinamik ro'yxat parametrlari va uning sozlamalaridan foydalanishimiz kerak.

Aniqroq bo'lish uchun biz alohida yaratamiz tashqi ishlov berish va unga dinamik ro'yxatni joylashtiring. Rejalarimizni amalga oshirish uchun nomenklatura bilan bir nechta jadvallar bo'ladi, shuning uchun biz o'zboshimchalik bilan so'rovga ruxsat berishimiz kerak. Unda biz ma'lumotnomaning nomenklatura ro'yxati va qoldiqlar reestri bilan chap ulanishini tasvirlab beramiz va ma'lumotnomani asosiy jadval sifatida o'rnatamiz. Bunday sxema foydalanuvchilarga dinamik ro'yxat bilan ishlashda nomenklaturani qo'shish yoki o'zgartirish imkonini beradi.



Nomenklaturani tanlang.

Bizning so'rovimizda CurrentDate parametri ishlatilganligi sababli, ishlov berishdan oldin uning qiymatini belgilashimiz kerak. Buning uchun "CreationOnServerda" protsedurasidagi forma modulida standart buyruq bilan unga "CurrentSessionDate" funksiyasini standart buyruq bilan belgilang. Shuningdek, biz nazorat formasida dinamik ro'yxatni ko'rsatishimiz va aniqlik uchun maydonlar tartibini o'zgartirishimiz kerak. "Nomenklatura qoldiqlari" rekvizitlarini shakl elementlariga (yuqori chap) torting va shakldagi jadvaldagi maydonlar tartibini o'zgartirish uchun ko'k o'qlardan foydalaning.

&Serverda yaratish jarayoni Serverda(muvaffaqiyatsizlik, standart ishlov berish) nomenklaturasi qoladi.Parameters.SetParameterValue("CurrentDate",CurrentSessionDate()) EndProcedure


Ushbu bosqichda biz 1C da tashqi ishlovimizni ochishimiz va dinamik ro'yxat ishlayotganini ko'rishimiz mumkin. Biz balanslarni ko'rib chiqishimiz, nomenklatura va guruhlarni yaratishimiz va qidirishimiz mumkin. Ko'pincha mijozlar balansni ko'radigan sanani tanlash qobiliyatini qo'shishni so'rashadi. Dinamik ro'yxatga ega bo'lgan shakl bo'lsa, bu qo'shimcha maydon va uning yordamida parametrlarni o'rnatish bilan ta'minlanadi.

Biz "Sana" turidagi "Qolgan sana" atributini qo'shamiz va uni shakl elementlariga o'tkazamiz. Dala hodisalarida 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 "OnCreateOnServer" protsedurasiga kichik o'zgarishlar kiritamiz.



&OnServerProcedureOnCreateOnServer(Muvaffaqiyatsizlik, StandardProcessing)RemainsDate = CurrentSessionDate(); Element Remains.Parameters.SetParameterValue("CurrentDate", RemainsDate); Protseduraning oxiri &Mijozda protsedura qolmoqdaDateOnChange(Element) elementi qoladi.Parameters.SetParameterValue("CurrentDate",RemainsDate); EndProcedure

Natijada, bizning Dinamik ro'yxat formamiz istalgan sana uchun balanslarni ko'rsatishi mumkin.

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

  1. tanlash;
  2. Roʻyxatlar.

Dinamik ro'yxat va uning so'rovini odatdagi boshqariladigan shakllarda olish uchun ishlab chiquvchi konfiguratorda kerakli shaklni ochishi kerak. Atributlar bo'limida "DynamicList" ma'lumotlar turiga ega atributni toping (ko'pincha u tanlangan. qalin). Uning xususiyatlari so'rov matni, tanlovlar va boshqa sozlamalarni o'z ichiga oladi.

uy Looking Glassdan eslatmalar

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.

Dinamik ro'yxat ma'lumotlarini nostandart, "maxsus" shaklda chop etish uchun kerak bo'lishi mumkin. Yoki ular bilan muayyan harakatlarni amalga oshirish uchun. Misol uchun, ba'zi mezonlarga ko'ra ro'yxatda tanlagan barcha kontragentlarga 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 tovarlarini tanlab, u darhol ma'lumotlar bazasida bunday tovarlarning umumiy sonini ko'rishni xohlaydi.

Dinamik ro'yxatning o'zi sizga bu ma'lumotni taqdim eta olmaydi. Dinamik ro'yxatning maqsadi katta hajmdagi ma'lumotlarning tezkor ko'rinishini 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 o'qishi kerak bo'lgan ma'lumotlarning umumiy miqdori haqida.

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

Siz buni oldinroq qilishingiz mumkin edi. Lekin bu har doim ham oson emas edi. Axir, dinamik ro'yxat ishlaydigan dastlabki so'rov matniga qo'shimcha ravishda, foydalanuvchi ma'lumotlarni ko'rsatadigan jadvalda interaktiv ravishda o'rnatadigan barcha tanlovlar, saralashlar va boshqa parametrlarni bilishingiz kerak edi.

Endi bu vazifa osonlikcha hal qilinadi. Dinamik ro'yxat jadvalida ikkita yangi usul mavjud:

  • GetExecutableDataCompositionSchema();
  • GetExecutableDataCompositionSettings().

Shunday qilib, siz ma'lumotlar tarkibi sxemasining o'zini va eng muhimi, uning barcha sozlamalarini olasiz, buning natijasida foydalanuvchi ro'yxatni qanday bo'lsa, xuddi shunday ko'radi. Siz qilishingiz kerak bo'lgan yagona narsa tartibni dasturiy ravishda tuzish va uni qiymatlar to'plamiga (dasturiy ishlov berish uchun) yoki elektron jadval hujjatiga (ko'rsatish uchun) chiqarishdir:

Natijada siz dinamik ro'yxat jadvaliga chiqadigan 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 chiqarishda yana bir yoqimli daqiqa bor. Umuman olganda, hisobotning ko'rinishi mos keladi ko'rinish sxema va sozlamalar qabul qilingan vaqtda dinamik ro'yxat jadvallari. Jadvalning shartli dizayni, shu jumladan. Shaklning shartli dizaynini hisobotga ham o'tkazmoqchi bo'lsangiz, sizga qo'shimcha harakatlar kerak bo'ladi.

Konfiguratsiyalarni yakunlash jarayonida har bir 1C dasturchisi dinamik ro'yxatlarga duch keladi.
Dinamik ro'yxat - bu 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, asosiy shaklni qo'shamiz. Formaga “Dinamik ro‘yxat” tipidagi yangi atribut qo‘shamiz. Keling, uning xususiyatlariga boramiz va u erda nima borligini ko'rib chiqamiz.
Bizni "Maxsus so'rov" xususiyati qiziqtiradi. Uni yoqish bizga dinamik ro'yxatning barcha imkoniyatlarini ko'rsatadi. Biz 1C: Enterprise tizimining so'rovlar tilining deyarli barcha xususiyatlaridan 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 ishlash imkonini beradi - katalog elementlarini qo'shish, o'zgartirish, o'chirish uchun belgilash. Xuddi shunday, asosiy jadvalni o'rnatish qulay imkoniyat dinamik ma'lumotlarni o'qish - bu namuna kerak bo'lganda qismlarga bo'linishini anglatadi.
Keyinchalik, ro'yxatimiz uchun shakl elementlarini yaratishimiz kerak:

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


Uni yo'q qilish uchun siz "Davr" parametrining qiymatini belgilashingiz kerak. Buning uchun dinamik ro'yxatning "Parameters" to'plamining "SetParameterValue" usulidan foydalanish mumkin. Usul ikkita parametrni oladi:
. "Parametr" - Turi: String; DataCompositionParameter. Qiymati o'rnatilishi kerak bo'lgan parametr yoki ma'lumotlar tarkibi parametrining nomi;
. "Qiymat" - Turi: O'zboshimchalik bilan. Belgilanishi kerak bo'lgan qiymat.
Shaklning "OnCreateOnServer" ishlov beruvchisida chaqirilishi mumkin:

Savolingiz bormi, sizga maslahatchi yordami kerakmi?


Keling, foydalanuvchiga qoldiqlarni olish muddatini o'zgartirish imkoniyatini beraylik. Buning uchun atribut va u bilan bog'langan "Sana" forma elementini qo'shamiz:


"Sana" forma elementining "OnChange" ishlov beruvchisida tegishli atributning qiymatini qiymat sifatida o'tkazib, "SetParameterValue" usulini chaqiring. Xuddi shunday, biz formaning "CreationAtServer" tartibini o'zgartiramiz. Usul mijozda mavjud bo'lganligi sababli, serverga qo'ng'iroq qilishning hojati yo'q:


Endi, sana o'zgarganda, balanslar avtomatik ravishda yangilanadi:




Aytaylik, foydalanuvchilar joriy balanslarni yoki prognozli tushumlarni ko'rishni xohlaydilar. Keling, amalga oshirish variantlaridan birini ko'rib chiqaylik. Keling, mantiqiy shakl atributini va tegishli radio tugmani qo'shamiz:


Kommutatorning qiymatini o'zgartirganda, biz so'rov matnini o'zgartiramiz. Buning uchun biz “DisplayQuantityToReceipt” forma elementining “OnChange” hodisasi ishlovchisidan foydalanamiz. Atribut qiymatiga qarab dinamik ro'yxatning "QueryText" xususiyatini o'zgartirishimiz kerak. Ushbu xususiyat mijozda mavjud emasligi sababli, server protsedurasiga qo'ng'iroq qilish kerak:


O'zgartirishlar natijasida: