1c standart shakl sozlamalarini o'rnatdi. Hisobotlardagi tanlovlar. Sozlamalar yaratuvchisining nuanslari. Shakllarni o'rnatish va ro'yxatlar bilan ishlash

1C 8.3 da quyi tizim— konfiguratsiya buyrug'i interfeysini yaratish uchun mas'ul bo'lgan metama'lumotlar daraxti ob'ekti.

Quyida maqolada 8.2 versiyasidan boshlab quyi tizimlar haqida gapiramiz.

Gap shundaki, 8.1 versiyasi (shuningdek, oddiy 8.2 ilovasi) ham quyi tizimlarga ega edi, ammo ular butunlay boshqacha maqsadlarga xizmat qilgan, ehtimol foydalanuvchiga qaraganda ishlab chiquvchi uchun. 8.1 da quyi tizimlardan foydalangan holda, odatda, turli funktsiyalar ajratilgan. Quyi tizimlar turli xil 1C konfiguratsiyalarini birlashtirishda ham yordam berdi - qaysi tizimni uzatishni belgilash mumkin edi.

1C quyi tizimlari va dasturchi interfeysi

8.3 va 8.2 versiyalarida quyi tizimlar buyruq foydalanuvchi interfeysini yaratish uchun asosiy vosita hisoblanadi. Subtizimlar metama'lumotlar ob'ektlariga ega ierarxik tuzilma Interfeysda "pastki menyu" ni sozlash uchun siz quyi tizimni qo'shishingiz kerak:

Xususiyatlar va sozlamalar

Keling, konfiguratordagi quyi tizimlarning sozlamalari va xususiyatlarini ko'rib chiqaylik:

1C da 267 ta video darslarni bepul oling:

Buyruq interfeysiga qo'shing- agar siz ushbu bayroqni o'rnatishni unutgan bo'lsangiz, quyi tizim ko'rsatilmaydi interfeysida.

Tugma interfeys sozlamalari panelini ochadi, u erda siz joriy foydalanuvchining roliga qarab interfeyslarni sozlashingiz mumkin:

Rasm— quyi tizimga tayinlangan rasm korporativ rejimda ko'rsatiladi. Siz standart tasvirni tanlashingiz mumkin yoki avval uni konfiguratsiya ob'ekti sifatida yaratish orqali o'zingiznikini qo'shishingiz mumkin Rasm:

Yorliqda Funktsional variantlar ushbu quyi tizim qo'llaniladigan funktsional variantlar ro'yxatini ko'rsatadi.

Tab Murakkab berilgan quyi tizimda ishtirok etuvchi metadata ob'ektlari to'plamini belgilaydi.

Yorliqda Boshqa quyi tizim uchun yordamni tasvirlab berishingiz va sozlamalarni belgilashingiz mumkin Yordam tarkibiga kiriting— ushbu yordam bo'limi umumiy bo'limga kiritiladimi fon ma'lumotlari konfiguratsiya bo'yicha.

Boshqariladigan interfeysda hisobot yoki ishlov berishni ko'rmasangiz

Ushbu muammo ko'pincha yangi ishlab chiquvchilar orasida paydo bo'ladi - quyi tizimga hisobot yoki ishlov berish qo'shilganga o'xshaydi, lekin u ko'rinmaydi.

Buning birinchi sababi, ob'ektda belgilangan boshqariladigan shaklga ega emasligi bo'lishi mumkin.

Ikkinchi sabab shundaki, ob'ektning Buyruqlar yorlig'ida "Standart buyruqlardan foydalanish" katagiga belgi qo'yilgan. Buning sababi shundaki, qayta ishlashni ochish uchun siz o'zingizning protsedurangizni tavsiflashingiz yoki standart usuldan foydalanishingiz mumkin:

Maqolada "1C rivojlanishidagi birinchi qadamlar" turkumi davom etadi.

1C: Enterprise platformasidagi konfiguratsiyada ma'lumotni ko'rsatishda ko'pincha turli xil ma'lumotlar ro'yxatlarini aks ettiruvchi jadvallardan foydalaniladi. Bunday ro'yxatlar bilan ishlash ro'yxat shaklida ham, element (qayta ishlash) shaklida ham sodir bo'lishi mumkin.

Ushbu maqolada biz ro'yxatlarni sozlashning ushbu variantlari bilan tanishamiz, shuningdek, foydalanuvchi tomonidan shakllarni sozlashning boshqa xususiyatlarini ko'rib chiqamiz.

Qo'llanilishi

Maqolada 1C 8.3.4.482 platformasida ishlab chiqilgan konfiguratsiyaning "Versiya 8.2" versiyasida boshqariladigan interfeys muhokama qilinadi.

Agar siz ushbu interfeysni qo'llab-quvvatlaydigan konfiguratsiyalar bilan ishlasangiz, unda ma'lumotlar siz uchun tegishli va joriy versiyalar platformalar.

Agar siz yangi Taksi interfeysida ishlayotgan bo'lsangiz, unda ba'zi konfiguratsiya buyruqlarining nomlari, shuningdek, umumiy harakatlar ketma-ketligi biroz boshqacha bo'lishi mumkin.

Bundan tashqari, platformaning joriy versiyasi ro'yxatlarda yangi qidiruv imkoniyatlarini qo'shdi.

Shakllarni o'rnatish va ro'yxatlar bilan ishlash

Boshqariladigan shakl elementlari uchun ko'rinish va ba'zi boshqa xususiyatlarni o'zgartirish mumkin. Ushbu maqsadlar uchun boshqariladigan shaklda menyuda Barcha harakatlar element sifatida xizmat qiladi Shaklni o'zgartirish.

Ushbu buyruqni bosgandan so'ng, "Forma sozlamalari" oynasi paydo bo'ladi.

Ko'rsatilgan oynada siz ba'zi tafsilotlarning ko'rinishini o'zgartirish uchun katakchalardan foydalanishingiz mumkin. Bunday holda, shakl avtomatik ravishda masshtablanadi.

