Saxlama sistemində müəyyən edilmiş tezliyə malik hesabat yaradırıq. Standart parametr və istifadə müddəti və problemlər

20.02.2024

Girişə nəzarət sistemində hesabatlar yaratarkən, tez-tez hesabat formasında dövr seçimini göstərməyə ehtiyac var ki, tarixləri əl ilə daxil etməyiniz lazım deyil, standart dövrlər siyahısından seçin, məsələn: "İl" , "Ay", "Həftə" və s. Tarix növünün parametrləri üçün yalnız "Bu ilin əvvəli, ay və s." təyin edə bilərsiniz, lakin "Son" təmin edilmir.

Məsələ ondadır ki, məlumat növlərindən yalnız “Standart başlanğıc tarixi” növü mövcuddur, lakin mən də “Standart bitmə tarixini” istəyirəm.

Bunu aradan qaldırmağın bir yolu var.

  1. Gəlin yeni Parametr yaradaq, onu “Dövr” adlandıraq.
  2. Bu parametri "Standart dövr" növünə təyin edin
  3. Sorğuda istifadə olunan “Dövrün Başlanması” və “Dövrün Sonu” parametrlərinin “İfadə” sahəsində “İfadələrini təyin edin. &Period.StartDate" və " &Dövr.Bitmə tarixi”.

Ancaq bir az incəlik var. Sorğuda virtual cədvəllərdən istifadə etsək, çox güman ki, hesabat işləməyini dayandıracaq və “Görünüşü emal edərkən xəta, tip uyğunsuzluğu, parametr nömrəsi...” kimi xəta mesajı görünəcək.

Bunun qarşısını almaq üçün bütün virtual masa parametrlərini silməlisiniz.

Və onları "Məlumat tərkibi" sekmesindəki cədvəllərə əlavə edin.

Parametrlərin sürətli hesabat parametrlərində görünməsi üçün hesabat parametrləri üçün müvafiq bayrağı işə salaq.

İndi hesabat formasında dövr seçimi belə görünür.

Gəlin bir sorğu məlumat dəsti ilə hesabat yaradaq:

ANBARLARDA QALAN MƏHSULLARI SEÇİN. Anbar, MallarAnbarlardaQalıqlar. Nomenklatura, Anbarlarda Qalan Məhsullar. Yığım Reyestrindən QuantityBalance. Anbarlarda olan məhsullar. Qalıqlar(&Tarixim,) AS MəhsullarAnbarlardaQalır

İndi parametrlər sekmesine keçək və sistemin &MyDate parametrimizdən əlavə &Dövr parametrini də yaratdığını görək.
Dövrləri vizual olaraq izləmək üçün biz əsas hesabat forması yaradacağıq və orada məlumatların olduğu cədvəl sahəsini yerləşdirəcəyik: Parametrlər Composer.Settings.DataParameters

Hesabatı saxlayaq və müəssisədə açaq. Parametrləri olan cədvəl sahəsində yalnız &Dövr parametri göstərilir:

Müvafiq olaraq, bu parametrdə hər hansı bir dəyişiklik istənilən nəticəni verməyəcəkdir.

Niyə &MyDate parametri mövcud deyil? Əlbəttə ki, parametrlər sekmesinde bir onay qutusu işarələndiyi üçün Əlçatanlıq məhdudiyyəti.

Qutunun işarəsini silin. İndi hər ikisini mövcud parametrlərdə görürük. Yalnız hesabatı yaradan zaman hesabatın &MyDate-ə deyil, &Dövr parametrinə reaksiya verdiyini görəcəyik.

Bu misalda görüləcək ən sadə şey sorğuda &MyDate parametrinin adını &Period olaraq dəyişmək və istədiyiniz nəticəni əldə etməkdir. Amma ola bilsin ki, &Period parametrinin artıq istifadə olunduğu bir sorğunuz var və ya dini baxışlarınız bu parametrdən istifadə etməyə icazə vermir, istənilən halda problemi belə həll edə bilərsiniz:

ANBARLARDA QALAN MƏHSULLARI SEÇİN. Anbar, MallarAnbarlardaQalıqlar. Nomenklatura, Anbarlarda Qalan Məhsullar. Yığım Reyestrindən QuantityBalance. Anbarlarda olan məhsullar. Remains((&MyDate) ,) AS ProductsInWarehousesRemains

