IX. Înlocuirea automată a prețurilor în document la selectarea articolelor. Înlocuirea automată a prețurilor într-un document la selectarea unui articol Cum se stabilește organizația principală pentru înlocuirea în documente

Sarcina noastră este următoarea. Acum stocăm prețul unui articol într-un registru de informații separat. Atunci când creăm sau modificăm un document de Prestare de servicii și adăugăm orice articol în partea tabelară, dorim ca prețul curent al acestui articol, obținut din registrul de informații și corespunzător datei documentului, să fie inserat imediat în document.

Pentru a face acest lucru trebuie să facem două lucruri.

Mai întâi, scrieți o anumită funcție care va returna prețul curent al articolului, apoi apelați această funcție în momentul în care articolul este adăugat în document și înlocuiți prețul articolului pe care această funcție îl va returna în document.

Deoarece cel mai probabil vom avea nevoie de un astfel de „serviciu” nu numai în acest document, ci și în alte documente care conțin nomenclatură în partea tabelară, vom plasa funcția într-un loc „accesibil public” - într-un modul comun.

În modul Configurator

Funcție de returnare a prețului unui articol

Mai întâi, vom crea funcția RetailPrice(), care ne va returna prețul curent de vânzare cu amănuntul al articolului și îl vom plasa în modulul de configurare generală.

Să deschidem configuratorul, în ramura General General modules, adăugați un nou obiect de configurare Module și numiți-l WorkWithDirectories.

Vedem că modulul are caseta de selectare Server selectată implicit. Aceasta înseamnă că instanțele acestui modul vor fi compilate doar pe partea serverului.

Să bifăm caseta de selectare Call server pentru ca procedurile de export și funcțiile acestui modul să poată fi apelate de la client (Fig. 9.9).

Să plasăm următorul text în el (Listing 9.1).

Să explicăm această funcție.

Pentru a obține prețul cu amănuntul, vom trece doi parametri funcției:

CurrentDate este un parametru de tip Data care definește punctul de pe axa timpului în care suntem interesați de valoarea prețului cu amănuntul.

În corpul funcției, mai întâi creăm un obiect helper Selection.

Aceasta este o structură care conține selecția după dimensiunile registrului. Cu ajutorul lui, determinăm că ne vor interesa intrările de registru în care dimensiunea registrului Nomenclator este egală cu referința la elementul de director transmis funcției.

Numele cheii de structură („Nomenclatură”) trebuie să se potrivească cu numele dimensiunii registrului specificat în configurator, iar valoarea elementului de structură (Element de nomenclatură) specifică valoarea selectată pentru această dimensiune.

În a doua linie, contactăm managerul registrului de informații despre preț (Registre de informații.Prețuri) și executăm metoda GetLast(), care ne returnează valorile resursei celei mai recente înregistrări de registru corespunzătoare datei trecute funcției ( CurrentDate) și valorile dimensiunilor registrului (Selection).

Metoda GetLast returnează o structură care conține valorile resurselor, care este stocată în variabila ResourceValues. În general, un registru poate avea mai multe resurse. Există o singură resursă în registrul nostru, dar o structură care conține un singur element va fi totuși returnată.

Prin urmare, în rândul următor obținem prețul de vânzare cu amănuntul pe care îl căutăm prin simpla specificare a numelui resursei de registru de care avem nevoie printr-un punct (ResourceValues.Price) și returnându-l când funcția este executată.

Acum această funcție trebuie apelată la un moment dat în execuția documentului.

Apelarea unei funcții la selectarea unui articol și completarea prețului în document

Deci, sarcina cu care ne confruntăm este următoarea. La editarea documentului de furnizare a serviciilor, trebuie să ne asigurăm că câmpul Preț este completat automat după ce utilizatorul selectează un serviciu. Mai mult, prețul serviciului ar trebui determinat în funcție de data creării documentului.


Să găsim documentul Prestare servicii în configurator și să deschidem formularul Document Form.

Faceți dublu clic pe elementul de formular List of ItemsNomenclature sau faceți clic dreapta pentru a deschide paleta de proprietăți pentru acesta (element din meniul contextual Proprietăți). Derulând până la sfârșitul listei, găsim evenimentul OnChange, care are loc după ce valoarea unui câmp s-a schimbat.

Faceți clic pe butonul de deschidere B cu pictograma lupă în câmpul de introducere.

Sistemul va crea un șablon pentru procedura de gestionare a acestui eveniment în modulul nostru de formulare și va deschide fila Modul Editor de formulare.

