Kalitlar, muntazam dastur, boshqariladigan shakllar. Kalitlar, muntazam dastur, boshqariladigan shakllar 1c boshqariladigan shakllar bilan bog'liq muammolar

1C: Enterprise platformasi sizga boshqariladigan shakl elementlarini dasturiy ravishda qo'shish va o'zgartirish imkonini beradi. Keling, nima uchun bu kerak bo'lishi mumkinligini aniqlaylik.

Shaklning dasturiy ta'minotini o'zgartirish bir necha hollarda talab qilinishi mumkin:

  • Keyingi yangilash jarayonini osonlashtirish uchun standart konfiguratsiyalarni yakunlashda. Bunday holda, faqat forma moduli o'zgartiriladi. Modullarni yangilash shakllarga qaraganda ancha oson.
  • Ba'zi umumiy algoritmlarni amalga oshirishda. Masalan, "Ob'ekt tafsilotlarini tahrirlashni taqiqlash" quyi tizimida tafsilotlarni tahrirlash imkoniyatini yoqish uchun quyi tizimga ulangan barcha ob'ektlar uchun dasturiy ravishda tugma yaratilishi mumkin.
  • Ba'zi maxsus algoritmlarni amalga oshirishda. Masalan, Nomenklatura katalogida qo'shimcha ma'lumotlarni tahrirlash uchun maydonlar yaratiladi.

Boshqariladigan shaklda siz dasturiy ravishda qo'shishingiz, o'zgartirishingiz va o'chirishingiz mumkin:

  • rekvizitlar;
  • mahalliy jamoalar;
  • elementlar.

Ushbu operatsiyalarning barchasi faqat serverda mumkin.

Dasturiy qayta shakllantirishda cheklovlar mavjud:

  • Siz faqat dasturiy jihatdan qo'shilgan tafsilotlarni/buyruqlarni/elementlarni o'chirishingiz mumkin. Siz konfiguratorda yaratilgan ob'ektlarni dasturiy ravishda o'chira olmaysiz.
  • Siz asosiy atribut sifatida belgilay olmaysiz.

Shakl buyruqlarini o'zgartirish

Ob'ekt uchun buyruqlar tarkibini boshqarish Boshqariladigan shakl kolleksiyasi bor Jamoalar

    Qo'shish (< ИмяКоманды >)

    Miqdori ()

    Toping (< ИмяКоманды >)

    Oʻchirish (< Команда >)

Teams to'plami mijozda ham, serverda ham mavjud. To'plamni (Qo'shish() va O'chirish() usullari) faqat serverda o'zgartirishingiz mumkin. Elementlar sonini (Find () va Count () usullari) mijozda ham, serverda ham qidirishingiz va olishingiz mumkin.

Shakl buyruqlari bilan ishlashga misol tariqasida ishlov beruvchini chaqiradigan “ChangeHistory...” sarlavhali yangi ChangeHistory buyrug'ini yarataylik. Displey tarixi(). Shakl ochilganda yaratish sodir bo'ladi.

&Serverda
Jarayon WhenCreatingOnServer(muvaffaqiyatsizlik, standart ishlov berish)
Jamoa = Jamoalar. qo'shish( "O'zgarishlar tarixi");
Jamoa . Harakat =;
Jamoa . Sarlavha = "O'zgarishlar tarixi ...";
Jarayonning oxiri
&OnClient
Jarayon Connectable_Display History(Buyruq)
// buyruq harakatlari
Jarayonning oxiri

Buyruqlar ishlovchisi formada joylashgan bo'lishi va &OnClient kompilyatsiya direktivasiga ega bo'lishi kerak.

Shakl tafsilotlarini o'zgartirish

Shakl detallari tarkibini o'qish funksiya tomonidan amalga oshiriladi Tafsilotlarni oling(< Путь >) FormAttributes tipidagi massivni qaytarish. Funksiya parametri asosiy atributga (satr sifatida) yo'lni belgilaydi. Agar parametr o'tkazib yuborilsa yoki bo'sh qator ko'rsatilgan bo'lsa, yuqori darajadagi tafsilotlar qaytariladi.

Tafsilotlarni o'zgartirish usul yordamida amalga oshiriladi Tafsilotlarni o'zgartirish(<Qo'shilgan tafsilotlar>, <Olib tashlanadigan tafsilotlar>) ob'ekt Boshqariladigan shakl. Parametrlarga Qo'shilgan tafsilotlar Va Olib tashlanadigan tafsilotlar Form atributlari tipidagi elementlarga ega massivlar uzatiladi.

Diqqat!

Tafsilotlar tarkibini o'zgartirish jarayoni juda ko'p resurs talab qiladi. Shakl aslida qayta yaratilmoqda. Shu munosabat bilan shakl detallari bilan ishlash ommaviy rejimda amalga oshiriladi.

Keling, xaridor nomi bilan yangi forma atributini yaratamiz:


AddedDetails = Yangi massiv;
Qo'shilgan tafsilotlar. Qo'shish (yangi shakl atributlari(“Xaridor”, Yangi turdagi tavsif (“DirectoryLink. Kontragentlar”), “Mijoz”));

// Tafsilotlar tarkibidagi o'zgarishlar
);

Shakl elementlarini o'zgartirish

Ob'ekt elementlarining tarkibini nazorat qilish Boshqariladigan shakl kolleksiyasi bor Elementlar. To'plamda bir nechta usullar mavjud:

    Kiritmoq (< Имя>, < ТипЭлемента>, < Родитель>, < Элемент >)

    Qo'shish (< Имя>, < ТипЭлемента>, < Родитель >)

    Miqdori ()

    Toping (< Имя >)

    Ko'chirish(< Элемент>, < Родитель>, < МестоРасположения >)

    Oʻchirish (< Элемент >)