UPD istifadəçidən Boo:

“Standart” (sistem tərəfindən əlavə edilmiş) parametrlərdən istifadə zamanı əsas problem ondan ibarətdir ki, hesabatda bir neçə virtual cədvəldən istifadə edilərkən, bu parametr müəyyən edilərsə, onun dəyəri “öz” olanların əvəzinə bütün digər hallarda istifadə olunacaq.

Sizə bir misal verim:

SEÇİCİ İşçilərSP.İşçi, İşçilərSP.SəbəbDəyişiklikləriDövlət, İşçilərSP.Dövr, İşçilərSPAdigərTarix.Dövr AS Dövr, İşçilərSPAdigərTarih.SəbəbDəyişikliklərDövlətlərSəbəbDəyişikliklərDövlət2 FROM RegisterInformation.Employees.Employees loyee ) AS İş nikkiSP SOL ƏLAQƏ Məlumat Reyestri. Təşkilatların İşçiləri. Ən Son Dilim (&DigərTarix,) AS İşçiləriSPAdigərTarix BY EmployeesSP.Employee = EmployeesSP.Date.Employee

İkinci alt sorğuda “standart” DÖVR parametrinin dəyəri DigərTarix dəyərindən çox, dilim tarixi parametri kimi istifadə olunacaq.

İkinci alt sorğu ikinci məlumat dəstinə çıxarılsa və ACS-dən istifadə edilərək əlaqələndirilsə belə, bu "xətt" müşahidə olunacaq. İkinci sorğuda “ADDATE(&Period, MONTH, -1)” kimi ifadədən istifadə edən seçim də işləməyəcək, ay çıxılmayacaq. Lakin sorğudakı "Dövr" parametrinin adının, məsələn, "Birinci Tarix" olaraq dəyişdirilməsi bu problemi həll edir.

Yeri gəlmişkən, eyni problem, məsələn, dövriyyəni əldə etmək üçün istifadə edilən yığılma və mühasibat registrlərinin virtual cədvəllərində müşahidə olunur. Orada sistem “Dövrün başlanğıcı” və “Dövrün sonu” parametrlərini əlavə edir.
Beləliklə, hətta bir qədər artan mürəkkəblik tələbləri halında, mövcudluğu və "standart dövrlər" dən istifadəni söndürmək mantiqidir.

Bu məqalədə Məlumat Tərkibi Sistemindən (DCS) istifadə edərkən dövrün qurulmasının bəzi xüsusiyyətləri, adi bir istifadəçi ilə 1C sistemi arasındakı dövr anlayışındakı fərqlər səbəbindən yaranan problemlər müzakirə olunur, həmçinin onların həlli yolları təklif olunur. .
Məlumat Tərkibi Sistemi (DCS) istifadə edərək hazırlanmış əksər hesabatlar istifadəçidən hesabatın qurulacağı dövrü daxil etməyi tələb edir. Bir qayda olaraq, ACS-də dövr girişi aşağıdakı konstruksiyadan istifadə edərək parametrlər vasitəsilə təşkil edilir, bax. Şəkil 1 Bir dövrə girməyin bu üsulu "klassik" hesab olunur, 1C-də inkişafa həsr olunmuş İTS və digər ədəbiyyatda təsvir edilmişdir, buna görə də onu əsas götürək. Nümunə olaraq bütün sənədləri qəbul edən sadə sorğunu nəzərdən keçirək Müəyyən bir dövr üçün malların və xidmətlərin satışı, bax Şəkil 2 Bu hesabatdan istifadə edərkən istifadəçi parametrlər vasitəsilə dövrü təyin edir, bax. Şəkil 3 Hər şey düzgün görünür... AMMA kiçik bir problem var:

Məsələ burasındadır ki, istifadəçilərin böyük əksəriyyəti dövrü 1C-dən fərqli olaraq “başa düşür”, misallar:
1). Gəlin nəzərdən keçirək Şəkil 3
İstifadəçi nöqteyi-nəzərindən müddət göstərilməyib, yəni LİMİTSİZ, yəni tarix məhdudiyyəti olmayan BÜTÜN sənədlər hesabata daxil edilməlidir.
1C sisteminin "nöqteyi-nəzərindən" dövr parametri müəyyən edilir və ... onun hər iki sərhədi 01.01.0001-ə bərabərdir və hesabata yalnız boş tarixi olan sənədlər daxil ediləcək, bu isə praktikada heç bir məna kəsb etmir. vahid sənəd daxil ediləcək.
2). Gəlin nəzərdən keçirək Şəkil 4
İstifadəçinin nöqteyi-nəzərindən hesabata 28.01.2010 tarixindən başlayaraq bütün sənədlər daxil edilməlidir.
1C-nin "nöqteyi-nəzərindən" 28.01.2010 - 01.01.0001 dövrü istisnaya səbəb olacaqdır.

Siz, əlbəttə ki, istifadəçiyə hesabatın niyə görməyi gözlədiyi sənədləri göstərmədiyini və dövrün 1C-nin "nöqteyi-nəzərindən" necə təqdim olunduğunu izah etməyə cəhd edə bilərsiniz, lakin bu, nankor bir işdir və da səhvdir. Yaxşı bir proqram, ilk növbədə, istifadəçi dostu olmalıdır, çünki proqram istifadəçi üçün mövcuddur və əksinə deyil, buna görə də istifadəçinin başa düşdüyü dövrü başa düşmək üçün 1C-ni "öyrətmək" lazımdır, yəni:
1). Dövrün Başlanması və Dövrün Sonu göstərilməyib -> bütün sənədlər.
2). Yalnız Dövrün əvvəli göstərilir –> Dövrün əvvəlindən başlayan bütün sənədlər
3). Bundan əlavə, biz Dövrün Sonu >= Dövrün Başlandığını yoxlayacağıq və bu doğru deyilsə, Dövrün Sonunun göstərilmədiyini güman edəcəyik, yəni. 2).
Yuxarıda göstərilənlərə əsasən, Bitmə tarixi parametri üçün ifadə belə görünəcək:

ZAMAN &Period.EndDate=DATETIME(1,1,1) SONRA DATETIME(3999,12,31,23,59,59) SEÇ<&Период.ДатаНачала ТОГДА ДАТАВРЕМЯ(3999,12,31,23,59,59) ИНАЧЕ &Период.ДатаОкончания КОНЕЦ КОНЕЦ

Dövr seçim dizaynımızın son forması göstərilir Şəkil 5

Girişə nəzarət sistemində dövrü təyin etməyin bəzi xüsusiyyətləri.

Məlumat Tərkibi Sistemi (DCS) istifadə edərək hazırlanmış əksər hesabatlar istifadəçidən hesabatın qurulacağı dövrü daxil etməyi tələb edir.

Bir qayda olaraq, ACS-də dövr girişi aşağıdakı konstruksiyadan istifadə etməklə təşkil edilir, bax: Bu dövr daxiletmə üsulu "klassik" hesab olunur, 1C-də inkişafa həsr olunmuş İTS və digər ədəbiyyatda təsvir edilmişdir; əsas götürək. Nümunə olaraq bütün sənədləri qəbul edən sadə sorğunu nəzərdən keçirək Müəyyən bir dövr üçün malların və xidmətlərin satışı, bax

Bu hesabatdan istifadə edərkən istifadəçi parametrlər vasitəsilə dövrü təyin edir, bax hər şey düzgün görünür..., AMMA kiçik bir problem var:

Məsələ burasındadır ki, istifadəçilərin böyük əksəriyyəti dövrü 1C-dən fərqli olaraq “başa düşür”, misallar:

İstifadəçi nöqteyi-nəzərindən müddət göstərilməyib, yəni LİMİTSİZ, yəni tarix məhdudiyyəti olmayan BÜTÜN sənədlər hesabata daxil edilməlidir.

1C sisteminin "nöqteyi-nəzərindən" dövr parametri müəyyən edilir və ... onun hər iki sərhədi 01.01.0001-ə bərabərdir və hesabata yalnız boş tarixi olan sənədlər daxil ediləcək, bu isə praktikada heç bir məna kəsb etmir. vahid sənəd daxil ediləcək.

İstifadəçinin nöqteyi-nəzərindən hesabata 28.01.2010 tarixindən başlayaraq bütün sənədlər daxil edilməlidir.