Tafsilotlar tartibini o'zgartirishingiz mumkin. Yangi guruh qo'shing va unga ba'zi tafsilotlarni (elementlarni) joylashtiring, ularni guruhlash (gorizontal, vertikal) variantini belgilang.

Guruhga kiritilgan ma'lumotlar tegishli ravishda e'lon qilinadi. Bundan tashqari, siz elementlar uchun kenglik, balandlik va sarlavha ma'lumotlari kabi xususiyatlarni sozlashingiz mumkin.

Shakl ochilganda faollashtiriladigan atributlarni belgilashingiz mumkin.

Muhim xususiyat - bu shaklga yangi maydonlarni qo'shish qobiliyati. Bu mos yozuvlar turi atributlari orqali mumkin bo'ladi.

Masalan, formada mos yozuvlar turi atributiga ega bo'lish Qarama-qarshi tomon, qo'shish mumkin Aloqa qiluvchi shaxs, Agar bu tayanch"Qarama-qarshi tomonlar" katalogida mavjud.

Agar kerak bo'lsa, qo'shimcha maydonlarni olib tashlash mumkin. Konfiguratorda yaratilgan maydonlarni o'chirib bo'lmaydi. Foydalanuvchi tomonidan kiritilgan barcha sozlamalar saqlanadi.

Menyudagi Shakl sozlamalari oynasida standart sozlamalarga qaytish uchun Barcha harakatlar elementni tanlashingiz kerak O'rnatish standart sozlamalar .

Boshqariladigan interfeysda shakllarni sozlashdan tashqari, ro'yxatlarni (katalog elementlari, hujjatlar) sozlash mumkin.

Menyuda ro'yxat shaklida Barcha harakatlar maxsus buyruqni o'z ichiga oladi Ro'yxatni moslashtiring.

"Ro'yxat sozlamalari" oynasi ochiladi. Bu oynada shartli formatlash va guruhlashni tanlash, saralash, belgilash mumkin.

Rasmda tanlovni tahrirlash shakli ko'rsatilgan.

Tanlov bir nechta maydonlar yordamida amalga oshirilishi mumkin. Bunday holda, sukut bo'yicha tanlov AND shartiga muvofiq ishlaydi.Siz YOKI va EMAS shartlaridan ham foydalanishingiz mumkin.

YOKI (EMAS) shartidan foydalanish uchun Group Conditions buyrug‘i yordamida tegishli guruhni (OR Group, NOT Group) qo‘shish kerak.

Rasmda tartiblash maydonlarini aniqlash uchun shakl ko'rsatilgan.

Guruhlashtirishni sozlash mumkin. Rasmda guruhlash uchun maydon tanlangan Qarama-qarshi tomon.

Keyingi rasmda guruhlash qanday amalga oshirilishi ko'rsatilgan.

Siz ro'yxatni erkin ranglashingiz yoki shartli dizaynning boshqa elementlarini (shrift tanlash, maxsus formatlash) berilgan shartga muvofiq qo'llashingiz mumkin, shuningdek formatlash uchun maydonlar ro'yxatini tanlashingiz mumkin.

Rasmda maydon fonini shartli loyihalash natijasi ko'rsatilgan so'm.
Miqdori > 100 000 bo'lsa.

Shuni ta'kidlash kerakki, kataloglarni ierarxiya rejimida ko'rish mumkin.

Kataloglarni ierarxik ko'rish element orqali sozlanishi mumkin Ko'rish rejimi menyuda Barcha harakatlar. Siz variantlardan birini tanlashingiz mumkin: Ierarxik ro'yxat, Roʻyxat, Daraxt.

Shuningdek, ma'lum tafsilotlar bo'yicha katalog elementlarining o'z guruhlarini sozlashingiz mumkin.

Masalan, siz mahsulotlarni yetkazib beruvchi bo'yicha guruhlashingiz mumkin. Misol, biz kontragentlar bo'yicha "Tovarlar va xizmatlarni sotish" hujjatlarini guruhlashni ko'rib chiqqan joyga o'xshaydi.

Qulay xususiyat - bu ro'yxatlarda bir nechta tanlash va guruh harakatlarini keyinchalik bajarish (joylashtirish, bekor qilish, o'chirish belgisini olib tashlash).

Ro'yxatdagi ob'ektlar tugmani bosib ushlab turish orqali tanlanadi Shift yoki Ctrl.

Ro'yxatda ma'lum bir qiymatni qidirish o'ziga xos xususiyatlarga ega. Qidiruv tanlov rejimida ishlaydi. Faqat qidiruv shartini qondiradigan qatorlar qoladi.

Joriy ustundagi qiymat bo'yicha qidirish uchun kursorni kerakli ustunga qo'ying va tugmani bosing Toping buyruqlar panelida. Oyna paydo bo'ladi, unda siz tugmani bosishingiz kerak Toping.

Qidiruvingizni aniqroq qilish uchun siz belgilash katagidan foydalanishingiz mumkin Topildi.

Malumot turidagi ma'lumotlar qatorini (masalan, o'lchov birliklari) qidirishda siz tegishli qidiruv variantini tanlashingiz kerak. ...(satr bo'yicha).

Bu ro'yxatlar va ularni sozlash usullari bilan yakunlanadi. Keyingi maqolada biz interfeys bilan tanishishni davom ettiramiz va foydalanuvchini xabardor qilish uchun qulay vositani ko'rib chiqamiz, bu haqda biz ilgari gapirmaganmiz. Bu qanday asbob? :)

