1c vertės pakeitimas. Automatinis duomenų pakeitimas. Kaip nustatyti pagrindinę pakeitimo organizaciją dokumentuose

Klausimas: 1c laukelio kodo pakeitimas


sveiki, pasakykit kokiame laukelyje reikia ivesti procedura kuri skaiciuoja dienu tarp datu, pati procedura radau, bet atsakymas i si klausima ne

Yra laukai - registracijos data, išsiregistravimo data ir kiekio laukas, kur skirtumas tarp pirmųjų dviejų reikšmių turi sumažėti
Prie kurio įvykio reikėtų pridėti procedūrą?

Atsakymas: Lauko Išvykimo data įvykyje „OnChange“:

Klausimas: Automatinis duomenų pakeitimas neveikia

Atsakymas:

Ačiū visiems už atsakymus:
1) 1C:Enterprise 8.3 (8.3.4.437), Ukrainos apskaita: 2.0.4.3 versija.
2) Ypač už nsk1C: „Jūs visada turite įprotį žiūrėti ten, kur nereikia, mano klausime nėra nė žodžio apie pagrindinį PVM tarifą - tai, pirma, antra, atidžiai perskaitykite dekretą, draudžiantį 1C produktus Ukrainoje, ir tada jau rašyk savo mintis...“

Dėkojame už atsakymą, bet norėčiau tiksliau sužinoti, kur tai nustatyta kode.

Klausimas: Įvesties laukas ir pabaigoje Enter


Tvarkomos formos, darbas web kliente.
Situacija: užprogramuotas skaitytuvas F7 + brūkšninis kodas + Enter. Išbandžiau daug parinkčių, bet kodo negalima nuskaityti per „ShowValueInput“. Atsisakiau šio varianto.
2. Sukurta forma su įvesties lauku. Paspaudus F7, forma atsidaro, kodas pasirodo įvesties laukelyje, įveskite, tada taip pat paspauskite (pažymėjote tekstinio dokumento laukelyje). Bandau sugauti teksto įvesties pabaigos įvykį, bet jis neveikia, nes... jis veikia, kai fiziškai paspaudžiate klaviatūros klavišą Enter. „AutoFit“ renginys man nėra pats geriausias pasirinkimas, nes... Brūkšninį kodą galima įvesti rankiniu būdu ir tada turiu sugalvoti kokį nors ramentą, kad būtų išvengta nedidelio delsos tarp paspaudimų.
Pasakyk man, prašau, ar yra lengvesnių variantų?

Atsakymas:() atsidaro forma, kodas perduodamas – įvykiai neapdorojami

Klausimas: ACS ataskaita ir lentelės laukas


Kuriu ataskaitą naudodamas ACS. Kaip galiu parodyti rezultatą lentelės lauke? Ne skaičiuoklės dokumento lauke, o lentelės lauke.

Atsakymas: Skaičiuoklės dokumento laukas yra formos elementas (jame rodomi duomenys), priklausantis Skaičiuoklės dokumento atributui (formai).
Įrašote reikšmę į skaičiuoklės dokumentą, o skaičiuoklės dokumento lauke ši reikšmė rodoma už jus.
Kaip ten galiu įrašyti vertę?

Klausimas: Dėmesys lauke veikia keistai


Savarankiškai parašyta konfigūracija 1C (8.3.8.2088), valdomos formos, taksi sąsaja.

„OnChange“ įvykį pridedu prie lauko su šiuo kodu:

1C
1 2 3 4 StandardProcessing = False ; SelectionData = NewValueList; Atrankos duomenys. Add(Objektas.Skaičius) ;

Teksto įvesties pabaigoje įdedu kodą

Viskas veikia, bet kažkaip kreivai.

Elementas sufokusuojamas, bet kažkodėl tik pusė, kaip matyti paveikslėlyje:

Jis tapo po kodu:

Tai yra, geltonas rėmas ir lauko dizainas išnyko. Tai veikia, bet nėra gražu, traukia akį.

Atsakymas: Na, trumpai tariant, pasikeitus skaičiui, atsiranda raidžių forma, kurioje žmogus užpildo pakeitimo priežastį, jei žmogus tiesiog uždaro formą, tada grąžinama senoji reikšmė, o dėmesys lieka lauke. Ar yra kokių nors kitų idėjų, kaip geriausia tai padaryti?

