Oldindan belgilangan elementlar. Standart konfiguratsiyaga qo'shish

20.06.2024
Noyob kelinlar qaynonasi bilan teng va do'stona munosabatda bo'lishlari bilan maqtanishlari mumkin. Odatda buning aksi bo'ladi

Oldindan belgilangan elementlar va oddiy elementlar o'rtasidagi farqni hamma biladi: "Oldindan belgilangan elementlar Konfigurator rejimida yaratilgan va ularni 1C: Enterprise rejimida o'chirib bo'lmaydi." Foydalanuvchi rejimida siz maxsus belgi yordamida foydalanuvchilar tomonidan qo'shilgan oldindan belgilangan elementni ajrata olasiz (quyidagi skrinshotga qarang).

Asosan, oldindan belgilangan elementlar turli xil konfiguratsiya ob'ektlarida algoritmlarni bog'lash uchun ishlab chiquvchilar tomonidan yaratiladi. Masalan, "Sifat" katalogidagi "Ishlab chiqarish korxonasini boshqarish" konfiguratsiyasida ishlab chiquvchilar oldindan belgilangan "Yangi" elementni qo'shdilar.

Ushbu element ko'plab konfiguratsiya modullarida qo'llaniladi. Shunday qilib, "Tovarlar va xizmatlarni qabul qilish" hujjatida "Sifat" o'lchovi mavjud bo'lgan barcha registrlarga joylashtirishda oldindan belgilangan elementning qiymati almashtiriladi. Quyida "Tashkilotlar tovarlari" reestriga joylashtirish jadvalini to'ldirish ro'yxati keltirilgan:

// RO'YXATDAN MAHSULOTLAR ProductsOrganizations. MoveSet = Harakat qiladi. MahsulotlarTashkilotlar; Agar kvitansiya turi = Transferlar. Tovarlarni qabul qilish turlari. Keyin omborga // Ro'yxatga olish yozuvlari to'plamining tuzilishiga mos keladigan qiymatlar jadvalini oling. MotionTable = MotionSet. Unload(); // Harakat jadvalini to'ldiring. Umumiy maqsad. LoadValueTable(Mahsulot jadvali, MovementTable) ; // etishmayotgan maydonlar. Harakat jadvali. FillValues(Tashkilot, "Tashkilot" ); Harakat jadvali. FillValues ​​(aniqlanmagan, "Komissiya agenti"); Harakat jadvali. FillValues(Kataloglar. Sifat. Yangi, "Sifat" ); // Oldindan belgilangan elementdan sifatni to'ldirish

Shunday qilib, oldindan belgilangan elementlarning xususiyatlari va ularning maqsadi juda oddiy. Keling, ular ma'lumotlar bazasi jadvallarida qanday saqlanishini va oddiy elementlardan qanday farq qilishini ko'rib chiqaylik.

Farqlar

Sinov konfiguratsiyasida "Mahsulotlar" katalogi yaratildi. Unda "Test elementlari" guruhi yaratilgan. Maqolaning boshidagi skrinshotda guruh tarkibini ko'rishingiz mumkin edi. "Mahsulotlar" katalogi uchun SQL ma'lumotlar bazasida quyidagi tuzilishga ega "_Reference37" mos jadval mavjud:

Ammo tafsilotlar konfiguratsiya daraxti va SQL jadvalidagi maydonlarga mos kelishini qanday aniqlashimiz mumkin?

Biz "GetDatabaseStorageStructure()" standart global kontekst usulidan foydalanamiz, bu bizga jadval tuzilishi tavsifi bilan qiymatlar jadvalini qaytaradi.

"Maydonlar" qiymatlar jadvalida biz SQL jadvali maydonlari va metama'lumotlar daraxtidagi ob'ekt tafsilotlari o'rtasidagi yozishmalarni ko'ramiz. Bizning misolimizda biz "Mahsulotlar" katalogining tuzilishini ko'rib chiqamiz. Barcha kataloglarda mantiqiy turdagi standart atribut "Oldindan belgilangan" mavjud bo'lib, u oldindan belgilangan elementlar uchun TRUE ga o'rnatiladi:

Ma'lumotlar bazasidagi kataloglarni saqlash tuzilmasi bilan jadvalga asoslanib, biz aniq aytishimiz mumkinki, "Oldindan belgilangan" maydoni "IsMetadata" maydoniga mos keladi. Agar SQL ma'lumotlar bazasidagi "_Reference37" jadvalining mazmunini ko'rib chiqsak, biz quyidagilarni ko'ramiz:

