Andmete automaatne asendamine 1C dokumendist. Hindade automaatne sisestamine dokumentidesse kaupade valimisel

Lahendame järgmise probleemi. Vajalik on, et Teenuse osutamise dokumendi loomisel või muutmisel ning mistahes teenustevaliku lisamisel tabeliosale lisataks koheselt inforegistrist saadud ja dokumendi kuupäevale vastav jooksev hind.

Selleks vajate:

    kirjutage funktsioon RetailPrice, mis tagastab praeguse hinna;

    funktsiooni kutsumine, kui dokumenti lisatakse uus üksus.

Kuna sellist funktsiooni võib tulevikus vaja minna, siis kirjutame selle “avalikult ligipääsetavasse” kohta – ühisesse moodulisse.

1. Looge funktsioon Letihind harus Üldine – Üldmoodulid nimega Töötamine kataloogidega. Määra lipp Serveri kõne(et selle mooduli ekspordiprotseduure ja funktsioone saaks kliendilt välja kutsuda) (joonis 71a).

Riis. 71a. Ühised mooduli omadused

2. Asetage moodulisse järgmine tekst.

Funktsioon Jaehind (praegune kuupäev, teenusenomenklatuuri element) eksport

//Abiobjekti loomine Selection

Selection = New Structure("Teenuste nomenklatuur",Teenuse nomenklatuuri element);

//Hangi praegused registriressursside väärtused

ResourceValues=Teaberegistrid.Hinnad.GetLast(praegune kuupäev, valik);

ReturnResourceValue.Price;

EndFunction

Selgitame funktsiooni.

Jaehinna saamiseks peate funktsioonile edastama kaks parameetrit:

    Tänane kuupäev– kuupäeva tüüpi parameeter, mis määrab ajateljel punkti, mille juures oleme huvitatud jaehinna väärtusest.

See struktuur sisaldab Valik registri mõõtude järgi. Selle abil määratakse teenuste nomenklatuuri registri vajalik dimensioon, mis võrdub funktsioonile edastatud kataloogielemendi viitega.

Struktuurivõtme nimi ("H Teenuste nomenklatuur") peab ühtima konfiguraatoris määratud registri dimensiooni nimega ja struktuurielemendi väärtusega ( Teenuste nomenklatuuri element) määrab selle dimensiooni jaoks valitud väärtuse.

Teisel real on kõne inforegistri haldurile Hinnad ( Inforegistrid Hinnad) ja meetodi täitmine RunLast(), mis tagastab funktsioonile edastatud kuupäevale vastava viimase registrikirje ressursiväärtuse ( Tänane kuupäev) ja registreerida mõõteväärtused Valik.

meetod Hangi Uusim tagastab ressursiväärtusi sisaldava struktuuri, mis on salvestatud muutujasse Ressursiväärtused.

Järgmisel real saame vajaliku jaehinna, märkides punktiga eraldatuna vajaliku registriressursi nime ( ValueResources.Price) ja tagastab selle funktsiooni käivitamisel.

See. seda funktsiooni saab mingil ajahetkel välja kutsuda.

Vaja avada Dokumendi vorm Teenuste teostamine(see loodi varem). IN Vormi moodul vajalik lisa protseduur muutmisel.

Selleks topeltklõpsake vormielemendil List of Items and Services (Joonis 71b).

Riis. 71b. Teenuse toimivuse dokumendi elemendid

Sündmuse atribuutide aknas Kui see muutub loo sündmusekäitleja järgmise tekstiga:

&OnClient

Nomenklatuuride teenuse protseduuriloend muutumisel (element)

//Hangi tabeli sektsiooni järgmine rida

Tabulaarosa rida = Elements.List of Nomenclature.CurrentData;

//Määra hind

TabularPart Row.Price = Töötamine kataloogidega.Jaehind (Object.Date, TabularPartLine.Service);

Menetluse lõpp

Selgitame funktsiooni.