Items to'plami mijozda ham, serverda ham mavjud. To'plamni o'zgartirish (Usullarni kiritish () , Qo'shish () , Ko'chirish () va O'chirish () ) faqat serverda mavjud. Elementlar sonini (Find () va Count () usullari) mijozda ham, serverda ham qidirishingiz va olishingiz mumkin. To'plam elementlari quyidagilar bo'lishi mumkin:

  • FormGroup;
  • Shakllar jadvali;
  • FormField;
  • Shakl tugmasi.

Shakl elementlariga hodisa ishlov beruvchilarini dasturiy ravishda belgilashingiz mumkin. Usul ushbu maqsadlar uchun mo'ljallangan SetAction(< ИмяСобытия>, < Действие >) .

Buyruqlar, detallar va shakl elementlari bilan ishlashning eng keng tarqalgan misollarini ko'rib chiqamiz.

Buyruq va unga bog'langan tugmani qo'shish:

// Buyruq yarating
Jamoa = Jamoalar. qo'shish( "O'zgarishlar tarixi");
Jamoa . Harakat = "Plug-in_Display History"; // Shaklda ko'rsatilgan nomga ega protsedura bo'lishi kerak
Jamoa . Sarlavha = "O'zgarishlar tarixi ...";
// Tugma yarating va uni buyruq bilan bog'lang
Element = Elementlar. qo'shish( "O'zgarishlar tarixi", Type("FormButton" ));
Element.Buyruqning nomi = "O'zgarishlar tarixi";

Atribut va tegishli kiritish maydonini qo'shish:

// Qo'shilgan tafsilotlarning tavsifi
AddedDetails = Yangi massiv;
Qo'shilgan tafsilotlar. Qo'shish(Yangi shakl rekvizitlari (“Xaridor”, Yangi tur tavsifi ( "DirectoryLink. Qarama-qarshi tomonlar"), "Mijoz" ));
// Tafsilotlar tarkibini o'zgartirish
Tafsilotlarni o'zgartirish (qo'shilgan ma'lumotlar);
// Kirish maydonini yaratish va atributlar bilan ulanish
Element = Elementlar. Qo'shish("Xaridor" , Turi("FormField" ));
Element . Ko'rish = FormFieldView. Kirish maydoni;
Element . PathToData= "Xaridor" ;

Shakl elementiga hodisa ishlov beruvchisini tayinlash:

Buyurtmachi. SetAction("U o'zgarganda", "Connected_BuyerOnChange");

&OnClient
Jarayon Connected_BuyerOnChange(Element)
// Voqea harakatlari
Jarayonning oxiri

Diqqat!

Usul yordamida koddan hodisa ishlov beruvchilari sifatida o'rnatiladigan protseduralar SetAction(), Connectable_ prefiksini o'rnatish tavsiya etiladi.

Diqqat!

Siz ishlov berishni dasturiy qidiruv va boshqariladigan shaklning tafsilotlari, buyruqlari va elementlarini o'zgartirish misollari bilan yuklab olishingiz mumkin.

Va 1C 8.2 muhitida kod tuzilmasi, boshqariladigan shaklga ma'lumotlarni uzatish ob'ekti.

Kirish

Keling, "boshqariladigan shakl" tushunchasining qisqacha tavsifi va 1C platformasining tegishli tushunchalari bilan boshlaylik. Platformani biluvchilar ushbu bo'limni o'tkazib yuborishni xohlashlari mumkin.