Să adăugăm următorul text (Listing 9.2).

Să comentăm conținutul handler-ului.

Prima linie a handler-ului vă este deja familiară din procedurile List of Items Cantity on Change și List of Items Price on Change. În primul rând, obținem rândul curent al părții tabulare a documentului, deoarece vom avea nevoie de el mai târziu și îl salvăm în variabila TabularPart Row.

Apoi numim funcția RetailPrice() din modulul general Working With Directories.

Ca prim parametru, trecem la această funcție data documentului pentru care trebuie să obținem prețul. Obținem data documentului din atributul principal al formularului - Object.Date.



Funcția returnează ultima valoare a prețului, iar această valoare o atribuim câmpului Preț din rândul curent al părții tabulare a documentului (TabularPartRow.Price).

Rețineți că procedura Item List NomenclatureOnChange() în sine începe să funcționeze în modulul formular din partea clientului, deoarece este un handler pentru evenimentul interactiv al formularului. La crearea unui șablon pentru această procedură, platforma a plasat automat directiva de compilare &OnClient înainte de descrierea procedurii.

Apoi funcția RetailPrice() este apelată. Deoarece această funcție nu va fi găsită pe partea clientului, execuția va fi transferată în modulul comun Working with Directories, care rulează pe server. După finalizarea funcției, codul programului va continua să se execute pe client.

De ce a fost folosit un astfel de „truc” în acest caz? De ce a fost necesar să transferăm execuția codului pe server?

Cert este că orice lucru cu baza de date (citirea datelor, scrierea) este posibilă doar pe server. În acest caz, trebuia să citim cele mai recente date din registrul de informații pentru un articol.

Astfel de acțiuni pot fi efectuate doar pe server, iar dacă căutați în asistentul de sintaxă descrierea metodei GetLast() din registrul de informații, veți observa că această metodă este disponibilă doar pe server, în clientul gros și în conexiunea externă.

Clientul gros și conexiunea externă sunt aplicații client de platformă moștenită care există pentru compatibilitate cu soluțiile de aplicații vechi.

Dezvoltăm o soluție de aplicație complet nouă, care funcționează într-un client subțire sau un client web. Prin urmare, în cazul nostru, pentru a obține orice date din baza de date, trebuie să transferăm execuția codului pe server, să primim acolo datele necesare și să returnăm aceste date clientului. Asta am făcut.

În 1C: modul Enterprise

Să verificăm cum funcționează documentul nostru acum.

Să lansăm 1C:Enterprise în modul de depanare și să deschidem registrul de informații despre prețuri.

Pentru tranzistorul Philips, să adăugăm un preț nou cu un număr diferit (Fig. 9.10).

Acum să deschidem documentul Prestarea serviciului nr. 1. După cum vă amintiți, cu acest document tocmai am „usat” un astfel de tranzistor.

Să lăsăm data documentului neschimbată și să repetăm ​​selecția tranzistorului în coloana Nomenclatură a părții tabelare a documentului. Prețul tranzistorului va fi setat automat la 01.07.2009. Aceasta este cea mai recentă valoare a prețului la data documentului (Fig. 9.11).

Acum să schimbăm data documentului la 13.07.2009 și să repetăm ​​selecția tranzistorului. Se va seta o nouă valoare de preț, cea mai recentă pentru această dată (Fig. 9.12).

Astfel, în document apare prețul serviciului care este curent în momentul în care a fost creat documentul.


Întrebări de control

1. Care este scopul obiectului de configurare Registrul de informații?

2. Ce caracteristici are obiectul de configurare Registrul de informații?

3. Care sunt principalele diferențe dintre registrul de informații și registrul de acumulare.

4. Ce câmpuri determină cheia de unicitate a registrului de acumulare.

5. Ce este un registru periodic de informații și ce este un registru independent de informații.

6. Cum se creează un registru periodic de informații.

7. Care este dimensiunea de conducere a unui registru.

8. Cum să obțineți valorile resurselor celor mai recente intrări din registru folosind limbajul încorporat.

