1C proqramlaşdırmada peşəkar yanaşma – biznesiniz üçün optimal həllər

1c Proqramlasdirma Ucun F Rdi H Ll R
1C Avtomatlaşdırma

1C sisteminin fərdiləşdirilməsi, yeni modullar və mövcud funksiyaların genişləndirilməsi.

1c Il Biznesin R Q Msal Avtomatlasdirilmasi
Xidmətlərimiz

1C proqramlaşdırma, fərdi həllər, inteqrasiyalar və biznes proseslərinin avtomatlaşdırılması.

Kodyaz 1c Proqramlasdirma T Limi
Təlimlər

1C proqramlaşdırma dərsləri, praktiki tapşırıqlar və peşəkar inkişaf.

Kodyaz Il R Q Msal Inteqrasiya Ofisi
Rəqəmsal həllər

API inteqrasiyaları, avtomatlaşdırılmış iş axınları və süni intellekt əsaslı həllər.

1c T Tbiq Inqilabi  Kohn D N Muasir

1C Dünyasını Dəyişən İnqilab

İstifadəçi böyük hesabatı açır və ekran onlarla saniyə “donur”. Başqa istifadəçi zəif internet üzərindən işləyir və hər kliklə gözləyir. Belə hallar 1C platformasının inkişafında əsas arxitektura dəyişikliyinə, yəni idarə olunan tətbiqə (Управляемое приложение) gətirib çıxarıb.

Bu məqalədə idarə olunan tətbiqin nə olduğunu, adi tətbiqdən nə ilə fərqləndiyini, müştəri-server arxitekturasının necə qurulduğunu, asinxron modelin səbəbini və istifadəçi parametrlərinin rolunu nümunələrlə izah edirik.

1Adi tətbiq və idarə olunan tətbiq

İdarə olunan tətbiq 1C:Enterprise platformasının 8.2 versiyasında təqdim olunub və 8.3 ilə inkişaf etdirilib. Bu, yalnız yeni görünüş deyil, formaların təsvir edilməsi, kodun icra olunduğu yer və müştəri ilə server arasındakı əlaqə ilə bağlı yeni yanaşmadır.

Burada tez-tez rast gəlinən bir qarışıqlığı aydınlaşdıraq. Qalın müştəri (Толстый клиент) müştəri proqramının növüdür, “köhnə model” adı deyil. Əsl müqayisə adi tətbiq (Обычное приложение) ilə idarə olunan tətbiq arasında aparılır.

RejimQalın müştəriNazik müştəriVeb-müştəri
Adi tətbiqBəliXeyrXeyr
İdarə olunan tətbiqBəliBəliBəli

Cədvəldən görünür ki, nazik müştəri və veb-müştəri yalnız idarə olunan tətbiqdə işləyir. Qalın müştəri isə hər iki rejimi başlada bilir. Platformanın başlatma rejimi konfiqurasiyada və başlatma parametrlərində müəyyən edilir.

Əsas fikir: adi tətbiqdə forma müştəridə hazırlanır, idarə olunan tətbiqdə isə forma təsvir edilir və müştəri ilə server arasında bölüşdürülmüş şəkildə icra olunur. Bu yanaşma veb-müştərinin və mobil platformanın əsasını təşkil edir.

2Müştəri-server arxitekturası

Müştəri-server rejimində 1C server klasteri ilə verilənlər bazası idarəetmə sistemi (DBMS) arasında iş bölünür. İstifadəçi tərəfində isə yüngül müştəri işləyir.

MüştəriNazik müştəri və ya veb-brauzer
↕ lazım olan məlumat və əmrlər
1C server klasteriragent, rmngr, rphost
↕ sorğular
Verilənlər bazası (DBMS)PostgreSQL, MS SQL Server və s.
ProsesRolu
ragentServer agenti: klasterin işə salınmasını və prosesləri idarə edir
rmngrKlaster meneceri: klasterin ümumi idarəsi və paylaşma
rphostİşçi proses: tətbiq kodunu icra edir və DBMS ilə əlaqə qurur

Bu arxitekturada ağır əməliyyatlar (hesabat formalaşdırma, sənədlərin emalı, verilənlərlə iş) serverdə icra olunur. Müştəriyə yalnız interfeysi göstərmək və istifadəçi hərəkətlərini emal etmək üçün lazım olan məlumat ötürülür.

Vacib dəqiqləşdirmə: klaster və rphost yalnız müştəri-server rejimində var. Fayl rejimində idarə olunan tətbiq də işləyir, lakin server kodu həmin kompüterdə müştərinin öz prosesində icra olunur. Ona görə performans üstünlüyü əsasən müştəri-server rejimində hiss olunur və real nəticə infrastrukturun sazlanmasından, bazanın həcmindən və tətbiqin quruluşundan asılıdır.