Oldindan belgilangan element uchun yozuvda "IsMetadata" maydonining qiymati TRUE bayrog'iga mos keladigan "0x01" ga o'rnatiladi. Oddiy elementlar uchun qiymat "0x00" ga o'rnatiladi. Bu oldindan belgilangan elementlar va oddiy elementlar o'rtasidagi asosiy farq. Boshqa barcha maydonlar ma'lumotlar bazasida foydalanuvchilar tomonidan qo'shilgan oddiy elementlardagi maydonlar kabi saqlanadi.

Oldindan belgilangan elementlar juda qiziqarli foydalanishga ega bo'lishi mumkin. Ularning yordami bilan siz elementlar guruhlarini katalogda va ularni qo'shish mumkin bo'lgan boshqa ob'ektlarda o'chirish/o'chirish uchun belgilashni oldini olishingiz mumkin. Agar biz "Test elementlari" guruhini o'chirish yoki o'chirish uchun belgilashga harakat qilsak. keyin biz quyidagi xatolarni olamiz:

Shunday qilib, oldindan belgilangan elementlar ular joylashgan guruhni ham "oldindan belgilangan" qiladi.

Tugallash

Oldindan belgilangan elementlar ko'pgina konfiguratsiyalarning ajralmas qismidir. Ulardan foydalanish rivojlanishni soddalashtiradi va funksionallikni qurishni mantiqiy jihatdan "uyg'unroq" va yaxlit qiladi.

Oldindan belgilangan elementlar bilan dasturiy ish g'oyasi, menimcha, juda to'g'ri. Ishlayotganda e'tiborga olinishi kerak bo'lgan oddiygina nuanslar mavjud.

Birinchidan, konfiguratsiyada oldindan belgilangan elementlar mavjudligini va axborot bazasida (IS) oldindan belgilangan elementlar mavjudligini o'zingiz uchun aniq tushunishingiz kerak. Texnik jihatdan oldindan belgilangan axborot xavfsizligi elementlari kataloglarning eng keng tarqalgan elementlari bo'lib, ularda "Oldindan belgilangan ma'lumotlar nomi" atributi oldindan belgilangan konfiguratsiyaning qaysi elementiga mos kelishini ko'rsatadi. Ular oddiy elementlardan farq qilmaydi. Shunga ko'ra, har qanday oddiy axborot xavfsizligi elementi oldindan belgilangan, har qanday oldindan belgilangan element oddiy holga keltirilishi mumkin. Buning uchun atributga kerakli qiymatni kiritish kifoya "PredefinedDataName".

Vaqti-vaqti bilan bu xususiyat ishlab chiquvchi mo'ljallangan qiymatdan tashqari qiymatni o'z ichiga oladi. Natijada, 1C ning ishlashida xatolar yuzaga keladi. Asosan ish imkonsiz bo'lgan tanqidiydan tortib, algoritmlarning mantig'i buzilgan tanqidiy bo'lmagangacha.

Shartli ravishda biz ajrata olamiz uch turdagi xatolar:
1. "Oldindan belgilangan element ma'lumotlarda yo'q";

3. Oldindan belgilangan elementning noto'g'ri spetsifikatsiyasi;

1. "Oldindan belgilangan element ma'lumotlarda yo'q" - o axborot xavfsizligi ma'lumotlarida konfiguratsiyada tasvirlangan oldindan belgilangan elementning yo'qligi.

Bu disk raskadrovka va tuzatish uchun eng oson xato turi. Uning soddaligi shundaki, platforma ushbu vaziyatni juda to'g'ri xabar qiladi "Ma'lumotlarda oldindan belgilangan element yo'q" va uni qanday tuzatish kerakligi aniq.

"Kataloglar. Aloqa ma'lumotlarining turlari. Aloqa qiluvchi shaxsning elektron pochtasi" kodidagi etishmayotgan elementga kirishda xabar ko'rsatiladi.

"VALUE(Directory.Types of Contact Information.Email of the contact person)" so'rovidagi elementga kirishda quyidagi xabar ko'rsatiladi:

Ushbu xato, agar element konfiguratsiyada tasvirlangan bo'lsa, lekin ma'lumotlar bazasida element u bilan bog'lanmagan bo'lsa paydo bo'ladi.

