Qanday qilib yangi hujjat shaklini dasturiy ravishda to'ldirish va ochish kerak? Mavjud ob'ektning shakli qanday ochiladi? Dasturiy ravishda yangi hujjat shaklini ochish 1s 8.3
Boshqariladigan 1C ilovasida shakllarni dasturiy ravishda ochish ularni oddiy dasturda ochishdan sezilarli darajada farq qiladi. Avval eski usulni ko'rib chiqaylik. U formani qabul qilish va keyin uni normal yoki modal rejimda ochishdan iborat (modal rejimda ochilganda forma dasturni bloklaydi).
GetForm() . Ochiq()
Bu shakllarni ochishning eng sekin usuli. Biroq, bu shaklni ochishdan oldin uni dasturiy ravishda qayta ishlashga imkon beradi. Kodni qayta ishlash uchun siz biroz o'zgartirishingiz kerak:
Shakl = GetForm ( "Hujjat. Tovar va xizmatlarni qabul qilish. Hujjat shakli")
;
//Bu yerda forma bilan amallarni bajaramiz
Shakl. Ochiq();
Shuni hisobga olish kerakki, ariza qabul qilinganda, boshqa hodisa protsedurasi bajariladi WhenCreatedOnServer.
Keling, boshqariladigan 1C ilovasida shakllarni tezroq va qulayroq ochishga imkon beruvchi boshqa usullarni ko'rib chiqaylik. Muayyan vaziyatga qarab, turli usullardan foydalanish mumkin.
1. Boshqariladigan ilovada ob'ekt formasini qanday ochish mumkin, agar unga havola mavjud bo'lsa.
Bunday holda, hamma narsa juda oddiy.
RefLink = Kataloglar. Nomenklatura. FindByCode("000000001" );
OpenValue (RefLink);
2. Tanlov shaklini qanday ochish va keyin tanlangan qiymatni olish.
Buning uchun funksiya mavjud EnterValue(). Funktsiya 3 ta parametrga ega:
- Tanlangan qiymat yoziladigan o'zgaruvchi;
- Tanlash oynasida ko'rsatiladigan maslahat;
- Tanlangan qiymatlar turlarining tavsifi. Bir nechta turlar bo'lishi mumkin, bu holda ma'lum bir qiymatni tanlashdan oldin sizdan turni tanlashingiz so'raladi.
Funktsiyani bajarish natijasida ko'rsatilgan turdagi ob'ekt uchun standart tanlash shakli ochiladi.
O'zgaruvchan qiymat;
Massiv = yangi massiv;
Massiv. Qo‘shish(Tur( "DirectoryLink.Nomenklatura")
)
;
Massiv. Qo‘shish(Tur( "DirectoryLink. Qarama-qarshi tomonlar")
)
;
TypeDescription= new TypeDescription(Array) ;
Res = EnterValue(Qiymat, "Maslahat" , TypeDescription);
Oldingi usullar faqat ob'ektlar uchun standart shakllarni ochishga imkon berdi (ob'ekt shakli yoki tanlov shakli). Agar siz maxsus shaklni ochishingiz kerak bo'lsa, funksiyadan foydalanishingiz mumkin OpenForm().
Ushbu funktsiya juda ko'p parametrlarga ega. Keling, ulardan ba'zilarini ko'rib chiqaylik:
- Shakl nomi— bu yerda siz standart obʼyekt shakllaridan birini tanlashingiz mumkin, masalan, Tanlov shakli yoki Ro'yxat shakli. Yoki ishlab chiquvchilar tomonidan yaratilgan maxsus shakl.
- Variantlar— uni formadagi shaklga o‘tkazish imkonini beradi tuzilmalar uni ochishdan oldin ba'zi parametrlar, shu bilan chiqish ma'lumotlarini aniqlash. Parametrlar mijozdan serverga uzatilishi mumkin bo'lgan har qanday ma'lumotlar bo'lishi mumkin. Shaklni ochishda o'tgan parametrlar protsedurada qayta ishlanishi mumkin WhenCreatingOnServer() ochilayotgan shaklda.
- Shaklni ochish rejimi— 3 ta variant mavjud: mustaqil, butun interfeysni bloklash, egasi formasini bloklash.
Funktsiya qanday ishlatilishini ko'rib chiqaylik OpenForm() turli vaziyatlarda.
3. Mavjud obyektning shakli qanday ochiladi
Har bir shakl bitta asosiy atributga ega. Shakl tafsilotlari ro'yxatida qalin shrift bilan ta'kidlangan va odatda chaqiriladi Ob'ekt ma'lumotnomalar va hujjatlarning elementlari shakllarida. Boshqa ob'ektlar boshqa nomga ega bo'lishi mumkin. Mavjud ob'ektning formasini ochish uchun ochilayotgan shaklga parametr o'tkazish kerak Kalit ob'ektga havola sifatida qiymat bilan.
&OnClient
Protsedura buyrug'i 1 (buyruq)
Parametr = yangi tuzilma;
Parametr. Insert("Kalit" , FindC() );
OpenForm(, Parametr);
Jarayonning oxiri
&Serverda
FindC();
Kataloglarni qaytarish. Qarama-qarshi tomonlar. FindByRequisites ("TIN", "745107734623")
EndFunction
4. Yangi obyekt formasini ochish
Bu yerda oddiy funksiya bajariladi OpenForm() hech qanday parametrlarsiz.
&OnClient
Protsedura buyrug'i 1 (buyruq)
OpenForm( "Katalog. Qarama-qarshi tomonlar. Ob'ekt shakli")
;
Jarayonning oxiri
5. Yangi ob'ekt shaklini qanday ochish va uni biror narsaga asoslanib to'ldirish
Siz parametrni kiritishingiz kerak Baza, uning qiymati to'ldirish asosiy ob'ektiga havola bo'ladi. Bu protsedurani boshlaydi ProcessFill().
&OnClient
Protsedura buyrug'i 1 (buyruq)
Parametr = yangi tuzilma;
Parametr. Insert("Asosiy", LinkToBuyerAccount) ;
OpenForm( "Hujjat. Tovar va xizmatlarni sotish. Ob'ekt shakli", Parametr);
Jarayonning oxiri
Ushbu misol hujjat yaratadi Tovar va xizmatlarni sotish va xaridorga to'lov uchun schyot-faktura asosida to'ldiriladi, unga havola uzatiladi.
6. Shaklni ochish va undagi tanlovni o'rnatish
1C shakllari bo'yicha tanlov oddiy yoki murakkab bo'lishi mumkin. Oddiy tanlash kabi ifodalarni o'z ichiga oladi Tashkilot = Horns and Hooves MChJ. Kompleks tanlash boshqa turdagi taqqoslashni o'z ichiga oladi, masalan. Ro'yxatda. Ushbu maqolada biz oddiy tanlovni tashkil qilishni ko'rib chiqamiz va alohida maqola murakkab tanlovga bag'ishlanadi.
Oddiy tanlovni tashkil qilish uchun ochilayotgan shaklga kalit bilan parametrni o'tkazish kerak Tanlash, qiymat kalit dinamik ro'yxat maydonining nomi bo'lgan struktura bo'ladi va qiymat izlanayotgan ma'lumotlardir.
Masalan, katalog ro'yxati formasini ochamiz GTD raqamlari va u erda egasi - katalog elementi bo'yicha tanlov qiling Nomenklatura.
&OnClient
Protsedura buyrug'i 1 (buyruq)
Parametr = yangi tuzilma;
Tanlash= yangi tuzilma;
Tanlash. Insert("Egasi", LinkToNomenclature) ;
Parametr. Insert("Tanlash", Tanlash);
OpenForm( "Directory.GTD raqamlari.Ro'yxat shakli", Parametr);
Jarayonning oxiri
7. Axborot reestriga kirish blankasi qanday ochiladi
Buning uchun sizga ma'lumotlar registrini kiritish kaliti kerak bo'ladi.
Yozuv kaliti- bu barcha o'lchovlar va davrning qiymatlari (agar registr davriy bo'lsa). Ya'ni, yozuv kaliti - bu yozuvni yagona aniqlash mumkin bo'lgan parametrlar.
Ochilish algoritmi quyidagicha:
- Biz tuzilishga kerakli qiymatlar bilan asosiy yozuv ma'lumotlarini kiritamiz.
- Olingan strukturani massivga joylashtiramiz.
- Massivdan yozuv kalitini yaratamiz.
- Ochilgan formaga parametr o'tkazamiz Kalit qiymat sifatida 3-bosqichdagi yozuv kaliti bilan.
&OnClient
Protsedura buyrug'i 1 (buyruq)
Parametr = yangi tuzilma;
KeyParameters= yangi tuzilma;
Asosiy parametrlar. Insert("Nomenklatura", LinkToNomenklatura) ;
Asosiy parametrlar. Insert("PriceType", LinkToPriceType) ;
Asosiy parametrlar. Insert ("Don", Sana);
KeyArray = Yangi massiv;
KeyArray. Qo'shish (KeyParameters) ;
EntryKey = Yangi( "Axborot registrini qayd etish kaliti. Narxlar nomenklaturasi", KeyArray);
Parametr. Insert("Kalit", RecordKey) ;
OpenForm( "Axborot reestri. Nomenklatura narxlari. Ro'yxatga olish shakli", Parametr);
Jarayonning oxiri
Mavjud ob'ektning shakli qanday ochiladi?
Mavjud ob'ektning formasini ochishda forma nomidan tashqari, shakli ochilishi kerak bo'lgan ob'ektni ham ko'rsatish kerak. Buning uchun Key forma parametri va bizni qiziqtirgan ob'ektga havoladan foydalaning.
Masalan, tashkilotlar ro'yxatidan kursor joylashgan tashkilot shaklini ochishingiz kerak bo'lsa, buni quyidagi tarzda qilishingiz mumkin:
Form parametrlarini struktura shaklida o'tkazamiz, bu erda struktura elementining nomi forma parametri nomiga mos keladi va qiymat biz shakl parametrini o'rnatmoqchi bo'lgan qiymatdir.
Agar siz konfiguratorda yaratilgan ob'ektning asosiy emas, balki ixtiyoriy shaklini ochmoqchi bo'lsangiz, asosiy shaklning standart nomi (ObjectForm) o'rniga Form so'zini va undan keyin nuqta qo'ying - bu shaklda yaratilgan shakl nomini ko'rsating. konfigurator.
Masalan:
ReferenceToDirectoryElement = Elements.List.CurrentRow; FormParameters = Yangi tuzilma ("Kalit", ReferenceToDirectoryElement); OpenForm("Directory.Organizations.Form.UniversalObjectForm",FormParameters);
Shuni ta'kidlash kerakki, agar ob'ektga havoladan tashqari, ochilayotgan shaklga parametrlarni o'tkazish kerak bo'lmasa va u mavjud ob'ektning asosiy shakli bo'lsa, siz oddiyroq usuldan foydalanishingiz mumkin. - protsedura yordamida shaklni ochish OpenValue():
OpenValue(Items.List.CurrentRow);
Bu usul kamroq ko'p qirrali, lekin ba'zi hollarda vaqt va kuchni tejaydi. Misol uchun, ko'rib chiqilgan holatda, bitta shunday satr biz ilgari yozgan barcha uch qatorli protsedurani almashtirishi mumkin.
Biroq, ushbu protseduradan foydalanganda ehtiyot bo'lish kerak. Ba'zi hollarda, bu serverga qo'shimcha qo'ng'iroqlarni keltirib chiqarishi mumkin, masalan, ierarxik katalog elementi shaklini ochish kerak bo'lganda. Ushbu protseduradan foydalanganda, platforma elementning guruh yoki yo'qligini aniqlash uchun serverga qo'shimcha qo'ng'iroq qiladi, chunki element va guruh uchun turli shakllar ochilishi kerak.
Shu bilan birga, ushbu ma'lumot ishlab chiquvchiga o'z algoritmi doirasida oldindan ma'lum bo'lishi mumkin va OpenForm() funktsiyasidan foydalangan holda, dasturchi serverga qo'shimcha qo'ng'iroqlarsiz kerakli shaklni ochishi mumkin, darhol asosiyning standart nomini ko'rsatadi. shakl.