3Kontekst direktivləri və server çağırışları

İdarə olunan formada hər prosedur müştəridə, ya serverdə icra olunur. Bunu prosedurun əvvəlindəki direktiv müəyyən edir.

DirektivHarada icra olunur?Form məlumatlarına çıxış
&НаКлиентеMüştəridəVar
&НаСервереServerdəVar (formanın konteksti ilə)
&НаСервереБезКонтекстаServerdəYoxdur, yalnız parametrlərlə işləyir; daha az məlumat ötürülür
&НаКлиентеНаСервереБезКонтекстаHəm müştəridə, həm serverdə çağırıla bilərYoxdur

Müştəridən serverə hər müraciət şəbəkə üzərindən gediş-gəliş deməkdir. Çox sayda kiçik server çağırışı yavaş işləyən interfeysin ən tipik səbəbidir.

Zəif: hər sətir üçün server çağırışı1C:Enterprise
&НаКлиенте
Процедура HamisiniEmalEt()
    Для Каждого Setir Из Объект.Mallar Цикл
        QiymetiYenile(Setir.НомерСтроки);
    КонецЦикла;
КонецПроцедуры
Yaxşı: bir server çağırışı1C:Enterprise
&НаКлиенте
Процедура HamisiniEmalEt()
    QiymetleriYenile();
КонецПроцедуры

&НаСервере
Процедура QiymetleriYenile()
    Для Каждого Setir Из Объект.Mallar Цикл
        // bütün sətirlər serverdə emal olunur
    КонецЦикла;
КонецПроцедуры

Birinci variantda 100 sətir üçün 100 server müraciəti olur, ikincidə isə bir. Qayda sadədir: müştəri kodu qərarı verir, ağır iş isə bir çağırışla serverdə görülür.

4Asinxron model

Adi tətbiqdə Вопрос() kimi funksiyalar modal pəncərə açır: istifadəçi cavab verənə qədər kod dayanır, sonra davam edir. Veb-brauzerlər belə dayandırıcı pəncərələri sərbəst dəstəkləmir, mobil mühit üçün də uyğun deyil. Ona görə idarə olunan tətbiqdə modal çağırışların əvəzinə asinxron metodlardan istifadə olunur: sual göstərilir, kod isə dayanmadan davam edir, cavab gələndə ayrıca prosedur çağırılır.

Sinxron: modal sual (köhnə yanaşma)1C:Enterprise
// Adi tətbiqdə
Cavab = Вопрос("Sənədi silək?",
    РежимДиалогаВопрос.ДаНет);

Если Cavab = КодВозвратаДиалога.Да Тогда
    SenediSil();
КонецЕсли;
Asinxron: geri çağırış1C:Enterprise
&НаКлиенте
Процедура SilNaxis(Команда)
    Bildiris = Новый ОписаниеОповещения(
        "SilmeniTesdiqle", ЭтотОбъект);
    ПоказатьВопрос(Bildiris, "Sənədi silək?",
        РежимДиалогаВопрос.ДаНет);
КонецПроцедуры

&НаКлиенте
Процедура SilmeniTesdiqle(Netice, Parametr) Экспорт
    Если Netice = КодВозвратаДиалога.Да Тогда
        SenediSil();
    КонецЕсли;
КонецПроцедуры
1. ОписаниеОповещения hazırlanır: cavabdan sonra hansı prosedur çağırılacaq
↓
2. ПоказатьВопрос sualı göstərir və dərhal geri qayıdır
↓
3. İstifadəçi cavab verir
↓
4. Geri çağırış prosedurunda cavaba görə kod icra olunur

Diqqət: ПоказатьВопрос sualı göstərəndən sonra dərhal növbəti sətrə keçir. Cavaba görə icra olunmalı hər şey geri çağırış prosedurunda olmalıdır, sualdan sonrakı sətirdə yox. İstifadəçi pəncərəni cavabsız bağlayarsa, Netice Неопределено ola bilər, bunu yoxlayın.

Platformada modallıqdan istifadənin konfiqurasiya səviyyəsində idarə olunmasına imkan verən xüsusi xassə var. Onun adı və dəstəklənən variantları platformanın versiyasından asılıdır, ona görə öz mühitinizdə yoxlayın.

5İstifadəçi parametrləri

İdarə olunan formalar metaməlumatlar əsasında qurulur, ona görə istifadəçi interfeysin bir hissəsini kod yazmadan özü uyğunlaşdıra bilər. Tətbiqin verdiyi imkanlardan asılı olaraq istifadəçi aşağıdakıları edə bilər.