Esimene rida on juba teada: kõigepealt saame dokumendi tabeliosa praeguse rea, sest vajame seda hiljem ja salvestame selle muutujasse RowTabularPart.

Seejärel kutsume funktsiooni Letihind()ühisest moodulist Töötamine kataloogidega.

Funktsiooni esimene parameeter on selle dokumendi kuupäeva edastamine, mille hinna peate hankima. Dokumendi kuupäeva saame vormi peamistest üksikasjadest - Objekt.Kuupäev.

Funktsioon tagastab viimase hinna väärtuse ja see väärtus määratakse väljale Hind dokumendi tabeliosa aktiivses reas ( RowTabularPart.Price).

Pange tähele, et protseduur Nomenklatuuride loend ServiceWhenChanged() hakkab tööle vormimoodulis kliendi poolel, sest See on vormi interaktiivne sündmuste töötleja. Selle protseduuri malli loomisel asetab platvorm automaatselt kompileerimisjuhise protseduuri kirjelduse ette &OnClient.

Seejärel kutsume funktsiooni Letihind(). Sest seda funktsiooni kliendi poolelt ei leia, siis viiakse täitmine üle üldmoodulisse Töötamine kataloogidega, mis töötab serveris. Pärast funktsiooni lõpetamist jätkab programmikoodi täitmist kliendis.

Kontrollime ülaltoodud samme ja käivitame rakenduse režiimis 1C: Enterprise. Töötame väljatöötatud konfiguratsiooniga.

ANDMETE SISESTAMINE DB-sse

1. Sisestage rakendusse vähemalt 8 dokumenti Teenuste osutamine.

Väga sageli peate programmis 1C töötades kiiresti sisestama mitu dokumenti või lisama kataloogidesse uusi objekte (kauba tüüp, organisatsioon, ladu, kassaaparaat jne). Samal ajal pole kõigil arusaamist, kuidas põhiväärtuste sisestamist automatiseerida, nii et nende loomisel asendatakse vajalikud väärtused kohe väljadele. Ma ütlen teile, kuidas seda selles artiklis teha.
Programmil 1C on mehhanismid, mis võimaldavad teil kiiresti dokumentide ja teatmeteoste üksikasjade väärtusi täita. Sõltuvalt nende tegevusest võib need jagada järgmisteks tüüpideks:

  • Ühe väärtuse asendus
  • Väärtuse asendamine valikuga
  • Statistika üksikasjade täitmine
  • Varem sisestatud andmete asendamine
  • Väärtuste asendamine mustri abil
  • Uue dokumendi sisestamine kopeerimise teel

Ühe väärtuse asendamine, mille jaoks kasutajal on õigused.

Oletame, et teie organisatsioonil on kolm ladu, need sisestatakse andmebaasi. Samas on juhatajal lubatud müüa kaupa ainult ühest. Uue dokumendi loomisel lisatakse see ladu automaatselt. See töötab kasutaja määratud õiguste alusel. See tähendab, et lülitades välja õigused objektidele, millega kasutaja ei tööta, saate andmesisestuse automatiseerida.

Väärtuse asendamine loendivormis määratud valiku alusel.

Kui nimekiri on seatud valima mõne detaili järgi (kassaaparaat, pangakonto, ladu), siis uues dokumendis täidetakse see detail automaatselt. Näiteks määrate valiku kassaaparaadi järgi kassadokumentide nimekirja kujul. Uue maksedokumendi väljastamisel võetakse nimekirjast automaatselt info valitud kassa kohta. Ja kuna kassa jaoks on määratud organisatsioon, siis täidetakse organisatsiooni andmed automaatselt. Saate kasutada valikuid mis tahes dokumentide loendis.

Statistika üksikasjade täitmine.