Klausimas: formos lentelės laukas


Gera diena.
Yra standartinė prekių pasirinkimo forma (ut11), kurioje nerodomas pavadinimas, tik prekės numeris!

Bandžiau grąžinti standartinės formos nustatymus – nesėkmingai, laukas/stulpelis nerodomas.

Konfigūratorius:

Laukuose šurmuliuoja. Sąrašas nustatytas į „Naudoti visada“.
Netgi OnFormCreate() ir OnOpen() derinimas tai rodo

Elements.ListAdvancedSearchNomenclature.SubordinateElements

prieinama, viskas matomumo ir prieinamumo režimu, funkcinių parinkčių nėra!

Bandžiau prie duomenų pridėti savo lauką su tuo pačiu keliu - jis taip pat nerodomas!
Praėjo valanda, bet laukas nepasirodo. Prašome padėti

Atsakymas:

tada oi! Man ką tik pavyko nutempti vardo lauką į kitą grupę ir jis nebuvo matomas,
ir ant pirmo mygtuko Jis dar nebuvo atkurtas, buvau tikras, kad tai jums padės.

Klausimas: Kaip, renkantis katalogo elementą, galiu rodyti kodą, o ne pavadinimą?


yra skirtukas. dalis, joje yra laukas, kurio tipas yra katalogo nuoroda. Kaip šiame lauke pasirenkant elementą galiu rodyti atributo kodą, o ne pavadinimą? (tvarkomos formos)

Atsakymas: Tklwegsd,))) Taip, būtent toks klausimas

Pranešimas nuo poliakas

Ar negalite tiesiog pridėti kodo lauko prie lentelės?

Klausimas: SKD ataskaitos atrankos pasirinkimo laukas


Sveiki vaikinai, turiu klausimą. Noriu ataskaitoje rodyti pasirinkimo pasirinkimo laukelį, bet kažkas mane stabdo, reikia jūsų patarimo...

Lauke sandorio šalys įvedė šį kodą, jis atlieka vidinį pasirinkimą, bet kaip parodyti kairėje esančio lauko palyginimo rodinį ir susieti jį su vartotojais?

1C
1 2 3 4 5 6 7 8 9 10 11 Procedūros UsersOnChange(Element) eksportavimo parametras = ComposerSettings. Nustatymai. Duomenų parametrai. Rasti ParameterValue(NewDataCompositionParameter("Vartotojai") ) ; Parametras. Reikšmė = Vartotojai; Parametras. Naudojimas = Tiesa ; Pasirinkimo elementas = Nustatymai Kompozitorius. Nustatymai. Pasirinkimas. Elementai. Add(Tipas( „Duomenų sudėties pasirinkimo elementas“) ) ; Pasirinkimo elementas. ComparisonView = DataCompositionComparisonView. Lygu; Pasirinkimo elementas. LeftValue = NewDataCompositionField( „Atsakingas už atsakingą užklausą“) ; Pasirinkimo elementas. RightValue = Vartotojai; Procedūros pabaiga

Atsakymas: Dethmontas, pašalinu kodą, yra tik prieigos kontrolės sistema ir pasirinkimo laukas formoje - tuščia ataskaita...

Pridėta po 1 valandos 50 minučių
Dethmontas, išsiaiškinau kodėl renkantis prieigos kontrolės sistemą buvo tuščia ataskaita, vartotojų prieigos kontrolės sistemos užklausoje buvo sąlyga - ištryniau ir viskas veikė. ačiū už patarimus)

Klausimas: Ar galima pakeisti dinaminio sąrašo laukų sudėtį be kodo?


laba diena visiems. Turiu švarią formą, joje yra dinaminis sąrašas su pritaikyta užklausa, kur yra viena lentelė (katalogas, taip pat pagrindinė DS lentelė), vienas nuorodos laukas ir charakteristikos.

Laukai su charakteristikomis gali būti iš karto naudojami atrankose, rūšiuojant, projektuojant ir atrenkami grupavimui. Viskas veikia. Bet neįmanoma jo tiesiog pasirinkti kaip papildomo lauko (kad jis atsirastų šalia nuorodos atskirame stulpelyje). Aišku, kad kažkaip visa tai daroma naudojant kodą, bet ar tikrai to negalima padaryti be kodo?
Ar daug tinkintų duomenų išdėstymo elementų, kuriuos galima įdėti į formą, bet nėra galimybės tiesiog pridėti lauko? O gal aš darau kažką ne taip?

