Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Greșeli
  • Cum să faci umplerea opțională în mod programatic 1s. Înlocuirea modelului

Cum să faci umplerea opțională în mod programatic 1s. Înlocuirea modelului

Continuăm subiectul greșelilor comune pe care le fac utilizatorii programului 1C Accounting. În acest articol și în acest articol, v-am spus deja despre greșelile comune. Acum vom vorbi despre erorile care apar din cauza neatenției utilizatorilor.

Foarte des, mulți utilizatori 1C omit pur și simplu câmpurile din documente fără să le acorde atenție. Ca urmare, documentul nu este postat deloc sau este postat, dar incorect. Mai întâi, să vedem dacă este posibil să săriți (nu completați) câmpurile din documente.

Când pot lăsa detalii necompletate ale documentelor 1C Contabilitate

La prima vedere, poate părea că, dacă documentul are un fel de cerință (câmp, bifă și așa mai departe), atunci trebuie completat. La urma urmei, se află pe formular pentru un motiv, nu? Cu toate acestea, de fapt, există cazuri când este într-adevăr posibil să lăsați unele câmpuri necompletate într-un document, iar acest lucru nu va afecta rezultatul. Uită-te la desen.

website_

Al treilea motiv. Neatenție elementară. Când lucrați în 1C Accounting și, într-adevăr, în orice program de contabilitate, ar trebui să fiți puțin mai atent decât de obicei. Și nu sări peste detaliile documentelor.

Rezumând

Lucrând în Contabilitate 1C, nu sări peste câmpuri! Acest lucru se aplică nu numai câmpurilor goale, ci și completate cu unele valori implicite care nu sunt întotdeauna corecte. De asemenea, vă reamintesc că un document poate avea multe file. Se recomandă completarea tuturor documentelor 1C

Probabil că niciun algoritm nu poate proteja baza de date de erorile care apar atunci când utilizatorii introduc date. Principalele probleme asociate cu neatenția umană pot fi identificate în următoarea listă:

  • Alegerea greșită a obiectului;
  • Cantitate greșită sau greșeală de tipar în nume;
  • Elemente duble ale directoarelor, non-unicitatea sau reevaluarea acestora;
  • Ignorarea completării câmpurilor care sunt esențiale pentru calcularea corectă și buna funcționare a programului.

Soluția la ultima problemă este, pentru cea de-a opta versiune a programului 1C, verificarea completării detaliilor formularului.

Verificați completarea pentru un formular obișnuit

La deschiderea formularului de către utilizator, dacă modul de lansare este „Aplicație normală”, elementele care trebuie completate sunt evidențiate cu o linie punctată roșie (Fig. 1).

După cum se poate observa din exemplul de mai sus, câmpurile obligatorii ale documentului „Vânzări de bunuri și servicii” sunt „Număr” și „Contractant”. În acest caz, câmpul „Număr” nu este disponibil pentru editare. Aceasta înseamnă că atunci când un document este scris în baza de informații, acesta va fi completat automat în conformitate cu regulile de numerotare stabilite pentru organizația dată.

Înregistrarea elementelor de director sau postarea documentelor care conțin câmpuri obligatorii necompletate va provoca o excepție (Fig. 2).

Orez. 2

Informații mai detaliate despre câmpul care nu este completat pot fi văzute în fereastra de mesaje de serviciu.

Marca în sine, care informează despre completarea obligatorie a câmpului, este setată în proprietățile elementului de formular. Pentru asta:

  1. Deschideți formularul din Configurator;
  2. Facem clic dreapta pe elementul de formular și apelăm fereastra „Proprietăți”;
  3. Este necesar să bifați casetele AutoMarkUnfilled și AutoSelectUnfilled din submeniul „Utilizare” (Fig. 3);

Verificarea directă, de regulă, înregistrează în modulul de obiect.

Pentru directoare și documente netransferabile, este indicat să apelați procedura de verificare a umplerii la înregistrarea unui element. Documentele completate incomplet, dacă sunt efectuate, pot fi înregistrate în baza de date și este mai bine să apelați procedura de verificare înainte de formarea mișcărilor, adică în timpul conduitei. Este oportun să se efectueze procesările de verificare și rapoartele care conțin câmpuri obligatorii direct în butonul de procesare clic.

Puteți verifica dacă valoarea transmisă în câmp diferă de cea goală (valoarea implicită) folosind funcția ValueFilled(„Valoare”). Rețineți că, dacă câmpul este de tip de date compus, executarea acestei funcții aruncă o excepție.

Validare în formulare gestionate

Caracteristicile platformei în versiunea client-server își lasă amprenta pe verificarea de umplere.

Mai întâi trebuie să înțelegeți ce procedură urmează atunci când introduceți un obiect în acest mod de operare.

Deci, după apăsarea butonului „Înregistrare”, „OK”, „Trimite”:

  1. Se numește procedura „Înainte de a scrie” pe client;
  2. Datele sunt transferate pe server și au loc evenimentele înregistrate în modulul formular pe server (aici puteți rula procedura ProcessingFillCheckOnServer);
  3. Datele formularului sunt transferate în modulul obiect de pe server (devine posibilă lansarea procedurii standard FillCheckProcessing);
  4. Datele din modul sunt returnate la modulul formular de pe server și are loc procedura BeforeWriteOnServer;
  5. Datele sunt returnate la modulul obiect și are loc o altă procedură BeforeWrite;
  6. Obiectul este scris direct în baza de date.

În orice moment al acestei scheme, puteți insera funcția CheckFill(). După parcurgerea detaliilor, în proprietățile cărora atributul „Fill check” are valoarea „Give an error” (Fig. 4), această funcție, dacă cel puțin unul dintre ele nu este completat, va returna „False”.

Diferențele dintre handlerele HandleFillCheck() și ProcessFillCheckOnServer()

Având în vedere faptul că interfața unei aplicații gestionate poate conține atât atribute de obiect, cât și atribute de formă directă, aceste două proceduri sunt separate. În același timp, ele sunt similare în ceea ce privește parametrii care pot fi transmiși manipulanților:

  1. Refuz (aici, după verificare, se transmite rezultatul acestuia);
  2. CheckedAttributes (tipul de date este o matrice, dacă nu este completat, atunci vor fi verificate toate detaliile pentru care proprietățile sunt setate la „Verificare completare”, în caz contrar, detaliile selectate programatic vor fi procesate).

Procedura ProcessingFillingCheckOnServer() vă permite să verificați atributele care nu sunt direct legate de obiectul editat. Fiecare programator decide singur ce și în ce măsură ar dori să verifice.

Procedura ProcessingFillingCheck() verifică detaliile de bază.

Foarte des, în timpul lucrului în programul 1C, poate fi necesar să introduceți rapid mai multe documente sau să adăugați noi obiecte în directoare (tip de articol, organizație, depozit, casierie etc.). În același timp, nu toată lumea înțelege cum este posibilă automatizarea introducerii valorilor de bază, astfel încât valorile necesare să fie imediat înlocuite în câmpuri în timpul creării. Îți voi spune cum să faci asta în acest articol.
În programul 1C, există mecanisme care vă permit să completați rapid valorile detaliilor în documente și directoare. În funcție de acțiunea lor, acestea pot fi împărțite în următoarele tipuri:

  • Înlocuirea valorii unice
  • Înlocuirea valorii prin selecție
  • Completarea detaliilor conform statisticilor
  • Înlocuirea detaliilor introduse anterior
  • Înlocuirea modelului
  • Introducerea unui document nou prin copiere

Înlocuirea singurei valori la 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 dintre ele. La crearea unui nou document, acest depozit va fi înlocuit automat. Acest lucru funcționează pe baza permisiunilor stabilite de utilizator. Adică, prin dezactivarea drepturilor asupra obiectelor cu care utilizatorul nu lucrează, puteți automatiza introducerea datelor.

Înlocuirea valorii în funcție de selecția specificată în formularul de listă.

Dacă lista este setată să filtreze după un anumit atribut (casă, cont bancar, depozit), atunci acest atribut va fi completat automat în noul document. De exemplu, sub forma unei liste de documente de casă, setați selecția după casa de marcat. La emiterea unui nou document de plată, informațiile despre casieria selectată vor fi preluate automat din listă. Și întrucât organizația este specificată pentru casierie, informațiile despre organizație vor fi completate automat. Puteți utiliza filtre în orice listă de documente.

Completarea detaliilor conform statisticilor.

Programul 1C păstrează statistici privind introducerea valorilor de bază pentru fiecare utilizator. Dacă ați intrat de două ori în aceeași organizație, departament, depozit, tranzacție comercială etc. la crearea unui nou document, programul va analiza ultimele valori introduse. Astfel, algoritmul de umplere conform statisticilor se „ajustează” automat la fiecare utilizator.
Dacă utilizatorul rupe 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 alegerea valorii altui atribut este posibilă dacă, de exemplu, este selectat un acord comercial sau un contract, unde sunt completate toate câmpurile principale (depozit, grafic de plată, prețuri etc.). La specificarea unui acord sau acord într-un document, detaliile vor fi completate conform următoarelor reguli:

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

dacă nu a fost specificată vreo valoare în acord sau contract (de exemplu, divizare), 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 cu ș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 de acest tip de articol, aceste valori vor fi înlocuite automat. Un alt exemplu este înlocuirea automată a informațiilor despre departamentul din document, dacă utilizatorul care întocmește documentul are informații despre departament în cardul de utilizator.

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 corecta datele modificate. Verificați toate detaliile, acordând o atenție deosebită unor detalii precum data.

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

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

Bazat pe mecanism de intrare este unul dintre mecanismele de aplicare ale . Vă permite să simplificați munca utilizatorului cu soluția aplicației și să îl salvați de la reintroducerea datelor care sunt deja stocate în baza de informații.

Să luăm în considerare un exemplu simplu. Să presupunem că există un document în soluția aplicată Primire de bunuri, care fixează faptul apariţiei în organizarea unor posturi ale nomenclaturii:

După ce se primește nomenclatorul de la furnizor, ar trebui să emiteți un document Plata pentru bunuri si servicii, în care să se indice furnizorul și suma pe care trebuie să o transfere pentru marfa livrată:

Într-o astfel de situație, mecanismul de introducere bazat pe vă permite să generați un document Plata pentru bunuri si servicii automat, folosind informațiile care sunt stocate în document Primire de bunuri. Acest lucru se face cu un singur clic:

După executarea acestei comenzi, sistemul va crea un nou document Plata pentru bunuri si servicii si completati detaliile acestuia conform informatiilor disponibile in chitanta. Utilizatorul va trebui să selecteze anumite conturi de decontare doar dacă furnizorul și organizația noastră au mai multe dintre ele.

Astfel, mecanismul de introducere pe bază vă permite să creați noi obiecte ale soluției aplicate (directoare, documente etc.) pe baza informațiilor conținute în alte obiecte existente ale soluției aplicate.

1. Câmp de introducere
2. Casetă de selectare
3. Comutator

Câmp de intrare

De regulă, câmpul de intrare este asociat cu atributul obiectului și reflectă datele acestuia. Acesta este poate unul dintre cele mai comune elemente, are mai multe moduri de a selecta o valoare:

Selectarea dintr-o listă (SelectFromListMode)

Selectare dintr-un alt formular (butonul Selectare)

Butoane de control

Implementarea exemplelor de mai sus nu necesită efort semnificativ din partea dezvoltatorului, deci. de exemplu, pentru modul listă, este necesar să completați lista elementului cu valori, să selectați dintr-un alt formular, este suficient doar să legați elementul de control cu ​​datele dicționarului. Dar pentru butoanele de control, va trebui să scrieți mai mult cod pentru a gestiona apăsarea fiecărui buton, deși nu va fi grozav:

Procedură pvNomenclatură SelecțieRegulament (Element, Direcție, Procesare standard)
//Selectați datele pentru câmpul de intrare
// în acest caz Nomenclatură de referință
Solicitare = Solicitare nouă;
Solicitare.Text=
"ALEGE
| Nomenclatură.Referință ca articol
| DE LA
| Director.Nomenclatura AS Nomenclatura
|COMANDA DE
| Nomenclatură.Cod";
TZNomenclature = Request.Execute().Upload();

//căutăm elementul curent al directorului specificat în câmpul de intrare
CurrentElement = TKNomenclature.Find(Element.value);

Dacă CurrentItem = Nedefinit, atunci
// dacă elementul nu este găsit atunci setați numărul de index
// în afara tabelului de valori, deoarece chiar primul element în
// Tabelul de valori are indexul 0
CurrentIndex = -1;
In caz contrar
// dacă elementul este găsit, obțineți indexul acestuia
TekIndex = T3Nomenclature.Index(TekElement);
EndIf;

// calculează noul index în funcție de clic pe buton
// minus în fața variabilei Direcția este pentru a
// făcând clic pe săgeata de sus a arătat elementul de mai sus
// și deci cu un indice mai mic
NewIndex = CurrentIndex-Direction;

// obțineți numărul de elemente din director
// scade unul deoarece toate colecțiile din 8.1 încep de la 0
Număr de articole = Nomenclatura TK Cantitate () -1;

Dacă NewIndex< 0 Или НовИндекс >Numărul de elemente atunci
// dacă indexul se află în afara tabelului de valori la modificare
// adică numărul său este mai mare decât cel mai mare indice sau mai mic decât 0 atunci
// nu modifică valoarea și informează utilizatorul despre aceasta
alert("Ai atins limita directorului");
In caz contrar
// atribuiți o nouă valoare, „Produs” este numele coloanei tabelului de valori
Element.value = TKNomenclature.Get(NewIndex).Product;
EndIf;

EndProcedure

Caseta de bifat

În majoritatea programelor, caseta de selectare este folosită pentru a afișa două stări: bifat, nebifat. În 1s, caseta de selectare are trei stări, în a treia stare caseta de selectare este afișată - ca setată și umbrită. Cele trei state sunt disponibile numai dacă datele de pavilion sunt un număr, statele având următoarele semnificații:

Intrerupator

Comutatorul este utilizat pentru a selecta o valoare dintr-un număr mic de posibile (de preferință nu mai mult de cinci), în timp ce valorile nu pot fi combinate, De exemplu: potrivite pentru alegerea sexului unei persoane. Un alt exemplu: să presupunem că o companie oferă una dintre cele 3 reduceri pentru un produs, în timp ce reducerile nu sunt cumulative:

În acest caz, comoditatea utilizării butoanelor radio poate consta în faptul că fiecare dintre ele poate avea o anumită valoare, care este setată în proprietatea „Valoare selectabilă”. Și apoi „5% Discount” poate stoca valoarea 5 sau 0,05.

Există trei lucruri importante de reținut atunci când utilizați butoanele radio:

      Primul buton radio trebuie să aibă proprietatea „FirstInGroup” (în acest exemplu, este butonul radio „5% Discount”).

      Comutatoarele legate prin semnificație unui grup ar trebui să meargă succesiv în stabilirea ordinii de ocolire, fără întrerupere de către alte elemente de formular. Ordinea de traversare este setată din meniul „Form -> Traversal order settings”, pentru acest exemplu arată astfel:

  1. Tipul valorii selectate este stabilit de comutatorul care are proprietatea „FirstInGroup”.

Top articole similare