Boshlash uchun, keling, bu vaziyat har doim ham noto'g'ri emasligini aniqlaylik. Ko'pchilik foydalanuvchilar uchun foydalanilmasligi mumkin bo'lgan biron bir dastur mantig'ida oldindan belgilangan ma'lumotlardan foydalanish juda mumkin. Bunday holda, konfiguratsiyaning barcha foydalanuvchilari uchun katalogni chalkashtirib yubormaslik uchun konfiguratsiyada oldindan belgilangan elementlarni aniqlash mantiqan to'g'ri keladi, lekin ularni barcha axborot xavfsizligi tizimlarida emas, balki faqat axborot xavfsizligi tizimlari uchun yaratish kerak. kerakli konfiguratsiya mantig'idan foydalaniladi. Bunday holda, dasturchi katalog uchun "Oldindan belgilangan ma'lumotlarni yangilamang" xususiyatini belgilashi va modul funksionalligiga kirishda dasturiy ravishda elementlarni yaratishi mumkin. Yoki foydalanuvchiga oldindan belgilangan modul elementlarini mavjud oddiy elementlarga mustaqil ravishda ulashga ruxsat bering.

Shuningdek, RIB rejimida ishlashda oldindan belgilangan elementlarni avtomatik yaratish ishlatilmaydi. Chunki yangi elementlar markaziy ma'lumotlar bazasidan uzatilishi kerak va turli UID-larga ega tugunlarda yaratilmasligi kerak.

Bular. Ba'zida xato bunday elementning mavjudligi emas, balki mos kelmaydigan elementga havola bo'ladi.

Nima uchun element yaratilmaganligini tahlil qilish kerak. Ehtimol, u ba'zi dastur rejimi bajarilganda yaratilishi kerak. Masalan, RIBda almashinuvni tugatgandan so'ng. Yoki u tasodifan o'chirilgan bo'lishi mumkin.

Agar mantiq oldindan belgilangan elementlarni avtomatik ravishda emas, balki alohida rejimda to'ldirishni ta'minlasa, u holda kirish nomidan foydalanishdan oldin " Kataloglar. Aloqa ma'lumotlarining turlari. Aloqa qiluvchi shaxsning elektron pochtasi"Istisno vaziyatning oldini olish uchun element allaqachon ma'lumotlar bazasida mavjudligini tekshirish tavsiya etiladi. Agar element yo'qolgan bo'lsa, foydalanuvchiga bu haqda xabar bering va elementni to'ldirish uchun u qanday rejimni bajarishi kerakligini tushuntiring. Bunday tekshirish uchun. , siz ma'lumotlar so'rovini bajarishingiz mumkin.

So'rov = Yangi so'rov; Request.Text = "TANLASH | Aloqa ma'lumotlari turlari. Havola | FROM | Katalog. Aloqa ma'lumotlari turlari QANDAY Aloqa ma'lumotlari turlari | QAYER | Aloqa ma'lumotlari turlari. Oldindan belgilangan ma'lumotlarning nomi = "" EmailContactPerson"""; Element MissingInData = Query.Execute().Empty();

Agar bu hali ham ma'lumotlar bazasi ma'lumotlarida xato bo'lsa, u holda axborot xavfsizligi elementining oldindan belgilangan elementiga ulanishi kerak. Bular. tizimga ushbu nom bilan dastur kodi qaysi axborot xavfsizligi elementiga kirishi kerakligini tushuntirish kerak. Texnik jihatdan bog'lash "xususiyatida" oldindan belgilangan element nomini ko'rsatishdirOldindan belgilanganDataName" IS elementining. Uni o'rnatish uchun kodni ishga tushirish kifoya:

2. "Oldindan belgilangan element yagona emas" - h ikki marta oldindan belgilangan elementlar:

Bu holat shundan iboratki, bir nechta axborot xavfsizligi elementlari oldindan belgilangan bitta elementga biriktirilgan. Bunday holda, oldindan belgilangan nomga kirishda element tasodifiy tanlanadi. Bu holat har doim noto'g'ri. Uning qiyinligi shundaki, platforma bu haqda hech qanday tarzda xabar bermaydi. Algoritmlar faqat noto'g'ri ishlay boshlaydi.

Platforma "Oldindan belgilangan element yagona emas" xatosi haqida xabar beradi, faqat siz takroriy elementni tahrirlashga harakat qilganingizda.

Hech kim elementni tahrirlashi shart emas ekan, hech kim xato haqida bilmaydi.

Bunday dublikatlar, masalan, katalog uchun RIB ishlatilsa va oldindan belgilangan ma'lumotlarning xususiyatlarida "Avtomatik yangilash" rejimi ko'rsatilgan bo'lsa, yaratilishi mumkin. Bunday holda, almashinuvni amalga oshirishda, konfiguratsiya yangilanganda oldindan belgilangan ma'lumotlarning bir nusxasi yaratiladi. Ayirboshlash vaqtida bir xil nomdagi oldindan belgilangan elementlarning ikkinchi nusxasi markaziy ma'lumotlar bazasidan uzatiladi.