Atsakymas: Apskritai, nesvarbu, kaip sukau stulpelius per duomenų rinkiklį, man nepavyko jų pridėti (be kodo). Greičiausiai tai neįmanoma, nes už stulpelius atsakingas ne ds form atributas, o formos elementas, kuris yra logiškas. Linker valdo duomenis – formos elementą – ekraną (stulpeliai įtraukiami).
Tai yra, programiškai nepadidinus pavaldžių formos elemento elementų, negalėsite jų pakeisti.
Ačiū visiems.

Klausimas: Įvedimas pagal pranešimo laukelį PM neužpildytas


Kolegos padeda Neįprasta įvestis pagal dokumentą ZUP 2.5, pranešimas - laukelis PM neužpildytas, nors užpildytas - įveskite Data. Kodas užpildymo apdorojime.
Jei įvedate duomenis per formą, ji atlieka...

Atsakymas: OMG, jis prisiekė kitame lauke - tiesiog šis stulpelis buvo paslėptas) užpildžius sąsajoje, jis nukopijuotas iš pradžios datos lauko

Labai dažnai dirbant 1C programoje reikia greitai įvesti kelis dokumentus arba į katalogus įtraukti naujų objektų (prekės tipas, organizacija, sandėlis, kasos aparatas ir kt.). Tuo pačiu metu ne visi supranta, kaip automatizuoti pagrindinių reikšmių įvedimą, kad jas kuriant reikiamos reikšmės būtų nedelsiant pakeistos į laukus. Kaip tai padaryti, aš jums pasakysiu šiame straipsnyje.
1C programa turi mechanizmus, leidžiančius greitai užpildyti dokumentų ir žinynų detalių reikšmes. Atsižvelgiant į jų veiksmus, jie gali būti suskirstyti į šiuos tipus:

  • Vienos vertės pakeitimas
  • Vertės pakeitimas pasirinkimu
  • Statistikos duomenų pildymas
  • Anksčiau įvestų duomenų pakeitimas
  • Vertybių pakeitimas naudojant šabloną
  • Naujo dokumento įvedimas kopijuojant

Vienos vertės, kuriai vartotojas turi teises, pakeitimas.

Tarkime, kad jūsų organizacija turi tris sandėlius, jie yra įtraukti į duomenų bazę. Tuo pačiu metu vadybininkui leidžiama parduoti prekes tik iš vienos. Kuriant naują dokumentą, šis sandėlis bus įtrauktas automatiškai. Tai veikia remiantis vartotojo nustatytais leidimais. Tai yra, išjungę teises į objektus, su kuriais vartotojas nedirba, galite automatizuoti duomenų įvedimą.

Vertės pakeitimas pagal sąrašo formoje nurodytą pasirinkimą.

Jei sąraše nustatyta pasirinkti pagal kurią nors detalę (kasos aparatas, banko sąskaita, sandėlis), tai ši informacija bus automatiškai pildoma naujame dokumente. Pavyzdžiui, kasos dokumentų sąrašo forma nustatote pasirinkimą pagal kasą. Išrašant naują mokėjimo dokumentą, informacija apie pasirinktą kasos aparatą bus automatiškai paimama iš sąrašo. O kadangi kasos aparatui nurodyta organizacija, informacija apie organizaciją bus pildoma automatiškai. Pasirinkimus galite naudoti bet kuriame dokumentų sąraše.

Statistikos duomenų pildymas.

1C programa saugo statistiką apie kiekvieno vartotojo pagrindinių verčių įvedimą. Jei kurdami naują dokumentą du kartus įvedėte tą pačią organizaciją, padalinį, sandėlį, verslo operaciją ir pan., programa analizuos paskutines įvestas reikšmes. Taigi statistinio pildymo algoritmas automatiškai „prisitaiko“ prie kiekvieno vartotojo.
Jei vartotojas pažeidžia šią grandinę naujame dokumente, programa tai supras ir po kurio laiko pradės keisti naujas reikšmes, tačiau pirmame tokiame dokumente reikšmės nebus pakeistos.
Užpildyti anksčiau įvestus duomenis renkantis kitos detalės vertę galima, jei pasirenkate, pavyzdžiui, prekybos sutartį ar sutartį, kurioje yra užpildyti visi pagrindiniai laukai (sandėlis, mokėjimo grafikas, kainos ir pan.). Dokumente nurodant susitarimą ar sutartį, rekvizitai bus pildomi pagal šias taisykles:

bus užpildyti visi duomenys, kurie buvo nurodyti sutartyje ar sutartyje;

jei sutartyje ar sutartyje nebuvo nurodyta kokia nors vertė (pavyzdžiui, padalijimas), tada ši vertė bus pildoma pagal statistiką. Jei įvedant naują dokumentą reikšmės buvo užpildytos pagal statistiką, tada jos bus papildytos, jei jos nurodytos sutartyje ar sutartyje.

Vertybių keitimas naudojant šabloną.

Atminkite, kad kai sukuriamas naujo tipo elementas, galite nurodyti numatytąsias reikšmes, kurios bus pakeistos naujais objektais. Registruojant naują šio tipo prekę, šios reikšmės bus įvedamos automatiškai. Kitas pavyzdys būtų automatinis informacijos apie skyrių pakeitimas dokumente, jei dokumentą rengiantis vartotojas turi informaciją apie skyrių, nurodytą vartotojo kortelėje.

Naujo dokumento įvedimas kopijuojant.

Čia viskas paprasta. Jei vartotojas jau įvedė panašų dokumentą, tuomet jį galima nukopijuoti ir tada pakoreguoti pasikeitusius duomenis. Patikrinkite visas detales, ypatingą dėmesį skirdami detalėms, pvz., datai.

Štai penki pagrindiniai būdai, kaip lengviau įvesti panašius dokumentus ir žinynus. Būtinai naudokite juos savo kasdieniame darbe

Kaip greitai įvesti detalių vertę 1C?

Išspręskime šią problemą. Būtina, kad kuriant ar keičiant Paslaugų teikimo dokumentą ir į lentelės dalį įtraukiant bet kokį paslaugų spektrą, iš karto būtų įrašoma esama kaina, gauta iš informacinio registro ir atitinkanti dokumento datą.

Norėdami tai padaryti, jums reikia:

    parašyti RetailPrice funkciją, kuri grąžins esamą kainą;

    iškviesti funkciją, kai į dokumentą įtraukiamas naujas elementas.

Kadangi tokios funkcijos gali prireikti ateityje, ją rašysime „viešai prieinamoje“ vietoje – bendrame modulyje.

1. Sukurkite funkciją Mažmeninė kainašakoje Bendra – Bendrieji moduliai su pavadinimu Darbas su katalogais. Nustatyti vėliavą Serverio skambutis(kad iš kliento būtų galima iškviesti šio modulio eksporto procedūras ir funkcijas) (71a pav.).

Ryžiai. 71a. Bendrosios modulio ypatybės

2. Į modulį įdėkite šį tekstą.

Funkcija Mažmeninė kaina (Dabartinė data, Paslaugos nomenklatūros elementas) Eksportas

//Sukurti pagalbinį objektą Selection

Selection = Nauja struktūra("Paslaugų nomenklatūra",Paslaugų nomenklatūros elementas);

//Gaukite dabartines registro išteklių reikšmes

ResourceValues=Informacijos registrai.Kainos.GetLast(Dabartinė data, pasirinkimas);

ReturnResourceValue.Price;

EndFunction

Paaiškinkime funkciją.

Norėdami gauti mažmeninę kainą, funkcijai turite perduoti du parametrus:

    Dabartinė data– Datos tipo parametras, nusako tašką laiko ašyje, kuriame mus domina mažmeninės kainos vertė.

Šioje struktūroje yra Pasirinkimas pagal registro išmatavimus. Jos pagalba nustatomas reikalingas Paslaugų nomenklatūros registro matmuo, kuris yra lygus nuorodai į funkcijai perduotą katalogo elementą.