Foarte des, în timp ce lucrați în programul 1C, trebuie să introduceți rapid mai multe documente sau să adăugați obiecte noi în directoare (tip de articol, organizație, depozit, casă de marcat etc.). În același timp, nu toată lumea înțelege cum să automatizeze introducerea valorilor de bază, astfel încât atunci când le creează, valorile necesare sunt imediat înlocuite în câmpuri. Vă voi spune cum să faceți acest lucru în acest articol.
Programul 1C are mecanisme care vă permit să completați rapid valorile detaliilor în documente și cărți de referință. Pe baza acțiunii lor, acestea pot fi împărțite în următoarele tipuri:

  • Înlocuirea valorii unice
  • Înlocuirea unei valori prin selecție
  • Completarea detaliilor statisticilor
  • Înlocuirea detaliilor introduse anterior
  • Înlocuirea valorilor folosind un model
  • Introducerea unui document nou prin copiere

Înlocuirea unei singure valori pentru care utilizatorul are drepturi.

Să presupunem că organizația ta are trei depozite, acestea sunt introduse în baza de date. În același timp, managerul are voie să vândă mărfuri doar de la unul. La crearea unui document nou, acest depozit va fi inserat automat. Acest lucru funcționează pe baza permisiunilor setate de utilizator. Adică, prin dezactivarea drepturilor asupra obiectelor cu care utilizatorul nu lucrează, puteți automatiza introducerea datelor.

Înlocuirea unei valori pe baza selecției specificate în formularul de listă.

Dacă lista este setată să selecteze după anumite detalii (casă de marcat, cont bancar, depozit), atunci acest detaliu va fi completat automat în noul document. De exemplu, setați selecția după casa de marcat sub forma unei liste de documente de marcat. Când emiteți un nou document de plată, informațiile despre casa de marcat selectată vor fi preluate automat din listă. Și deoarece o organizație este specificată pentru casa de marcat, informațiile despre organizație vor fi completate automat. Puteți utiliza selecțiile din orice listă de documente.

Completarea detaliilor statisticilor.

Programul 1C păstrează statistici privind introducerea valorilor de bază pentru fiecare utilizator. Dacă ați introdus de două ori aceeași organizație, divizie, depozit, tranzacție comercială etc. la crearea unui nou document, programul va analiza ultimele valori introduse. Astfel, algoritmul de completare statistică se „ajustează” automat la fiecare utilizator.
Dacă utilizatorul încalcă acest lanț într-un document nou, programul va înțelege acest lucru și va începe să înlocuiască noi valori după un timp, dar în primul astfel de document valorile nu vor fi înlocuite.
Completarea detaliilor introduse anterior la selectarea valorii unui alt detaliu este posibilă dacă selectați, de exemplu, un acord comercial sau un contract în care sunt completate toate câmpurile principale (depozit, program de plată, prețuri etc.). La specificarea unui acord sau contract într-un document, detaliile vor fi completate conform următoarelor reguli:

se vor completa toate datele care au fost specificate în acord sau contract;

dacă vreo valoare (de exemplu, divizare) nu a fost specificată în acord sau contract, atunci această valoare va fi completată conform statisticilor. Dacă, la introducerea unui nou document, valorile au fost completate în conformitate cu statisticile, atunci acestea vor fi reumplute dacă sunt definite în acord sau contract.

Înlocuirea valorilor folosind un șablon.

Vă rugăm să rețineți că, atunci când este creat un nou tip de articol, puteți specifica valori implicite care vor fi înlocuite cu obiecte noi. La înregistrarea unui articol nou pentru acest tip de articol, aceste valori vor fi introduse automat. Un alt exemplu ar fi înlocuirea automată a informațiilor despre un departament într-un document dacă utilizatorul care întocmește documentul are informații despre departament definite în cardul utilizatorului.

Introducerea unui document nou prin copiere.

Totul este simplu aici. Dacă utilizatorul a introdus deja un document similar, atunci acesta poate fi copiat și apoi datele modificate pot fi corectate. Verificați toate detaliile, acordând o atenție deosebită detaliilor precum data.

Iată cinci modalități principale de a facilita introducerea în documente și cărți de referință similare. Asigurați-vă că le utilizați în munca de zi cu zi

Cum să introduceți rapid valoarea detaliilor în 1C?

Întrebare: Înlocuirea codului în câmpul 1c


Buna ziua, va rog sa-mi spuneti in ce camp trebuie sa inserez o procedura care sa conteze numarul de zile dintre date, am gasit procedura in sine, dar raspunsul la aceasta intrebare este nu

Există câmpuri - data de check-in, data de check-out și un câmp de cantitate, unde diferența dintre primele două valori ar trebui să scadă
La ce eveniment ar trebui să adăugați procedura?

Răspuns:În evenimentul „OnChange” din câmpul Data plecării:

Întrebare: Înlocuirea automată a datelor nu funcționează

Răspuns:

Multumesc tuturor pentru raspunsurile voastre:
1) 1C:Enterprise 8.3 (8.3.4.437), Contabilitate pentru Ucraina: versiunea 2.0.4.3.
2) In special pentru nsk1C: „Aveți întotdeauna acest obicei de a căuta acolo unde nu trebuie, în întrebarea mea nu există niciun cuvânt despre cota de bază de TVA - acesta este, în primul rând, în al doilea rând, citiți cu atenție decretul de interzicere a produselor 1C în Ucraina și atunci scrie-ți deja gândurile..."

Vă mulțumesc pentru răspuns, dar aș dori să știu mai precis unde este setat acesta din cod.

Întrebare: Câmp de introducere și Enter la sfârșit


Formulare gestionate, lucru într-un client web.
Situație: a programat scanerul la F7 + cod de bare + enter. Am încercat multe opțiuni, dar codul nu poate fi citit prin „ShowValueInput”. Am renunțat la această opțiune.
2. A creat un formular cu un câmp de intrare. Folosind F7, se deschide formularul, codul apare în câmpul de introducere, introduceți, apoi apăsați și el (bifați-l în câmpul documentului text). Încerc să prind evenimentul End of Text Input, dar nu funcționează pentru că... funcționează când apăsați fizic enter pe tastatură. Evenimentul AutoFit nu este cea mai bună opțiune pentru mine, deoarece... Codul de bare poate fi introdus manual și apoi trebuie să vin cu un fel de cârjă pentru a ocoli mica întârziere dintre clicuri.
Spune-mi, te rog, există opțiuni mai ușoare?

Răspuns:() se deschide formularul, se transmite codul - evenimentele nu sunt procesate

Întrebare: raportul ACS și câmpul tabelului


Creez un raport folosind ACS. Cum pot afișa rezultatul într-un câmp de tabel? Nu într-un câmp dintr-un document de foaie de calcul, ci într-un câmp de tabel.

Răspuns: Un câmp de document foaie de calcul este un element de formular (în el sunt afișate datele) care aparține atributului (formular) de document de foaie de calcul.
Scrieți o valoare într-un document de foaie de calcul, iar câmpul Document de foaie de calcul afișează această valoare pentru dvs.
Cum pot scrie valoarea acolo?

Întrebare: Concentrarea pe teren funcționează ciudat


Configurare autoscrisă pe 1C (8.3.8.2088), formulare gestionate, interfață taxi.

Atașez evenimentul OnChange la câmp cu următorul cod:

1C
1 2 3 4 StandardProcessing = Fals ; SelectionData = NewValueList; SelectionData. Adaugă(Număr.Obiect) ;

Am pus un cod la sfârșitul introducerii textului

Totul funcționează, dar cumva este strâmb.

Elementul se concentrează, dar cumva doar jumătate, așa cum se poate vedea în imagine:

A devenit după cod:

Adică, cadrul galben și designul câmpului au dispărut. Funcționează, dar nu este frumos, atrage privirea.

Răspuns: Ei bine, pe scurt, atunci când numărul se schimbă, apare un formular de litere, în care persoana completează motivul modificării, dacă persoana pur și simplu închide formularul, atunci valoarea veche este returnată, iar focalizarea rămâne în câmp. Există alte idei despre cum să faci asta cel mai bine?

Întrebare: câmpul tabel formular


O zi buna.
Există un formular standard de selecție a articolului (ut11), care nu afișează numele, ci doar numărul articolului!

Am încercat să returnez setările standard ale formularului - fără niciun rezultat, câmpul/coloana nu este afișată.

Configurator:

Câmpurile au din. Lista este setată la „Utilizați întotdeauna”.
Chiar și depanarea OnFormCreate() și OnOpen() arată asta

Elements.ListAdvancedSearchNomenclature.SubordinateElements

disponibil, totul este în modul vizibilitate și accesibilitate, nu există opțiuni funcționale!

Am încercat să adaug propriul meu câmp cu aceeași cale către date - nici nu apare!
A trecut o oră, dar câmpul nu apare. Te rog ajuta-ma

Răspuns:

atunci oh! Tocmai am reușit să trag câmpul de nume într-un alt grup și nu a devenit vizibil,
iar pe primul buton Inca nu a fost restaurat, eram sigur ca te va ajuta.

Întrebare: Cum pot afișa codul mai degrabă decât numele atunci când selectez un element de director?