Programm 1C peab statistikat iga kasutaja põhiväärtuste sisestamise kohta. Kui sisestasite uue dokumendi koostamisel kaks korda sama organisatsiooni, divisjoni, lao, äritehingu vms, analüüsib programm viimati sisestatud väärtusi. Seega "kohandub" statistilise täitmise algoritm automaatselt iga kasutaja järgi.
Kui kasutaja rikub seda ahelat uues dokumendis, saab programm sellest aru ja hakkab mõne aja pärast uusi väärtusi asendama, kuid esimeses sellises dokumendis väärtusi ei asendata.
Varem sisestatud andmete täitmine mõne muu detaili väärtuse valimisel on võimalik, kui valite näiteks kaubanduslepingu või lepingu, kus on täidetud kõik põhiväljad (ladu, maksegraafik, hinnad jne). Kokkuleppe või lepingu täpsustamisel dokumendis täidetakse andmed järgmiste reeglite kohaselt:

täidetakse kõik lepingus või lepingus märgitud andmed;

kui lepingus või lepingus ei olnud mingit väärtust (näiteks jaotus) määratud, siis see väärtus täidetakse statistika järgi. Kui uue dokumendi sisestamisel täideti väärtused vastavalt statistikale, siis täidetakse need uuesti, kui need on lepingus või lepingus määratletud.

Väärtuste asendamine malli abil.

Pange tähele, et kui luuakse uut tüüpi üksus, saate määrata vaikeväärtused, mis asendatakse uute objektidega. Seda tüüpi kauba jaoks uue üksuse registreerimisel sisestatakse need väärtused automaatselt. Teine näide on osakonna teabe automaatne asendamine dokumendiga, kui dokumenti koostaval kasutajal on teave kasutajakaardil määratletud osakonna kohta.

Uue dokumendi sisestamine kopeerimise teel.

Siin on kõik lihtne. Kui kasutaja on sarnase dokumendi juba sisestanud, siis saab selle kopeerida ja seejärel muudetud andmeid parandada. Kontrollige kõiki üksikasju, pöörates erilist tähelepanu sellistele üksikasjadele nagu kuupäev.

Siin on viis peamist võimalust sarnaste dokumentide ja teatmeteoste sisestamise hõlbustamiseks. Kasutage neid kindlasti oma igapäevatöös

Kuidas kiiresti 1C-s detailide väärtust sisestada?

/
Ukraina raamatupidamine /
Töö dokumentide, teatmeteoste ja aruannetega

Kuidas määrata dokumentides asendamise põhiorganisatsiooni

Selles jaotises kirjeldatakse, kuidas seadistada esmane organisatsioon uute dokumentide automaatseks asendamiseks.

Paigaldamine kataloogist

Organisatsioonide kataloogis (menüü "Ettevõte" - "Organisatsioonid") on põhiorganisatsioon rasvases kirjas esile tõstetud. See tähendab, et uute dokumentide loomisel lisatakse need automaatselt.

Teise organisatsiooni muutmiseks peamiseks peate valima loendist selle organisatsiooni ja klõpsama nuppu Määra põhi käsupaneelil.

Ühendage kood Preoix Name l w 00000001 Dobro 000000001 DB Do5ro5ut 00000006 DU Do st eka ja paigaldus 00000005 NF National S0000001 nsho Meie organisatsioon" width="757" height="0">216"

MÄRGE
Peamine organisatsioon salvestatakse kasutaja seadetesse. Iga kasutaja jaoks on põhiorganisatsioon märgitud eraldi.

Dokumentide valik põhiorganisatsiooni järgi

Kasutaja seadetes (menüü "Teenus" - "Kasutaja seaded") saate määrata põhiorganisatsiooni dokumentide automaatse valimise režiimi. See tähendab, et kõik ajakirjad ja dokumendiloendid näitavad ainult esmase organisatsiooni dokumente.

Ajakirjades olevate dokumentide valikut juhib lipp Raamatupidamine kõikidele organisatsioonidele. Kui see on installitud, kuvavad ajakirjad kõigi organisatsioonide dokumente. Kui lipp on kustutatud, kuvatakse ajakirjades ainult põhiorganisatsiooni dokumente.

