Sazlama uzantısı 1s. Nəşrlər

ev / İnvestisiya yoxdur

8.3.6.1977 versiyasında həyata keçirilmişdir.

Tətbiq həllərinin konkret istifadəçiyə uyğunlaşdırılması üçün prinsipial olaraq yeni mexanizm - genişləndirmə mexanizmi tətbiq etdik.

Uzatmalar nə üçün yaxşıdır?

Genişləndirmələr standart konfiqurasiyaları dəyişdirmək üçün mövcud olandan fərqli strategiya təklif edir. Bu yeni strategiyadan istifadə texniki xidməti xeyli asanlaşdıracaq standart həllər, müəyyən bir tətbiqin, müəyyən bir müştərinin ehtiyaclarına uyğunlaşdırmaq istədiyiniz.

İndi bu proses necə görünür? Standart konfiqurasiya var. Təchizatçı tərəfindən tam dəstəklənir. Bu o deməkdir ki, onu dəyişdirmək olmaz. Dövri olaraq, satıcı bu konfiqurasiyanın yeni (təkmilləşdirilmiş) versiyalarını buraxır. Belə bir vəziyyətdə yeniləyin köhnə versiya Yeni versiya üçün konfiqurasiya tamamilə avtomatik olaraq həyata keçirilir. Bu rahatdır və müştəridən heç bir xüsusi bacarıq və ya bilik tələb etmir.

Ancaq çox vaxt müştəri standart konfiqurasiyada "özləri üçün" bir şey əlavə etmək və ya nəyisə dəyişdirmək istəyir. Bunun üçün dəstək rejimi dəyişdirilir, konfiqurasiya tam dəstəkdən çıxarılır. Tətbiq tərəfdaşı və ya müştərinin öz İT mütəxəssisləri ona lazımi dəyişiklikləri edir. Bu andan etibarən standart konfiqurasiyanın təchizatçı tərəfindən buraxılmış yeni versiyaya tam avtomatik yenilənməsi qeyri-mümkün olur.

İndi konfiqurasiyanın yenilənməsi bir mütəxəssisin iştirakını tələb edir. Üstəlik, müştərinin istəyi ilə edilən dəyişikliklər əhəmiyyətli olsaydı, konfiqurasiya yeniləməsini həyata keçirən mütəxəssis əhəmiyyətli vaxt tələb edə bilər. Və tez-tez həm tipik konfiqurasiyanın özü, həm də edilən dəyişikliklər haqqında çox yaxşı bilik tələb oluna bilər.

Genişləndirmələrin təklif etdiyi strategiya aşağıdakı kimidir. Standart konfiqurasiyanı dəyişdirmək istəyirsinizsə, konfiqurasiyanın özünə toxunmursunuz. Siz uzantıda bütün dəyişiklikləri edirsiniz, bu da əslində konfiqurasiyadır.

1C: Müəssisə rejimində siz sadəcə olaraq genişləndirmənizi standart konfiqurasiyaya qoşursunuz. Platforma avtomatik olaraq 1C:Müəssisə rejimində genişləndirmənizi standart konfiqurasiya ilə birləşdirir. Nəticədə müştəri öz istəyinə uyğun olaraq dəyişdirilmiş standart həll yolu ilə işləyir.

Satıcı istinad konfiqurasiyasının yeni versiyasını buraxdıqda, istinad konfiqurasiyasının dəstək rejimi dəyişmədiyi üçün avtomatik yeniləmə baş verir. O, təchizatçı tərəfindən tam dəstəkləndi. Yenilənmiş proqram həllini işə saldığınız zaman platforma yenidən avtomatik olaraq dəyişdirilmiş standart konfiqurasiyanı genişləndirmənizlə birləşdirəcək. Və müştəri öz istəyinə uyğun olaraq dəyişdirilmiş standart həll ilə işləməyə davam edəcək.

Uzatmalardan nə vaxt istifadə etməlisiniz?

Uzatma mexanizmi çox yönlü olduğuna görə cazibədardır. Buna görə də, hansı vəzifələri həll etmək üçün nəzərdə tutulduğu barədə düzgün təsəvvürə sahib olmaq vacibdir.

Birincisi, tətbiq həlli məlumat mübadiləsi rejimində işləyərkən genişləndirmələr əvəzolunmazdır. Məsələn, xidmət modelində. Abunəçilərdən biri bir neçə əlavə hesabata sahib olmaq istəyir. Digər abunəçilər dəyişməz standart konfiqurasiya ilə işləmək istəyirlər.

Sonra bu abunəçi üçün onun bütün istəklərini həyata keçirə biləcəyiniz bir uzantı hazırlaya bilərsiniz. Abunəçi bu uzantıya qoşulacaq və dəyişdirilmiş konfiqurasiya ilə işləyəcək. Digər abunəçilər üçün isə heç bir dəyişiklik olmayacaq. Çünki bütün genişləndirmələr cari ayırıcı dəyərlərinə əsasən birləşdirilir və işə salınır.

Başqa bir vəziyyət, standart konfiqurasiyanın həyata keçirilməsi zamanı müəyyən bir müştəri üçün dəyişdirilməsidir. Və ya müştərinin İT mütəxəssislərinin özləri üçün həyata keçirdikləri standart konfiqurasiyaya dəyişikliklər. Bütün bu təkmilləşdirmələr genişləndirmədə aparılırsa, standart konfiqurasiya tam dəstəklənəcək və bu, onun sonrakı texniki xidmətini xeyli asanlaşdıracaq.

Kütləvi istehsal olunan tətbiq həlləri yaratmaq üçün genişləndirmələrdən istifadə etmək istəyi var, lakin bu edilməməlidir. Birincisi, uzantılar bu cür tapşırıqlar üçün nəzərdə tutulmadığı üçün. İkincisi, ona görə ki, digər platforma mexanizmləri, məsələn, çatdırılma və dəstək mexanizmləri, genişləndirmələr haqqında heç nə bilmir.

Genişlənmələrin yaranma tarixinə bir az nəzər salsanız, əlbəttə ki, biz əvvəllər görmüşük və indi də görürük ki, konfiqurasiyalar daha mürəkkəbləşir. üçün əlavə dəstəyə ehtiyac olduğunu görürük müxtəlif səviyyələrdə inkişaflar: kitabxana, modul və sənaye və s. Biz bütün bu vəzifələri təhlil etdik və belə bir nəticəyə gəldik ki, hazırda ən yüksək prioritet konfiqurasiyaların tətbiqlər zamanı istifadəçilərin istəklərinə uyğunlaşdırılmasıdır.

Məhz bu tapşırıq üçün biz genişləndirmə mexanizmini yaratdıq. Təbii ki, burada sadalanan digər inkişaf sahələrinin fərqli xüsusiyyətlərini görə bilərsiniz. Lakin onlar onun əsas məqsədi deyil və sizi çaşdırmamalıdır.

İndi uzantılardan istifadə edərək nəyi dəyişə bilərsiniz?

Hələlik görülməsi nəzərdə tutulan o qədər də iş görülməyib. Mexanizm, əlbəttə ki, inkişaf edəcək. Lakin artıq görülən işlər həyata keçirmə zamanı bir çox hallarda faydalı ola bilər. İndi:

  • Dəyişdirilə bilər idarə olunan formalar, standart konfiqurasiyada mövcud;
  • Yenilərini əlavə edə bilərsiniz alt sistemlər. Siz standart konfiqurasiyada mövcud olan alt sistemlərin tərkibini dəyişə bilərsiniz;
  • Dəyişdirilə bilər rollar standart konfiqurasiya, onlara uzantıda yaradılmış obyektlərin əlavə edilməsi;
  • Dəyişdirilə bilər komanda interfeysi tipik konfiqurasiya (əsas bölmə, alt sistemlər);
  • Yenilərini əlavə edə bilərsiniz hesabat veriremal.

Gələcəkdə biz genişləndirmələrin funksionallığını tədricən artırmağı planlaşdırırıq və kiçik dəyişikliklərlə tətbiqlərdə hansı funksionallığın ən çox tələb olunduğu barədə rəyinizi öyrənməkdən şad olarıq.

Uzatma necə işləyir?

Uzatma adi konfiqurasiyaya çox bənzəyir. O, həm də cisimlər ağacı kimi təmsil olunur. Uzatma ilə işləmək üçün adi konfiqurasiya ilə eyni iş üsulları istifadə olunur.

Uzatmanın vacib bir xüsusiyyəti varlığıdır borc alınmış obyektlər. Kontekst menyusu əmrindən istifadə edərək istənilən standart konfiqurasiya obyektini götürə bilərsiniz:

Borc alınan obyektlər həmişə lazım deyil. Bir restoranda nahar ilə bənzətmə aparsaq, bunu "gündəlik" nümunə ilə izah etmək daha yaxşıdır.

Birinci vəziyyət borc götürülmüş obyektlərin lazım olduğu zamandır.

Siz eyni restoranda nahar etməyə öyrəşmisiniz. Siz həmişə biftek və çay sifariş edirsiniz. Məsələn, bu restoranda çox yaxşı olduqları üçün. Və ya başqa səbəbdən. Fərqi yoxdur. Əsas odur ki, siz onları yeyəcəksiniz, başqa heç nə yoxdur.