2008 yilda 1C platformasining yangi versiyasi: Enterprise 8.2 (keyingi o'rinlarda Boshqariladigan ilova deb yuritiladi) mavjud bo'lib, u interfeys bilan ishlashning butun qatlamini butunlay o'zgartiradi. Bunga buyruqlar interfeysi, shakllar va oyna tizimi kiradi. Shu bilan birga, nafaqat konfiguratsiyada foydalanuvchi interfeysini ishlab chiqish modeli o'zgaradi, balki mijoz ilovasi va server o'rtasidagi funksionallikni ajratish uchun yangi arxitektura ham taklif etiladi.
Boshqariladigan dastur quyidagi turdagi mijozlarni qo'llab-quvvatlaydi:

  • Qalin mijoz (oddiy va boshqariladigan ishga tushirish rejimi)
  • Yupqa mijoz
  • Veb mijoz
Boshqariladigan ilova yangi texnologiya asosida tuzilgan shakllardan foydalanadi. Ular chaqiriladi Boshqariladigan shakllar. O'tishni engillashtirish uchun oldingi shakllar (muntazam shakllar deb ataladigan) ham qo'llab-quvvatlanadi, ammo ularning funksionalligi ishlab chiqilmagan va ular faqat qalin mijozni ishga tushirish rejimida mavjud.
Ishlab chiquvchi uchun boshqariladigan shakllarning asosiy farqlari:
  • Tuzilishning "piksel bo'yicha" tavsifi emas, deklarativ. Shakl ko'rsatilganda elementlarning o'ziga xos joylashuvi tizim tomonidan avtomatik ravishda amalga oshiriladi.
  • Shaklning barcha funksionalligi sifatida tavsiflanadi tafsilotlar Va jamoalar. Tafsilotlar - bu forma ishlaydigan ma'lumotlar va buyruqlar - bajariladigan harakatlar.
  • Shakl serverda ham, mijozda ham ishlaydi.
  • Mijoz kontekstida deyarli barcha dastur turlari mavjud emas va shunga mos ravishda ma'lumotlar bazasidagi ma'lumotlarni o'zgartirish mumkin emas.
  • Har bir usul yoki shakl o'zgaruvchisi uchun u ko'rsatilishi kerak kompilyatsiya direktivasi, bajarilish joyini (mijoz yoki server) va shakl kontekstiga kirishni aniqlash.
Shakl usullarini kompilyatsiya qilish uchun direktivalarni sanab o'tamiz:
  • &OnClient
  • &Serverda
  • &OnServerKontekstsiz
  • &OnClientOnServerKontekstsiz
Keling, yuqoridagilarni misol qilib keltiramiz. Skrinshotda boshqariladigan shakl va uning moduli ishlab chiqish rejimiga misol keltirilgan. Deklarativ tavsif, rekvizitlar, kompilyatsiya direktivalari va boshqalarni toping.

Keyingi barcha muhokamalar illyustratsiyaning o'ng tomoni, modul kodini qanday tuzish va mijoz-serverning samarali o'zaro ta'sirini amalga oshirish imkonini beradigan qanday tamoyillar haqida bo'ladi.

Keling, muammoni aniqlaylik

1C platformasining yangi versiyasi faol qo'llanilganidan beri bir necha yil o'tdi va 1C va uning ko'plab sheriklari tomonidan ko'plab echimlar (konfiguratsiyalar) chiqarildi.
Bu vaqt mobaynida ishlab chiquvchilar shakllarni yaratishda mijoz-server o'zaro ta'siri tamoyillari haqida umumiy tushunchani ishlab chiqdilarmi va yangi arxitektura realliklarida dasturiy modullarni amalga oshirishga yondashuv o'zgarganmi?

Keling, bir xil standart konfiguratsiyaning bir nechta shakllaridagi kod strukturasini (shakl moduli) ko'rib chiqamiz va naqshlarni topishga harakat qilamiz.
Tuzilish deganda ishlab chiquvchi tomonidan guruh usullari va kompilyatsiya direktivalari uchun ajratilgan kod bo'limlari (ko'pincha bu sharhlar bloklari) tushuniladi.
1-misol:
Hodisalarni qayta ishlash bo'limi Usul - mijozda Usul - serverda Usul - mijozda Xizmat ko'rsatish protseduralari va funktsiyalari bo'limi Yordamchi kiritishni boshqarish funktsiyalari
2-misol:
Xizmat ko'rsatish tartib-qoidalari va funktsiyalari To'lov hujjatlari Qadriyatlar Voqealar ishlovchilari
3-misol:
Serverda xizmat ko'rsatish tartib-qoidalari Mijozda xizmat ko'rsatish protseduralari Kontekstsiz serverda xizmat ko'rsatish protseduralari Sarlavha hodisasi ishlov beruvchilari Buyruq hodisasi ishlov beruvchilari
4-misol:
Umumiy maqsadli protseduralar Shakl hodisalari ishlov beruvchilari “Aloqa maʼlumotlari” quyi tizimining protseduralari
Aslida, kod tuzilmasi yo'q yoki yumshoq qilib aytganda, 8.1 shakllaridagiga o'xshaydi:

  • Ma'lumotga ega bo'lmagan so'zlar "Umumiy, Xizmat, Yordamchi".
  • Timid mijoz va server usullarini ajratishga harakat qiladi.
  • Usullar ko'pincha interfeys elementlari bo'yicha guruhlangan "Mahsulotlar jadval qismi bilan ishlash, aloqa ma'lumotlari".
  • Usullar va kod guruhlarini o'zboshimchalik bilan joylashtirish. Masalan, Voqealar boshqaruvchilari bir shaklda tepada, boshqasida pastda, uchinchisida umuman ajratib ko'rsatilmagan bo'lishi mumkin va hokazo.
  • Va bularning barchasi bitta konfiguratsiyada ekanligini unutmasligimiz kerak.
  • Ha, shunday konfiguratsiyalar mavjudki, unda "Umumiy, Xizmat, Yordamchi" so'zlari har doim bir xil joylarda bo'ladi, lekin ...
Nima uchun kod tuzilishi kerak?
  • Xizmatni soddalashtirish.
  • O'rganishni soddalashtiring.
  • Umumiy/muhim/muvaffaqiyatli tamoyillarni qayd etish.
  • ... sizning tanlovingiz
Nega 1C dan mavjud rivojlanish standarti yordam bermaydi?
Keling, boshqariladigan shaklni yozishda tavsiya etiladigan ITS disklarida va turli xil "Ishlab chiquvchilar uchun qo'llanmalar ..." da chop etilgan tamoyillarni ko'rib chiqaylik.
  • Server qo'ng'iroqlari sonini kamaytiring.
  • Serverda maksimal hisoblash.
  • Kontekstli bo'lmagan server qo'ng'iroqlari kontekstli qo'ng'iroqlarga qaraganda tezroq.
  • Mijoz-server aloqasini hisobga olgan holda dastur.
  • va h.k.
Bu mutlaqo to'g'ri bo'lgan shiorlar, lekin ularni qanday amalga oshirish kerak? Qo'ng'iroqlar sonini qanday kamaytirish mumkin, mijoz-server rejimida dasturlash nimani anglatadi?

Dizayn naqshlari yoki avlod donoligi