există o filă. parte, conține un câmp cu tipul directorylink. Cum pot afișa codul atributului mai degrabă decât numele atunci când selectez un element în acest câmp? (formulare gestionate)

Răspuns: Tklwegsd,))) Da, aceasta este exact întrebarea

mesaj de la polax

Nu puteți adăuga câmpul Cod la tabel?

Întrebare: Câmp de selecție în raportul SKD


Salut baieti, am o intrebare. Vreau să afișez câmpul de selecție în raport, dar ceva mă oprește, am nevoie de sfatul tău...

Pentru câmp, contrapartidele au introdus următorul cod, face o selecție internă, dar cum se afișează Vizualizarea de comparație pentru câmpul din stânga și cum se leagă la Utilizatori?

1C
1 2 3 4 5 6 7 8 9 10 11 Procedura UsersOnChange(Element) Export Parameter = ComposerSettings. Setări. Parametrii datelor. Găsiți ParameterValue(NewDataCompositionParameter("Utilizatori")); Parametru. Valoare = Utilizatori; Parametru. Utilizare = Adevărat; Selection Element = Settings Composer. Setări. Selecţie. Elemente. Adăugați(Tip( „Element de selecție al compoziției datelor”) ) ; Element de selecție. ComparisonView = DataCompositionComparisonView. Egal; Element de selecție. LeftValue = NewDataCompositionField( „Responsabil pentruResponsiveRequest”); Element de selecție. RightValue = Utilizatori; Sfârșitul procedurii

Răspuns: Dethmont, scot codul, exista doar sistemul de control acces si campul de selectie pe formular - un raport gol...

Adăugat după 1 oră și 50 de minute
Dethmont, mi-am dat seama de ce era un raport gol la selectarea unui sistem de control acces, a existat o condiție în cererea de sistem de control acces pentru utilizatori - l-am șters și totul a funcționat. Multumesc pentru sfaturi)

Întrebare: Este posibilă modificarea compoziției câmpurilor dintr-o listă dinamică fără cod?


Bună ziua tuturor. Am un formular curat, pe el este o listă dinamică cu o interogare personalizată, unde există un tabel (un director, de asemenea tabelul principal DS), un câmp Link și caracteristici.

Câmpurile cu caracteristici pot fi utilizate imediat în selecții, sortare, proiectare și selectate pentru grupare. Totul merge. Dar este imposibil să-l selectați pur și simplu ca câmp suplimentar (astfel încât să apară lângă link într-o coloană separată). Este clar că cumva toate acestea se fac cu ajutorul codului, dar într-adevăr acest lucru nu se poate face fără cod?
O mulțime de elemente personalizate de aspect de date care pot fi plasate în formular, dar nu există nicio modalitate de a adăuga doar un câmp? Sau fac ceva greșit?

Răspuns:În general, indiferent de modul în care am trecut coloanele prin compozitorul de date, nu am putut să le adaug (fără cod). Cel mai probabil, acest lucru este imposibil, deoarece nu atributul form ds este responsabil pentru coloane, ci elementul formular, care este logic. Linker-ul controlează datele - elementul de formular - afișarea (coloane incluse).
Adică, fără a crește în mod programatic elementele subordonate ale elementului de formular, nu le veți putea modifica.
Mulțumiri tuturor.

Întrebare: Introducerea pe baza câmpului de mesaj în PM nu este completată


Colegii ajută Nu este o intrare tipică bazată pe documentul din ZUP 2.5, mesaj - câmpul din PM nu este completat, deși este completat - tastați Data. Cod în procesarea umplerii.
Dacă introduceți detaliile prin formular, acesta efectuează...

Răspuns: OMG, a înjurat un alt câmp - doar că această coloană a fost ascunsă) când este completată în interfață, este copiată din câmpul pentru data de început

Să rezolvăm următoarea problemă. Este necesar ca la crearea sau modificarea unui document de Prestare de servicii și la adăugarea oricărei game de servicii la partea tabelară, să se introducă imediat prețul curent obținut din registrul de informații și corespunzător datei documentului.

Pentru a face acest lucru aveți nevoie de:

    scrieți o funcție RetailPrice care va returna prețul curent;

    apelați funcția atunci când un element nou este adăugat la document.

Deoarece o astfel de funcție poate fi necesară în viitor, o vom scrie într-un loc „accesibil public” - într-un modul comun.

1. Creați o funcție Prețul de vânzare cu amănuntulîn ramura General – Module generale cu denumirea Lucrul cu directoare. Setați steag Apel pe server(astfel încât procedurile de export și funcțiile acestui modul să poată fi apelate de la client) (Fig. 71a).

Orez. 71a. Proprietăți comune ale modulului

2. Puneți următorul text în modul.

Funcția RetailPrice(CurrentDate,ServiceNomenclatureElement)Export

//Creează un obiect auxiliar Selection

Selecție = Structură nouă(„Nomenclatură de servicii”, Element de nomenclatură de servicii);

//Obțineți valorile actuale ale resurselor de registry

ResourceValues=InformationRegisters.Prices.GetLast(CurrentDate, Selection);

ReturnResourceValue.Price;

EndFunction

Să explicăm funcția.

Pentru a obține prețul cu amănuntul, trebuie să treceți doi parametri funcției:

    Data curenta– un parametru de tip Date, definește punctul de pe axa timpului în care ne interesează valoarea prețului de vânzare cu amănuntul.

Această structură conține Selecţie conform măsurătorilor registrului. Cu ajutorul acestuia, se determină dimensiunea necesară a registrului Nomenclatorului Serviciilor, care este egală cu referința la elementul de director transmis funcției.

Numele cheii de structură ("H Nomenclatorul Serviciilor") trebuie să se potrivească cu numele dimensiunii registrului specificat în configurator și cu valoarea elementului de structură ( Elementul Nomenclatorului Serviciilor) specifică valoarea selectată pentru această dimensiune.

Al doilea rând conține un apel către managerul registrului de informații Prețuri ( Registre de informatii.Preturi) și execuția metodei RunLast(), care returnează valoarea resursei celei mai recente intrări din registru corespunzătoare datei transmise funcției ( Data curenta) și înregistrați valorile măsurate Selecţie.

Metodă Obțineți cele mai recente returnează o structură care conține valorile resurselor, care este stocată într-o variabilă ResourceValues.

În rândul următor obținem prețul de vânzare cu amănuntul necesar indicând numele resursei de registru necesare, separate printr-un punct ( ValoareResurse.Preț) și returnați-l când funcția este executată.

Acea. această funcție poate fi apelată la un moment dat.

Trebuie deschis Formular document Executarea Serviciilor(a fost creat mai devreme). ÎN Modul formular necesar adăugați Procedură la modificare.

Pentru a face acest lucru, faceți dublu clic pe elementul de formular Listă de articole și servicii (Fig. 71b).

Orez. 71b. Elemente ale documentului de performanță a serviciului

În fereastra de proprietăți din eveniment Când se schimbă creați un handler de evenimente cu următorul text:

&OnClient

Procedură Lista de nomenclaturi Serviciul la schimbare (Element)

//Obțineți următorul rând al secțiunii tabelului

TabularPart Row = Elements.List of Nomenclature.CurrentData;

//Preț stabilit

TabularPart Row.Price = Lucrul cu Directories.RetailPrice(Object.Date, TabularPartLine.Service);

Sfârșitul procedurii

Să explicăm funcția.

Prima linie este deja cunoscută: mai întâi obținem linia curentă a părții tabelare a documentului, deoarece vom avea nevoie de el mai târziu și îl vom salva într-o variabilă RowTabularPart.

Apoi numim functia Prețul de vânzare cu amănuntul() dintr-un modul comun Lucrul cu directoare.

Primul parametru al funcției este trecerea datei documentului pentru care trebuie să obțineți prețul. Primim data documentului din principalele detalii ale formularului - Obiect.Data.

Funcția returnează ultima valoare a prețului, iar această valoare este atribuită câmpului Preț din rândul curent al părții tabulare a documentului ( RowTabularPart.Price).

Vă rugăm să rețineți că procedura Lista de nomenclaturiServiceWhenChanged()începe să lucreze în modulul formular pe partea client, deoarece Acesta este handlerul de evenimente interactiv al formularului. La crearea unui șablon pentru această procedură, platforma va plasa automat o directivă de compilare înainte de descrierea procedurii &OnClient.

Apoi numim functia Prețul de vânzare cu amănuntul(). Deoarece această funcție nu va fi găsită pe partea clientului, apoi execuția va fi transferată în modulul general Lucrul cu directoare, care rulează pe server. După finalizarea funcției, codul programului va continua să se execute pe client.

Să verificăm pașii de mai sus și să lansăm aplicația în 1C: modul Enterprise. Să lucrăm cu configurația dezvoltată.

INTRODUCEREA DATELOR ÎN DB

1. Introduceți cel puțin 8 documente Prestare de servicii în aplicație.