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 D D Yis Nl R 5 Esas M Qam

1C Proqramlaşdırmada Dəyişənlər

Proqramlaşdırmaya yeni başlayan çoxları dəyişənlərə yaddaşda məlumat saxlayan sadə “qutu” kimi baxır. 1C:Enterprise (1С:Предприятие) daxili dilində isə bu anlayışın arxasında kodun etibarlılığını müəyyən edən qaydalar var: adlandırma, görünüş sahəsi, ilkin qiymət, tip və parametrlərin ötürülməsi.

Bu məqalədə dəyişənlərlə bağlı beş vacib məqamı nümunələrlə nəzərdən keçirəcəyik.

1Adlandırma qaydaları və hərf həssaslığının olmaması

Dəyişənlərə, prosedurlara və funksiyalara verilən adlar identifikator adlanır. Ad seçərkən həm sintaksis qaydalarına, həm də oxunaqlılığa diqqət yetirmək lazımdır.

  • İdentifikator hərflərdən, rəqəmlərdən və alt xətt (_) işarəsindən ibarət ola bilər.
  • Ad rəqəmlə başlaya bilməz: Say1 düzgündür, 1ciSay yanlışdır.
  • Adın daxilində boşluq, nöqtə, vergül, tire kimi işarələr ola bilməz.
  • Если, Для, Цикл, Процедура kimi dilin açar sözlərini identifikator kimi işlətmək olmaz.

Yadda saxla: 1C-də identifikatorlar hərf registrinə həssas deyil. Say, say və SAY eyni identifikatordur.

Sərbəstlik olsa da, layihə boyu vahid üslub saxlamaq vacibdir: MusteriKodu, CemiMebleg kimi aydın adlar seçin.

Praktiki tövsiyə: nümunələrdə olduğu kimi adları latın hərfləri ilə, Azərbaycan dilinə məxsus xüsusi hərflər (ə, ş, ı) olmadan yazın. Beləcə kod müxtəlif mühitlərdə və redaktorlarda problemsiz işləyir.

2Görünüş sahəsi və ömür: “stəkan” və “şkaf” məntiqi

Dəyişənin harada elan olunması onun haradan əlçatan olmasını və nə qədər mövcud qalmasını müəyyən edir. Lokal dəyişən otaqdakı stəkana, modul dəyişəni isə eyni modulun bir neçə prosedurunun istifadə etdiyi şkafa bənzəyir.

NövHarada elan olunur?ƏlçatanlıqVacib qeyd
Lokal dəyişənProsedur və ya funksiyanın daxilindəYalnız həmin prosedur/funksiya daxilindəProsedur bitəndə yox olur; başqa prosedur ona birbaşa müraciət edə bilməz.
Modul dəyişəniModulun yuxarı hissəsində, prosedurlardan əvvəl Перем iləHəmin modulun bütün prosedurlarındaModulun icra konteksti ilə yaşayır. Ümumi modullarda (Общий модуль) modul dəyişəni elan etmək olmur.
Eksport edilən modul dəyişəniModul səviyyəsində, Экспорт iləUyğun modul tiplərində (məsələn, forma və obyekt modulları) həmin modulun obyekti vasitəsilə digər koddanBütün tətbiq üzrə sərbəst qlobal dəyişən yaratmır.
Nümunə: modul dəyişəni və lokal dəyişən1C:Enterprise
// Modulun yuxarı hissəsində:
Перем ModulMeblegi;
Процедура Hesabla()
LokalMebleg = 150;
ModulMeblegi = LokalMebleg * 2;
КонецПроцедуры

LokalMebleg yalnız Hesabla() daxilində mövcuddur. ModulMeblegi modul səviyyəsində elan olunub və həmin modulun digər prosedurlarında da görünür.

Risk: modul dəyişənini bir neçə prosedur dəyişirsə, birinin yazdığı qiymət digərinin gözlədiyini poza bilər. Mümkün qədər dəyişəni lokal saxlayın və məlumatı parametr vasitəsilə ötürün.

3İlkin qiymət və Неопределено sürprizi

Перем Say; kimi elan olunmuş və hələ qiymət almamış dəyişənin qiyməti Неопределено olur. Bu, sıfır (0) və ya boş mətn ("") ilə eyni deyil: Неопределено “qiymət yoxdur” deməkdir.

0

Ədəddir. Hesablamalarda istifadə oluna bilər.

""

Boş mətndir: uzunluğu sıfır olan mətn qiyməti.

Неопределено

Qiymətin olmadığı və ya təyin edilmədiyi xüsusi vəziyyət.

ЗначениеЗаполнено()

Qiymətin doldurulub-doldurulmadığını yoxlayır. Неопределено, 0 və "" üçün Ложь qaytarır.

Qızıl qayda: dəyişən və ya funksiya nəticəsi üzərində əməliyyat aparmazdan əvvəl onun gözlənilən qiymətə malik olduğunu yoxlayın.

Nümunə: qiymətin yoxlanması1C:Enterprise
Процедура Emal()
Netice = AxtarisEt();
Если Netice = Неопределено Тогда
Сообщить("Uyğun məlumat tapılmadı.");
Возврат;
КонецЕсли;
// Yalnız yoxlamadan sonra Netice-dən istifadə edin.
КонецПроцедуры

Funksiya heç nə tapmayanda Неопределено qaytarırsa, nəticəni yoxlamadan onunla hesablama aparmaq icra xətasına səbəb olur. Burada = Неопределено müqayisəsi dəqiq yoxlamadır. ЗначениеЗаполнено() isə qiymət 0 və ya "" olanda da Ложь verdiyi üçün onu yalnız “boşdur” məntiqi nəzərdə tutulanda seçin.

4Çevik qutu: dinamik tipləşdirmə