Mijoz va serverning o'zaro ta'siri o'nlab yillar davomida turli xil dasturiy texnologiyalarda qo'llanilgan. Oldingi bo'limda keltirilgan savollarga javob uzoq vaqtdan beri ma'lum bo'lib, ikkita asosiy tamoyilda jamlangan.
  • Masofaviy Fasad(bundan buyon matnda masofaviy kirish interfeysi deb yuritiladi)
  • Ma'lumotlarni uzatish ob'ekti(keyingi o'rinlarda ma'lumotlarni uzatish ob'ekti deb yuritiladi)
Martin Faulerdan bir so'z, uning ushbu tamoyillarni tavsifi:
  • Masofaviy kirish uchun mo'ljallangan har bir ob'ekt bo'lishi kerak past granülerlik interfeysi, bu muayyan protsedurani bajarish uchun zarur bo'lgan qo'ng'iroqlar sonini kamaytiradi. ... Hisob-faktura va uning barcha bandlarini alohida so‘rash o‘rniga, bitta so‘rovda barcha hisob-faktura elementlarini o‘qib chiqishingiz va yangilashingiz kerak. Bu ob'ektning butun tuzilishiga ta'sir qiladi ... Esda tuting: masofaviy kirish interfeysi domen mantig'ini o'z ichiga olmaydi.
  • ...agar men g'amxo'r ona bo'lganimda, men bolamga: "Hech qachon ma'lumot uzatish ob'ektlarini yozmang!" Aksariyat hollarda ma'lumotlarni uzatish ob'ektlari boshqa narsa emas shishgan maydon to'plami...Bu jirkanch yirtqich hayvonning qiymati faqat imkoniyatda bir qo'ng'iroqda bir nechta ma'lumotlarni tarmoq orqali uzatish- taqsimlangan tizimlar uchun katta ahamiyatga ega bo'lgan texnika.
1C platformasidagi shablonlarga misollar
Boshqariladigan shaklni ishlab chiqishda ishlab chiquvchi uchun mavjud bo'lgan amaliy dasturlash interfeysi ushbu tamoyillarning ko'plab misollarini o'z ichiga oladi.
Masalan, OpenForm() usuli, odatiy "qo'pol" interfeys.
OpeningParameters = Yangi tuzilma ("Parametr1, Parametr2, Parametr3", Qiymat1, Qiymat2, Qiymat3); Shakl = OpenForm(FormName, OpeningParameters);
v8.1 da qabul qilingan uslub bilan solishtiring.
Shakl = GetForm (FormName); Form.Parameter1 = Qiymat1; Form.Parameter2 = Qiymat2; Form.Open();

Boshqariladigan shakl kontekstida ko'plab "Ma'lumotlarni uzatish ob'ektlari" mavjud. Siz tanlashingiz mumkin tizimli Va ishlab chiquvchi tomonidan belgilangan.
Tizimlilar dastur ob'ektini mijozda bir yoki bir nechta shakl ma'lumotlari elementlari shaklida modellashtiradi. Shakl tafsilotlariga murojaat qilmasdan ularni yaratish mumkin emas.

  • DataFormsStructure
  • DataForms Collection
  • DataFormStructureWithCollection
  • DataShapesTree
Tizim ma'lumotlarini uzatish ob'ektlarini dastur turlariga va aksincha konvertatsiya qilish quyidagi usullar yordamida amalga oshiriladi:
  • ValueInFormData()
  • FormDataValue()
  • CopyFormData()
  • ValueInFormAttributes()
  • FormAttributesValue()
Mavjud yechimni moslashtirishda ko'pincha aniq konversiya qo'llaniladi. Usullar FormDataCollection o'rniga ValueTable kabi kiritish parametrlarini kutishi (xususiyatlardan foydalanishi) mumkin yoki usul dastur ob'ekti kontekstida aniqlangan va shakldan to'g'ridan-to'g'ri qo'ng'iroq qilish uchun mavjud bo'lmagan.
Misol 1C v8.1:
// FillUserCache(DepartmentLink) shakli kontekstida mijozda
Misol 1C v8.2:
// forma kontekstida serverda ProcessingObject = Form AttributesValue("Object"); ProcessingObject.FillUserCache(DepartmentRef); ValueVFormAttributes(ProcessingObject, "Ob'ekt");

Tuzilishi ishlab chiquvchi tomonidan belgilanadigan ma'lumotlarni uzatish ob'ektlari mijozda ham, serverda ham mavjud bo'lgan turlarning kichik bir qismidir. Ko'pincha, "qo'pol" interfeys usullarining parametrlari va natijalari sifatida quyidagilar qo'llaniladi:

  • Primitiv tiplar (string, raqam, mantiqiy)
  • Tuzilishi
  • Xat yozish
  • Massiv
  • Ilova ob'ektlariga havolalar (noyob identifikator va matn ko'rinishi)
Misol: usul holatni o'zgartirish uchun buyurtmalar ro'yxatini qabul qiladi va mijozga xatolar tavsifini qaytaradi.
&OnServerWithoutContext Function ServerChangeOrderStatus(Buyurtmalar, NewStatus) Xatolar = Yangi moslik(); // [buyurtma][xato tavsifi] Buyurtmalardan har bir buyurtma uchunTransaction Cycle Start(); DocOb = Order.GetObject(); …. boshqa harakatlar, faqat buyurtma bilan mumkin emas... Istisno CancelTransaction(); Errors.Insert(Buyurtma, ErrorDescription()); EndAttempt; EndCycle; Qaytish xatosi; EndFunction // ServerChangeOrderStatus()

Kodning tuzilishi