Sonra restoran tipik bir məlumat bazasıdır. Siz uzantısınız. Restoran menyusu genişləndirilə bilən standart konfiqurasiyadır. Biftek və çay borc götürülmüş obyektlərdir. Onları borc aldınız (menyuda olduqlarını xatırladınız).

Uzatma konfiqurasiyaya necə qoşulur və işləyir? Bir restorana gəlirsən və menyu istəyirsən. Menyuda görürsən ki, biftek və çay var. Yəni, götürülmüş obyektlər ilə standart konfiqurasiya obyektləri arasında yazışma qurursunuz. Təbii ki, adla uyğunlaşırsınız :). Sənə steyk və çay gətirirlər, yeyirsən. Yəni uzantı bağlanır və işləyir.

Bir həftə sonra gəlirsən, amma restoranın menyusu dəyişib (standart konfiqurasiya yenilənib). Bununla belə, steyk və çay hələ də menyudadır. Onlar tam olaraq sizə lazım olanlardır. Onları sizə gətirirlər, siz onları yeyirsiniz. Yəni genişləndirmə yenilənmiş standart konfiqurasiya ilə işləməyə davam edir.

Bir həftə sonra restorana gəlirsən ki, steyk və çay menyudan yoxa çıxıb. Ayağa qalxıb ayrılırsınız (uzatma bağlantısı xətası mesajı). Çünki sən bunu istəyirdin. Və başqa yeməklər (obyektlər) haqqında heç bir fikriniz yoxdur. Tərtibatçı sizə ilbizləri və ya lobsterləri necə düzgün yemək lazım olduğunu öyrətməyib.

Borc alınmış əşyalar olmadan edə biləcəyiniz başqa bir vəziyyət.

Siz restorana gedirsiniz, lakin konkret yeməklərin olması sizi maraqlandırmır. Çünki onsuz da onları yeməyəcəksiniz. Yalnız onları fotoşəkil çəkmək istəyirsən. Və hər hansı bir yeməyi necə fotoşəkil çəkməyi bilirsiniz. Sonra sadəcə konfiqurasiyaya qoşulursunuz və deyirsiniz: menyuda olan bütün qəlyanaltıları gətirin (metadatadan sənədlər toplusunu alırsınız). Mən onları yönləndirəcəm (şəkil çəkəcəm).

Bunu tərtibatçıların quru dilində təsvir etsək, obyektləri borc almağınız lazım olduğu ortaya çıxır:

  • Vizual dizayn üçün lazım olduqda. Məsələn, formanı genişləndirirsiniz və kimi forma rekvizitləri əlavə edirsiniz DirectoryCurrencies.Link. Sonra, əlbəttə ki, istinad kitabı götürməlisiniz Valyutalar, belə ki, standart konfiqurasiyaya qoşulduqda, belə bir kataloqun hələ də orada olduğuna əmin ola bilərsiniz.
  • Kodun işləməsi üçün lazım olduqda. Məsələn, genişləndirmə kodunda siz kataloq atributuna daxil olursunuz Nomenklatura - İdxalçı. Sonra bu atribut da borc alınmalıdır ki, qoşulduqda standart konfiqurasiyada belə bir atributun hələ də kataloqda mövcud olduğuna əmin ola bilərsiniz. Nomenklatura.

Uzatmanın qoşulması

Siz konfiquratorda bir uzantı yaradırsınız. O, sazlandıqdan və sınaqdan keçirildikdən sonra genişlənməni *.cfe faylında saxlamaqla ondan imtina edə bilərsiniz.

Bu faylı müştəriyə göndərə bilərsiniz. Müştəri onu müstəqil olaraq standart funksiyadan istifadə edərək 1C: Müəssisə rejimində öz məlumat bazasına yükləyəcək Konfiqurasiya uzantılarının idarə edilməsi.

Genişlənmələrlə işləmək daxili dildən mümkündür, ona görə də proqram həllində siz uzantıları yükləyən öz emalınızı yarada bilərsiniz. Hər kəsin genişləndirmələrlə oynamasının qarşısını almaq üçün yeni hüquq əlavə etdik - Konfiqurasiya uzantılarının idarə edilməsi.

Fayldan uzantı yüklədikdə, o, məlumat bazasında saxlanılır. Üstəlik, bu sessiyada istifadə olunan cari ayırıcı dəyərlər kontekstində saxlanılır.

Uzadmanın işləməsi üçün sessiya yenidən başlamalıdır. Sessiya başlayanda, tədbir çağırılmadan dərhal əvvəl SettingSessionParameters, infobazada saxlanılan və bu sessiya üçün cari ayırıcı dəyərlərinə uyğun gələn bütün uzantılar birləşdiriləcək.

Nəticədə, məlumat mübadiləsi rejimində işləyərkən, genişləndirmə yalnız bu xüsusi abunəçinin istifadəçilərinə tətbiq ediləcək. Məlumatların ayrılması istifadə edilmədikdə, genişləndirmə məlumat bazasının bütün istifadəçiləri üçün işləyəcəkdir.

Bir uzantıya qoşulduqda, artıq dediyimiz kimi, borc götürülmüş obyektlərin standart konfiqurasiyada mövcudluğu yoxlanılır. Obyektlər adla uyğunlaşdırılır.

Bundan əlavə, daha incə nəzarət mümkündür. Siz yalnız obyektlərin mövcudluğunun faktını deyil, həm də onların fərdi xüsusiyyətlərinin vəziyyətini idarə edə bilərsiniz. Yəni, bir restoran və biftek haqqında düşünürsünüzsə, sizin üçün vacib olan təkcə bir növ bişmiş steykin olması deyil, məhz burada onun nadir, “nadir” bişirilməsidir.

Genişlənməyə qayıdaraq, standart olaraq borc götürülmüş obyektlərin xüsusiyyətlərinə nəzarət etmir. Ancaq lazım gələrsə, bəzi xüsusiyyətləri idarə edə bilərsiniz. Məsələn, alqoritminiz üçün təkcə kataloqun olmaması vacibdir Nomenklatura, həm də kodunun növü var Xətt.

Sonra, əgər tipik konfiqurasiyada təchizatçı bu kataloqun kod tipini dəyişirsə Nömrə, uzantınız qoşulma zamanı bunu aşkar edəcək və xəta barədə məlumat verəcək.

Maraqlı məqam standart konfiqurasiya obyektlərinin adının dəyişdirilməsi ilə bağlıdır. Məsələn, bir restorana gəldiniz və əvəzinə Steyk yazılıb Steyk. Yəni, konfiqurasiyaya qoşulduqda, uzantı içərisində bir kataloq tapmır Nomenklatura, çünki satıcı onun adını dəyişib Mallar.

İndi bu vəziyyət sizin üçün problem deyil. Və bunun əvəzinə bütün genişləndirmə kodunu "kürəkləmək" lazım deyil Nomenklatura yaz Mallar. Bu da işləyir. Buna görə də, yalnız borc götürülmüş obyektin adını dəyişdirməlisiniz Mallar, və platforma qalan dəyişiklikləri genişləndirmənin özündə edəcək. Və ya minimal köməyinizlə.

Uzatma əməliyyatı

Müxtəlif obyektlərin genişləndirilməsi xüsusiyyətləri, uzantıların özlərinin işləmə xüsusiyyətləri haqqında kifayət qədər uzun müddət danışa bilərsiniz. Ancaq biz nəzərdən keçirilən məqalənin əhatə dairəsi ilə məhdudlaşırıq, buna görə də yalnız əsas və ən açıq nöqtələrə toxunacağıq.

Uzatmaların əsas "gözəlliyi", əlbəttə ki, orada olmayan standart konfiqurasiyaya bir şey əlavə edə bilməyinizdə deyil. Və fakt budur ki, uzantıda siz artıq standart konfiqurasiyada olanı dəyişə bilərsiniz. Yəni borc götürülmüş obyektlərin xüsusiyyətlərini dəyişə bilərsiniz.

Konfiqurasiya və genişləndirmə birlikdə işləyərkən istifadə olunan əsas anlayışı aşağıdakı kimi təsvir etmək olar. Onların kəsişmədiyi yerlərdə uzantı konfiqurasiyanı tamamlayır. Onların "kəsişdiyi" yerlərdə genişlənmə tətbiq olunur.

Bunu nümunə olaraq idarə olunan formalardan istifadə etməklə daha ətraflı görmək olar. Siz əsas konfiqurasiyadan formanı götürə və məhdudiyyətsiz genişləndirmədə redaktə edə bilərsiniz. Formanın vizual hissəsi və onun modulu üçün iki müxtəlif birləşmə strategiyasından istifadə olunur.

Formanın vizual hissəsi borc alınarkən uzantıda sabitlənir. Və 1C: Müəssisə rejimində, hər bir forma elementi üçün bu vəziyyətə nisbətən dəyişikliklər standart konfiqurasiyada və genişləndirmədə təhlil edilir.

Dəyişikliklər olmadıqda və ya onlar yalnız standart konfiqurasiyada olsaydı, standart konfiqurasiyadan olan dəyər tətbiq edilir. Digər hallarda, uzantıdakı dəyər istifadə olunur.

Beləliklə, genişləndirmədə forma yeni bir əmr əlavə etsəniz, onu formanın digər əmrləri ilə birlikdə görəcəksiniz. Mövcud qrupun başlığını dəyişdirmisinizsə, standart konfiqurasiyada bu qrupun başlığı təchizatçı tərəfindən dəyişdirilsə belə, başlığınızı görəcəksiniz.

Forma modulları fərqli yanaşmadan istifadə edir. Borclanmış forma üçün genişləndirmə bütün hadisələr üçün öz işləyiciləri ilə öz modulunu yaradır. 1C: Müəssisə rejimində hər iki forma modulu (standart konfiqurasiyadan və genişlənmədən) bir kontekstdə birləşdirilir. Bu səbəbdən, hər bir genişləndirmənin öz prefiksi var və bu, forma modulunda bütün hadisə idarəedicilərinə əlavə olunur. Beləliklə, standart konfiqurasiyadan olan işləyicilərlə heç bir təsadüf olmasın. Bundan sonra hadisə və əmr işləyiciləri ardıcıl və sinxron olaraq çağırılır. Əvvəlcə uzantıdan idarəedici. Sonra standart konfiqurasiyadan. Siz bu ardıcıllığı dəyişə və ya standart konfiqurasiyadan işləyicinin icrasını tamamilə qadağan edə bilərsiniz.

Ümumiyyətlə, gəlincə əməkdaşlıq 1C: Müəssisə rejimində konfiqurasiyalar və genişlənmələr, onlar ümumi ad məkanında mövcuddur. Bu, təkcə fərdi modullara deyil, həm də metadata ağaclarının özlərinə aiddir. Buna görə də, 1C: Müəssisə rejimində bu obyektin standart konfiqurasiya üçün "doğma" olub-olmadığını və ya genişlənmədən gəlib-gəlmədiyini müəyyən etmək üçün heç bir yol yoxdur.

Genişlənmədə istifadə edə biləcəyiniz digər obyektlərə gəldikdə, onlar üçün hər şey daha sadə görünür.

Genişlənmədə siz öz alt sistemlərinizi yarada bilərsiniz. Borclanmış obyektlərdən istifadə edərək, mövcud alt sistemləri genişləndirə bilərsiniz: onlara artıq standart konfiqurasiyada olan və ya genişləndirmədə yaratdığınız obyektləri və alt sistemləri əlavə edin. Siz mövcud alt sistemdən nəyisə silə bilməzsiniz.

Rolları yalnız genişləndirmədə yaradılmış obyektləri onlara əlavə etməklə genişləndirə bilərsiniz. Siz həmçinin mövcud roldan heç nə silə bilməzsiniz. Eyni şey komanda interfeysinə də aiddir.

Genişlənmə demək olar ki, konfiqurasiyadır

Əvvəldə dedik ki, uzantı adi konfiqurasiyaya bənzəyir. Buna görə də, yekunda, uzantıların digər platforma mexanizmləri ilə nə dərəcədə inteqrasiya olunduğu barədə bir neçə söz demək istərdim.

Genişlənmə (adi konfiqurasiya kimi) əsas konfiqurasiyaya və verilənlər bazası konfiqurasiyasına malikdir. Konfiqurasiyaları müqayisə etmək və birləşdirmək mexanizmi adi konfiqurasiyalarla eyni şəkildə uzantılarla işləyir.

Siz genişlənməni fayla yükləyə (başqa bir uzantı *.cfe olsa da) və fayldan yükləyə bilərsiniz. Genişləndirmələr XML-də yüklənə/yüklənə bilər.

İnterfeys mətnlərinin qlobal axtarışı, dəyişdirilməsi və redaktəsi mexanizmləri də genişləndirmələrlə işləyir.

Yeni parametrlər ortaya çıxdı komanda xətti uzantılarla, eləcə də jurnaldakı yeni hadisələrlə işləmək üçün.

Daxili dildə genişləndirmələrlə işləmək üçün əsas obyektdir ExtensionManagerConfiguration.

1C: Enterprise platformasının 8.3.6 nəşrindən başlayaraq, onda bir mexanizm meydana çıxdı. konfiqurasiya uzantıları.

Əsas (genişlənən) konfiqurasiyanı dəyişdirmədən yenisini təqdim etməyə və mövcud funksionallığı yenidən təyin etməyə imkan verir. Beləliklə, əvvəllər əlçatmaz olan bir çox yeni imkanlarımız var.

Yeni imkanlar

Məhdudiyyətlər

Əlbəttə ki, məhdudiyyətlər var:

  • Genişləndirmələr yalnız məhdud sayda yeni metadata əlavə edə bilər. Bunlar alt sistemlər, rollar, hesabatlar, emal və digərləridir.
  • Bəzi hallarda sazlama ilə bağlı problemlər ola bilər.

İstifadə nümunəsi

Konfiqurasiya uzantısından istifadə edərək ümumi modul prosedurunu necə ləğv edə biləcəyiniz nümunəsinə baxaq. Yəni bu, buraxılış vermədən və əsas konfiqurasiyanı yeniləmədən bəzi səhvləri tez bir zamanda düzəltməli olduğumuz vəziyyətdir. Beləliklə, deyək ki, bizim ümumi modulumuz var professia1c_ry_Extensions.

Və mesajı göstərən ən sadə proseduru ehtiva edir:

Prosedur OutputMessage() Export Message = New MessageToUser; Mesaj. Mətn = "Bu, əsas konfiqurasiyadır"; Mesaj. Hesabat vermək (); Prosedurun Sonu

İndi uzantıdan istifadə edərək başqa bir mesaj göstərək. İlk növbədə, əlbəttə ki, uzantının özünü yaratmalıyıq. Konfiqurator menyusunda seçin Konfiqurasiya - Konfiqurasiya Genişlənməsi


Açılan pəncərədə düyməni basın Əlavə et və genişləndirmə xüsusiyyətləri ilə sahələri doldurun. Sahələr adSinonimşərh tələb olunmur. Prefiks orijinalı əvəz edəcək genişləndirmə prosedurunun adı üçün istifadə olunacaq. Və siyahıda Məqsədüçdən mümkün variantlar(Düzəliş, Uyğunlaşma, Əlavə) seçin Korreksiya:

Sonrakı uzantılar siyahısında qutuların işarəsini çıxarın "Təhlükəsiz rejim, təhlükəsizlik profilinin adı""Təhlükəli hərəkətlərdən qorunma":


Genişlənməni belə yaratdıq. Amma onu iki dəfə klikləməklə açsaq, onun metadata ağacının boş olduğunu görərik. İndi isə genişlənməyə ümumi modul əlavə etməliyik.

Bunu etmək üçün əsas konfiqurasiya metadata ağacında istədiyiniz ümumi modulu sağ klikləyin və seçin "Uzantıya əlavə et":


İndi uzantımız belə görünəcək:

Amma ümumi genişləndirmə modulunun koduna baxsaq, onun boş olduğunu görərik. Və növbəti addım ona prosedur əlavə etməkdir. Yenə əsas konfiqurasiyaya gedirik, ümumi modulun kodunu açırıq, prosedurun üzərinə sağ vurun, yenidən elementi seçin. "Uzantıya əlavə et" və açılan pəncərədə zəng növünü seçin Bunun əvəzinə zəng edin:

Nəticədə ümumi genişləndirmə moduluna aşağıdakı kodlu prosedur əlavə olunacaq:

&Əvəzinə("OutputMessage") Prosedur Mesajları_ÇıxışMessage() // Metodun məzmununu daxil edin. ContinueCall() ; Prosedurun Sonu

Gördüyünüz kimi, prosedur adında genişləndirmə yaradılarkən müəyyən edilmiş prefiks var. İndi yalnız prosedur kodunu bizə lazım olan şəkildə dəyişdirmək qalır:

&Əvəzinə("OutputMessage") Prosedur Messages_OutputMessage_() Message = New MessageToUser; Mesaj. Mətn = "Bu bir uzantıdır" ; Mesaj. Hesabat vermək (); Prosedurun Sonu

İndi biz asanlıqla əmin ola bilərik ki, aşağıdakı kodu işlətsək, əsas konfiqurasiya kodu yerinə genişləndirmə kodunu işlədəcəyik:

Professia1c_ry_Extensions. OutputMessage();

Proqramın əvvəlki versiyalarından istifadə təcrübəsini öyrənərək və konkret həllin nə qədər universal və hərtərəfli olmasından asılı olmayaraq, son nəticədə 90% hallarda son istifadəçi üçün modifikasiya tələb olunduğunu nəzərə alaraq. 1C proqramının 8-ci versiyasının tərtibatçıları standart konfiqurasiya mexanizmlərini dəyişdirmək ehtiyacını minimuma endirmək üçün bir neçə əsaslı yeni həllər tətbiq etdilər:

  • Proqramın ilk versiyalarından sözün əsl mənasında, bir çox kataloqların elementləri indi xüsusiyyət növləri və məlumat reyestrinin müvafiq planından istifadə edərək əlavə xüsusiyyətlər və kateqoriyalar yaratmaq imkanına malikdir;
  • Cədvəl hissələrinin doldurulması üçün əlavə çap formaları və formaları, həmçinin əlavə hesabatlar və emallar indi müvafiq kataloqdan çağırıla bilər;
  • Standart obyekt prosedurlarının emalı modula dəyişikliklər etməklə deyil, hadisələrə abunə olunmaqla həyata keçirilir;
  • Və nəhayət, 8.3.6 platforma versiyası ilə 1C-də konfiqurasiya uzantıları ortaya çıxdı.

1C konfiqurasiya uzantıları nədir, onlarla necə işləmək olar, istifadədə məhdudiyyətlər - bu, məqaləmizdə əhatə etməyə çalışacağımız məsələlərdir.

Bir az nəzəriyyə

Uzatma mexanizminin meydana çıxmasından əvvəl standart konfiqurasiyaların yenilənməsi prosesi əsasən konfiqurasiyanın dəstəklənməsindən və ya ona dəyişikliklər edilib-edilməməsindən asılı idi. Sonuncu halda, tərtibatçı aşağıdakıları etməli idi:

  1. Tipik və mövcud metadata strukturunu müqayisə edin;
  2. Standart elementlər arasında əhəmiyyətli fərqlər varsa, onların düzgün yenilənməsini təmin edin;
  3. Yenilədikdən sonra müvafiq dəyişikliklər edin.

Bütün bunlar yeniləmə prosesini xeyli çətinləşdirdi, emal vaxtını artırdı və çox vaxt təşkilatı bahalı proqram təminatının standart modullarını yeniləmək imkanından məhrum etdi.

Uzatma mexanizmi standart konfiqurasiyanı dəstəkdən çıxarmadan onun bir çox elementini dəyişdirməyə imkan verir. Əslində, standart həll əsasında tərtibatçı standart həll üçün qabıq olan öz konfiqurasiyasını yaradır. Bu halda, standart hissənin yenilənməsi prosesi avtomatik olaraq baş verir və son istifadəçi tərəfindən işə salındıqda, platforma istifadəçi üçün hər iki həlli birləşdirir.

Uzatmaların istifadə oluna biləcəyi vəziyyətlər

Hər hansı digər vasitə kimi, genişləndirmə mexanizmi də istifadə sahəsini müəyyən edən bir sıra xüsusiyyətlərə və məhdudiyyətlərə malikdir:

  • Genişləndirmələr idarə olunan formalarla işləyə bilər;
  • Mexanizm mövcud alt sistemlərin dəyişdirilməsini və əlavə edilməsini dəstəkləyir;
  • 8.3.8 platformasının buraxılışından əvvəl genişləndirmələr yalnız mövcud rolları dəyişə bilərdi, yeniləmədən sonra onlar yenilərinin əlavə edilməsinə icazə verdilər, hətta əsas verilənlər bazası obyektlərinə girişi məhdudlaşdırdılar;
  • Mövcud mexanizm imkan verir istəyi ilə altsistemlərin komanda interfeysini və əsas konfiqurasiya bölməsini dəyişdirmək;
  • Bu alət dəsti həmçinin verilənlər bazası strukturunda dəyişiklik etmədən emal və hesabatlar əlavə etməyə imkan verir;
  • 8.3.9.718 platforma versiyasında genişləndirmə və əsas konfiqurasiyanın uyğunluğunun diaqnostikası mexanizmi əhəmiyyətli dərəcədə yenidən işlənib.

Yuxarıdakılardan aydın olur ki:

  1. Adi formalarla işləyərkən uzantıların funksionallığı əhəmiyyətli dərəcədə məhduddur;
  2. Əsas konfiqurasiyanın yenilənməsi prosesi sadələşdirilsə də, xüsusi genişlənmədən (o cümlədən istehsal həlləri kimi) istifadə etmək imkanı həm orijinal strukturda dəyişikliklər, həm də paralel olaraq istifadə edilən bir neçə genişləndirmə ilə ciddi şəkildə məhdudlaşdırıla bilər;
  3. Bu mexanizmdən fərqli istifadəçilər tərəfindən istifadə edilən görünüşü və funksionallığı fərqləndirməyə ehtiyac olduğu və ya dəstəklənən standart konfiqurasiya öz-özünə dəyişdirildiyi hallarda istifadə etmək məsləhətdir.

Gəlin məşqə keçək. İlkin baza kimi “Maaşlar və HR İdarəetmə” konfiqurasiyasının 3.1.3.223 versiyasından istifadə edəcəyik, iş 8.3.10.2561 platformasında aparılacaq, iş rejimi fayldır.

Uzatmanın yaradılması

Konfiquratorda Configuration->Configuration Extensions menyusuna keçin, forma açılacaq (şək. 1).

Burada yeni bir uzantı yarada bilərsiniz. "Əlavə et" düyməsini basın. Budur yeni genişləndirmənin pəncərəsi (şəkil 2)

Şəkil 2

Onun elementlərinə baxaq:

  • Ad - digər konfiqurasiya elementlərindən fərqli olaraq, sistem standartlarına uyğun olaraq yaradılmır, yəni. rəqəm və ya simvolla başlaya bilər, boşluq ola bilər;
  • Sinonim – digər metaməlumat elementləri kimi, o, obyekti təmsil edən ifadəni ehtiva edir;
  • Prefiks – forma modulunda hadisə işləyicilərini müəyyən etməyə imkan verir, çünki platforma ümumi kontekstdə işləyərkən əsas konfiqurasiya forma modulu və genişləndirmə forma modulu birləşdirilir (defolt olaraq, genişləndirmə əvvəlcə emal olunur, yəni. prefiks, sonra əsas işləyicilər);
  • Məqsəd.

"Təyinat" sahəsinin siyahısı üç dəyərdən ibarətdir, biz onları icra qaydasında təsvir edəcəyik:

  1. Düzəliş - bu məqsədlə genişlənmələr borc götürülmüş obyektlərdə kiçik qeyri-dəqiqlikləri və səhvləri düzəltmək üçün yaradılır;
  2. Uyğunlaşma – standart dəyər, bu tip genişlənmələr standart obyektləri konkret istifadəçinin tələblərinə uyğunlaşdırmaq üçün nəzərdə tutulmuşdur (əgər genişləndirmə 8.3.9-dan aşağı proqram versiyasında yaradılmışdırsa, platformanı yenilədikdən sonra o, məhz bu məqsədə malik olacaqdır) ;
  3. Əlavə – onlar standart həllə tamamilə yeni funksionallıq təqdim edirlər.

Uzatmanın işə salınması

Şəkil 1-dəki pəncərədə uzantı adının üzərinə iki dəfə kliklədikdə, genişləndirmə pəncərəsi açılır (şəkil 3)


Gördüyümüz kimi, əsas konfiqurasiyanın ağacına bənzər bir ağacdır. Və burada bir sual yaranır: hansı hallarda obyekt borc alınmalıdır?

Yalnız forma genişlənməsində və ya onun modulunun kodunda istifadə ediləcək və borc almadan genişləndirmənin işində xəta baş verə biləcək obyektləri (kataloqlar, sənədlər, rekvizitlər və s.) borc almaq lazımdır.

Yəni, əgər bizim inkişafımız kataloqun "VÖEN" təfərrüatlarını tələb edirsə " fiziki şəxslər", əgər o, forma modulunda istifadə olunacaqsa, onu əsas verilənlər bazasından götürməliyik. Bu halda, genişləndirmə hər dəfə işə salındıqda, bu atributun əsas konfiqurasiya qovluğunda olması və mənbə verilənlər bazasında və genişləndirmədə məlumat tipinin uyğunluğu yoxlanılacaq.

Yeniləmədən sonra və ya yeni funksionallığın inkişafı zamanı genişləndirmə və konfiqurasiya məlumat növləri arasında uyğunsuzluq və ya hər hansı digər səhvlər olarsa, sistem bu barədə istifadəçiyə məlumat verəcəkdir (Şəkil 4).

Aşağı sağ küncdəki pəncərə göstərir qeyri-standart vəziyyət Bir uzantıya qoşulduqda, üzərinə iki dəfə klikləməklə ətraflı məlumat açılır. Bu halda, biz sadəcə olaraq VÖEN atributunun dəyər növünü borc götürülmüş obyekt üçün "String" dəyərindən "Boolean" dəyərinə dəyişdirdik, lakin daha tez-tez əks vəziyyət yaranır - standart məhsulun yenilənməsi dəyişiklik və ya dəyişikliyə səbəb olur. əsas verilənlər bazası atributunun aradan qaldırılması.

Genişlənməni verilənlər bazasının nüsxəsində işlədikdən və sınaqdan keçirdikdən sonra onu ayrıca fayla yükləyə bilərsiniz, bunun üçün pəncərədə (Şəkil 5) “Konfiqurasiya” düyməsini sıxıb “Faylda saxla” seçimini etməlisiniz. ” seçimi. cf uzantısı olan adi konfiqurasiya fayllarından fərqli olaraq, konfiqurasiya əlavə faylında *.cfe maskası olacaq.

Yuxarıdakı şəkildən göründüyü kimi, eyni pəncərədən və ya əsas proqram pəncərəsindən yeni funksionallıq yükləyə bilərsiniz.

Genişlənməni 1C.Müəssisə rejimində qoşmaq üçün istifadəçi “Bütün funksiyalar” rejimini aktivləşdirib proqrama Administrator hüquqları ilə daxil olmalıdır.

Modifikasiyanı birləşdirmək yolu aşağıdakı kimidir: Bütün funksiyalar->Standart->Konfiqurasiya genişləndirmələrini idarə et. Açılan pəncərə Şəkil 6-da göstərilmişdir

Şəkil 6

“Əlavə et” düyməsini klikləməklə, yükləməmizi seçmək üçün lazım olan fayl seçimi informasiya qutusu açılır. Əgər emal üçün onay qutusu seçilirsə (Şəkil 7) və genişləndirmədə xəta varsa, funksionallıq ləğv ediləcək və proqram istisna barədə məlumat verəcəkdir.

Şəkil 7

Uğurlu əlavədən sonra funksionallığımızın işləməsi üçün proqram yenidən başlamalıdır.

Borc alınan obyektlər və modulların atəş sırası

İşləyicilərin icra ardıcıllığını izləmək üçün konfiqurasiyamızı dəyişdirmək və ona yeni bir emal əlavə etmək imkanı verəcəyik, funksionallığı yalnız bir şeydən ibarət olacaq - o, əsas proqramdan işə salındığını bildirəcəkdir. konfiqurasiya, Şəkil 8-də kod.

Şəkil 8

Gəlin bu emalını genişləndirməyə əlavə edək.

Bunun üçün:

  • Emal formasının kontekst menyusunu aktivləşdirmək üçün sağ klikləyin (şək. 9);

Şəkil 9

  • "Uzantıya əlavə et" seçin;
  • Əlavə konfiqurasiya ağacında həm müalicənin özü, həm də onun formasının dublikatı görünəcək;
  • Formanı açdıqdan sonra görürük ki, mesaja səbəb olan əmr də oradadır, lakin ona işləyici təyin edilməyib;
  • Əmr hərəkətinin əlavə edilməsi ilə dialoq qutusu (şək. 10) yaranır ki, burada əmrin yerinə yetirildiyi yer üçün əsas direktivlərə əlavə olaraq “Zəng növü” qrupu da mövcuddur.

Şəkil 10

Mövcud prosedur üçün üç növ çağırışımız var;

  • Əvvəlcədən zəng edin – əsas konfiqurasiya yerinə yetirilməzdən əvvəl genişləndirmə kodunun icrası başlayacaq;
  • Sonra zəng edin - dəyişdirilmiş prosedur ikinci olacaq;
  • Əvəzinə zəng edin – əsas konfiqurasiyadan prosedur ümumiyyətlə yerinə yetirilməyəcək.

Zəng növünü “Zəngdən sonra” mövqeyində buraxaq və “Ext1_NotifyAfter(Command)” prosedurunu əlavə edək (şək. 11).

Şəkil 11

Bizim emalımızın işə salınmasının nəticəsi ardıcıl olaraq bildirilən iki ifadə olacaq (Şəkil 12), yəni əsas mesajdan sonra əlavə konfiqurasiya mesajı göstəriləcək. “Əvəzinə” seçsəydik, birinci sətri ümumiyyətlə görməzdik.

Şəkil 12

8.3.9.1818 versiyasından başlayaraq proqramın funksionallığına standart modulların dəyişdirilməsi, həmçinin öz modullarınızı əlavə etmək mexanizmi daxildir. Və burada tərtibatçılar çox xüsusi bir vəzifə ilə qarşılaşdılar: borc götürülmüş prosedurların və funksiyaların yalnız əsas konfiqurasiya ilə bağlı deyil, həm də konfiqurasiyaya qoşulmuş genişləndirmələrlə bağlı hansı ardıcıllıqla yerinə yetirilməli olduğunu necə müəyyənləşdirmək olar.

Annotasiya Mühərriki

Bir neçə uzantının bir konfiqurasiyaya qoşulduğu bir vəziyyəti təsəvvür edək, yəni konfiquratorda onları seçmək üçün pəncərə (Şəkil 13)

Şəkil 13

Hər bir yeni uzantı əlavə edərkən, sistem müstəqil olaraq onların icrası qaydasını qurur.

Əlavə modulların icrası qaydası yalnız modulun əlavə edildiyi vaxta (sonradan əlavə edilmiş, sonra icra edilmiş) deyil, həm də modifikasiyanın məqsədinə əsaslanaraq konfiqurasiya edilir ("İcra" həmişə "Uyğunlaşma" dan əvvəl gələcək).

Bundan əlavə, əlavə edilmiş modulların prosedurlarının icrası ardıcıllığı annotasiyalardan istifadə etməklə tənzimlənə bilər:

  • &Əvvəl ("ProsedurAdı");
  • &After("ProsedurunAdı");
  • &Əvəzinə("ProsedurAdı").

Gördüyünüz kimi, onların dəsti əvvəlki bölmədə nümayiş etdirilənlərə bənzəyir və funksionallıq da oxşardır.

Borc alınan modul və donor modul eyni ad məkanında olduğundan, bu halda tip dəyişənləri və metodları üçün əlavə təriflərə ehtiyac yoxdur.

Funksiyalarla bağlı vəziyyət prosedurlardan bir qədər fərqlidir. Fakt budur ki, standart prosedurun icrası, olduğu kimi, genişləndirmə kodu ilə kənarlaşdırıla bilər, yəni prosedur kodundan əvvəl bəzi hərəkətləri, bəzi alqoritmləri sonra əlavə edə bilərsiniz, lakin bu funksiyalar üçün işləməyəcək. Əgər əsas funksiya genişləndirmə kodundan sonra yerinə yetirilərsə, əvəzedici funksiyanın qaytarılan qiyməti alınmayacaq, lakin dəyişdirilmiş alqoritmdən əvvəlsə, əsas funksiyanın dəyəri alınmayacaq və &After annotasiyası &Əvəzində işləyəcək.

Bu “ədalətsizliyi” aradan qaldırmaq üçün ContinueCall() metodu yaradıldı.

Ümumiyyətlə, “Əvəzində” annotasiyasından istifadə etmək bir qədər səhvdir, baxmayaraq ki, bəzən buna ehtiyac olur. Bundan istifadə edərək, standart konfiqurasiyalarda əhəmiyyətli dərəcədə dəyişdirilə və dəyişdirilə bilən funksionallığı əhəmiyyətli dərəcədə məhdudlaşdırırıq.

Obyekt modulunda dəyişikliklərin edilməsi

Tədbirə abunə mexanizmi tərtibatçıların işini xeyli asanlaşdırdı, lakin bir ciddi AMMA var idi.

Lakin ondan istifadə etmək üçün siz tez-tez məlumatlarla müəyyən hərəkətlərin işlənməsi prosedurlarını saxlayan öz ümumi modulunuzu yaratmalı idiniz. Hal-hazırda, genişləndirmələrin istifadəsi bu funksionallığı əhəmiyyətli dərəcədə yenidən nəzərdən keçirməyə imkan verdi.

Deyək ki, işimiz zamanı bir növ emal əlavə etmək lazım idi standart sənəd Onu qeyd edərkən "işə götürmək". Əvvəllər biz abunələrə girərdik və oradan işləyirdik, indi bu sənədi genişləndirməyə əlavə edə bilərik:

  • Konfiquratorda "İşə qəbul" seçin və onun kontekst menyusundan onu genişləndirməmizə əlavə edəcəyik (yeri gəlmişkən, bu mexanizmdə Alt+Shift+F2 isti düymələr kombinasiyası var);
  • Müvafiq əlavəni seçdikdən sonra Şəkil 14-də olduğu kimi bir şəkil alacağıq;

Şəkil 14

  • Bizi sarı rənglə vurğulanmış “Obyekt Modulu” elementi maraqlandıracaq, əvvəlcə müvafiq qeyd qutusunu aktivləşdirməklə onu açacağıq (şək. 15);

Şəkil 15

  • Proqram modulunun boş vərəqini alacağıq, yuxarı panelə diqqət yetirəcəyik, daha dəqiq desək, Şəkil 16-da təqdim olunan elementə diqqət yetirəcəyik, burada açılan siyahı bu obyekt üçün emal edilə bilən hadisələri təqdim edir;

Şəkil 16

  • Müvafiq hadisəni seçməklə sənədin nömrəsini qeyd edildiyi mesajda göstərməyə çalışaq;
  • Biz zəng növünün seçim formasını alacağıq (Şəkil 17), nömrənin nə vaxt göstəriləcəyini müəyyənləşdirin;

Şəkil 17

  • Prosedur kodu Şəkil 18-də göstərilmişdir;

Şəkil 18

Bəzi hallarda, "Təhlükəsiz rejim" qeyd qutusunun yoxlanılması səbəbindən genişləndirmə qoşula bilmir.

Kiçik bir elan

Yaxın gələcəkdə 1C 8.3.11 platformasını buraxmağı planlaşdırır, burada özlərinin əlavə etmək imkanlarını elan etdilər:

  • Sənədlər;
  • kataloqlar;
  • Mübadilə planları;
  • Məlumat reyestrləri.

Təfərrüatlar və cədvəl hissələri əlavə etmək imkanı da həyata keçirilməlidir. Eyni zamanda, tərtibatçılar standart həllərin dəyişdirilməsi imkanlarını nəzərə aldılar ki, bu da genişləndirmənin nasazlığına səbəb ola bilər.

Genişlənməyə daxil edilmiş məlumatlar heç bir yerdə itirilməyəcək və uyğunluq problemi həll olunana qədər genişləndirmə tərəfindən dəyişdirilmiş əsas konfiqurasiya kataloqu yazıla bilməz.

Proqram təminatının fərdiləşdirilməsi ehtiyacı, yəni. onun müəyyən bir istifadəçinin ehtiyaclarına edilən dəyişikliklər, ehtimal ki, ilə eyni vaxtda ortaya çıxdı proqram təminatı. Hər kəsi qane edəcək bir proqram yazmaq çətindir və buna görə də proqram istehsalçısını cəlb etmədən ona dəyişikliklərin mümkünlüyünü ehtiva edir - yaxşı fikir. Xüsusilə iş proqramlarına gəldikdə, çünki... biznes prosesləri, hətta eyni sahələrdə, bir təşkilatdan digərinə fərqli ola bilər.