Shuningdek, ushbu dublikatlar konfiguratsiyalar o'rtasida almashinuvni qayta ishlashdan foydalanganda paydo bo'ladi, agar turli xil axborot xavfsizligi elementlari turli ma'lumotlar bazalarida oldindan belgilangan elementlarga mos keladi. Bunday holda, oldindan belgilangan ma'lumotlarning bir nusxasi allaqachon ma'lumotlar bazasida, ikkinchisi boshqa UID bilan ma'lumotlarni yuklashda keladi. Agar siz ma'lumotlar uzatishni amalga oshirayotgan bo'lsangiz, qaysi ma'lumotlar bazasi elementlari asosiy deb hisoblanishini hal qilishingiz va ularni bo'ysunuvchi ma'lumotlar bazasida ishlatishingiz kerak. Bo'ysunuvchi ma'lumotlar bazasida eski elementlardan foydalanishni asosiy ma'lumotlar bazasi elementlari bilan almashtirish kerak.

Ma'lumotlar bazasidagi bunday xatolar quyidagi so'rovlar bilan aniqlanishi mumkin:

Aloqa ma'lumotlarining turlarini tanlang.Oldindan belgilangan ma'lumotlarning nomi, MIQDOR (TURLI Aloqa ma'lumotlari. Ma'lumotnoma) Katalogdan oldindan belgilangan soni. Aloqa ma'lumotlarining turlari Aloqa ma'lumotlari turlari bo'yicha GURUHGA BO'LGAN oldindan belgilangan ma'lumotlarning nomi. (TactInformation.Linkning TURLI TURLARI) > 1

Ushbu so'rov bir nechta axborot xavfsizligi elementlari bog'langan oldindan belgilangan elementlar ro'yxatini qaytaradi.

Agar bunday elementlar mavjud bo'lsa, ulardan biri uchun oldindan belgilangan bilan aloqani olib tashlash kerak. Bular. Tizim uchun ushbu nomdan foydalanganda dastur kodi qaysi axborot xavfsizligi elementiga murojaat qilishi kerakligini aniq aniqlash kerak. Buning uchun kodni ishga tushirish kifoya.

3. Oldindan belgilangan elementning noto'g'ri spetsifikatsiyasi.

Xato shundaki, oldindan belgilangan element dastur mantig'i bilan ta'minlanmagan elementga mos keladi. Bunday xatolarni tashxislash eng qiyin. Birinchi ikkita turdan farqli o'laroq, konfiguratsiyani ushbu xatolar uchun avtomatik ravishda tekshirib bo'lmaydi. Ularni faqat ish mantig'ini tahlil qilish orqali aniqlash mumkin. Agar shubhangiz bo'lsa, to'g'ri element ishlatilayotganligini tekshirishingiz mumkin.

Buning uchun buyruqlardan birini bajarish kifoya.

//Istalgan oldindan belgilangan Xabarnomaga bog'langan axborot xavfsizligi elementini aniqlash (Kataloglar. Aloqa ma'lumotlarining turlari. Kontakt shaxsining elektron pochtasi) // Tanlangan xabar biriktirilgan oldindan belgilangan elementni aniqlash (Elementga havola. Oldindan belgilangan ma'lumotlar nomi. )

Agar bunday xatolar aniqlansa, eski element bilan noto'g'ri ulanishni olib tashlash va yangi element bilan ulanishni qo'shish kerak. Operatsion kodi dastlabki ikki turdagi xatolarni tuzatish kodiga o'xshaydi.

Xo'sh, dastur ishi yoki konfigurator rejimida xatolar haqida qisqacha:

"Oldindan belgilangan element tegishli emas<Имя справочника>" - konfiguratordagi nomga mos kelmaydigan nom bilan oldindan belgilangan elementni yozishga urinayotganda xatolik yuz beradi..

"Oldindan belgilanmagan ob'ektlarda oldindan belgilangan subkonto ko'rish yozuvlari bo'lishi mumkin emas" - oldindan belgilangan schyotlar rejasining elementini oldindan belgilanmagan qilishga urinishda xatolik yuzaga keladi. Xatolarni bartaraf qilish uchun har bir element subkontakt liniyasidan "Oldindan belgilangan" bayroqni olib tashlash kerak.