Vajadusel saab põhiorganisatsiooni muuta otse kasutaja seadetes grupis "Dokumentide ja kataloogide asendamise põhiväärtused".

Ülesanne 1. Rippmenüü koostamine

1. Avage fail Ex03_1.xlsx.

2. Lehel Hind Olemas on kaupade tabel hindadega.

3. Andke tootenimega vahemikele nimed ( Toode) ja hinnatabel ( Tabel) (pilt 1). Vahemikunimed on määratud nende edasiseks kasutamiseks valemites ja vahemikega töötamise hõlbustamiseks. Vahemiku nime saab määrata lahtri nime välja kaudu või valida kontekstimenüüst käsu Määrake nimi(loomulikult tuleb ühel või teisel juhul eelnevalt valida lahtrite vahemik, nagu on näidatud joonisel 1).

Pilt 1

4. Müügilehel veerus Toote nimi looge rippmenüü ja täitke see andmetega.

Rippmenüü loomiseks peate valima lahtrid (teil võib olla mitu korraga), milles soovite ripploendit saada, ja valige vahekaardil Andmed nuppu Andmete kontrollimine (Joonis 2).

Joonis 2

Esimesel vahekaardil Valikud ripploendist Andmetüüp valige suvand Nimekiri ja sisestage reale Allikas= ja vahemiku nimi koos nõutavate andmetega (st. = Toode) (Joonis 3). Klõpsake Okei.

Rippmenüü loomise tulemus on näidatud joonisel 4.

Kui allika väärtuste komplekt võib muutuda, on parem sisestada või eemaldada andmed loendi keskel.

Joonis 3

Joonis 4

Tutvustame funktsioone MATCH ja INDEX

Funktsioone MATCH ja INDEX kasutatakse peamiselt andmete automaatseks asendamiseks tabelisse antud vahemikust.

Funktsiooni süntaks

VASTAVUS(otsingu_väärtus, massiiv, vaste_tüüp)

Massiiv on plokk, mis koosneb ühest veerust või ühest reast.

Match_type on arv -1, 0 või 1.

Kui vaste_tüüp on võrdne 1-ga, siis funktsioon OTSING leiab suurima väärtuse, mis on väiksem kui otsingu_väärtus või sellega võrdne. Vaadatud massiivi tuleb tellida kasvavas järjekorras.

Kui vaste_tüüp võrdub 0, See MATCH funktsioon leiab esimese väärtuse, mis on täpselt võrdne argumendiga otsingu_väärtus. Vaadatud massiivi võib olla korratu.

Kui vaste_tüüp on võrdne -1, siis funktsioon OTSING leiab väikseima väärtuse, mis on suurem kui otsingu_väärtus, või sellega võrdne. Vaade_massiiv tuleb tellida kahanevas järjekorras.

Kui vaste_tüüp jäetakse välja, eeldatakse, et see on võrdne 1 .

Funktsioon OTSING tagastab otsitava väärtuse asukoha massiivi, mitte väärtuse enda.

Funktsioon INDEX on kaks vormi. Vaatleme ainult ühte.

INDEX(tabel; rea_number; veeru_number)

See funktsioon valib ristkülikukujulisest plokist (tabelist) rea- ja veerunumbritega määratud elemendi ning neid numbreid loendatakse ploki ülemisest vasakpoolsest elemendist.

Vaatame konkreetsete näidete abil, kuidas need funktsioonid töötavad.

Ülesanne 2. Sissejuhatus funktsiooni MATCH

Määrake funktsiooni MATCH() abil nimega “Jogurt” toote asukoht vahemikus Toode. Selle jaoks:

1. e-raamatus Ex03_1.xlsx minge lehele Hind ja asetage lehe kursor mis tahes vabasse lahtrisse;

2. sisesta sellesse lahtrisse valem =MATCH("Jogurt";Toode;0), s.t. Selle funktsiooni abil näitame, et peame leidma vahemikust elemendi “Jogurt” (funktsioonide tekstiväärtus on alati märgitud jutumärkides) Toode, sobivuse tüüp 0 – täpne vaste;