O'ylaymanki, kirishni boshqarish tizimi, sozlash tuzuvchisi va umuman, kirishni boshqarish tizimi bilan ishlash uchun mo'ljallangan barcha ob'ektlar to'plami nima ekanligini aytib berishning hojati yo'q. Foydalanishning asosiy yo'nalishlari, koddagi qiyin harakatlarni hisobga olmaganda, dinamik ro'yxatlar va hisobotlardir va ikkala holatda ham juda muhim funksionallik sahnada qoladi. Biz ko'pincha jarayonning barcha ishtirokchilarining xatti-harakatlari va munosabatlarining mantiqiyligi haqida o'ylamaymiz, chunki Biz odatda juda oddiy muammolarni hal qilamiz yoki platformaning standart sozlamalariga tayanamiz. Ammo sukunat mavjud bo'lgan joyda, ichki mantiq, 1C ning o'ziga xos "xizmati" ham mavjud bo'lib, uning mevalari ba'zan kerakli effektga erishish uchun engish qiyin va tushunarsizdir va shu bilan birga bu etarli. asboblardan to'g'ri foydalanish.

Qiziqqanlar 1-4 qismlarni o'tkazib yuborishlari va to'g'ridan-to'g'ri misollarga o'tishlari mumkin.

Men hisobotlarda ulardan foydalanish holatlari uchun ACS tanlovlarining ishlashi haqida biroz batafsilroq to'xtalib o'tishga harakat qilaman. Menimcha, xatti-harakatlar dinamik ro'yxatlar, bir qator rezervasyonlar bilan, yaqin bo'ladi. Shunday qilib, hisobotlardagi tanlovlar, bir oz nazariya va keyin aniq misollar.

SP 8.3.6 va undan yuqori versiyalari, ITS bo'limlari (10.3.7.5-band va boshqalar), "1C-Enterprise 8 tizimida kasbiy rivojlanish" kitobi (Qozon, 2012, ikkinchi jild) ishlatiladi. E. Xrustalevaning kitobida bu mavzuda umuman tushunarli narsa yo'q edi.

1-qism

Ma'lumki, sozlamalar yaratuvchisida "Sozlamalar", "Ruxsat etilgan sozlamalar" (keyingi o'rinlarda "FN") va "Maxsus sozlamalar" (keyingi o'rinlarda "CU") to'plamlari mavjud. Hisobotda bir nechta variant bo'lishi mumkin va variant, N, PN va FN o'rtasidagi aloqalar juda noyobdir. Bundan tashqari, manba haqida unutmang mavjud sozlamalar, va uning "ajdodi", odatda sxemaning o'zi bo'lib, u ham o'zining standart sozlamalariga ega.

* Sozlamalar - Konfigurator rejimida yaratilgan va hisobot versiyasini tahrirlash rejimida o'zgartirilgan sozlamalar;

* UserSettings - foydalanuvchi "1C: Enterprise" rejimida faqat interfeys orqali o'zgartiradigan sozlamalar;

* FixedSettings - o'rnatilgan tildan o'rnatilgan sozlamalar, shu jumladan. tizim tomonidan bilvosita o'rnatiladi. Ushbu xususiyat uning parametrlari ("Tanlash" tuzilishi) yordamida shaklga o'tkaziladigan tanlov qiymatlarini o'z ichiga oladi.

Sozlamalar va FN'lar dizayn jihatidan o'xshash va hisobot mavjud bo'lgan istalgan vaqtda kompozitsiyani o'zgartirish uchun mavjud bo'lgan "Ma'lumotlar tarkibini tanlash" turidagi "Tanlash" to'plamiga ega. Shu bilan birga, Variantni tahrirlash orqali interfeysni o'zgartirish uchun Sozlamalar mavjud, ammo FN-larga umuman kirish mumkin emas. PN, o'z navbatida, teng elementlar "Tanlash" ning o'zi ham, "Ma'lumotlar tarkibini tanlash elementi" (ichiga joylashtirilgan ob'ekt deb ataladi) turidagi alohida ob'ektlar bo'lishi mumkin bo'lgan "porridge" dir. Tegishli usullar mavjudligiga qaramay, PN elementlari to'plamining tarkibini dasturiy ravishda o'zgartirish mumkin emas, agar ular hisobotning o'zi bo'lsa va dizayner tomonidan "noldan" qilinmagan bo'lsa - 1C "Foydalanuvchilar to'plami" deb xabar beradi. sozlamalar uning tarkibini o'zgartira olmaydi, chunki u tartib sozlamalari ma'lumotlari bilan bog'langan." ITSda aytilishicha: "O'rnatilgan til yordamida mulkni yozish mumkin emas.", lekin keyinroq ko'rib turganimizdek, PNga ta'sir qilish mumkin. Ob'ektlarning "bo'tqa" mavjud ichki kommunikatsiyalar- hisobotni tuzishda va tarkib o'zgarganda shartlarning muvofiqligi tekshiriladi. ITS da biz o'qiymiz: “O'zlari odatiy sifatida belgilangan elementlar qo'shilmaydi. Misol uchun, maxsus tanlovga maxsus sifatida belgilangan tanlov elementi kirmaydi. Maxsus elementlarni o'z ichiga olgan elementlar qo'shilmaydi. Misol uchun, agar guruhda odatiy sifatida belgilangan elementlar bo'lsa, shartlar guruhi qo'shilmaydi. Ichki elementlar uchun DisplayMode xususiyati tahlil qilinmaydi. Ular bilan birga qo'shiladi yoki qo'shilmaydi ota-ona elementlari." Shunday qilib, ob'ektlarning "kattaligi" sahna ortida ishlaydi. Bunday holda, interfeys variant va uning PN uchun, shuningdek, PN ichida qarama-qarshi tanlovlarni belgilashga imkon berganda effekt olishingiz mumkin.