"Oldindan belgilanmagan ob'ektlarda etakchi hisoblash turlarining oldindan belgilangan yozuvlari bo'lishi mumkin emas"- hisoblash turlari rejasining oldindan belgilangan elementini oldindan belgilanmagan qilishga harakat qilganda xatolik yuzaga keladi. Xatolarni bartaraf qilish uchun elementning etakchi hisoblash turining har bir satri uchun "Oldindan belgilangan" katakchasini olib tashlash kerak.

"Oldindan belgilangan elementlar noyob emas"- 8.3.4. bilan moslik rejimisiz konfiguratsiya relizi uchun ma'lumotlar bazasini yangilashda konfiguratorda xatolik yuzaga keldi. Yangilashdan oldin dublikatlarni tekshirish va ularni yo'q qilish kerak.

"Oldindan belgilangan elementning nomi yagona emas" - platformani yangilashda konfiguratsiyada bir xil nomdagi bir nechta oldindan belgilangan elementlar mavjud bo'lganda xatolik yuzaga keladi.8.3.6.2332 va undan yuqori. Konfiguratsiyadagi dublikatlarni yo'q qilish kerak.

Oldindan belgilangan ma'lumotlar bilan ishlash uchun men qayta ishlashni tavsiya qilaman. U oldindan belgilangan ma'lumotlar bilan har qanday harakatlarni bajarishi mumkin, shuningdek, barcha axborot xavfsizligi ob'ektlarida (kataloglar, hisoblar jadvallari, PVX, PVR) dastlabki ikki turdagi xatolar (ko'paytiriladigan va etishmayotgan elementlar) mavjudligi uchun konfiguratsiyani tekshirishi mumkin. .

Xayrli kun.

Bugun biz 8.3 platformasida oldindan belgilangan elementlarga oid innovatsiyalar haqida gaplashamiz.

Kirish

Eslatib o'taman, ilgari amalda men ko'pincha katalog elementiga uning oldindan belgilangan nomini bilish uchun qarashni xohlardim. Masalan, siz ikkita oldindan belgilangan kontragentni yaratdingiz va ularni IPSidorov va OOOMeteor deb nomladingiz. Va ularga qandaydir mantiq tikishdi.

Hammasi tuzatilib, ishlab chiqilganda, vazifa teskari tartibda qo'yilganligi va MChJ uchun yakka tartibdagi tadbirkor uchun mantiq, yakka tartibdagi tadbirkor uchun esa MChJ mantig'i kerakligi ma'lum bo'ldi. "Muammo yo'q", deymiz va korporativ rejimda biz elementlarning nomini o'zgartiramiz. Axir, kodga kirish ancha qiyin. Bir yil o'tadi va sizga yangi vazifa beriladi: IP Sidorov uchun yana bir oz mantiqni o'rnatish. Siz konfiguratorga kirasiz, mantiqni yozasiz, tekshirishni boshlaysiz va hech narsa ishlamaydi, chunki... IPSidorov konfiguratorida va korxonada - OOOMeteor. Miya buzilgan va men bu rakeni yo'q qilmoqchiman. Eng oddiy va eng aniq narsa oldindan belgilangan element nomini ro'yxat shaklida ko'rsatishdir. Gap shundaki, siz faqat 8.2 da oldindan belgilangan nomini usul yordamida olishingiz mumkin. Ammo usulning o'ziga xos noqulayliklari bor, uni so'rovda olish mumkin emas. Bular. Birinchi noqulaylik, katalogga havoladan oldindan belgilangan nomini olishdir.

Ikkinchi noqulaylik, bizda allaqachon katalog elementi mavjud bo'lganda va biz uni oldindan belgilangan qilishimiz kerak. Biz oldindan belgilangan elementni yaratamiz va katalogda ikkita elementni olamiz. Biri oldindan belgilangan, ikkinchisi operatsion, bu bizning barcha hujjatlarimizda ko'rsatilgan. Havolalarni almashtirish, albatta, yordam beradi, lekin ma'lumotlar bazasi katta bo'lsa, bu qiyin.

Endi nuqtaga

Birinchisi, endi katalogda "Oldindan belgilangan ma'lumotlarni yangilash" xususiyati mavjud.

Bu maydon bizga nima beradi? Agar u "Avtomatik yangilanmasin" ga o'rnatilgan bo'lsa, oldindan belgilangan elementni qo'shish orqali biz uni darhol katalogda ko'rmaymiz. Bular. metadata ma'lumotlarga hech qanday aloqasi yo'q. Va agar siz uni katalogda yaratmasangiz, katalog menejeri orqali uning nomi bilan kirish sintaksis xatosiga olib keladi.