3. Vajutage sisestusklahvi. Selle tulemusena peaksite saama numbri 7 (joonis 5).

Joonis 5

Tõepoolest, kui vaadata vahemikku Toode, siis vastab jogurti asend sellele joonisele. Tasub meeles pidada, et väärtuse asukoht massiivis, s.o. antud vahemikus, loendatuna vahemiku algusest. Selgub, et kui lisame andmetabeli algusesse uue rea, nihkub väärtus “Jogurt” reale number 8, kuid vahemik Toode algab väärtusega "Piim", nii et vahemiku algusest alates vastab jogurti asukoht igal juhul numbrile 7 (joonis 6).

Joonis 6

Pange tähele, et funktsiooni MATCH() väärtuseks saab määrata kas väärtuse enda või selle lahtri nime, milles see väärtus asub. Näiteks kirje =MATCH(A7;Toode;0) annab sama tulemuse kui kirje =MATCH("Jogurt";Toode;0) kasutamisel.

Ülesanne 3. Sissejuhatus funktsiooni INDEX

Tuletame meelde, et funktsioon INDEX() valib ristkülikukujulisest plokist (tabelist) rea- ja veerunumbritega määratud elemendi ning neid numbreid hakatakse loendama ploki ülemisest vasakpoolsest elemendist.

Kasutage vahemiku leidmiseks funktsiooni INDEX(). Toode element asub viiendal positsioonil. Selle jaoks:

1. e-raamatus Ex03_1.xlsx lehel Hind asetage lehe kursor mis tahes vabasse lahtrisse;

2. Sisestage sellesse lahtrisse järgmine funktsioon =INDEX(Toode;5). Vajutage sisestusklahvi. Tulemus on toodud joonisel 7.

Joonis 7

Pange tähele, et määrasime funktsiooni INDEX jaoks ainult vahemiku väärtused ja rea ​​numbri. Veeru numbrit me ei märkinud. See parameeter on valikuline, kui otsime väärtust ühest veerust koosnevast tabelist (vahemikust). Kui meil on vaja leida väärtus mitmest veerust koosnevast tabelist (vahemikust), siis valemis on väärtuse täpsemaks otsimiseks vaja märkida veeru number.

Sisestage uude lahtrisse valem =INDEX(tabel;8;2). Selle tulemusena leiate singi maksumuse (joonis 8).

Joonis 8

Automaatne andmete asendamine

Rippmenüüga töötades saate andmete sisestamise tabelisse automatiseerida. Näiteks on olemas hinnakiri, mis sisaldab kaupade nimetusi ja nende hindu. Saate korraldada nimekirjast tootenime valiku ja toote hinna automaatse asendamise lõpptabelis.

Andmete automaatne asendamine otsingutabelist põhineb funktsioonide INDEX ja MATCH kombineeritud kasutamisel.

Ülesanne 4. Funktsioonide MATCH ja INDEX kombineerimine

E-raamatus Ex03_1.xlsx lehel Müük veerus Hind, kasutades MS Exceli funktsioone, tagavad kauba maksumuse automaatse asendamise lehelt Hind, olenevalt lehe ripploendist valitud väärtusest Müük.

1. Asetage töölehe kursor lahtrisse C2 ja sisestage sinna järgmine valem:

2. Vajutage sisestusklahvi. Selle tulemusena saate lahtrisse C2 selle toote maksumuse, mille nimi on näidatud kõrvalolevas veerus (joonis 9). Kui valite rippmenüüst mõne muu toote nime, muutub hinna väärtus vastavalt.

Joonis 9

3. Kasutades automaatse täitmise markerit, dubleerige see valem tabeli lõppu (joonis 10).

Joonis 10

Dešifreerime selle valemi. See valem algab funktsiooniga MATCH, mis võimaldab meil leida töölehe lahtrist B2 väärtuse asukoha Müük vahemikus Toode silmist Hind, ja täppistüüp 0. Näiteks kui kasutate toodete loendit, mis on toodud joonisel 10, siis otsib funktsioon SEARCH leiva asukohta, mille nimi on näidatud veeru lahtris B2 Toote nimi vahemikus Toode lehel Hind. See asukoht on võrdne 3-ga. Seetõttu on arvutimälus meie sisestatud valem

=INDEKS(tabel, MATCH(B2, toode, 0), 2)

võtab vormi

=INDEKS(tabel,3,2)

Parameeter “3” on funktsiooni SEARCH tulemus.

Järgmisena hakkab mängu funktsioon INDEX, mis otsib vahemikust Tabel lehel Hind väärtus, mis asub kolmanda rea ​​ja teise veeru ristumiskohas. (Pidage meeles, et vahemik Tabel koosneb kahest veerust). See väärtus on toote maksumus, antud juhul leib = 27.

Ülesanne 5. Finaallaua kujundamine

Lehe peal Müük veerus Kogus sisestage suvalised väärtused. Arvutage veerus olevad väärtused Kokku.

Ülesanne 6. Iseseisev ülesanne

Avage fail Raamid.xls . On vaja automatiseerida palgamuutused lehel Personal .

Näiteks on vaja osa juhte üle viia ja tippjuhid või konsultandid üle viia laaduritesse. Seda toimingut peate tegema nelja töötaja jaoks. Koos ametikohaga peaks muutuma ka palk.

Looge uus leht ja nimetage see osariik .

Kopeeri lehele osariik veerud Töö nimetus Ja Palk.

Eemaldage dubleerivad töötajad. Selle jaoks:

1. Valige ametikoha ja palga veerud.

2. Vahekaardil Andmed klõpsake nuppu Eemaldage duplikaadid .

3. Eemaldage veerust linnuke Palk.

4. Klõpsake nuppu Okei.

Et saaks asendit vahetada, lehel Personal Looge positsiooniveerus ripploend. Sel juhul tuleb muuta ka ametipalka, selleks automatiseerime selle protsessi nii, et ametikoha vahetamisel muudab palka ka Excel ise. Selleks kasutame funktsioone: SEARCH ja INDEX.

Juhised

1. Valige lehel osariik positsioonide valik. Andke valitud vahemikule nimi töö nimetus.

2. Valige lehel osariik palgavahemik. Andke valitud vahemikule nimi palk.

3. Lehel Töötajad veerus Palk sisestage valem, mida töölehel otsitakse osariik vahemikus töö nimetus ametikohale, mis vastab töötaja ametikohale, ja seejärel vahemikust palk leht osariik sisestas leitud ametikohale vastava palga.

4. Pärast valemi sisestamist veenduge, et saadud töötasu vastab tegelikult lehelt töötaja ametikoha palgale osariik.

5. Muuda Ch. palka. raamatupidaja lehel osariik. Kontrollige lehelt, kas vastav palk on muutunud Töötajad.

Meie ülesanne on järgmine. Nüüd salvestame kauba hinna eraldi inforegistris. Kui loome või muudame Teenuse osutamise dokumenti ja lisame tabeliosasse suvalise kauba, soovime, et selle kauba hetkehind, mis on saadud teaberegistrist ja vastab dokumendi kuupäevale, kantakse kohe dokumenti.

Selleks peame tegema kahte asja.

Esmalt kirjutage teatud funktsioon, mis tagastab kauba hetkehinna ja seejärel kutsuge see funktsioon välja hetkel, kui toode lisatakse dokumenti, ja asendage kauba hind, mille see funktsioon dokumenti tagastab.

Kuna sellist “teenust” vajame suure tõenäosusega mitte ainult selles dokumendis, vaid ka teistes tabeliosas nomenklatuuri sisaldavates dokumentides, siis paigutame funktsiooni mingisse “avalikult ligipääsetavasse” kohta – ühisesse moodulisse.