Boshqariladigan shakl moduli aks ettirishi kerak bo'lgan asosiy maqsadlar va yechimga yondashuvlar.
  • Mijoz va server kodini aniq ajratish. Shuni unutmaslik kerakki, bajarilish vaqtida bu ikkita o'zaro ta'sir qiluvchi jarayon bo'lib, ularning har biri sezilarli darajada farq qiladi.
  • Masofaviy kirish interfeysining aniq identifikatsiyasi, mijozdan qaysi server usullarini chaqirish mumkin va qaysi biri mumkin emas? Masofaviy interfeys usullarining nomlari "Server" prefiksi bilan boshlanadi. Bu kodni o'qiyotganda boshqaruvning serverga o'tkazilishini darhol ko'rish imkonini beradi va kontekstli yordamdan foydalanishni soddalashtiradi. Rasmiy tavsiyalar (ITS) postfikslar bilan nomlash usullarini taklif qilishini unutmang, masalan, ChangeOrderStatusOnServer(). Biroq, takror aytamizki, barcha server usullarini mijozdan chaqirib bo'lmaydi va shuning uchun kompilyatsiya joyidan ko'ra mantiqiy foydalanish muhimroqdir. Shuning uchun, "Server" prefiksi bilan biz faqat mijoz uchun mavjud bo'lgan usullarni belgilaymiz; misol usulini ServerChangeOrderStatus() deb ataymiz.
  • O'qish qobiliyati. Ta'mga ko'ra, modul serverda shakl yaratish protseduralari va masofaviy kirish usullari bilan boshlanganda buyurtmani qabul qilamiz.
  • Saqlash qobiliyati. Yangi kod qo'shish uchun aniq joy bo'lishi kerak. Muhim nuqta shundaki, konfigurator tomonidan avtomatik ravishda yaratilgan usul shablonlari modul oxiriga qo'shiladi. Shakl elementlari uchun hodisa ishlov beruvchilari ko'pincha avtomatik ravishda yaratilganligi sababli, har bir ishlov beruvchini modulning boshqa joyiga sudrab ketmaslik uchun mos keladigan blok oxirgi joyda joylashgan.
Quyida sanab o'tilgan maqsadlarni amalga oshiradigan modulning asosiy tuzilishi keltirilgan.
  • Grafik variant - ijro etilishning asosiy oqimini aniq ko'rsatadi.
  • Matn varianti strukturani yangi shakl moduliga tezda kiritish uchun shablon dizayniga misoldir.

//////////////////////////////////////////////////////////////////////////////// // <(c) Автор=""Sana=""/> // <Описание> // // ////////////////////////////////////////////// ////////////////////////// // MODUL O'ZGARCHILARI ///////////////// // ///////////////////////////////////////////////////////// ////////// // SERVERDA //******* SERVERDAGI HOQIYoLAR ******* &Serverda yaratilganda server protsedurasi (muvaffaqiyatsizlik, standart ishlov berish) / /Ishlab chiqaruvchining mazmunini kiriting Protseduraning oxiri //******* MASOQDA KIRISH INTERFEYSI ******* //********* SERVERDAGI BIZNES MANTIQI ******* ///////// /////////////////////////////////////////////// /////// //////////////////// // MIJOZ VA SERVERNING UMUMIY USULLARI ////////////// /////// ///////////////////////////////////////////////// ///// //////// // MIJOZ HAQIDA //******* BIZNES MANTIQI MIJOZDA ******* //********** JAMOASI * ****** //********* MIJOLAR HOQADASI ******* //////////////////////// ///// ////////////////////////////////////////// // / / ASOSIY DASTUR OPERATORLARI

Tegishli savollar
Xulosa qilib aytganda, biz mijoz-server o'zaro ta'sirini dasturlashda o'ylash uchun foydali bo'lgan bir nechta sohalarni belgilaymiz.
  • Masofaviy kirish interfeysini amalga oshirish imkoniyatlari. Asinxroniya, tafsilotlar darajasi...
  • Keshlash. 1C muvaffaqiyatsiz arxitektura qarorini qabul qildi, keshlashni faqat umumiy modullarni chaqirish usullari darajasida joriy qildi va boshqarish imkoniyatlarini ta'minlamadi (muvofiqlik vaqti, talab bo'yicha qayta o'rnatish).
  • Yashirin server qo'ng'iroqlari. Texnologik xususiyatlar haqida unutmang, mijozdagi ko'plab "zararsiz" operatsiyalar platformani server bilan bog'lanishga majbur qiladi.

Shakllar 1C: Enterprise da ma'lumotlar bazasidagi ma'lumotlarni ko'rsatish va tahrirlash uchun mo'ljallangan. Shakllar ma'lum konfiguratsiya ob'ektlariga tegishli bo'lishi yoki ulardan alohida mavjud bo'lishi mumkin va butun dastur yechimi tomonidan qo'llaniladi.

Masalan, katalog Nomenklatura muayyan maqsadlar uchun ishlatiladigan bir nechta shakllarga ega bo'lishi mumkin - katalog elementini tahrirlash, ro'yxatni ko'rsatish va h.k.:

Shu bilan birga, maxsus konfiguratsiya ob'ektlariga tegishli bo'lmagan umumiy shakllar - umumiy shakllar bo'lishi mumkin.

Asosiy shakllar

Har bir konfiguratsiya ob'ekti ba'zi standart amallarni bajarish uchun ishlatilishi mumkin. Masalan, har qanday katalog uchun uning elementlari ro'yxatini ko'rsatish, katalogning alohida elementlarini ko'rsatish, katalog guruhini ko'rsatish, katalogdan elementlar va elementlar guruhlarini tanlash kerak bo'lishi mumkin. Har qanday hujjat uchun bunday harakatlar ro'yxati ancha kichik bo'ladi: hujjatlar ro'yxatini ko'rish, hujjatlar ro'yxatidan tanlash va alohida hujjatni ko'rish.