Juda qiziq, lekin nega? Katalogda qanday qilib element yaratishimiz mumkin? Siz uni xohlaganingizcha yaratishingiz mumkin yoki uni mavjudiga bog'lashingiz mumkin. Endi katalogda "Oldindan belgilangan ma'lumotlar nomi" atributi mavjud. Biz odatdagidek "Directories.Contractors.CreateElement()" orqali katalog elementini dasturiy tarzda yaratamiz va uning "PredefinedDataName" atributini oldindan belgilangan element nomiga teng ravishda to'ldiramiz. Yoki element allaqachon mavjud bo'lsa, biz uning ob'ektini olamiz va yana "Oldindan belgilangan ma'lumotlar nomi" ni to'ldiramiz. Hammasi.

Va nihoyat, bir oz sirop

Ushbu yangi atribut nafaqat o'qilishi va yozilishi mumkin, balki so'rovlarda ham mavjud. Shunday qilib, siz so'rovlarda unga shartlar qo'yishingiz, uning oldindan belgilangan yoki yo'qligini aniqlashingiz mumkin.

E'tiboringiz uchun rahmat.

Bizning to'rtinchi darsimizda dastur bilan tanishishda davom etamiz. Bugun biz amaliy misollar bilan tanishamiz vaierarxik kataloglar, shuningdek, oldindan belgilangan elementlarni qanday yaratishni o'rganing.

Kursning 4 ta dars vaqti:

00:19 Kursning 3-dars uchun uy vazifasini bajargandan so'ng Xodimlar katalogidagi o'zgarishlar
00:35 Kataloglardagi tafsilotlar tartibini tahrirlash
02:54 Nomenklatura katalogini yaratish
03:40 Ierarxik katalog yaratish va sozlash
05:10 Nomenklatura katalogida xizmatlar va mahsulotlar guruhlarini yaratish
06:05 Nomenklatura katalogini to'ldirish
07:14 Katalog elementini boshqa guruhga o'tkazishning 3 usuli
08:21 Omborlar katalogini yaratish
09:19 Oldindan belgilangan katalog elementlarini yaratish
11:25 Omborlar katalogini to'ldirish
12:20 4-dars materiali bo'yicha testdan o'ting

Ierarxik katalog- uning elementlarini ierarxik joylashtirish imkoniyati mavjud bo'lgan katalog. Masalan, Nomenklatura katalogida guruhlar yaratilishi mumkin: Mahsulotlar, Xizmatlar va boshqalar, bu guruhlarga tegishli elementlar joylashgan. Bundan tashqari, katalog guruhlari boshqa guruhlarni o'z ichiga olishi mumkin va shu bilan ko'p darajali ierarxik tuzilmani yaratadi.