Konfiguraatori režiimis

Kauba hinna tagastamise funktsioon

Kõigepealt loome funktsiooni RetailPrice(), mis tagastab meile kauba praeguse jaehinna ja asetame selle üldisesse konfiguratsioonimoodulisse.

Avame konfiguraatori, harus General General Modules, lisame uue konfiguratsiooniobjekti Module ja nimetame selle WorkWithDirectories.

Näeme, et moodulis on vaikimisi märgitud ruut Server. See tähendab, et selle mooduli eksemplare kompileeritakse ainult serveri poolel.

Märgistame kasti Call server, et selle mooduli ekspordiprotseduure ja funktsioone saaks kliendilt välja kutsuda (joonis 9.9).

Asetame sellesse järgmise teksti (nimekiri 9.1).

Selgitame seda funktsiooni.

Jaehinna saamiseks edastame funktsioonile kaks parameetrit:

CurrentDate on kuupäeva tüüpi parameeter, mis määrab ajateljel punkti, mille juures oleme huvitatud jaehinna väärtusest.

Funktsiooni põhiosas loome esmalt valiku abiobjekti.

See on struktuur, mis sisaldab valikut registri mõõtmete järgi. Selle abil teeme kindlaks, et meid huvitavad registrikirjed, milles nomenklatuuriregistri mõõde on võrdne funktsioonile edastatud kataloogielemendi viitega.

Struktuurivõtme nimi ("Nomenklatuur") peab ühtima konfiguraatoris määratud registri dimensiooni nimega ja struktuurielemendi väärtus (nomenklatuurielement) määrab selle dimensiooni jaoks valitud väärtuse.

Teisel real võtame ühendust hindade inforegistri halduriga (Inforegistrid.Hinnad) ja käivitame meetodi GetLast(), mis tagastab meile viimase registrikirje ressursiväärtused, mis vastavad funktsioonile üle antud kuupäevale ( CurrentDate) ja registri mõõtmete väärtused (Valik).

Meetod GetLast tagastab ressursiväärtusi sisaldava struktuuri, mis salvestatakse muutujasse ResourceValues. Üldiselt võib registril olla mitu ressurssi. Meie registris on ainult üks ressurss, kuid siiski tagastatakse üht elementi sisaldav struktuur.

Seetõttu saame järgmisel real otsitava jaehinna, määrates lihtsalt punkti kaudu meile vajaliku registriressursi nime (ResourceValues.Price) ja tagastame selle funktsiooni täitmisel.

Nüüd tuleb see funktsioon mingil hetkel dokumendi täitmisel välja kutsuda.

Kauba valimisel funktsiooni kutsumine ja hinna täitmine dokumendis

Niisiis, meie ees seisev ülesanne on järgmine. Teenuse osutamise dokumendi redigeerimisel peame tagama, et pärast kasutaja teenuse valimist täidetakse automaatselt välja Hind. Lisaks tuleks teenuse hinna määramisel lähtuda dokumendi koostamise kuupäevast.


Leiame konfiguraatorist Service Provisioni dokumendi ja avame selle vormi Dokumendi vorm.

Topeltklõpsake vormielemendil List of ItemsNomenclature või paremklõpsake selle atribuutide palett avamiseks (kontekstimenüü Atribuudid). Loendi lõppu kerides leiame sündmuse OnChange, mis toimub pärast välja väärtuse muutumist.

Klõpsake sisestusväljal suurendusklaasi ikooniga avamisnuppu B.

Süsteem loob meie vormimoodulis selle sündmuse käitlejaprotseduuri malli ja avab vahekaardi Vormiredaktori moodul.

Lisame sellele järgmise teksti (nimekiri 9.2).

Kommenteerime käsitleja sisu.

Käsitleja esimene rida on teile juba tuttav protseduuridest Artiklite kogus muudatusel ja Artiklite loetelu Hind muutmisel. Esiteks saame dokumendi tabeliosa praeguse rea, kuna vajame seda hiljem, ja salvestame selle muutujasse TabularPart Row.

