Pa počnimo.
Radi jednostavnosti, razumijevajući primjer, gradit ćemo na jednom jednostavnom cirkulirajućem registru akumulacije.
U mom slučaju, ovo je registar akumulacije "Računovodstvo u toku".
Na primjer, rigidno ćemo naznačiti njegove parametre (ne mekim nametanjem parametara na sistem kontrole pristupa):
Imajte na umu da je frekvencija virtuelne tabele “Record”.
Ali, kao što je gore navedeno, potreban nam je period u smislu periodičnosti, pa predlažem da izračunamo polje „Period“ na sljedeći način (nije baš lijepo, ali nisam vidio bolje opcije):
Kao što se vidi sa snimka ekrana, zahtjevu se prosljeđuje parametar koji korisnik specificira na obrascu: Vrijednost nabrajanja "Frequency" - ova enumeracija se nalazi u gotovo svim standardnim rješenjima.
Na kartici "Parametri" naznačit ćemo njegove dostupne vrste:
Ovom postavkom oblikujemo svoj period tako da sve bude lijepo i oku ugodno)
Evo i samih formata:
Mjesec: DF="MMMM yyyy "y.""
Dan: DF = dd.MM.gggg
Sedmica: DF = ""Sedmica od "dd.MM.yyyy"
Četvrtina: DF = "do "četvrtine" yyyy "y.""
Godina: DF = "gggg "y."
Dekada: DF = ""Decenija sa "dd.MM.yyyy"
Polu godine: DF = ""Pola godine od" dd.MM.gggg"
To je sve. Izlaz je divna slika:
Kreirajmo izvještaj sa jednim skupom podataka upita:
ODABIR PROIZVODA U SKLADIŠTIMA Preostalo. Skladište, GoodsInWarehousesRemains. Nomenklatura, preostali proizvodi u skladištima. Stanje količine IZ registra akumulacije. ProductsInWarehouses. Remains(&MyDate ,) AS ProductsInWarehousesRemainsSada idemo na karticu parametri i vidimo da je sistem, pored našeg parametra &MyDate, kreirao i parametar &Period.
Da bismo vizuelno pratili periode, kreiraćemo glavni obrazac izveštaja i na njega postaviti polje tabele sa podacima: Settings Composer.Settings.DataParameters
Sačuvajmo izveštaj i otvorimo ga u preduzeću. U polju tabele sa parametrima prikazuje se samo parametar &Period:
Shodno tome, bilo kakva promjena ovog parametra neće dati željeni rezultat.
Zašto parametar &MyDate nije dostupan? Naravno, jer na kartici parametara ima označen checkbox Ograničenje dostupnosti.
Poništite izbor u polju. Sada vidimo oba u dostupnim parametrima. Tek kada se generira izvještaj, vidjet ćemo da izvještaj reaguje na parametar &Period, a ne na &Moj datum.
U ovom primjeru, najjednostavnije je preimenovati parametar &MyDate u zahtjevu u &Period i postići željeni rezultat. Ali možda imate upit u kojem je već korišten parametar &Period, ili vam religijski stavovi ne dozvoljavaju korištenje ovog parametra, u svakom slučaju problem možete riješiti ovako:
ODABIR PROIZVODA U SKLADIŠTIMA Preostalo. Skladište, GoodsInWarehousesRemains. Nomenklatura, preostali proizvodi u skladištima. Stanje količine IZ registra akumulacije. ProductsInWarehouses. Remains((&MyDate) ,) AS ProductsInWarehousesRemainsUPD od korisnika Boo:
Glavni problem pri korištenju “standardnih” (sistemski dodatih) parametara je taj što će se prilikom korištenja više virtualnih tabela u izvještaju, ako je ovaj parametar definiran, u svim ostalim slučajevima umjesto “sopstvenih” koristiti njegova vrijednost.
Dozvolite mi da vam dam primjer:
SELECT EmployeesSP.Employee, WorkersSP.ReasonChangesState, WorkersSP.Period, WorkersSPAnotherDate.Period AS Period2, WorkersSPAnotherDate.ReasonChangesStates AS ReasonChangesState2 FROM RegisterInformation.EmployeesLaEmployee nikkiSP LIJEVA KONEKCIJA Registar informacija.Zaposleni u organizacijama.Odsječak najnovijeg (&OtherDate ,) AS EmployeesSPAnotherDate BY EmployeesSP.Employee = EmployeesSPAnotherDate.EmployeeU drugom potupitu, vrijednost “standardnog” parametra PERIOD će se koristiti kao parametar datuma preseka, a ne vrijednost OtherDate.
Ovaj „propust“ će se primijetiti čak i ako se drugi potupit ispusti u drugi skup podataka i poveže pomoću ACS-a. Opcija koja u drugom zahtjevu koristi izraz kao što je “DODATI(&Period, MJESEC, -1)” također neće raditi, mjesec se neće oduzimati. Ali preimenovanje parametra “Period” u zahtjevu u, na primjer, “FirstDate” rješava ovaj problem.
Uzgred, potpuno isti problem se uočava i sa virtuelnim tabelama akumulacije i računovodstvenim registrima, koji se koriste za dobijanje, na primer, prometa. Tu sistem dodaje parametre “Početak perioda” i “Kraj perioda”.
Dakle, u slučaju zahtjeva čak i malo povećane složenosti, ima smisla isključiti dostupnost i korištenje „standardnih perioda“.
Neke karakteristike podešavanja perioda u sistemu kontrole pristupa.
Većina izvještaja koji se razvijaju korištenjem sistema za sastavljanje podataka (DCS) zahtijevaju od korisnika da unese period za koji će izvještaj biti napravljen.
Po pravilu, u ACS-u je unos perioda organizovan preko parametara, koristeći sljedeću konstrukciju, vidi ovaj način unosa perioda opisan je u članku o ITS-u i drugoj literaturi posvećenoj razvoju u 1C, dakle uzmimo to kao osnovu. Uzmimo kao primjer jednostavan zahtjev koji prima sve dokumente Prodaja roba i usluga za dati period, vidi
Prilikom korištenja ovog izvještaja, korisnik postavlja period kroz parametre, vidi se da je sve ispravno..., ALI postoji mali problem:
Stvar je u tome da velika većina korisnika "razumi" period drugačije nego što ga "razumi" 1C, primjeri:
Sa stanovišta korisnika, period nije preciziran, odnosno NEOGRANIČEN, odnosno SVI dokumenti bez ograničenja datuma trebaju biti uključeni u izvještaj.
„Sa tačke gledišta“ 1C sistema, parametar perioda je postavljen i ... obe njegove granice su jednake 01.01.0001 i samo dokumenti sa praznim datumom će biti uključeni u izveštaj, što u praksi znači ne jedan dokument će biti uključen.
Sa stanovišta korisnika, izvještaj treba da sadrži sve dokumente počev od 28.01.2010.
„Sa tačke gledišta“ 1C, period 28.01.2010 - 01.01.0001 će uzrokovati izuzetak.
Možete, naravno, pokušati objasniti korisniku zašto izvještaj ne prikazuje dokumente koje očekuje da vidi i kako je period predstavljen sa „ugla“ 1C, ali to je nezahvalan zadatak i je takođe pogrešno. Dobar program bi, prije svega, trebao biti prilagođen korisniku, jer program postoji za korisnika, a ne obrnuto, stoga ćete morati "naučiti" 1C da razumije period onako kako ga korisnik razumije, naime:
1). Početak perioda i kraj perioda nisu navedeni -> svi dokumenti.
2). Naveden je samo početak perioda -> svi dokumenti počevši od početka perioda
3). Osim toga, provjerit ćemo da li je kraj perioda >= početak perioda, a ako to nije tačno, onda ćemo pretpostaviti da kraj perioda nije naveden, tj. 2).
Na osnovu gore navedenog, izraz za parametar Krajnji datum je:
KADA &Period.EndDate=DATETIME(1,1,1)
ONDA DATETIME(3999,12,31)
KADA &Period.Završni datum<&Период.ДатаНачала
ONDA DATETIME(3999,12,31) DATETIME(3999,12,31,23,59,59)
&Period.Završni datum
Konačni oblik našeg dizajna odabira perioda prikazan je u
Napomena: ovaj mehanizam za podešavanje parametara je namenjen starijim platformama 1C 8.1 i 8.2 (a konfiguracije koje rade pod njihovom kontrolom imaju ugrađene mehanizme za kontrolu praznih parametara i nema potrebe da se pribegava mehanizmu); opisano u ovom članku, osim toga, Na nekim verzijama 1C platforme moguće su greške i neispravan rad.