Mənbə kodunun dəyişdirilməsi

Fərqli fərdiləşdirmə strategiyaları var. Tətbiq mənbə kodu ilə təmin edilirsə, ən bariz yanaşma ehtiyaclarınıza uyğun olaraq mənbə kodunu yenidən yazmaqdır. Və bu halda ən aşkar problem tətbiqin yeni versiyasına keçiddir, çünki... müştəri tərəfində dəyişdirilmiş versiyanın mənbə kodlarının birləşməsini nəzərdə tutur və yeni versiya təchizatçıdan. Və bu, qeyri-trivial bir iş ola bilər, xüsusən də müştəri tərəfi kodu yüksək səviyyədə fərdiləşdirilmişdirsə.

Pluginlər

Bu baxımdan daha təhlükəsiz strategiya plaginlərdir. Mənbə tətbiqi plagini sabit interfeyslər dəsti ilə təmin edir, həmçinin proqramda özünü qeydiyyatdan keçirmək imkanı verir. Tətbiqin yeni versiyası çıxdıqda, plaginlər üçün yazılır əvvəlki versiya, yeni versiyada işləməyə davam edəcək (interfeyslərin dəyişməz qalması şərti ilə). Əgər proqram təminatçısı tətbiqin davranışını dəyişibsə, plaginlər yeni versiyada əvvəlki versiyadan fərqli davrana bilər. Plaginlər anlayışı müxtəlif proqram siniflərində - ofis və biznes proqram təminatında, inkişaf mühitlərində (Visual Studio, Eclipse, ...), qrafik və səs redaktorlarında və s.

Abunəliklər

Başqa bir fərdiləşdirmə texnologiyası tətbiqdəki hadisələrə abunə olmaq və bu hadisələr zamanı tanınmış və ya xüsusi bir dildə xüsusi kodu icra etmək imkanıdır. Hadisələr müxtəlif növ ola bilər - pəncərənin açılması, şəklin yüklənməsi (qrafik redaktor üçün), sifarişin işlənməsi (biznes sistemi üçün).

Bu yanaşmanın bir variantı əsas proqramda istifadəçi skriptlərini aşağıdakı dillərdə icra etmək qabiliyyətini qurmaqdır. Visual Basic Tətbiq üçün (VBA). Xüsusi kod tətbiq hadisələrinə cavab olaraq icra edilə bilər. Eyni VBA çox güclü və çevik fərdiləşdirmə vasitəsi olduğunu sübut etdi; içində qurulub Microsoft Office, AutoCAD, SolidWorks, CorelDRAW, WordPerfect, ESRI ArcGIS və digər məhsullar.

1C həllərində fərdiləşdirmə: başlanğıc

1C: Enterprise platforması müxtəlif fərdiləşdirmə strategiyalarını həyata keçirir. 1C tətbiqi həlləri mənbə kodu ilə təmin olunduğundan, təbii ki, ən bariz ssenarilərdən biri mənbə kodunun dəyişdirilməsidir.

1C proqramlarının mənbə kodunun dəyişdirilməsi

Müştəri ehtiyaclarına uyğun olaraq 1C həllinin mənbə kodunu dəyişdirəndə o, yadda saxlamalıdır ki, proqram təminatçısı da boş qalmır və yeni versiyalar buraxır, funksionallıq əlavə edir və səhvləri düzəldir. Proqramın yeni versiyasını quraşdırarkən müştərinin ehtiyaclarına uyğun olaraq edilən dəyişikliklərin itirilməməsini təmin etmək üçün tətbiqin dəyişdirilmiş əvvəlki versiyasını və yeni versiyanı birtəhər birləşdirməlisiniz.

Təbii ki, biz 1C-də bu vəzifəyə böyük diqqət yetirdik və onun həllini asanlaşdırmaq üçün çatdırılma və dəstək mexanizmi hazırladıq. Bunun necə işlədiyini söyləməzdən əvvəl, bir neçə təfərrüat daxili quruluş 1C həlləri.

1C tətbiq həllinin (konfiqurasiyalarının) mənbə kodları və metadataları verilənlər bazasında saxlanılır, tətbiqin məlumatlarının saxlandığı eyni verilənlər bazası (yazılar, kataloqlardan və sənədlərdən məlumatlar və s.), yəni. proqram verilənlərlə birlikdə saxlanılır. 1C terminologiyasında konfiqurasiya (və proqram məlumatları) olan verilənlər bazası məlumat bazası adlanır (informasiya bazası kimi qısaldılır).

İnkişaf prosesi zamanı konfiqurasiya provayderi müştərinin hansı konfiqurasiya obyektlərini (kataloqlar, sənədlər və s.) dəyişə biləcəyini, hansının isə edə bilməyəcəyini müəyyən edir.

Təchizatçı tərəfində çatdırılmanın qurulması

Müştəri, öz tərəfində, bu mexanizmdən istifadə edərək, təchizatçının həyata keçirilən konfiqurasiyasının obyektlərinin dəstəklənməsi qaydalarını da müəyyən edə bilər - məsələn, tədarükçü tərəfindən müəyyən bir obyekt üçün dəstəkdən imtina edə bilər. bu obyekt. Və ya əksinə, təsadüfi dəyişikliklərdən sığortalamaq üçün "sizin" konfiqurasiyanızın bir obyektini redaktə etməyi qadağan edə bilərsiniz (təchizatçı icazə versə belə).

Müştəri dəstəyinin qurulması

Müştəri standart konfiqurasiyada nəyisə dəyişməyə başlayanda infobazada iki konfiqurasiya yaradılır:

  1. Orijinal satıcı konfiqurasiyası.
  2. Cari konfiqurasiya müştəri tərəfində dəyişdirildi.
İndi təchizatçı yeni versiyanı buraxır. O, tam proqram şəklində və ya dəyişdirilmiş obyektlərlə yeniləmə paketi kimi təqdim edilə bilər. Yeni versiyaya keçərkən, müştəri tərəfində 3 konfiqurasiyamız var, bunun əsasında konfiqurasiyaların üçtərəfli birləşməsi həyata keçirilir:
  1. Satıcıdan köhnə konfiqurasiya.
  2. Müştərinin cari konfiqurasiyası (satıcıdan köhnə konfiqurasiya və müştəri tərəfindən ona edilən dəyişikliklər).
  3. Təchizatçıdan yeni konfiqurasiya.
Aydındır ki, bəzi hallarda təchizatçı tərəfindən dəyişdirilmiş obyektlər avtomatik olaraq yenilənə bilər:
  • Müştəri tərəfindən dəyişdirilməyən obyektlər.
  • Müştəri tərəfindəki obyektlərə sadə dəyişikliklər (məsələn, obyektə əlavə təfərrüatlar əlavə etmək).
Obyekt həm müştəri tərəfində, həm də təchizatçı tərəfindən yeni versiyada dəyişdirildiyi halda, əl ilə müdaxilə lazımdır. Bizdə təkcə kod modulları üçün deyil, həm də modellər (metaməlumatlar, formalar, hesabatlar...) üçün güclü müqayisə və birləşmə mexanizmimiz var, lakin bu mexanizmlə belə konfiqurasiyaların birləşdirilməsi qeyri-ciddi iş ola bilər.

Xarici hesabatlar və emal

Yeni versiyalara keçid baxımından nisbətən təhlükəsiz olan digər fərdiləşdirmə mexanizmi xarici hesabatlar və emal mexanizmidir. Adından da göründüyü kimi, hər iki növ obyekt - xarici hesabatlar və xarici emal tətbiq həlli üçün xaricidir, ayrı-ayrı fayllarda saxlanılır və icra zamanı tətbiq həllinə yüklənir. Beləliklə, yeni versiyaya keçid prosesi onlara qətiyyən təsir göstərmir. Lakin yeni versiyada obyektin təfərrüatları silinib və ya adı dəyişdirilibsə və emal və ya hesabat onlara istinad edirsə, hesabat və ya emal dəyişiklik edilmədən yeni versiyada işləməyəcək.

Xarici hesabatlar və emal əsasən plaginlərdir. Onlar “xüsusi” hesabatlar və verilənlər üzərində xüsusi əməliyyatlar üçün (məsələn, digər sistemlərdən məlumat idxal etmək üçün) yaxşı uyğun gəlir, lakin, əlbəttə ki, bütün fərdiləşdirmə ssenarilərini əhatə etmir. Müştəri sənədi yerləşdirərkən yerinə yetirilməli olan xüsusi kodu əlavə etməlidirsə, xarici emal kifayət deyil - sənəd modulunun mənbə kodunu redaktə etmək lazımdır.

Buludlarda fərdiləşdirmə

1cFresh bulud texnologiyasının meydana çıxması ilə fərdiləşdirmə tapşırığı çatdı yeni səviyyə. Fakt budur ki, "buludda" müxtəlif təşkilatların tətbiq həllinin istifadəçiləri fiziki olaraq bir məlumat bazası (yəni tətbiqin bir nümunəsi) ilə işləyə bilər, lakin eyni zamanda məlumat mübadiləsi mexanizmi sayəsində yalnız görürlər. onların təşkilatının məlumatları. Mənbə kodunu dəyişdirməklə fərdiləşdirmə burada qəbuledilməz olur - hər bir təşkilatın öz fərdiləşdirmələrinə ehtiyacı var və məlumat bazasında "qonşularının" fərdiləşdirilməsinə tamamilə ehtiyac yoxdur.