Seejärel kutsume oma funktsiooni RetailPrice() üldmoodulist Working With Directories.

Esimese parameetrina anname sellele funktsioonile edasi selle dokumendi kuupäeva, mille hinna peame saama. Dokumendi kuupäeva saame vormi põhiatribuudist - Object.Date.



Funktsioon tagastab viimase hinnaväärtuse ja selle väärtuse omistame dokumendi tabeliosa (TabularPartRow.Price) jooksval real väljale Hind.

Pange tähele, et protseduur Item List NomenclatureOnChange() ise hakkab tööle vormimoodulis kliendi poolel, kuna see on vormi interaktiivse sündmuse töötleja. Selle protseduuri malli loomisel paigutas platvorm &OnClienti kompileerimisdirektiivi automaatselt enne protseduuri kirjeldust.

Seejärel kutsutakse välja RetailPrice() funktsioon. Kuna seda funktsiooni kliendi poolelt ei leia, viiakse täitmine üle serveris töötavale ühisele moodulile Working with Directories. Pärast funktsiooni lõpetamist jätkab programmikoodi täitmist kliendis.

Miks sel juhul sellist “trikki” kasutati? Miks oli vaja koodi täitmine serverisse üle kanda?

Fakt on see, et igasugune töö andmebaasiga (andmete lugemine, kirjutamine) on võimalik ainult serveris. Antud juhul oli meil vaja mõne kauba kohta inforegistrist lugeda viimaseid andmeid.

Selliseid toiminguid saab teha ainult serveris ja kui otsida süntaksiabist inforegistri meetodi GetLast() kirjeldust, siis märkad, et see meetod on saadaval ainult serveris, paksus kliendis ja välisühenduses.

Paks klient ja väline ühendus on pärandplatvormi kliendirakendused, mis ühilduvad pärandrakenduslahendustega.

Arendame välja täiesti uut rakenduslahendust, mis töötab õhukeses kliendis või veebikliendis. Seetõttu peame meie puhul andmebaasist mis tahes andmete saamiseks viima koodi täitmise serverisse, saama sealt vajalikud andmed ja tagastama need kliendile. Seda me tegimegi.

Režiimis 1C: Enterprise

Vaatame nüüd, kuidas meie dokument töötab.

Käivitame 1C:Enterprise'i silumisrežiimis ja avame hindade teaberegistri.

Philipsi transistori puhul lisame uue hinna erineva numbriga (joon. 9.10).

Nüüd avame dokumendi Teenuse pakkumine nr 1. Nagu te mäletate, kasutasime selle dokumendiga lihtsalt ühe sellise transistori ära.

Jätame dokumendi kuupäeva muutmata ja kordame transistori valikut dokumendi tabeliosa veerus Nomenklatuur. Transistori hind seatakse automaatselt 01.07.2009. See on viimane hinna väärtus dokumendi kuupäeval (joonis 9.11).

Nüüd muudame dokumendi kuupäevaks 13.07.2009 ja kordame uuesti transistori valikut. Määratakse uus hinnaväärtus, selle kuupäeva hiliseim väärtus (joonis 9.12).

Seega kuvatakse dokumendis teenuse hind, mis on kehtiv dokumendi loomise ajal.


Kontrollküsimused

1. Mis on Inforegistri konfiguratsiooniobjekti eesmärk?

2. Millised omadused on teaberegistri konfiguratsiooniobjektil?

3. Millised on peamised erinevused teaberegistri ja akumulatsiooniregistri vahel.

4. Millised väljad määravad akumulatsiooniregistri kordumatuse võtme.

5. Mis on perioodiline teaberegister ja mis on iseseisev teaberegister.

6. Kuidas koostada perioodilist teaberegistrit.

7. Mis on registri juhtmõõde.

8. Kuidas hankida sisseehitatud keele abil viimaste registrikirjete ressursiväärtusi.