Ko'rinishidan, "katta" - bu variant. Ammo "Ko'proq" / "O'zgartirish opsiyasi" ni bosish va ochilgan shakldagi o'zgarishlarni tasdiqlash ariza hodisasi ishlovchisini chaqiradi. , bu holda tanlov "Sozlamalar..." dan chaqirilgan shakldagi "Asosiy" panelida paydo bo'ladi va hisobot formasida paydo bo'ladi, lekin "Tanlash" yorlig'ida ko'rsatilmaydi; Bundan tashqari, u darhol asosiy hisobot shaklida ham, "Sozlamalar ..." shaklida ham paydo bo'ladi (agar "Foydalanuvchi sozlamalariga qo'shish" belgisi bo'lsa) yoki u erda ham, u erda ham. Lekin har qanday holatda, u "Sozlamalar ..." formasining "Tanlash" yorlig'ida BO'LADI. "Asosiy" yorlig'i, "Sozlamalar ..." shakli va asosiy hisobot shakli o'rtasidagi farq "Tahrirlash rejimi" maydonida aniqlanadi (normal - faqat "Sozlamalar" da, tez - hisobot shaklining o'zida ham), lekin men buni hamma biladi deb o'ylayman. Aytgancha, "Tanlash" va "Tez" qiymatlari hech qanday tarzda sinxronlashtirilmaydi va bir-biriga zid bo'lishi mumkin, ammo hisobot shaklidagi va sozlamalar shaklidagi "Tez" qat'iy sinxronlashtiriladi. Shunday qilib, siz variantni tahrir qilganingizda, uning o'zi o'zgaradi (lekin uning identifikatori va nomi o'zgarmaydi), lekin PNlar o'zgartirilmaydi (ya'ni, agar biz ular haqida gapiradigan bo'lsak ham, ya'ni u yoki bu belgini kiritish bayrog'i haqida. PN dagi element).

"Variantni tanlash..." tugmasini bosish va ochilgan shakldagi o'zgarishlarni tasdiqlash quyidagi tartibda hodisalarni keltirib chiqaradi:

OptionOn serverini yuklashda

Serverdagi foydalanuvchi sozlamalari tarkibini yangilashda

Bunday holda, na variant, na PN hech qanday tarzda o'zgarmaydi. Bu erdan opsiya va sozlamalar, agar ulangan bo'lsa, to'g'ridan-to'g'ri bog'lanmaganligi aniq.

"Sozlamalar..." tugmasini bosish va ochilgan shakldagi o'zgarishlarni tasdiqlash faqat hodisani ishga tushiradi Serverdagi foydalanuvchi sozlamalari tarkibini yangilashda(bu holda, PNlar o'zgaradi, lekin ko'rinishlar va kalit (agar ular mavjud bo'lmasa) olinmaydi; agar PNning "Tanlash" ob'ekti elementlari uchun "Tez" yoqilgan bo'lsa, qo'shimcha ravishda “Tanlash” uning haqiqiy elementlari maydonlar ko‘rinishida ko‘rinadi, ya’ni o‘zini ichki o‘rnatilgan elementlarga o‘xshatadi. Ushbu sozlamalar yopilganda saqlanadi va keyingi safar formaga kirganingizda tiklanadi. U opsiyaga tegmaydi yoki o‘zgartirilmaydi.