1C daxili dilində dəyişən elan edilərkən sərt tipə bağlanmır. Eyni dəyişənə proqramın müxtəlif mərhələlərində müxtəlif tipli qiymətlər mənimsətmək olar.

Nümunə: tipin dəyişməsi1C:Enterprise
Deyer = 25;                 // Число
Deyer = "KodYaz";           // Строка
Deyer = ТекущаяДата();      // Дата
Deyer = Истина;             // Булево

Bu, müxtəlif mənbələrdən gələn məlumatı emal etməyi asanlaşdırır. Lakin eyni dəyişənin tipini səbəbsiz dəyişmək kodu oxunmaz edir və tip uyğunsuzluğu xətalarına gətirib çıxarır.

Tipi necə yoxlamaq olar?

  • ТипЗнч(Deyer) dəyişənin hazırkı faktiki tipini qaytarır.
  • Тип("Число") verilmiş tipin təsvirini qaytarır, müqayisə üçün istifadə olunur.
Nümunə: ədəd tipinin yoxlanması1C:Enterprise
Ededdir = (ТипЗнч(Deyer) = Тип("Число"));
Если Ededdir Тогда
// Deyer ədəd tipindədir.
КонецЕсли;

Praktiki tövsiyə: forma sahələrindən, xarici inteqrasiyalardan və funksiya parametrlərindən gələn qiymətləri emal etməzdən əvvəl tipini və məzmununu yoxlayın.

5Parametrlərin ötürülməsi: istinad və Знач

1C-də parametrlər standart olaraq istinadla ötürülür. Prosedur daxilində parametrə yeni qiymət mənimsədilsə, çağıran koddakı dəyişən də dəyişir. Bu, ədəd və mətn kimi sadə tiplərə də aiddir. Знач açar sözü isə parametri qiymətlə ötürür: prosedur surət üzərində işləyir, çağıran tərəfin dəyişəni toxunulmaz qalır.

Nümunə: standart ötürmə və Знач1C:Enterprise
Процедура Artir(Say)
Say = Say + 1;
КонецПроцедуры
Процедура ArtirKopya(Знач Say)
Say = Say + 1;
КонецПроцедуры
Процедура Test()
X = 10;
Artir(X);        // X artıq 11-dir
ArtirKopya(X);   // X yenə 11-dir
КонецПроцедуры

Bənzətmə: istinadla ötürmə orijinal sənədin özünü vermək, Знач isə onun surətini vermək kimidir.

Mürəkkəb obyektlərdə nəzərə alın

Массив, Структура, ТаблицаЗначений kimi obyektlər istinad tiplidir. Знач ilə ötürəndə də eyni obyektə istinad ötürülür. Ona görə prosedur daxilində obyektin məzmununu dəyişmək çağıran tərəfə görünür. Знач yalnız parametr dəyişəninə başqa obyekt mənimsədilməsinin çağıran tərəfə təsir etməsinin qarşısını alır. Yəni Знач dərin surət yaratmır.

Nümunə: Знач və massiv1C:Enterprise
Процедура Doldur(Знач Massiv)
Massiv.Добавить(1);       // çağıran tərəfdəki massivə də əlavə olunur
Massiv = Новый Массив;    // yalnız lokal parametr dəyişir
КонецПроцедуры

Peşəkar vərdiş: parametrin dəyişdirilməsi nəzərdə tutulmursa, Знач yazın və prosedurun nə etdiyini ad və ya şərhlə aydın göstərin. Komanda layihələrində bu, kodun niyyətini anlaşıqlı edir.

?Özünü yoxla

Suallara cavab verin, sonra açıqlamanı açıb yoxlayın.

1. 1C-də Say və say iki ayrı dəyişəndirmi?

Cavabı göstər

Xeyr. 1C identifikatorları hərf registrinə həssas deyil, bunlar eyni identifikatordur.

2. Lokal dəyişənə başqa prosedurdan birbaşa müraciət etmək olarmı?

Cavabı göstər

Xeyr. Lokal dəyişən yalnız elan olunduğu prosedur və ya funksiya daxilində görünür.

3. Неопределено ilə 0 eyni məna daşıyırmı?

Cavabı göstər

Xeyr. Sıfır ədədi qiymətdir, Неопределено isə “qiymət yoxdur” vəziyyətidir.

4. Dəyişənin tipini yoxlamaq üçün nədən istifadə edilir?

Cavabı göstər

ТипЗнч() faktiki tipi qaytarır, onu Тип("Число") kimi tip təsviri ilə müqayisə edirik.

5. Знач yazmadan ötürülən parametri prosedur dəyişsə, çağıran dəyişənə təsir edirmi?

Cavabı göstər

Bəli. Standart ötürmə istinadladır, ona görə dəyişiklik çağıran koddakı dəyişəndə də görünür. Знач bunun qarşısını alır, lakin istinad tipli obyektlərin məzmununun dəyişməsini dayandırmır.

Nəticə: kodunuz nə qədər təhlükəsizdir?

1C-də dəyişənlər yalnız məlumat saxlamaq üçün deyil, proqramın arxitekturasını qurmaq üçün də istifadə olunur. Aydın identifikator seçmək, görünüş sahəsini düzgün müəyyənləşdirmək, Неопределено hallarını yoxlamaq, dinamik tipləşdirməyə nəzarət etmək və parametrlərin standart olaraq istinadla ötürüldüyünü bilmək kodun etibarlılığını artırır.

Bəs siz gündəlik 1C kodlaşdırmasında parametrlərin ötürülmə qaydasına diqqət yetirirsinizmi?

Qeyd: nümunələr tədris məqsədi daşıyır. Konkret davranış platformanın versiyasından, modul tipindən və icra kontekstindən (müştəri/server) asılı ola bilər.

Şə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