Struktūros rakto pavadinimas („H Paslaugų nomenklatūra") turi atitikti konfigūravimo priemonėje nurodytą registro dimensijos pavadinimą ir struktūros elemento reikšmę ( Paslaugų nomenklatūros elementas) nurodo šiam aspektui pasirinktą reikšmę.

Antroje eilutėje yra skambutis informacijos registro tvarkytojui Kainos ( Informacijos registrai Kainos) ir metodo vykdymą RunLast (), kuris grąžina naujausio registro įrašo ištekliaus reikšmę, atitinkančią funkcijai ( Dabartinė data) ir registruoja matavimo vertes Pasirinkimas.

Metodas Gaukite naujausią grąžina struktūrą, kurioje yra išteklių reikšmės, kuri saugoma kintamajame ResourceValues.

Kitoje eilutėje gauname reikiamą mažmeninę kainą, nurodę reikiamo registro resurso pavadinimą, atskirtą tašku ( ValueResources.Price) ir grąžinkite jį, kai funkcija vykdoma.

Tai. ši funkcija gali būti iškviesta tam tikru momentu.

Reikia atidaryti Dokumento forma Paslaugų atlikimas(ji buvo sukurta anksčiau). IN Formos modulis būtina pridėti procedūrą keičiant.

Norėdami tai padaryti, dukart spustelėkite formos elementą Prekių ir paslaugų sąrašas (71b pav.).

Ryžiai. 71b. Paslaugos atlikimo dokumento elementai

Įvykio ypatybių lange Kai pasikeičia sukurti įvykių tvarkyklę su šiuo tekstu:

&OnClient

Nomenklatūros paslaugų keitimo tvarka sąrašas (elementas)

//Gauti kitą lentelės skyriaus eilutę

TabularPart Row = Elements.List of Nomenclature.CurrentData;

//Nustatykite kainą

TabularPart Row.Price = Darbas su Directories.RetailPrice(Object.Date, TabularPartLine.Service);

Procedūros pabaiga

Paaiškinkime funkciją.

Pirmoji eilutė jau žinoma: pirmiausia gauname esamą lentelinės dokumento dalies eilutę, nes mums jo prireiks vėliau ir išsaugokite jį kintamajame Lentelių eilutės dalis.

Tada vadiname funkciją Mažmeninė kaina() iš bendro modulio Darbas su katalogais.

Pirmasis funkcijos parametras yra dokumento, kurio kainą reikia gauti, datos perdavimas. Dokumento datą gauname iš pagrindinės formos informacijos - Objektas.Data.

Funkcija grąžina paskutinę kainos reikšmę ir ši reikšmė priskiriama laukui Kaina esamoje dokumento lentelės dalies eilutėje ( RowTabularPart.Price).

Atkreipkite dėmesį, kad procedūra Nomenklatūros sąrašasPaslaugų, kai keičiasi() pradeda dirbti formos modulyje kliento pusėje, nes Tai yra interaktyvi formos įvykių tvarkytuvė. Kuriant šios procedūros šabloną, platforma prieš procedūros aprašą automatiškai įdės kompiliavimo direktyvą &OnClient.

Tada vadiname funkciją Mažmeninė kaina(). Nes ši funkcija nebus rasta kliento pusėje, tada vykdymas bus perkeltas į bendrąjį modulį Darbas su katalogais, kuris veikia serveryje. Kai funkcija bus baigta, programos kodas ir toliau bus vykdomas kliente.

Patikrinkime aukščiau nurodytus veiksmus ir paleiskite programą 1C: Enterprise režimu. Dirbkime su sukurta konfigūracija.

DUOMENŲ ĮVEDIMAS Į DB

1. Į paraišką įveskite ne mažiau kaip 8 dokumentus Paslaugų teikimas.

Mūsų užduotis yra tokia. Dabar prekės kainą saugome atskirame informaciniame registre. Kuriant ar keičiant Paslaugų teikimo dokumentą ir į lentelės dalį įtraukiant bet kurią prekę, norime, kad į dokumentą būtų nedelsiant įtraukta esama šios prekės kaina, gauta iš informacinio registro ir atitinkanti dokumento datą.

Norėdami tai padaryti, turime padaryti du dalykus.

Pirmiausia parašykite tam tikrą funkciją, kuri grąžins esamą prekės kainą, o tada iškvieskite šią funkciją tuo momentu, kai prekė bus įtraukta į dokumentą, ir pakeiskite prekės kainą, kurią ši funkcija grąžins į dokumentą.

Kadangi tokios „paslaugos“ mums greičiausiai prireiks ne tik šiame dokumente, bet ir kituose dokumentuose, kurių lentelės dalyje yra nomenklatūra, funkciją patalpinsime kokioje nors „viešai prieinamoje“ vietoje - bendrame modulyje.

Konfigūratoriaus režimu

Funkcija, grąžinanti prekės kainą

Pirmiausia sukursime funkciją RetailPrice(), kuri pateiks mums esamą mažmeninę prekės kainą ir patalpinsime ją į bendrosios konfigūracijos modulį.

Atidarykime konfigūratorių, šakoje General General modules, pridėkime naują konfigūracijos objektą Module ir pavadinkime jį WorkWithDirectories.

Matome, kad pagal numatytuosius nustatymus modulyje yra žymimasis laukelis Serveris. Tai reiškia, kad šio modulio egzemplioriai bus kompiliuojami tik serverio pusėje.

Pažymėkime langelį Call server, kad iš kliento būtų galima iškviesti šio modulio eksporto procedūras ir funkcijas (9.9 pav.).

Į jį įdėkime tokį tekstą (9.1 sąrašas).

Paaiškinkime šią funkciją.

Norėdami gauti mažmeninę kainą, funkcijai perduosime du parametrus:

CurrentDate yra datos tipo parametras, apibrėžiantis laiko ašies tašką, kuriame mus domina mažmeninės kainos vertė.

Funkcijos turinyje pirmiausia sukuriame atrankos pagalbinio objektą.

Tai struktūra, kurioje yra pasirinkimas pagal registro matmenis. Jo pagalba nustatome, kad mus sudomins registro įrašai, kuriuose Nomenklatūros registro matmuo yra lygus nuorodai į funkcijai perduotą katalogo elementą.

Struktūros rakto pavadinimas („Nomenklatūra“) turi atitikti konfigūratoriuje nurodytą registro dimensijos pavadinimą, o struktūros elemento reikšmė (Nomenklatūros elementas) nurodo šiam matmeniui pasirinktą reikšmę.

Antroje eilutėje susisiekiame su Kainų informacijos registro tvarkytoju (Informaciniai registrai.Kainos) ir vykdome metodą GetLast(), kuris grąžina mums naujausio registro įrašo resursų reikšmes, atitinkančias datą, perduotą funkcijai ( CurrentDate) ir registro matmenų reikšmės (Pasirinkimas).

Metodas GetLast grąžina struktūrą, kurioje yra išteklių reikšmės, kurios saugomos kintamajame ResourceValues. Paprastai kalbant, registras gali turėti kelis išteklius. Mūsų registre yra tik vienas išteklius, bet struktūra, kurioje yra vienas elementas, vis tiek bus grąžinta.

Todėl kitoje eilutėje gauname mažmeninę kainą, kurios ieškome, tiesiog per tašką nurodydami mums reikalingo registro resurso pavadinimą (ResourceValues.Price) ir grąžiname jį įvykdžius funkcijai.

Dabar šią funkciją reikia iškviesti tam tikru dokumento vykdymo momentu.

Funkcijos iškvietimas renkantis prekę ir kainos įrašymas dokumente

Taigi, užduotis, su kuria susiduriame, yra tokia. Redaguodami Paslaugos teikimo dokumentą, turime užtikrinti, kad vartotojui pasirinkus paslaugą būtų automatiškai užpildytas Kainos laukas. Be to, paslaugos kaina turėtų būti nustatoma pagal dokumento sukūrimo datą.


Konfigūruotoje suraskime Paslaugų teikimo dokumentą ir atidarykime jo formą Dokumento forma.

Dukart spustelėkite formos elementą List of ItemsNomenclature arba dešiniuoju pelės mygtuku spustelėkite jo ypatybių paletę (kontekstinio meniu elementas Ypatybės). Slenkant į sąrašo pabaigą, randame OnChange įvykį, kuris įvyksta pasikeitus lauko vertei.

Spustelėkite atidarymo mygtuką B su didinamojo stiklo piktograma įvesties lauke.

Sistema mūsų formos modulyje sukurs šio įvykio apdorojimo procedūros šabloną ir atidarys skirtuką Formos rengyklės modulis.

Prie jo pridėkime tokį tekstą (9.2 sąrašas).

Pakomentuokime tvarkyklės turinį.

Pirmoji tvarkyklės eilutė jums jau pažįstama iš procedūrų Prekių kiekis keičiamas ir Prekių sąrašas Keičiant kaina. Pirmiausia gauname dabartinę dokumento lentelės dalies eilutę, nes jos mums prireiks vėliau, ir išsaugome ją kintamajame TabularPart Row.

Tada mes iškviečiame funkciją RetailPrice() iš bendrojo modulio Darbas su katalogais.

Kaip pirmąjį parametrą šiai funkcijai perduodame dokumento, kurio kainą turime gauti, datą. Dokumento datą gauname iš pagrindinio formos atributo – Object.Date.



Funkcija grąžina paskutinę kainos reikšmę, kurią mes priskiriame laukeliui Kaina, esančiame dokumento lentelės dalies (TabularPartRow.Price) eilute.

Atminkite, kad pati elementų sąrašo nomenklatūraOnChange() procedūra pradeda veikti formos modulyje kliento pusėje, nes ji yra formos interaktyvaus įvykio tvarkytoja. Kurdama šios procedūros šabloną, platforma automatiškai įdėjo &OnClient kompiliavimo direktyvą prieš procedūros aprašymą.

Tada iškviečiama funkcija RetailPrice(). Kadangi šios funkcijos kliento pusėje nebus, vykdymas bus perkeltas į bendrą modulį Working with Directories, kuris veikia serveryje. Kai funkcija bus baigta, programos kodas ir toliau bus vykdomas kliente.

Kodėl šiuo atveju buvo panaudota tokia „gudrybė“? Kodėl reikėjo perkelti kodo vykdymą į serverį?

Faktas yra tas, kad bet koks darbas su duomenų baze (duomenų skaitymas, rašymas) galimas tik serveryje. Šiuo atveju mums reikėjo perskaityti naujausius kai kurios prekės informacijos registro duomenis.

Tokius veiksmus galima atlikti tik serveryje, o sintaksės asistente paieškoję informacijos registro metodo GetLast() aprašymo, pastebėsite, kad šis metodas galimas tik serveryje, storajame kliente ir išoriniame jungtyje.

Storas klientas ir išorinis ryšys yra senos platformos kliento programos, kurios yra suderinamos su senais taikomųjų programų sprendimais.

Kuriame visiškai naują taikomųjų programų sprendimą, kuris veikia plonajame kliente arba žiniatinklio kliente. Todėl mūsų atveju, norėdami gauti bet kokius duomenis iš duomenų bazės, turime perkelti kodo vykdymą į serverį, gauti ten reikiamus duomenis ir grąžinti šiuos duomenis klientui. Taip ir padarėme.

1C: įmonės režimu

Pažiūrėkime, kaip dabar veikia mūsų dokumentas.

Paleiskite 1C:Enterprise derinimo režimu ir atidarykime kainų informacijos registrą.

Philips tranzistoriui pridėkime naują kainą su kitu numeriu (9.10 pav.).

Dabar atidarykime dokumentą Paslaugos teikimas Nr. 1. Kaip prisimenate, su šiuo dokumentu mes tiesiog "išnaudojome" vieną tokį tranzistorių.

Dokumento datą palikime nepakeistą ir pakartokime tranzistoriaus pasirinkimą dokumento lentelės dalies stulpelyje Nomenklatūra. Tranzistoriaus kaina bus automatiškai nustatyta į 2009-07-01. Tai paskutinė kainos reikšmė dokumento datą (9.11 pav.).

Dabar pakeiskime dokumento datą į 2009-07-13 ir dar kartą pakartokime tranzistoriaus pasirinkimą. Bus nustatyta nauja kainos reikšmė, naujausia šiai datai (9.12 pav.).

Taigi dokumente rodoma paslaugos kaina, kuri galioja dokumento sukūrimo metu.


Kontroliniai klausimai

1. Kokia Informacijos registro konfigūravimo objekto paskirtis?

2. Kokias savybes turi Informacijos registro konfigūracijos objektas?

3. Kokie pagrindiniai informacijos registro ir kaupimo registro skirtumai.

4. Kurie laukai nustato kaupimo registro unikalumo raktą.

5. Kas yra periodinis informacijos registras ir kas yra savarankiškas informacijos registras.

6. Kaip sukurti periodinį informacijos registrą.

7. Kokia yra pagrindinė registro dimensija.

8. Kaip gauti naujausių registro įrašų išteklių reikšmes naudojant integruotą kalbą.