İstifadəçi nə edə bilər?NümunəProqramçının rolu
Formanı fərdiləşdirməkSahələri gizlətmək, yerini dəyişməkFormanı elə qurmaq ki, sahələr məntiqi qruplarda olsun
Siyahını tənzimləməkSütunların sırası, eni, görünməsiSiyahıda mənalı sütunların mövcudluğunu təmin etmək
Filtr və çeşidləməMüştəri üzrə, tarix üzrə seçimFiltr üçün uyğun sahələri açıq saxlamaq
Standart görünüşə qayıtmaqQarışdırdığı tənzimləməni sıfırlamaqStandart quruluşun düzgün olmasına nəzarət etmək

Bu parametrlər adətən istifadəçi üzrə informasiya bazasında saxlanılır, buna görə əməkdaş başqa kompüterdən daxil olanda da öz görünüşünü ala bilər. Dəqiq saxlama mexanizmi və menyu adları interfeysin və platformanın versiyasından asılıdır.

Praktiki tövsiyə: istifadəçi parametrləri konfiqurasiyanı dəyişmir, yalnız həmin istifadəçinin görünüşünə təsir edir. Standart formanı aydın və məntiqli qurun: ən yaxşı fərdiləşdirmə lazım olmayan fərdiləşdirmədir.

6Praktik qaydalar

QaydaSəbəb
Server çağırışlarının sayını azaldınHər çağırış müştəri ilə server arasında gediş-gəliş deməkdir
Ağır emalı serverdə, qərarı müştəridə qurunMüştəri yüngül qalır, server emalı mərkəzləşdirilir
Modal funksiyalardan istifadə etməyinVeb-müştəri və mobil mühitdə işləmirlər
Cavabdan asılı kodu geri çağırış prosedurunda yazınAsinxron sualdan sonrakı sətir cavabı gözləmir
Yaxşı standart forma qurunİstifadəçinin fərdiləşdirməyə ehtiyacı azalır
Performansı real şəraitdə ölçünNəticə infrastrukturdan və bazanın həcmindən asılıdır

?Özünü yoxla

Əvvəl cavabı özünüz düşünün, sonra açıqlamanı oxuyun.

1. Qalın müştəri ilə idarə olunan tətbiq eyni səviyyəli anlayışlardırmı?

Xeyr. Qalın müştəri müştəri proqramının növüdür. Müqayisə adi tətbiq ilə idarə olunan tətbiq arasında aparılır və qalın müştəri hər iki rejimi başlada bilir.

2. Veb-müştəri hansı tətbiq rejimində işləyir?

Yalnız idarə olunan tətbiqdə. Adi tətbiq veb-müştəridə işləmir.

3. rphost nə edir?

Server klasterinin işçi prosesidir: tətbiq kodunu icra edir və verilənlər bazası ilə əlaqə qurur.

4. Niyə hər sətir üçün ayrıca server çağırışı pis yanaşmadır?

Hər çağırış şəbəkə üzərindən gediş-gəliş tələb edir və çoxlu çağırış interfeysi yavaşladır. Daha yaxşısı bütün işi bir server çağırışında görməkdir.

5. ПоказатьВопрос çağırışından sonrakı sətir cavabı gözləyirmi?

Xeyr. Cavaba görə kod geri çağırış prosedurunda icra olunmalıdır.

6. İdarə olunan tətbiq həmişə avtomatik sürət artımı verirmi?

Xeyr. Nəticə rejimdən (fayl və ya müştəri-server), infrastrukturdan, bazanın həcmindən və tətbiqin quruluşundan asılıdır.

Yekun

İdarə olunan tətbiq 1C-də interfeysi, icranın bölüşdürülməsini və müştəri ilə server əlaqəsini yenidən qurur. Düzgün istifadə olunduqda yüngül müştərilərə, veb-müştəriyə və fərdiləşdirilə bilən interfeysə şərait yaradır. Yadda saxlamaq üçün:

  • Adi tətbiq ilə idarə olunan tətbiqi müqayisə edin, qalın müştəri ayrı anlayışdır.
  • Server çağırışlarının sayını azaldın, ağır işi serverdə görün.
  • Modal pəncərələrin əvəzinə asinxron metodlardan və geri çağırışdan istifadə edin.
  • Performans zəmanət deyil, ölçülməlidir.

Sizin formanızda ən çox hansı əməliyyat serverə lazımsız gediş-gəliş yaradır?

Qeyd: direktivlər, metodlar və menyu adları 1C platformasının versiyasından asılı ola bilər. Nümunələri öz mühitinizdə sınaqdan keçirin.

Şərh yaz

Sizin e-poçt ünvanınız dərc edilməyəcəkdir. Gərəkli sahələr * ilə işarələnmişdir