Bunday standart harakatlar amaliy yechim ob'ektlari ma'lumotlari bilan bajarilishini ta'minlash uchun ularning har biri uchun tegishli harakatlarni bajarishda foydalaniladigan asosiy shakllar to'plami mavjud. Ushbu ob'ektga bo'ysunadigan har qanday shakl asosiy sifatida belgilanishi mumkin. Masalan, katalogda Nomenklatura Quyidagi asosiy shakllar mavjud bo'lishi mumkin:

Va hujjat Tovar va xizmatlarni qabul qilish asosiy shakllarning tarkibi boshqacha bo'ladi:

Shunday qilib, agar foydalanuvchi katalog ro'yxatini ko'rishni xohlasa Nomenklatura yoki hujjatlar ro'yxati Tovar va xizmatlarni qabul qilish, tizim ushbu ob'ektlar uchun ro'yxat shakli sifatida belgilangan tegishli shaklni ochadi.

Avtomatik shakllar

1C: Enterprise 8 tizimining muhim xususiyati - bu avtomatik yaratilgan shakllar mexanizmi. Ushbu mexanizm ishlab chiquvchini har bir konfiguratsiya ob'ekti uchun barcha mumkin bo'lgan shakllarni yaratish zaruratidan ozod qiladi. Ishlab chiquvchi shunchaki yangi konfiguratsiya ob'ektini qo'shishi kerak va tizimning o'zi foydalanuvchi ishida kerakli daqiqalarda ushbu ob'ektdagi ma'lumotlarni ko'rsatish uchun kerakli shakllarni yaratadi.

Shunday qilib, ishlab chiquvchi dastur yechimi ob'ektlarining o'z shakllarini yaratishi kerak, agar ular tizim tomonidan avtomatik ravishda yaratilgan shakllardan farqlarga (boshqa dizayn yoki o'ziga xos xatti-harakatlar) ega bo'lishi kerak bo'lsa.

Shaklni ma'lumotlar bilan bog'lash

Shaklning ma'lum bir konfiguratsiya ob'ektiga tegishli yoki yo'qligi shaklda ko'rsatiladigan ma'lumotlar tarkibini aniqlamaydi. Shaklning, masalan, katalogga tegishli ekanligi Nomenklatura, uni ushbu katalog uchun asosiy shakllardan biri sifatida belgilashga imkon beradi, lekin bu shakl qanday ma'lumotlarni ko'rsatishi va uning xatti-harakati qanday bo'lishini hech qanday tarzda aniqlamaydi.

Shaklni ma'lumotlar bilan bog'lash uchun forma tomonidan ko'rsatilgan ma'lumotlar ro'yxatini ko'rsatadigan forma tafsilotlari ishlatiladi. Barcha shakllar, ular qanday ma'lumotlarni ko'rsatishidan qat'i nazar, bir xil xatti-harakatlarga ega. Shu bilan birga, shakl atributlaridan biri uning asosiy atributi sifatida belgilanishi mumkin (u qalin harf bilan ta'kidlangan), bu holda shaklning standart xatti-harakati va uning xususiyatlari asosiy shakl atributining qaysi turiga ega ekanligiga qarab to'ldiriladi:

Misol uchun, agar hujjat asosiy shakl atributi sifatida tayinlangan bo'lsa Tovar va xizmatlarni qabul qilish, keyin shaklni yopayotganda tizim ushbu hujjatni yozib olish va joylashtirishni tasdiqlashni so'raydi. Agar siz, aytaylik, shaklning asosiy atributi sifatida katalogni tayinlasangiz Nomenklatura, keyin shaklni yopishda bunday tasdiqlash so'rovi ko'rinmaydi.

Shakl tuzilishi

Shakllarning asosiy xususiyati shundaki, ular ishlab chiquvchi tomonidan batafsil chizilmagan, "piksel piksel". Konfiguratsiyadagi forma shakl tarkibining mantiqiy tavsifidir. Va elementlarning o'ziga xos joylashuvi shakl ko'rsatilganda tizim tomonidan avtomatik ravishda amalga oshiriladi.

Shaklning ko'rsatilgan qismi (foydalanuvchiga ko'rinadigan) shakl elementlarini o'z ichiga olgan daraxt sifatida tavsiflanadi.

Elementlar kiritish maydonlari, tasdiqlash qutilari, radio tugmalar, tugmalar va boshqalar bo'lishi mumkin. Bundan tashqari, element boshqa elementlarni o'z ichiga olgan guruh bo'lishi mumkin. Guruh ramkali panel, sahifalar (xatcho'plar) bo'lgan panel, sahifaning o'zi yoki buyruqlar paneli sifatida ifodalanishi mumkin. Bundan tashqari, element jadval bo'lishi mumkin, unda elementlar (ustunlar) ham mavjud. Element tuzilishi shakl qanday ko'rinishini tavsiflaydi.

Shaklning barcha funksionalligi tafsilotlar va buyruqlar ko'rinishida tasvirlangan. Tafsilotlar - bu forma ishlaydigan ma'lumotlar va buyruqlar - bajariladigan harakatlar. Shunday qilib, shakl muharririda ishlab chiquvchi formaga kerakli detallar va buyruqlarni kiritishi, ularni aks ettiruvchi shakl elementlarini yaratishi va kerak bo'lganda elementlarni guruhlarga ajratishi kerak.