Bundan tashqari, kataloglar ierarxiyaning boshqa turini ham qo'llab-quvvatlaydi, bunda katalog elementlari guruhlarga emas, balki bir xil katalogning boshqa elementlariga tegishli bo'ladi. Ushbu turdagi ierarxiya ( elementlar ierarxiyasi) masalan, Bo'limlar katalogini yaratishda foydalanish mumkin, bunda bitta bo'linma (bu holda bo'linma katalogning elementi hisoblanadi, guruh emas) bir nechta boshqa bo'limlarni o'z ichiga olishi mumkin. Ushbu turdagi ierarxiya juda kam qo'llaniladi.

Katalog shakllari– katalogning vizual tasviri. Katalogimiz bilan qanday aniq harakatlarni amalga oshirishni xohlayotganimizga qarab, biz katalogni "turli ko'rinishlarda" ko'rsatishimiz kerak. Shunday qilib, kursning 4-darsida biz tafsilotlar tartibini ro'yxat shaklida va katalog elementi shaklida tahrir qildik.

Tizim shakllarni avtomatik ravishda yaratadi (hosil qiladi), lekin agar kerak bo'lsa, ishlab chiquvchi shakllarni mustaqil ravishda "chizishi" mumkin.

Kataloglar uchun jami 5 ta shakl (shakl turlari) mavjud:

  • element shakli– katalog elementini yaratish yoki tahrirlash;
  • guruh shakli- kataloglar guruhini yaratish yoki tahrirlash;
  • ro'yxat shakli– katalog elementlari ro‘yxatini ko‘rsatish;
  • tanlash shakli- ma'lum bir shakldagi maydonda ushbu katalog elementlaridan birini tanlash uchun ishlatiladi. Masalan, ombor maydonidagi Tovarlarni qabul qilish hujjatidagi "Omborlar" katalogidan ma'lum bir omborni tanlash uchun;
  • guruh tanlash shakli– ma’lum bir shakldagi maydonda ushbu katalog guruhlaridan birini tanlash uchun ishlatiladi.

Oldindan belgilangan katalog elementlari- Konfigurator rejimida ishlab chiquvchi tomonidan yaratilgan va o'rnatilgan 1c tilidan nomi orqali kirish mumkin bo'lgan katalog elementlari.

Oddiy va oldindan belgilangan katalog elementlari o'rtasida tub farq bor. Oddiy elementlar konfiguratsiyada doimiy emas. Foydalanuvchining ishi davomida ularni yaratish, tahrirlash va o'chirish mumkin, shuning uchun hech qanday algoritmlarni bajarishda ularga tayanmaslik kerak (elementning kodi va nomi foydalanuvchi tomonidan o'zgartirilishi mumkin).Boshqa tomondan, oldindan belgilangan elementlar doimiydir. Ish paytida, foydalanuvchi bunday elementning nomini o'zgartirsa ham, unga o'rnatilgan 1c tilidan kirish mumkin. Bunga oldindan belgilangan elementning rekvizitlarga ega bo'lishi orqali erishiladi Ism, bu foydalanuvchi uchun mavjud emas. Oddiy katalog elementlari bunday atributlarga ega emas.

Muhim!

Texnik jihatdan, foydalanuvchi oldindan belgilangan katalog elementini o'chirish imkoniyatiga ega, lekin, qoida tariqasida, foydalanuvchilarga oldindan belgilangan katalog elementlarini o'chirish huquqi rad etiladi.

Kursning 4-dars uchun uy vazifasi

Kursning to'rtinchi darsi uchun uy vazifasi nazariy testni muvaffaqiyatli hal qilgandan so'ng darhol sizga taqdim etiladi.

1C: Enterprise 8.x platformasida ishlayotganda, ko'pincha dastur kodida oddiy (oldindan belgilanmagan) katalog elementlariga bog'lash kerak bo'ladi. Misol uchun, tashkilot deyarli barcha mexanizmlarda qo'llaniladigan besh turdagi narxlarga ega bo'lishi mumkin. Bunday holda, ma'lum bir narxga dasturiy kirish, eng yaxshi holatda, katalogdagi kod yoki eng yomoni, element nomi bilan shivirlash orqali amalga oshiriladi.

Hisobotlarda kerakli narxni olish uchun so'rovda narx turi bo'yicha tanlov uning nomi bilan qo'llanilganiga guvoh bo'ldim (quyidagi skrinshotga qarang).

Bundan tashqari, agar siz katalog elementlarining nomi yoki kodiga havola qilsangiz, elementga havolani olganingizda, qidiruv har doim katalog jadvalida amalga oshiriladi. Standart tizim tafsilotlari DBMS tomonidan indekslanganligiga qaramay, ba'zi hollarda ularni qidirish katta resurslarni talab qilishi mumkin. Bundan tashqari, agar, aytaylik, elementga havola allaqachon "oldindan ma'lum" bo'lsa, mos yozuvlar jadvali yordamida qidiruv so'rovini bajarmaslik oqilona bo'ladi.

Chiqish yo'li sifatida siz "Tovar narxlari turlari" katalogining har bir tez-tez ishlatiladigan elementiga havolani alohida konstantalarda saqlashingiz va so'rovda ulardan qiymatlarni olishingiz mumkin. Biroq, bu holda ishlab chiquvchi har bir bunday element uchun alohida konstanta qo'shishi kerak bo'ladi. Agar bunday elementlar nafaqat "Tovar narxining turlari" katalogida, balki boshqa kataloglarda ham ("Ob'ekt toifalari", "Sifat", "Nomenklatura" va boshqalar) bo'lsa, vaziyat ancha murakkablashadi. Shunda tizimdagi konstantalar soni bir necha barobar ortishi mumkin!

Albatta, kataloglarning har biriga oldindan belgilangan elementlarni qo'shish mumkin va ularga kirish ancha osonlashadi. Biroq, standart ob'ektlarni o'zgartirish sotuvchi paketlaridan konfiguratsiyani yangilashni qiyinlashtiradi.

Konfiguratsiya metama'lumotlar strukturasini ishlab chiqish nuqtai nazaridan ham, tizimning ishlashi nuqtai nazaridan ham maqbulroq yondashuv mavjud. Bugun biz bu haqda gaplashamiz.

Universal yechim

Umumjahon yechimning mohiyati quyidagicha bo'ladi: ishlab chiquvchi oldindan belgilangan elementlarni qo'shadigan katalog yaratiladi. Qidiruvga "Qiymat" atributi qo'shildi, uning turi "Oldindan belgilangan qidirish elementi -> Bog'langan qiymat" yozishmalari yaratiladigan qiymatlarga bog'liq. Katalogning metama'lumotlar tuzilishi shunday ko'rinadi (quyidagi skrinshotga qarang).

Oldindan belgilangan elementni olish uchun eng yaxshi variant global usuldan foydalanishdir "Oldindan belgilangan qiymat(<Имя>)" . Oldindan belgilangan elementga to'liq yo'l usulga parametr sifatida uzatiladi. Sintaksis VALUE() so'rov tili funksiyasiga o'xshaydi.

Rivojlanish qulayligi uchun men umumiy modulda oldindan belgilangan element bilan bog'liq qiymatni olish funktsiyasini joylashtirishni tavsiya etaman. Maqolaning oxiridagi havola orqali yuklab olish mumkin bo'lgan test konfiguratsiyasida eksport funktsiyasi bilan "Oldindan belgilangan elementlarning qiymatlari" umumiy moduli yaratilgan. "Oldindan belgilangan elementning GetValue(<ИмяПредопределенногоЭлемента>)" . Funktsiyaning dastur kodi oldindan belgilangan elementga havolani oladi, so'ngra so'rov yordamida "Qiymat" atributining qiymatlarini oladi. Quyidagi skrinshotda toʻliq funksiyalar roʻyxati koʻrsatilgan.

Ko'rib turganimizdek, funktsiya parametr sifatida qabul qilingan oldindan belgilangan elementning "Qiymat" atributiga so'rov hosil qiladi. Funktsiya parametri oldindan belgilangan element nomiga ega bo'lgan satrdir.
Yaratilgan mexanizm to'g'ri ishlashi uchun "Qiymat" atributidagi mos elementni tanlab, foydalanuvchi rejimida oldindan belgilangan elementni oddiy katalog elementi bilan bog'lashingiz kerak. Keling, ishlashga ta'sir qilish masalasiga o'tamiz.

Ishlash ta'siri

Men ikkala qidiruv opsiyasi uchun tezlik testini o'tkazdim: nomi bo'yicha va oldindan belgilangan elementdan havola bo'yicha. Qidiruv 20 000 ta yozuvdan iborat "Mahsulotlar" katalogida bo'lib o'tdi. Fayl ma'lumotlar bazasida testlarni o'tkazishda quyidagi natijalarga erishildi:

Natijalar shuni ko'rsatdiki, ishning fayl versiyasi uchun boshqa kataloglarning tez-tez ishlatiladigan elementlarini olish uchun oldindan belgilangan elementlardan foydalanish deyarli 4 baravar sekinroq!

Ishning mijoz-server versiyasida test natijalari butunlay boshqacha rasmni ko'rsatadi. Kerakli elementga havolani olish tezligi sezilarli darajada kamaymadi (sinovlardan biri nomi bo'yicha qidirish uchun 0,002 soniyani va oldindan belgilangan element bilan ishlashda 0,0008 soniyani ko'rsatdi), ammo dasturning ishonchliligi sezilarli darajada oshdi!

xulosalar

Ko'pincha oddiy katalog elementlariga ulanish zarur bo'lgan hollarda, kod yoki nom bo'yicha bog'lashni ishlatmaslikni tavsiya qilaman. Ushbu yondashuv tizim ishonchliligi va ish faoliyatini pasaytiradi.

Platforma bilan ishlagan vaqtimda men bir necha bor shunday holatlarga duch keldimki, nomni o'zgartirgandan so'ng, masalan, "PriceNomenklatura turlari" katalog elementi, nostandart hisobotlarning aksariyati muvaffaqiyatsiz tugadi.

Kod yoki nom orqali oddiy katalog elementlariga qanchalik koʻp algoritmlar bogʻlangan boʻlsa, tizim shunchalik barqaror boʻlmaydi.

Bunga qo'shimcha ravishda, ushbu yondashuv, agar siz ularga oldindan belgilangan elementni qo'shishingiz kerak bo'lsa, standart konfiguratsiya ob'ektlarini o'zgartirmaslikka imkon beradi. Bu kelajakda konfiguratsiyani yangilash jarayonini biroz osonlashtiradi.

Yuklab olish uchun fayllar:

  1. Maqoladan misollar bilan test ma'lumotlar bazasini yuklash.

Eng so'nggi sayt materiallari