Buludda fərdiləşdirmə üçün yalnız xarici hesabatların və emalların istifadəsi tətbiq edilir, lakin yuxarıda qeyd edildiyi kimi, xarici hesabatlar və emal istifadəçilərin ehtiyac duyduğu bütün ssenariləri əhatə etmir.

Konfiqurasiya uzantıları

Beləliklə, aşağıdakı tələblərə cavab verən bir fərdiləşdirmə mexanizmi hazırlamalı olduq:
  1. Fərdi həlli asanlıqla yeni bir versiyaya yeniləməyə imkan verəcəkdir öz-özünə hazırlanmışdır konfiqurasiyaları birləşdirmək üçün.
  2. Zaman fərdiləşdirməni aktivləşdirməyə icazə verdi müəyyən şərtlər(məsələn, konkret bir təşkilat kontekstində işləyiriksə).
  3. Orijinal konfiqurasiyanın yeni versiyasına keçərkən fərdiləşdirmənin funksionallığı itirmə ehtimalı azaldı.
  4. Tətbiqin funksionallığını qorumaq üçün problemlər olduqda fərdiləşdirməni söndürmək imkanı var idi.
Belə bir mexanizm bulud həllərində istifadə olunmaqla yanaşı, fərdiləşdirmənin zəruri olduğu yerlərdə standart konfiqurasiyaları həyata keçirərkən yeni versiyaya keçid zamanı həyatı xeyli asanlaşdıracaq.
Biz belə bir mexanizm tapdıq və onu uzantılar adlandırdıq. Bu mexanizm, müəyyən mənada, fərdiləşdirməyə iki yanaşmanı - plaginlərin ideologiyasını və abunə mexanizmini birləşdirir.

Genişləndirmələr konfiqurasiya dəyişikliklərini konfiqurasiyanın özündən ayrı saxlamaq üçün bir yoldur. Genişlənmə əslində dəyişdirilmiş obyektləri ehtiva edən ayrıca konfiqurasiyadır. O, konfiqurasiya kimi, obyektlər ağacı kimi təmsil olunur. Uzatma ilə işləmək üçün adi konfiqurasiya ilə eyni iş üsulları istifadə olunur:

Əgər biz əsas konfiqurasiyadan bir obyekti genişləndirmədə istifadə etmək istəyiriksə (məsələn, əsas konfiqurasiyada mövcud olan sənədə yeni forma əlavə etmək), əvvəlcə “Genişləndirməyə əlavə et” əmrindən istifadə edərək obyekti genişləndirməmizə götürməliyik. . Genişlənməyə bir obyekt əlavə etdikdən dərhal sonra, genişləndirmə obyekti ağacında "boşdur" - yalnız əsas konfiqurasiyada olan xüsusiyyətlərə malikdir. Siz həmçinin əsas konfiqurasiyadan mövcud formanı götürə və məsələn, ona müəyyən bir hərəkəti yerinə yetirən yeni düymə əlavə edə bilərsiniz. Genişlənmələrdəki obyektlərə yeni detallar əlavə etmək hələ mümkün deyil, lakin biz bunun üzərində işləyirik.

Borc sənədi ilə əsas konfiqurasiya və genişləndirmə InvoiceIssued

Genişlənmədə hadisə abunəliyinin analoqu da var - genişləndirilmiş konfiqurasiyanın obyektlərinin hadisələrini emal etmək imkanı, məsələn, qeyd emalı. Genişlənmədə kodumuzun necə çağırılacağını dəqiq təyin edə bilərsiniz:

Sənədi qeyd etmək üçün standart prosedurdan əvvəl kodumuzu çağıra bilərik, məsələn, sənədə cavabdeh olan işçinin sahəsinin doldurulduğunu yoxlayacaq və yoxsa, cari istifadəçini bu sahəyə yazın:

&After("BeforeWrite") Proseduru ExpandAndromeda_BeforeWrite(Uğursuzluq, YazmaModu, PostMode) Əgər (ThisObject.Responsible = Directories.Users.EmptyLink()) O zaman ThisObject.Responsible = ModuleUsers.Get); endIf; Prosedurun Sonu
Konfiqurasiyanın yeni versiyasında sənəd qeydinin həyata keçirilməsi dəyişə bilər, lakin genişləndirmədəki kodumuz yenə də standart sənəd qeyd kodundan əvvəl işləyəcək və öz işini görəcək.

İcra zamanı standart konfiqurasiya və genişləndirmələr (onlardan bir neçəsi ola bilər) “birləşdirir” və nəticədə son istifadəçinin işlədiyi yeni, fərdiləşdirilmiş konfiqurasiya yaranır.

Uzatma icrası əmri

Genişləndirmələr hazırlayarkən nəzərə alın ki, konfiqurasiyaya birdən çox genişləndirmə əlavə etdiyiniz zaman platforma genişləndirmələrin eyni ardıcıllıqla işləyəcəyinə zəmanət vermir. Uzatmaların icrası qaydasını açıq şəkildə göstərməkdən qəsdən imtina etdik, çünki Bu, fikrimizcə, quraşdırmanı çətinləşdirir və nəticədə həll etdiyindən daha çox problem yaradır.

Konfiqurasiyaya hər biri eyni sənədin işlənməsi üçün “&After” direktivi ilə işlənmiş bir neçə genişləndirmə əlavə etsək, bütün işləyicilər yerinə yetiriləcək, lakin platforma onların icra ardıcıllığının həmişə eyni olacağına zəmanət vermir. . Genişlənmələri inkişaf etdirərkən bu nəzərə alınmalıdır.

Əgər “&Əvəzinə” direktivi ilə bir neçə genişlənmədə eyni hadisə üçün işləyicilər varsa, yalnız bir işləyici yerinə yetiriləcək və hansını əvvəlcədən söyləmək mümkün deyil. Bunu yadda saxlamaq və nəzarət etmək lazımdır ki, konfiqurasiyaya birdən çox genişləndirmədə eyni obyekt/hadisə üçün “&Əvəzində” idarəedicisi olmasın.

Genişlənmələrdə formaların fərdiləşdirilməsi

Konfiqurasiyadan bir obyektin formasını genişləndirməmizə götürə bilərik (məsələn, sənədin forması). Eyni zamanda, uzantıdakı vizual forma redaktorunda biz formanı əsas konfiqurasiyada olduğu kimi görəcəyik. Və forma kodu redaktorunda genişləndirmə boş olacaq - forma üçün bütün kod hazırda yalnız əsas konfiqurasiyada var.

Formaya yeni düymə (və ya hətta bir neçə) əlavə edə bilərsiniz. Bir neçə uzantı eyni formaya öz düymələrini əlavə edərsə, onların hamısı icra zamanı yekun formada olacaq.

Ancaq standart elementləri formadan çıxarmaq tövsiyə edilmir - bu, orijinal konfiqurasiyada mövcud olan kodu poza bilər (forma elementlərinə daxil olarsa). Belə bir ehtiyac varsa, "Görünürlük" xüsusiyyəti vasitəsilə elementləri görünməz etmək daha yaxşıdır.

Nəzərə almaq lazımdır ki, 1C: Enterprise-dəki proqram sadəcə proqramlaşdırma dilində kod deyil. Ən çox tətbiqlər deklarativ modellər şəklində təsvir edilmişdir. Üstəlik, onlar müxtəlif vəzifələr üçün istifadə olunur fərqli növlər modellər (formalar, hesabatlar, hüquqlar, ....). Hər bir model növü üçün biz tipik hallar üçün ən əlverişli dəyişikliyi təmin edən genişləndirmələrdə öz fərdiləşdirmə metodumuzu seçirik.

Uzatmaların üstünlükləri

Uzatmaların çatdırılma və dəstək mexanizmindən ideoloji fərqi var. Çatdırılma və dəstək mexanizmində tərtibatçı satıcı konfiqurasiyasını istədiyi kimi redaktə edir, sanki o, sadəcə olaraq konfiqurasiyasını yekunlaşdırır və sonra (yenilənərkən) ziddiyyətli dəyişiklikləri necə sinxronlaşdıracağını anlayır. Genişlənmələrdə, tərtibatçı əvvəlcə genişləndirmənin özünü inkişaf etdirir - əlavə funksionallıq baxımından. Artırma sistem tərəfindən əlavə olaraq saxlanılır və sistem mümkün olan ən təhlükəsiz yeniləmənin qayğısına qalır.

Yeni konfiqurasiya versiyasına asan miqrasiya

Satıcı standart konfiqurasiyanın yeni versiyasını buraxdıqda, standart konfiqurasiyanın dəstək rejimi dəyişmədiyi üçün avtomatik yeniləmə həyata keçirilir - o, satıcı tərəfindən tam dəstəklənir. Yenilənmiş proqram həllini işə saldığınız zaman platforma yenidən avtomatik olaraq dəyişdirilmiş standart konfiqurasiyanı genişləndirmə ilə birləşdirəcək. Və müştəri ehtiyaclarına uyğun olaraq dəyişdirilmiş standart həll ilə işləməyə davam edəcək.