Ushbu mantiqiy tavsifga asoslanib, tizim foydalanuvchiga ko'rsatish uchun avtomatik ravishda shaklning ko'rinishini yaratadi. Bunday holda, tizim ko'rsatilgan ma'lumotlarning turli xususiyatlarini (masalan, turdagi) foydalanuvchi uchun shakl elementlarini iloji boricha qulayroq joylashtirish uchun hisobga oladi.

Ishlab chiquvchi turli xil sozlamalar bilan elementlarning joylashishiga ta'sir qilishi mumkin. U elementlarning tartibini aniqlashi, kerakli kenglik va balandlikni belgilashi mumkin. Biroq, bu tizimga shaklni ko'rsatishga yordam beradigan qo'shimcha ma'lumotlar.

Shakllarda ishlab chiquvchi nafaqat formaning o'zi buyruqlaridan, balki butun konfiguratsiyaning buyruq interfeysida ishlatiladigan global buyruqlardan ham foydalanishi mumkin. Bundan tashqari, joriy shaklning o'ziga xos ma'lumotlarini hisobga olgan holda boshqa shakllarni ochadigan parametrlash mumkin bo'lgan buyruqlar yaratish mumkin. Misol uchun, bu hozirda hisob-faktura shaklida tanlangan ombordagi qoldiqlar to'g'risidagi hisobotni chaqirishi mumkin.

Biz hammamiz bilamizki, 1C kompaniyasi 1C platformasining juda ko'p turli xil versiyalariga ega edi, endi biz ushbu maqolani yozish paytida eng so'nggi versiyalardan biri bilan qiziqamiz, bular 1C 8.2 va 1C 8.3 versiyalari. Agar siz ushbu ikkala versiyada ham ishlashingiz kerak bo'lsa, ehtimol siz ushbu versiyalarning interfeyslarida farqlarni sezdi, foydalanuvchilar uchun ular faqat tashqi ko'rinishida farqlanadi. Aslida tanlov muntazam yoki boshqariladigan dastur tizimni ishga tushirish uchun qaysi shakllarni ko'rsatish kerakligini aytadi, muntazam yoki boshqariladigan, shuningdek, qaysi dastur mijozi sukut bo'yicha ishlatiladi, qalin yoki ingichka. Mijozlar haqida batafsil ma'lumot olish uchun "1C-da qalin va ingichka mijozlar nima, shuningdek ularning farqlari" maqolasini o'qing.

Oddiy 1C ilovasi (oddiy shakllar, oddiy interfeys, 1C 8.2 versiyasi)

1C 8.2 da faqat ishlash mumkin muntazam shakllar bilan, muntazam dastur rejimida. Quyidagi rasmda ma'lumotlar bazasi "muntazam 1C ilovasi" ish rejimida (muntazam shakllar) ko'rsatilgan.

Boshqariladigan 1C ilovasi (boshqariladigan shakllar, boshqariladigan interfeys, 1C 8.3 versiyasi)

1C 8.3 platformasida biz oddiy shakllar (moslik rejimida) va boshqariladigan shakllar bilan ishlashimiz mumkin. Bundan tashqari boshqariladigan shakllar ikki xil displeyga ega, bu standart va taksi. Standart boshqariladigan shakllar bilan 1C 8.3 konfiguratsiyasiga misol quyida ko'rsatilgan va undan keyin "Taksi" interfeysi ko'rsatilgan.

Oddiy va boshqariladigan 1C ilovasi o'rtasidagi farq nima?

Biz allaqachon bilib olganimizdek oddiy dastur va boshqariladigan dastur - bu 1C dasturini ishga tushirishning bunday turlari. Bundan tashqari, 1C ishga tushirish turining qiymatiga qarab ( muntazam yoki boshqariladigan dastur), ma'lum bir interfeys sukut bo'yicha yuklanadi ( muntazam yoki boshqariladigan shakllar), shuning uchun bu tushuncha uchun juda ko'p sinonimlar mavjud. Shuni ta'kidlashni istardikki, interfeyslardagi farqlar juda muhim, boshqariladigan interfeys butunlay qayta ishlab chiqilgan. Aslida, bu 1C dasturining oddiy foydalanuvchilari ko'radigan barcha farqlar. Dasturchilarga kelsak, boshqariladigan interfeys o'zgartirilgan kodni yozishni talab qiladi, chunki ishlab chiqish 1C 8.2 da emas, balki 1C 8.3 da amalga oshirilgan, shuning uchun barcha oqibatlar. Kod, shuningdek, mijoz va serverga bo'linishi kerak; bu konfiguratorda tegishli ko'rsatmalar yordamida ko'rsatilgan.

Klyuev V.V.

http://prof1c.kklab.ru

KALTLAR BILAN ISHLASH

Iltimos, sayt xizmatining barcha foydalanuvchilarini e'tiborga oling - Men "Yangi boshlanuvchilar" bo'limida materiallarni joylashtiraman!!!

8.2 Boshqariladigan shakllar

Boshqariladigan shakllarning xatti-harakatlarini o'rganayotganda, dasturchilar yoki interfeys ishlab chiquvchilari boshqariladigan shakllarda kalitlarning qayerda joylashganligi va ularni shaklga qanday qo'shish kerakligi haqidagi savolga duch kelishadi. Bu kichik narsa, lekin bunday mayda-chuyda narsalarga ko'p vaqt sarflanishi yoqimsiz, garchi bu vaqtni shaklni loyihalashdan ko'ra, algoritmni ishlab chiqish va optimallashtirishga sarflash mumkin.