Sozlamalar shaklidagi "Ko'proq"/"Standart sozlamalarni o'rnatish" ni bosish (shuningdek, variantni tahrirlashda "Standart sozlamalar" bandi) faqat hodisani ishga tushiradi. Serverdagi foydalanuvchi sozlamalari tarkibini yangilashda. Bunday holda, variant o'zgaradi, lekin PN o'zgaradi. Agar parametr ilgari o'zgartirilgan bo'lsa, u o'zgartirilgan bo'lib qoladi (na o'zgartirilgan bayroq tiklanmaydi, na haqiqiy sozlamalar tiklanadi).

Variantlarni tahrirlash formasidagi struktura daraxtidagi “Maxsus sozlamalar elementining xususiyatlari” tugmasini bosish “Tanlash” obyektini qo‘shadi va u bo‘sh bo‘lib chiqadi va mavjud variant tanlovi va mavjud ichki o‘rnatilgan tanlash elementlari bilan hech qanday tarzda sinxronlashtirilmaydi. variant hech qanday tarzda o'zgarmaydi.

Shuning uchun tavsiya: agar siz "Konfigurator" rejimida ba'zi tanlovlarni o'rnatishingiz kerak bo'lsa, kod bilan aralashmaslik va ular variantda emas, balki hisobot interfeysida bo'lishi uchun siz tanlovni manipulyatsiya qilmasligingiz kerak. parametr elementlari, ularning xususiyatlarini o'zgartiradi, lekin tanlovning o'zi "Element xususiyatlari ..." va "Maxsus sozlamalar" tugmalari yordamida.

PN ga Sozlamalarda paydo bo'ladigan biror narsani qo'shish kod yoki interfeysdagi amallarni talab qiladi, lekin Sozlamalarni o'chirish va tozalash PN ga darhol va hech qanday yangilanishlarsiz ta'sir qiladi, masalan:

Report.SettingsLitter.Settings.Selection.Items.Clear();

Hisobot shaklini yopishdan oldin tizim faqat variantga o'zgartirishlar kiritilganligini so'raydi. Agar PNga o'zgartirishlar kiritilgan bo'lsa, ular hech qanday savolsiz avtomatik ravishda saqlanadi va hisobot bilan ishlashning keyingi sessiyasida avtomatik ravishda qo'llanilishiga harakat qiladi.

Eslatmalar:

Sozlamalarni qo'llashda bir qator xatolar bo'lsa, avval muammo haqida xabar ko'rsatiladi, so'ngra kompozitsiya hali ham paydo bo'ladi, voqea chaqiriladi. va hisobot yaratish. Bunday holda, FNs, agar ular mavjud bo'lsa ham, e'tiborga olinmaydi va faqat Sozlamalar rol o'ynaydi.

"Opsiyani o'zgartirish" formasiga tanlov qo'shganda, u darhol "PN-ga qo'shish" bayrog'i bilan amalga oshiriladi, lekin takror aytaman, o'rnatilgan til nuqtai nazaridan, PN o'zgarishsiz qoladi.

Variantning o'zgarishini o'rnatish va PN o'zgarishini belgilash bevosita bog'liq emas; bu o'zgarishlarning ikki xil yo'nalishi.

PN, boshqa narsalar qatorida, "Qo'shimcha sozlamalar" mavjud. Ular nima va qaysi vaqtda to'ldirilganligini hech qachon tushuna olmadim. Hisobotda "tanlovda va shartli dizaynda belgilangan" sozlamalar mavjud bo'lsa-da (qo'shma korxonaga ko'ra), lekin qo'shimcha sozlamalar barcha hollarda ular bo'sh edi. ITS da bu haqda hech narsa yo'q.

Qo'shma korxonadagi bayonotga qaramay, PNlar xml-da mukammal seriyalashtirilgan.

Agar foydalanish uchun mustaqil tanlash elementlari ham, tanlovning o'zi ham kiritilgan bo'lsa, hisobot to'g'ri tuzilgan, ammo ko'rsatilganda u yakuniy tartibda belgilangan tanlov haqidagi ma'lumotlarni takrorlaydi.

Hisobot versiyasini tahrirlash uchun standart shakl juda ko'p qiziqarli narsalarni o'z ichiga oladi, lekin u hech qanday joyda FN va PN bilan ishlamaydi va hatto asosiy sozlamalar bilan u o'qish uchun ko'proq ishlaydi (tanlovni, tartibni, konventsiyalarni tozalashdan tashqari).

2-qism

Sozlamalar va FN bilan ularning to'plami orqali ishlash deyarli har doim maqbuldir, ammo "uchinchi daraja" ning mohiyati o'zgarib borayotganini unutmaslik kerak. Birinchi daraja har doim kirishni boshqarish tizimining o'zida standart sozlamalarni o'z ichiga oladi, ular mavjud sozlamalar manbasida ham bevosita ko'rinadi; ikkinchi darajada - foydalanilgan variantning sozlamalari. Ammo bu erda mantiq sizga asosiy ko'rsatmalarni "ustiga yozish" yoki ularga e'tibor bermaslik imkonini beradi. Ammo PN bilan ishlash endi erkinliklarga yo'l qo'ymaydi va nozik manipulyatsiyalar maxsus usullar, ba'zan esa vaqtinchalik yordamchi vositachi ob'ektlar yordamida amalga oshirilishi kerak, masalan:

Comp=NewDataCompositionSettingsComposer; // siz ham boshlashingiz mumkin // comp.Initialize(SomeSettingsComposer.GetSourceofAvailableSettings()); comp.LoadSettings(SomeSettingsComposer.Settings); SomeSettingsComposer.LoadCustomSettings(comp.CustomSettings);

Sozlamalar yaratuvchisida usul mavjud (), bu usulga parametr sifatida qabul qilingan foydalanuvchi sozlamalari qiymatlarini yuklaydi. Usul GetSettings() joriy sozlamalarning nusxasini olish imkonini beradi (foydalanuvchi sozlamalarini hisobga olgan holda). Usul Yuklab olish sozlamalari() o'tkazilgan sozlamalarni sozlamalar quruvchisiga yuklaydi (foydalanuvchi sozlamalari kalitlarning mavjudligini hisobga olgan holda uzatilgan ma'lumotlar asosida ham qayta to'ldiriladi, quyidagi misolga qarang).

Maxsus sozlamalarni asosiy sozlamalarga qo'llash usulda amalga oshiriladi GetSettings() sozlamalar yaratuvchisi. Quyidagi harakatlar amalga oshiriladi:

* DataCompositionSelectionElement turlari uchun elementlarning mazmuni mos keladigan moslashtirilgan sozlamalar elementlariga ko'chiriladi.

* Ma'lumotlar tartibini tanlash turlari uchun asosiy sozlamalarda joylashgan va kirish mumkin emas deb belgilangan elementlar o'zgarishsiz qoladi. PN dan elementlar asosiylarga o'tkaziladi. Ular tanlov uchun to'plamning oxiriga qo'shiladi.

* DataCompositionSelectionElementGroup turlari uchun Usage xususiyati asosiy sozlamalarning mos keladigan elementida (PN elementidan foydalanish belgisi asosida) o'rnatiladi.

3-qism

Yakuniy sozlamalarni shakllantirishda ITS ni keltirish uchun turli xil sozlamalar quyidagicha birlashtiriladi:

* Agar har qanday turdagi sozlamalar butunlay moslashtirilgan deb belgilangan bo'lsa, natijada olingan sozlamalar PNni o'z ichiga oladi. Bunday holda, agar biron bir sozlash elementlari mavjud emas deb belgilangan bo'lsa, u holda bu sozlamalar Settings Composer.Settings xususiyatidan olingan sozlamalarga joylashtiriladi.

* Agar har qanday turdagi sozlamalar toʻliq emas, balki element boʻyicha moslashtirilgan deb belgilangan boʻlsa, moslashtirilgan deb belgilangan elementlar Settings Composer.CustomSettings xususiyatidan olingan sozlamalarga kiritiladi va mavjud emas deb belgilangan elementlar esa natijasida sozlamalar Settings Composer.Settings xususiyatidan.

* Ruxsat etilgan sozlamalar paydo bo'lgan sozlamalarga "xuddi shunday" qo'shiladi. Shu bilan birga, FN va PN bir xil nomdagi sozlamalarga ega bo'lishi mumkin emas, masalan, vaziyatda bir xil chap qiymatga ega tanlov. Shuni ta'kidlaymanki, hatto ushbu shartlarning barcha xususiyatlarining to'liq mos kelishi ham taqiqlanadi. Rostini aytsam, bu biroz mantiqsiz.

Shuni ta'kidlashim kerakki, agar sozlamalarning biron bir qismi funktsional parametr ta'siriga tushib qolsa va cheklangan bo'lishi kerak bo'lsa, tizim "jimgina" ishlaydi - u bu fragmentni hamma joydan olib tashlaydi, hech narsa haqida xabar bermaydi va bunday fragment bilan bog'liq dastur manipulyatsiyasi paytida. , u “boʻsh” xatolarni qayta ishlaydi.U hech qanday natija bermaydi, lekin kod ham taʼsir qilmaydi. Biroq, turli nashrlar boshqacha harakat qilishi mumkin.

4-qism.

Hisobot shaklining kengaytmasi bizga "FN" va "PN" parametrlarini taqdim etadi, ammo ularni to'g'ridan-to'g'ri shaklga o'tkazish orqali to'ldirish tavsiya etilmaydi. Eksperimentlar shuni ko'rsatdiki, daf bilan qo'shimcha raqslarsiz, ushbu parametrlarning mazmuni e'tiborga olinmaydi - ochish jarayonida bog'lovchi ishga tushirilganda va ilgari saqlangan PNlar olinganda uning ustiga yoziladi. PN kalitlari bilan ishlash tavsiya etiladi, ular yordamida siz ularni sozlamalar xotirasidan olishingiz va keyin ularni ochishingiz va ishlatishingiz mumkin va bu avtomatik ravishda chaqiruv formasida emas, balki hisobot shaklining yon tomonida amalga oshiriladi.

"Mavjud sozlamalar manbai" parametri serverda shakl yaratishda avtomatik ravishda quruvchi ma'lumotlariga tarjima qilinadi va uni bekor qilib bo'lmaydi. To'g'rirog'i, bu mumkin, lekin bu faqat tegishli ob'ektlarning butun zanjiri to'liq qayta ta'riflangandan keyin ta'sir qiladi. Qayerda GetSourceAvailableSettings() barcha shakl ochilish voqealari oxirigacha Undefined qaytaradi.

Shuni ta'kidlashim kerakki, asosiy parametrlar bo'lmagan shakl parametrlari, agar ochilish paytida shakllanish bayrog'i o'rnatilgan bo'lsa, o'z ta'sirini bir nechta hodisalarga "cho'zadi". Ha, voqeada ProcessingCheckFillOnServer, ochilish va shakllantirish paytida chaqirilgan "Tanlash" parametri mavjud bo'ladi, lekin u bilan, lekin oddiygina foydalanuvchi tomonidan "Yaratish" tugmasini bosgan holda chaqiriladi, u endi mavjud bo'lmaydi. Buning sababi shundaki, ushbu voqealarning barchasi serverga bitta "tashrif" da qayta ishlanadi, agar ochilish paytida shakllanish yoqilgan bo'lsa va faqat ularning oxirida boshqaruv mijozga o'tkaziladi va chaqiriladi. Ochilishda. Bunday holda, asosiy bo'lmagan parametrlar tabiiy ravishda yo'qoladi.

Ochilish paytida hisobot yaratish uchun bayroqli shaklni ochishda voqealarni bajarishning umumiy tartibi ("Kasbiy rivojlanish" da tavsiflanganidan bir oz ko'proq):

OnServer yaratilganda

Variantni serverga yuklashdan oldin

OptionOn serverini yuklashda

Foydalanuvchi sozlamalarini serverga yuklashdan oldin

Serverga foydalanuvchi sozlamalarini yuklashda

Serverdagi foydalanuvchi sozlamalari tarkibini yangilashda

ProcessingCheckFillOnServer

Ochilishda

Bunday holatda, na variant, na PN, agar maxsus harakatlar qilinmasa, o'zgartirilmaydi.

5-qism.

Keling, uning tuzilishi va oldindan ko'rsatilgan tanlovi bilan hisobot shaklini ochish vazifasini batafsil ko'rib chiqaylik. Qisqacha ma'lumot Bu haqda ITS da ma'lumotlar mavjud uslubiy tavsiyalar, lekin u erda faqat printsipning o'zi yoritilgan va nozikliklar oshkor etilmaydi. Shunday qilib, hisobotni kontekstli chaqirish uchun siz "GenerateOnOpen" parametrini uning shakliga o'tkazishingiz kerak, True ga teng; va strukturani o'z ichiga olgan Tanlash parametri. Tuzilish kalitlari - bu ACS maydonlarining nomlari yoki ACS parametrlari va qiymatlar ularning qiymatlari. SP dan iqtibos keltirgan holda, agar struktura kalitining nomiga mos keladigan nomga ega ACS parametri mavjud bo'lsa, unda qiymat unga o'rnatiladi. Agar parametr bo'lmasa, lekin maydon mavjud bo'lsa, unda ushbu maydonga tanlov qo'shiladi. Shu bilan birga, agar bir xil nomdagi parametr va maydon mavjud bo'lsa, tizim uni jimgina e'tiborsiz qoldiradi va hech narsa o'rnatmaydi.

"Kasbiy rivojlanish" voqea sodir bo'lganda PNni "tezda" o'zgartirish (ya'ni ushlab turish va qayta sozlash) misolini beradi. Foydalanuvchi sozlamalarini serverga yuklashdan oldin, bu erda joriy PNni o'z ichiga olgan argument uzatiladi. Aslida, bu har doim ham shunday emas - masalan, oldingi sessiyada PNni saqlashda xatolik yoki Sozlamalar, FN va PN o'rtasidagi nomuvofiqliklar "Sozlamalar" argumentining bo'sh bo'lishiga olib keladigan holatlar bo'lishi mumkin. Va eng qizig'i shundaki, bu hodisada uni to'liq qayta sozlashning iloji bo'lmaydi; buni faqat voqealar ketma-ketligining "oxirida", ya'ni hodisada qilish mumkin. ProcessingCheckFillOnServer.

PNni serverga yuklashdan oldin bizda nima borligini ko'rib chiqamiz.

Oddiy holat uchun, ACSda hech narsa oldindan belgilanmagan va PNga hech qanday element kiritilmagan bo'lsa, vaziyat quyidagicha: Sozlamalar - bo'sh; FN - to'g'ri tanlovni o'z ichiga oladi; Mon bo'sh Tanlovdan iborat. Shakllash to'g'ri ishlaydi, lekin foydalanuvchi nuqtai nazaridan interfeys ichki qismlarga zid keladi va tushkunlikka tushadi - tanlov ishlaydi, lekin ko'rinmaydi. Xuddi shunday, agar siz opsiya tuzilmasi sozlamalarida PN da Tanlovni yoqsangiz, hisobot tanlovni hisobga olgan holda tuziladi, lekin foydalanuvchi ham hech qanday tanlovni ko‘rmaydi.

Konfiguratordagi ACS sozlamalarida oldindan tanlovlarni (bo'sh qiymatlarga teng) o'rnatamiz va ularni PNga kiritamiz. Nazariy jihatdan, FN'lar Sozlamalarni to'ldirishi kerak va ular PNni to'ldirishi kerak, lekin aslida bizda: Sozlamalarda - Kerakli element bilan tanlash, lekin bo'sh o'ng qiymat, FN'lar to'g'ri tanlovni o'z ichiga oladi va PNlar hali ham hech narsani o'z ichiga olmaydi. Bundan tashqari, bu holda hisobot tuzilmaydi, chunki Tanlash parametrida o'tkazilgan qiymatga qaramay, to'g'ri tanlash qiymati bo'sh.

PN elementlari bilan ishlashga urinish ham natija bermaydi. PN elementi uchun siz faqat "Foydalanish" bayrog'ini va "Tezkor" da ishtirok etishni o'zgartirishingiz mumkin. Interfeysdagi tanlov qiymati bo'sh bo'ladi, tizim hech qanday xatolik yaratmaydi. Xuddi shunday, PN Selection bilan ishlashga urinish ham ishlaydi; tuzatuvchida to'g'ri qiymat to'g'ri to'ldirilganidek ko'rinadi, lekin siz interfeysda hech narsani ko'rmaysiz. Eslatib o'taman, PN tarkibini o'zgartirish mumkin emas. Shunday qilib, qo'shimcha fokuslar talab qilinadi. Masalan:

&Server protsedurasida SetPresetSelections(UserSettings) Agar bo'lmasa Parameters.Property("Selection") Keyin EndIf ni qaytaring; Agar Parameters.Selection.Quantity()=0 bo'lsa, EndIf ni qaytaring; rTypeEO=Type("Ma'lumotlar kompozitsiyasini tanlash elementi"); Har bir kalit uchun Parameters.Selection Loop From pField=NewDataCompositionField(key.Key); // Agar (ValueType(kiz.Value)=Type("Array") orValueType(kiz.Value)=Type("ValueList")) va kiz.Value.Quantity()>1 Keyin pViewComparison=DataCompositionComparisonType.InList; Aks holda pComparisonType=DataCompositionComparisonType.Equals; endIf; // pNecessarySelection = Aniqlanmagan; // foydalanuvchi sozlamalarida Tanlov mavjudligini ko'ring pNecessaryEO=Aniqlanmagan; // foydalanuvchi sozlamalarida alohida DataCompozitsiyani tanlash elementi mavjudligini ko'ring. Har bir elnastr uchun UserSettings.Elements tsikli Agar TypeValue(elnastr) = Type("DataComposition Selection") va pNecessarySelection=Aniqlanmagan bo'lsa // faqat bitta pNecessarySelection= bo'lishi mumkin. elnastr; // buni tsikldan tashqarida qilish mumkin, lekin elementlar uchun foydalanuvchi sozlamalari bo'yicha tartiblash kerak... Aks holda, TypeZnch(elnastr) = pTypeEO bo'lsa // bu tanlov elementi bo'lsa, ko'p bo'lishi mumkin. Ulardan, lekin biz ishga tushirilmagan yoki kerakli maydonga ega bo'lganlar bilan qiziqamiz. Agar elstr.LeftValue=pField yoki elstr.LeftValue=Aniqlanmagan va rNeedEO=Aniqlanmagan Keyin pNeedEO=elstr; endIf; endIf; EndCycle; // Agar pRequiredSelection<>Undefined Keyin // u ustuvor bo'lib ketadi pNecessaryEOFromSelection = Undefined; Har bir elotb uchun pNecessarySelection.Elements dan aylanish Agar elotb.LeftValue=pField Keyin pNecessaryEOfromSelection=eloteb; EndIfni bekor qilish; EndCycle; Agar tanlovdan pNecessary EO = Undefined bo'lsa, pSelected from Necessary EO = pNecessary Selection.Elements.Add(pType of EO); pNeedEOFromSelection.LeftValue=pField; endIf; pNecessaryEOfromSelection.ComparisonType=pComparisonType; pNecessaryEOFromSelection.RightValue=kiz.Value; pNecessaryEOFromSelection.Use=To'g'ri; // rNeededEO.Use=False; Aks holda, pNecessarySelection=Aniqlanmagan va pNecessaryEO<>Undefined Keyin // elementni qo'ying pNecessaryEO.LeftValue=pField; pNecessaryEO.ComparisonType=pComparisonType; pNeedEO.RightValue=kiz.Value; pNeedEO.Use=To'g'ri; endIf; pNeed=Aniqlanmagan; Har bir elotb uchun Report.ComposerSettings.Settings.Selection.Elements Loop // do'stona tarzda, rekursiv qidiruv bo'lishi kerak! Agar TypeValue(elotb)=pTypeEO va elotb.LeftValue=pField Unda pNeed=elotb; EndIfni bekor qilish; EndCycle; Agar pNeed = Undefined Keyin pNeed = Report.Settings Composer.Settings.Selection.Elements.Add(pEOType); pNeed.LeftValue=pMargin; endIf; pNecessary.ComparisonType=pComparisonType; pNeed.RightValue=kiz.Value; pNeed.Use=To'g'ri; //EndCycle; Report.Settings Composer.FixedSettings.Selection.Items.Clear(); // aks holda elementlar kesishishi/qarama-qarshilik qilishini aytadi

Buni chaqirishning eng to'g'ri usuli:

&Serverda ishlov berish tartib-qoidalari toʻgʻrisida toʻldirish tekshiruvlari Serverda (muvaffaqiyatsizlik, tekshirilgan tafsilotlar) Oldindan belgilangan tanlovlarni oʻrnatish (Hisobot. Sozlamalar bogʻlovchisi. Foydalanuvchi sozlamalari); Jarayonning oxiri

Keyin, masalan, katalog shaklidan kontekst chaqiruvi quyidagicha ko'rinadi:

&OnClient Procedure OpenReport(Buyruq) Agar ValueFilled(Object.Link) Keyin ot=New Structure("LinkToDirectory",Object.Link); // SDS hisobotida maydon shunday nomlanadi Form Parameters = New Struktura ("Tanlash, Ochishda yaratish", tanlang, To'g'ri); OpenForm("Hisobot.Hisobot1.Form.ReportForm",FormParameters,Ushbu shakl); endIf; Jarayonning oxiri

6-qism.

Agar kerak bo'lsa, u bilan ishlashda hisobot sozlamalarini o'zgartiring, shu jumladan. ishga tushirishda ham, ochilgandan keyin ham eng to'g'ri yo'l - "boshidan" o'zgartirish, ya'ni. ACS sozlamalaridan. ACS sxemasini o'zgartirish forma ma'lumotlari bilan emas, faqat Hisobot ob'ekti (yoki tashqi hisobot) bilan amalga oshiriladi va o'z-o'zidan hech narsani o'zgartirmaydi - Sozlamalarda va PNda avvalgidek qoladi va FN qolishi mumkin. bo'sh. Shunday qilib, bizning vazifalarimizga qarab:

Qatl qilinganidan keyin

Report.Settings Composer.LoadSettings(SKD.DefaultSettings)

Faqat variant o'zgaradi va boshqa hech narsa yo'q;

2-bandda keltirilgan texnikani bajargandan so'ng ("vositachi" va usuldan foydalangan holda). LoadCustomSettings()

interfeysi yordamida joriy PN ni qayta o'rnatsangizgina ishlaydi. O'z-o'zidan, agar variant o'zgartirilsa, ular o'zgarmaydi. Bunday holda, Tanlov o'zgaradi, lekin yangi Tanlash elementi qo'shilmaydi.

Qatl qilinganidan keyin

ThisForm.CreateFormElementsUserSettings(,DisplayModeDataCompositionSettings.All)

platforma faqat jimgina tushadi. Bir nechta turli versiyalarda sinovdan o'tgan. Va sozlamalarni ko'rsatish rejimini faqat tezkorlar uchun chaqirish mantiqiy emas - biz ularning tarkibiga ta'sir qilmadik, shuning uchun baribir hech narsa o'zgarmaydi.

Va biz hali ham faqat ichki tanlovlarni emas, balki hisobot shaklidagi va tegishli shakllardagi displeyni ham to'liq o'zgartirishimiz kerak bo'lganligi sababli, biz faqat Tanlovni o'zgartirishimiz yoki quyidagicha davom etishimiz kerak:

&Server protsedurasida ChangeSKD() pObject = Form AttributesValue("Hisobot"); select=pObject.DataCompositionScheme.SettingsOptions.Get(0).Settings.Selection; eo = selection.Elements.Add(Type("DataCompositionSelectionElement")); eo.LeftValue=NewDataCompositionField("LinkToDirectory.Field1"); eo.ComparisonType=DataCompositionComparisonType.Equals; eo.RightValue=To'g'ri; eo.Use=To'g'ri; ValueVFormAttributes(pObject,"Hisobot"); Report.SettingsLitter.LoadSettings(pObject.DataCompositionSchema.DefaultSettings); Report.SettingsComposer.Restore(); // kerakli, garchi bu hali ham FN ga ta'sir qilmasa ham. // Aslida, aynan shunday PN tarkibidagi o'zgarish deb atash mumkin Har bir elektron pochta uchun Report.ComponentSettings.Settings.Selection.Elements Cycle email.DisplayMode=ElementDisplayModeDataCompositionSettings.QuickAccess; Agar EmptyString(el.UserSettingsIdentifier) ​​bo'lsa // PN elementi uchun electronicSetIdentifier usulidan foydalanishingiz mumkin, uning SP-dagi yordamiga qarang, u erda hamma narsa aniq e.UserSettingsIdentifier="ID123"; // muhim - identifikator UUID yoki GUID emas, HAR QANDAY bo'lishi mumkin! el.ViewUserSettings="Test"; endIf; EndCycle; comp=NewDataCompositionSettingsComposer; comp.LoadSettings(pObject.DataCompositionSchema.DefaultSettings); Report.SettingsComposer.LoadCustomSettings(comp.CustomSettings); Har bir e-pochta uchun Report.Settings Composer.CustomSettings.Elements sikli email.DisplayMode=ItemDisplayModeDataLayoutSettings.QuickAccess; // EndCycle-ni hisobot shakliga torting; // va endi bu ta'sir qiladi: ThisForm.CreateFormElementsUserSettings(,DisplayModeDataCompositionSettings.QuickAccess); Jarayonning oxiri

Aslida, siz ushbu mexanikani uzoq vaqt o'rganishingiz mumkin. Ushbu nashr muayyan muammoni hal qilish yo'llarini o'rganishdan kelib chiqqan va shuning uchun bir tomonlama; lekin men sozlamalarning ichki mantig'i, ayniqsa foydalanuvchilarning Xrstalevnikidan ko'ra nozikroq bo'lmagani haqida alohida kitob yozish mumkin deb o'ylayman. Afsuski, bunga kuchim ham, vaqtim ham yo'q. Kim aniq ishlanmalarni foydali deb topsa, u allaqachon yaxshi.

Ba'zi narsalar eksperimental tarzda aniqlangan va shuning uchun bahsli. Ko'proq bilganlar tanqid va fikr bildirishga taklif qilinadi.