Bəzən standart konfiqurasiyanın versiyasını yenilədikdən sonra, məsələn, yeni versiyada genişləndirmədə iştirak edən obyektlərin və ya obyektlərin təfərrüatlarının adı dəyişdirilərsə, genişləndirməni yeni versiyaya uyğunlaşdırmaq lazım ola bilər. Bu barədə bir az daha aşağıda, "Səhvlərin erkən bildirişi" bölməsində.

Dəyişikliklər ayrıdır

Genişləndirmələrin ilk açıq üstünlüyü ondan ibarətdir ki, müştəri üçün edilən bütün fərdiləşdirmələr standart konfiqurasiyadan ayrıdır və indi dəqiq nəyin dəyişdirildiyini başa düşmək üçün dəyişdirilmiş konfiqurasiya ilə standart konfiqurasiyanı müqayisə etmək lazım deyil.

Artıq qeyd olundu ki, əsas konfiqurasiyadan bir obyekti genişləndirmədə istifadə etmək üçün o, əsas konfiqurasiyadan uzantıya götürülməlidir. Beləliklə, uzantıda əsas konfiqurasiyadan bir obyektə keçid kimi bir şey görünür.

Eyni zamanda, konfiqurasiyada hansı borc götürülmüş obyektlərin həqiqətən dəyişdirildiyini və yalnız oxumaq rejimində götürüldüyünü başa düşməyin bir yolu var - məsələn, hesabatlarda istifadə üçün. Uzatma obyektləri ağacında "Dəyişdirildi və genişləndirmədə əlavə edildi" filtr düyməsi var, kliklədikdən sonra yalnız bu genişləndirmədə dəyişdirilmiş götürülmüş obyektlər və bu genişləndirmədə yaradılmış yeni obyektlər ağacda qalır.

Səhvlərin erkən xəbərdarlığı

Tutaq ki, biz hesabatda istifadə etmək üçün Müqavilələr kataloqunu əsas konfiqurasiyadan genişlənməyə götürdük. Bu vaxt standart konfiqurasiyanın yeni versiyası buraxıldı, bu versiyada Müqavilələr kataloqunun adı Sazişlər olaraq dəyişdirildi. Təbii ki, yeni versiyaya keçdikdən sonra genişləndirmədəki hesabatımız işləməyəcək. Əgər biz köhnə fərdiləşdirmə texnologiyasından - xarici hesabatdan istifadə etsəydik, onda səhv yalnız hesabatın icrası zamanı baş verərdi. Genişləndirmələr vəziyyətində, standart konfiqurasiya versiyasını yenilədikdən sonra dizayn müddətində genişləndirmələrin düzgünlüyünü yoxlamaq və istifadəçilər işə başlamazdan əvvəl bütün problemləri həll etmək imkanımız var.

Bu, xüsusilə bir məlumat bazasında çoxlu genişləndirmələrin istifadə edildiyi və konfiqurasiya versiyasının mərkəzləşdirilmiş şəkildə yeniləndiyi tətbiqlərə aiddir (məsələn, bulud tətbiqlərində, burada müxtəlif təşkilatlar(eyni konfiqurasiyadan istifadə etməklə, lakin fərqli məlumat sahələrində fəaliyyət göstərən müxtəlif genişləndirmə dəstlərindən istifadə edə bilər). Administrator standart konfiqurasiyanın versiyasını test əsasında yeniləyə və yeni versiyaya nisbətən bütün istifadəçi genişləndirmələrinin düzgünlüyünü yoxlaya bilər. Problemlər olduqda, o, onları genişləndirmə sahiblərinə məlumat verəcək və işçi bazanın standart konfiqurasiyanın yeni versiyasına keçidi yalnız bütün genişləndirmələr konfiqurasiyanın yeni versiyasına uyğunlaşdırıldıqda həyata keçiriləcək.

Sonra nə var?

Biz genişləndirmələrin işlənib hazırlanmasını 1C:Enterprise platformasında fərdiləşdirmə vasitələrinin inkişafı üçün əsas istiqamətlərdən biri hesab edirik. Əvvəlcə bulud xidmətində fərdiləşdirməni asanlaşdırmaq üçün nəzərdə tutulmuş genişləndirmələr həm fərdiləşdirmə vəziyyətlərini, həm də bulud olmayan tətbiqləri asanlaşdırmaq üçün hazırlanmışdır.

Uzatmalarda istədiyiniz hər şeyi fərdiləşdirə bilsəniz də. Məsələn, yeni tətbiq obyektlərini (kataloqlar, sənədlər və s.) yaratmaq hələ mümkün deyil və mövcud tətbiq obyektlərinə yeni detallar əlavə etmək mümkün deyil. Biz bunun (və digər funksiyalar üzərində də) üzərində işləyirik və 1C: Enterprise platformasının demək olar ki, hər yeni versiyasında biz genişləndirmələrə yeni funksiyalar əlavə edirik: Teqlər əlavə edin

Olduqca aktual olduğu ortaya çıxdı :)

Yaxşı, gəlin bu həftə sonunu da faydalı edək.

Beləliklə, bu gün "1C-nin tətbiqi əməliyyatı" nın başqa bir mövzusu:

Platformada genişləndirmə mexanizmi 8.3.6

Biz nədən danışırıq?

8.3.6 platformasında yeni mexanizm tətbiq olundu - proqram həllinin konkret müştəriyə uyğunlaşdırılmasını asanlaşdıran genişləndirmə mexanizmi.

Uzatmalardan istifadə edərkən konfiqurasiya modifikasiyası həyata keçirilir yeni varlıq - konfiqurasiyanın genişləndirilməsi:

  • Uzatma da mahiyyətcə konfiqurasiyadır, lakin bəzi məhdudiyyətlərlə
  • Hazırlanmış genişləndirmə istifadəçi rejimində müştərinin iş bazasına qoşula bilər
  • Ən əhəmiyyətli - dəyişdirilən konfiqurasiyanın dəstəkdən çıxarılmasına ehtiyac yoxdur, yəni. dəyişmədən tipik olaraq qalır
  • Dəyişdirilmiş konfiqurasiya yenilənir istifadəçi tərəfindən avtomatik həyata keçirilə bilər

Beləliklə, müştəri nəticədə alır təkmilləşdirmə imkanı konfiqurasiyalar və eyni zamanda - sadə avtomatik yeniləmə.

Bunu daha ətraflı başa düşə bilməniz üçün daha bir neçə video + genişləndirmələr üzrə PDF dərc edirik.

Beləliklə, gedirik:

Konfiqurasiya uzantılarının məqsədi

Video platforma 8.3.6-da ortaya çıxan yeni konfiqurasiya genişləndirilməsi mexanizmini müzakirə edir. O, icra zamanı həllərin təkmilləşdirilməsi və uyğunlaşdırılması üçün nəzərdə tutulub. Bu halda, müştəri sadə avtomatik konfiqurasiya yeniləməsi və dəyişikliklər etmək imkanı alır.

Genişlənmədə dəyişdirilə bilən obyektlər

Bu video genişləndirmə mexanizminin mövcud məhdudiyyətlərini müzakirə edir. Hal-hazırda, genişləndirmələrdə yalnız məhdud sayda obyekt istifadə edilə bilər.

Konfiquratorda uzantılarla işləmək

Bu video konfiquratorda genişləndirmələrin inkişafını müzakirə edir. Uzatma bir qədər məhdud olsa da, konfiqurasiyadır. Genişlənmə ilə iş metadata obyekt ağacında da həyata keçirilir. Nəticədə uzantı diskdəki faylda saxlanıla bilər.

Borc obyektləri

Bu video əsas konfiqurasiya obyektlərinin uzantıya götürülməsinə baxır. Bu, uzantının özünü inkişaf etdirmək üçün tələb olunan əsas mexanizmdir. Bu, həmçinin genişləndirmə qoşulduqda dəyəri yoxlanılan idarə olunan xüsusiyyətlərdən danışır.

Konfiqurasiya uzantısında öz obyektlərinizin yaradılması

Bu video uzantıda öz obyektlərinizi necə yarada biləcəyinizi izah edir. Bu cür obyektlərin siyahısı hələ də məhduddur - bunlar hesabatlar, emal və alt sistemlərdir. Uzatmada belə obyektlərin inkişafı əsas konfiqurasiya ilə analogiya ilə həyata keçirilir.

İstifadəçi rejimində uzantılarla işləmək

Bu videoda hazırlanmış genişləndirməni müştərinin işləyən verilənlər bazasına necə qoşmaq olar. Bu halda, əlaqə konfiquratora daxil olmadan istifadəçi rejimindən edilə bilər.

Konfiqurasiya uzantılarında idarə olunan formalarla işləmək

Bu video uzantıda idarə olunan formalarla necə işləməyə baxır. Nəzərə alın ki, mənbə forması genişləndirmə ilə avtomatik sinxronlaşdırılmır. Sistemin nəticəni necə yaratdığını izah edir görünüş genişləndirmə olduqda formalar.

İdarə olunan Forma Modulu və Konfiqurasiya Genişləndirmələrində Hadisə İşləyiciləri

Bu video idarə olunan konfiqurasiya genişləndirilməsi formalarında hadisə idarəediciləri ilə necə işləməyi əhatə edir.

Əsas konfiqurasiyada və genişlənmədə hadisə işləyicilərinin icra qaydası nümayiş etdirilir.

© 2023 youmebox.ru -- Biznes haqqında - Faydalı biliklər portalı