Shunday qilib, keling, savolni tushunish uchun bo'sh konfiguratsiya yarataylik yoki har qanday tipikni tanlang.
Kataloglarni o'z ichiga olgan guruhga o'ting va tajriba uchun yangi katalog qo'shing. Shuni ta'kidlashni istardimki, konfiguratsiya asosiy ishga tushirish rejimiga ega bo'lishi kerak - Boshqariladigan dastur.

Shunday qilib, keling, yangi katalog yaratamiz va "Mantiqiy" turi bilan "Property1" atributini qo'shamiz.

Endi Shakllar yorlig'iga o'tamiz va yangi shakl qo'shamiz.

Shunday qilib, boshqariladigan shakl yaratildi, endi forma bilan ishlaymiz va kalit qaerda joylashganligini topamiz.
Mana bizning formamiz va unda biz rekvizitlarimizni ko'ramiz, lekin bayroq shaklida

Xo'sh, biz nima xato qildik?
Boshqaruv turiga o'tish yoki yo'qligini bilish uchun rekvizitlarning xususiyatlarini ko'rib chiqaylik.
Va biz Switch maydoni bu erda yo'qligini ko'ramiz! (Qaerda xato qildik?

Ko'rinishidan, formadagi boshqaruv turi ma'lumotlar turiga bog'liq, keling, forma xususiyatlariga, ya'ni tafsilotlar yorlig'iga qaytaylik va atributimiz xususiyatlarini - ya'ni "Mantiqiy" turini "Raqam" turiga o'zgartiramiz.

Endi boshqaruvning xossalariga qaytaylik va boshqaruv elementi View uning xossalariga qo'shilganligini tekshiramiz - - - Va hurra, biz u erda ko'rinishni ko'ramiz - Switch Field.

Endi shaklga qarang, biz nimani ko'rmoqdamiz:

Biz ko'ramiz - 3 ta standart qiymat, 3 ta kalit, lekin bizga ulardan ikkitasi kerak, yana atributning xususiyatlariga o'ting va u erda "Ustunlar soni" xususiyatlariga qarang.

2 uchun - ustunlar sonini o'rnating - 2.

Bu charchagan dasturchini biroz to'xtatib qo'yishi mumkin)), lekin endi u ham, biz ham buni bilamiz!

8.2 Oddiy shakllar.

Oddiy shakllardagi kalitlar bilan zerikarli.
Bunday lahzalar bor va ular sodir bo'ladi) ba'zi bir kalitlarga ega bo'lgan tayyor shaklni o'zgartirishingiz kerak bo'lganda va ushbu shaklga boshqa kalitni qo'shishingiz kerak. Bu erda qandaydir zerikarlilik paydo bo'ladi, bu juda ko'p vaqtni oladi va kodni dasturlash uchun vaqt emas, balki foydalanuvchi uchun ushbu kalitlarni ko'rsatish uchun vaqtni behuda sarflashdir.

Shunday qilib, keling, bir misolni ko'rib chiqaylik. 1C UPPda kvitansiyalarni sozlash uchun bunday hujjat mavjud - u albatta mavjud. Buxgalteriya hisobi uchun biroz boshqacha yozuvlar kiritilishi uchun biz unga kalitlarni qo'shishimiz kerak edi. Muammo nimada, biz buni qilishimiz kerak, qilishimiz kerakdek tuyuladi. Ammo bu shaklda allaqachon 2 ta radio tugmasi mavjud.

Shakl shunday ko'rinadi, unda biz ko'proq kalitlarni qo'shishimiz kerak


Kengaytirilgan yorlig'ida biz yana ikkita radio tugmachasini joylashtirmoqchimiz. Shunday qilib, birinchi qadam, bizga kerak bo'lgan joyga jasorat bilan yangi boshqaruv elementini qo'shish va uni kiritishdir.

Hamma narsa oddiy bo'lib tuyuladi. Biz "Raqam" turi bilan yangi atribut yaratamiz va 2 ta kalitni joylashtiramiz, ulardan biri atributga ma'lumot yoza oladi, ikkinchisi esa yo'q.

Yangi boshqaruv elementini qo'shing - Switch, kalitlarning soni va tavsifi bilan jadvalga Switch2 qo'shing, guruhda birinchi bo'lib Switch1 ni o'rnating va OK tugmasini bosing. Yaratilgan boshqaruv elementlarini formaga joylashtiring. Biz ma'lumotlar bazasi konfiguratsiyasini yangilaymiz (F7) va disk raskadrovka uchun ishga tushiramiz.

Amalga oshirishda (1C: Enterprise rejimida yangi hujjat yaratishda) biz Switch2-ni qanchalik bosishga harakat qilmasak ham, hech narsa sodir bo'lmasligini ko'ramiz. Elementlar kerakli darajada ishlamaydi. Bu erda bitta hiyla bor.
Konfiguratorga qayting. Shakl -> O'tish tartibini o'rnatish... menyu bandini tanlang (shakl ekranda ochiq bo'lishi muhim)


Bizning kalitlarimiz ishlashi uchun siz avtomatik tartibni buzishingiz va qo'lda ishlashga rozi bo'lishingiz kerak. Va uni shaklga qo'ying, shunda bizning kalitlarimiz birin-ketin tartibda bo'ladi.

KELISHDIKMI. Konfiguratsiyani yangilang va uni ishga tushirishga harakat qiling.
Ajoyib. Hammasi ishladi.

Qo'shimcha - video (ovozsiz, shuning uchun hamma narsa aniq)