1C-nin "nöqteyi-nəzərindən" 28.01.2010 - 01.01.0001 dövrü istisnaya səbəb olacaqdır.

Siz, əlbəttə ki, istifadəçiyə hesabatın niyə görməyi gözlədiyi sənədləri göstərmədiyini və dövrün 1C-nin "nöqteyi-nəzərindən" necə təqdim olunduğunu izah etməyə cəhd edə bilərsiniz, lakin bu, nankor bir işdir və da səhvdir. Yaxşı bir proqram, ilk növbədə, istifadəçi dostu olmalıdır, çünki proqram istifadəçi üçün mövcuddur və əksinə deyil, buna görə də istifadəçinin başa düşdüyü dövrü başa düşmək üçün 1C-ni "öyrətmək" lazımdır, yəni:

1). Dövrün başlanğıcı və Sonu göstərilməyib -> bütün sənədlər.

2). Yalnız Dövrün əvvəli göstərilir -> Dövrün əvvəlindən başlayan bütün sənədlər

3). Bundan əlavə, biz Dövrün Sonu >= Dövrün Başlandığını yoxlayacağıq və bu doğru deyilsə, Dövrün Sonunun göstərilmədiyini güman edəcəyik, yəni. 2).

Yuxarıda göstərilənlərə əsasən, Bitmə tarixi parametri üçün ifadə belədir:

ZAMAN &Period.EndDate=DATETIME(1,1,1)

SONRA DATETIME(3999,12,31)

NƏ ZAMAN &Dövr.Bitmə Tarixi<&Период.ДатаНачала

SONRA DATETIME(3999,12,31) DATETIME(3999,12,31,23,59,59)

&Dövr.Bitmə tarixi

Dövr seçim dizaynımızın son forması göstərilir

Qeyd: parametrləri təyin etmək üçün bu mexanizm köhnə 1C 8.1 və 8.2 platformaları üçün nəzərdə tutulmuşdur (və onların nəzarəti altında işləyən konfiqurasiyalar 1C platformasının köhnə versiyalarında boş parametrləri idarə etmək üçün daxili mexanizmlərə malikdir və mexanizmə müraciət etməyə ehtiyac yoxdur); bu məqalədə təsvir edilmişdir, əlavə olaraq 1C platformasının bəzi versiyalarında səhvlər və səhv əməliyyatlar mümkündür.

Beləliklə, başlayaq.

Sadəlik üçün nümunəni başa düşmək üçün bir sadə dövriyyə yığım registrini quracağıq.

Mənim vəziyyətimdə bu, "İşlərin Mühasibat Uçotu"nun yığılma reyestridir.

Məsələn, onun parametrlərini sərt şəkildə göstərəcəyik (giriş nəzarət sisteminə parametrlərin yumşaq tətbiqi ilə deyil):

Nəzərə alın ki, virtual cədvəlin tezliyi “Qeyd”dir.

Ancaq yuxarıda qeyd edildiyi kimi, dövrilik baxımından dövrə ehtiyacımız var, ona görə də "Dövr" sahəsini aşağıdakı şəkildə hesablamağı təklif edirəm (çox gözəl deyil, amma daha yaxşı variant görmədim):

Ekran görüntüsündən göründüyü kimi, sorğuya istifadəçinin formada göstərdiyi parametr ötürülür: “Tezlik” sadalamasının qiyməti – bu siyahıya demək olar ki, bütün standart həllərdə rast gəlinir.

"Parametrlər" sekmesinde onun mövcud növlərini göstərəcəyik:

Bu tənzimləmə ilə dövrümüzü elə formatlayırıq ki, hər şey gözəl və gözə xoş gəlsin)

Budur formatların özləri:

Ay: DF="MMMM yyyy "y.""

Gün: DF = gg.MM.yyyy

Həftə: DF = ""Gg.AA.yyyy-dan etibarən həftə"

Rüb: DF = ""rüb" yyyy "y"-ə."

İl: DF = "yyyy "y.""

Onillik: DF = """gg.MM.yyyy"dan onillik

Yarım il: DF = ""Gg.MM.yyyy"dan "Yarım il"

bu qədər. Çıxış gözəl bir şəkildir: