Adăugați o linie la partea tabelară a documentului 1s 8.3. Taste rapide: acțiuni generale

Pentru exemplul anterior, puteți adăuga următoarele linii de cod:

Elemente de formular.TableField1.AddRow(); pagina = FormElements.TableField1.CurrentRow; p.Primul = 3; p.Second = „Făină”; p.Cantitate = 350;

Cum se determină numărul de rânduri dintr-un tabel de valori în 1s 8?

countRows = table.Quantity(); Raport ("Numărul de rânduri din tabelul cu valorile tabelului = " + numărul de rânduri);

Rezultat:

Numărul de rânduri din tabelul cu valorile tabelului = 3

Cum să ștergeți un rând dintr-un tabel de valori în 1s 8?

rowTable = tabel; table.Delete(rowTable);

Cum să restrângi un tabel de valori în 1s 8?

Colaps:

table.Collapse("Al doilea", "Cantitate");

După convoluție obținem:

Cum se sortează un tabel de valori în 1s 8?

Sortați după a doua și a treia coloană:

table.Sort("Al doilea, Cantitate");

Cum se poziționează un câmp de tabel pe o linie în 1c 8?

Pe a doua linie:

Form Elements.TableField1.CurrentRow = tabel;

Formular imprimabil în 1s 8

Mai întâi, facem un aspect (numele zonei: selectați liniile necesare ale aspectului, în proprietăți, în câmpul Nume, introduceți numele zonei), apoi îl afișam într-un document de foaie de calcul:

Procedură CommandPanel1Print(Button) variabilă td, rs, rs1, layout, code, name, nomen; cod = 0; layout = GetLayout ("Produse"); antet = layout.GetArea("Header"); header.Parameters.datta = CurrentDate(); pc = layout.GetArea("pc"); pc1 = layout.GetArea("pc1"); td = New TabularDocument; td.Output(cap); nomen = Directories.Nomenclature; selectie = nom.SelectHierarhic(); while fetch.Next() cod buclă = cod + 1; dacă sample.ThisGroup = True, atunci pc1.Parameters.code = cod; pc1.Parameters.name = selectie.Nume; td.Ieșire(rs1); else rs.Parameters.code = cod; rs.Parameters.name = selectie.Nume; td.Retragere(rs); endIf; endCycle; etc.ViewOnly = Adevărat; td.Show("Directorul ""Nomenclatura"""); EndProcedure

Capacitățile de bază ale unui limbaj de programare includ de obicei lucrul cu numere și șiruri. De obicei, aceste caracteristici sunt codificate în codul compilatorului (sau sunt implementate clasele „de bază” ale limbajului de programare).

În 1C, capacitatea de a lucra cu șiruri este programată chiar în platformă. Astăzi ne vom uita la caracteristicile lucrului cu șiruri 1C în programele în limbajul 1C încorporat.

Valoarea liniei 1C

1. Să începem cu cel mai simplu. Crearea unei variabile și atribuirea unei valori constante șirului arată astfel în 1C:

Variabilă = „Bună, lume!”;

Dacă trebuie să specificați un caracter de ghilimele într-o valoare constantă de șir 1C, atunci trebuie să-l dublați „”

Variabilă = „Bună, lume”!;

2. Ruptura de linie 1C poate fi specificată în două moduri simultan. Primul folosește simbolul |

Variabilă = „Bună ziua,
| lume! ";

Al doilea folosește enumerarea sistemului Symbols. Vă permite să adăugați atât întreruperi de linie 1C, cât și alte caractere care nu se imprimă, cum ar fi TAB.

Variabilă = „Bună ziua” + Simboluri.PS + „pace!”;

3. Configurațiile în 1C pot fi dezvoltate nu numai pentru o limbă (rusă, engleză sau alta) - ci simultan pentru mai multe limbi. În acest caz, limba utilizată curent este selectată în partea de jos a ferestrei 1C.

Lista limbilor se află în fereastra de configurare din ramura General/Limbi. Fiecare limbă are un identificator scurt, cum ar fi ru sau ing.

Este clar că la programarea unei astfel de configurații, liniile 1C pot fi și multilingve. Pentru a face acest lucru, este posibil să creați o astfel de linie 1C specificând prin; opțiuni după identificatorul de limbă:

Variabilă = "ru=""Bună, lume! ""; ro=""Bună, lume! """;

Dacă utilizați linia 1C formată astfel ca de obicei, atunci va fi ceea ce este scris în ea. Pentru ca sistemul să îl împartă în două opțiuni și să o utilizeze pe cea dorită, trebuie să utilizați funcția НStr():

//corect pentru configurațiile bilingve
Raport(NStr(Variabilă));

Recuzită cu linie tip 1C

Atributul este un câmp din directorul/documentul 1C. Diferă de o variabilă dintr-un program în limbajul 1C prin faptul că pentru atribut este indicat cu precizie tipul acesteia (număr, șir 1C etc.). Dacă aveți nevoie să vă reîmprospătați memoria despre ce este o recuzită, urmăriți lecția.

Dacă specificați tipul de atribut - linia 1C, atunci trebuie să specificați suplimentar parametrii.

Liniile 1C au lungime nelimitată (indicată ca lungime = 0) și lungime limitată, indicând numărul exact de caractere. Rândurile 1C de lungime nelimitată sunt stocate într-un tabel SQL separat, astfel încât utilizarea lor este mai puțin productivă decât cele limitate.

De aceea, utilizarea șirurilor 1C de lungime nelimitată are limitările sale - nu este posibil să le folosiți peste tot. De exemplu, nu este permis ca număr de document, cod de referință sau măsurare.

Lucrul cu șiruri 1C

Există mai multe funcții încorporate ale platformei 1C pentru lucrul cu șiruri.

  • AbbrLP („Incredibil, dar adevărat!”)
    Elimină spațiile suplimentare din linia 1C. Poate fi folosit și pentru a converti orice tip într-un șir 1C (de exemplu, numere).
  • Variabilă = "Vasya" + AbbrLP ("plus") + "Olya"; //va fi „Vasya plus Olya”
    Un exemplu de însumare a mai multor valori de șir 1C. Rezultatul va fi o linie 1C.
  • Variabilă = Lev(„Muzică”, 2); //va fi "Mu"
    Variabilă = Mediu(„Muzică”, 2, 2); //va exista „amenințare”
    Variabilă = Drepturi ("Muzică", 2); //va fi "ka"
    Diverse opțiuni pentru obținerea unui subșir dintr-un șir 1C.
  • Variabila = Find("Muzică", "zy"); //vor fi 3
    Căutați un subșir în șirul 1C, începând cu caracterul 1.
  • Variabilă = StrLength(„Muzică”); //vor fi 6
    Returnează numărul de caractere din linia 1C.
  • Raport ("Bună ziua") //în fereastra de mesaje din partea de jos a ferestrei 1C
    Alertă(„Bună ziua”) //dialog pop-up
    Stare(„Bună ziua”) //în linia de afișare a stării din stânga jos
    .

Aducerea obiectelor pe linia 1C

După cum știți, cel mai popular format pentru schimbul de informații structurate în prezent este XML. Chiar și cea mai recentă versiune de MS Office Word și Excel salvează fișierele în acest format (docx și, respectiv, xlsx, schimbă extensia în zip, deschide într-un arhivator).

Platforma 1C pentru schimbul de date oferă mai multe opțiuni, dintre care principala este și XML.

1. Cea mai simplă metodă este să folosiți funcția Abreviere() sau String(). Puteți utiliza funcția REPRESENTATION() în corpul cererii. Rezultatul acțiunii lor este același - ei generează o reprezentare șir a oricărui obiect 1C pentru utilizator.

Pentru un director implicit, acesta va fi numele acestuia. Pentru un document – ​​numele documentului, numărul și data.

2. Orice obiect 1C (cu restricții) poate fi convertit în XML și invers. Procesul de conversie se numește serializare.

StringViewXml = XMLString(Valoare); //obține XML din valoarea 1C
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); // obțineți valoarea 1C din șirul XML, trebuie să specificați tipul 1C care ar trebui să fie primit

3. Există o modalitate proprie a platformei 1C de a converti orice obiect 1C într-un șir. A migrat de la versiunea 1C 7.7. Acest format nu este înțeles de alte programe, dar alți 1C îl înțelege, ceea ce face ușoară utilizarea lui pentru schimbul între bazele de date 1C.

Rând = ValueInRowInt(Value1C); //obține șirul 1C din valoarea 1C
ValueVFile("C:\MyFile.txt", Value1C); //o altă opțiune, obținem un fișier cu un șir salvat din valoarea 1C
Value1C = ValueFromStringInt(String); //înapoi de la linia 1C
Value1C = ValueFile("C:\MyFile.txt"); //înapoi din fișier

Editarea liniilor 1C pe formular

Pe lângă lucrul cu șiruri 1C într-un program în limbajul 1C, bineînțeles că aș dori ca utilizatorul să le poată edita. Există mai multe posibilități pentru aceasta:

1. Cea mai ușoară modalitate este de a solicita intrarea unei linii 1C la cerere. Această metodă este folosită atunci când predați programarea 1C; în viață este folosită mult mai rar (dar este folosit!).

Variabila = "";
Rând = EnterValue(Variabilă, „Introduceți numele complet”);

2. Pentru a afișa detaliile unui obiect 1C (director/document) sau detalii de formular (vezi), cel mai des este folosit un câmp de introducere. Acesta este cel mai comun instrument din 1C pentru ca utilizatorul să lucreze cu câmpuri de editare.

3. Capacitățile câmpului de intrare pot fi extinse (a se vedea proprietățile câmpului de intrare, faceți clic dreapta pe el, mai multe detalii):

  • Casetă de selectare Modul de editare multilinie
  • Casetă de selectare Editare avansată (disponibilă dacă caseta de selectare anterioară este bifată)
  • Casetă de selectare Mod parolă (vezi).

4. Dacă toate capabilitățile câmpului de intrare nu sunt suficiente pentru dvs., există un editor încorporat. Pentru a-l adăuga în formular, trebuie să adăugați un câmp de document text în meniul Formular/Inserare Control. În proprietățile sale puteți specifica modul său de funcționare – proprietatea Extensie.

Un câmp de document text nu poate fi asociat direct cu date. Este necesar să scrieți o funcție în handlerul de evenimente OnOpen() al formularului (vezi):

Form Elements.ElementNameTextDocumentField.SetText(StringValue); //aici ValueString este textul primit, de exemplu, de la atribut

Și în gestionarea de salvare - de exemplu, în butonul Salvare - adăugați o salvare:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValoareLinia aici este atributul în care salvăm valoarea

5. În versiunea 1C 8.2.11, în formele gestionate, a apărut o nouă opțiune pentru reprezentarea unei linii 1C - câmpul Document formatat.


Asemănător câmpului unui document text, trebuie să îl setați când îl deschideți și să îl notați când îl salvați singur folosind programul.

  • În obiectul 1C a cărui formă o creăm (director, document, procesare etc.) - adăugați un atribut cu tipul Value Storage
  • În funcția OnReadOnServer() setăm textul din atribut

    //aici Atributul este atributul adăugat al obiectului 1C
    //aici FormattedDocument este numele câmpului din formular pentru editare
    &Pe server

    FormattedDocument = CurrentObject.Attributes.Get();
    EndProcedure

  • În funcția BeforeWritingOnServer() sau folosind butonul, vom scrie textul din câmp

    &Pe server
    Procedură la ReadingOnServer (CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    EndProcedure

Părți tabulare există pentru multe obiecte din 1C:

  • Directoare
  • Documentație
  • Rapoarte și procesare
  • Planuri de conturi
  • Planuri de tip caracteristic
  • Planuri de tip calcul
  • Procese și sarcini de afaceri

Părțile tabelare vă permit să stocați o cantitate nelimitată de informații structurate aparținând unui singur obiect.

Să ne uităm la câteva tehnici de lucru cu părți tabulare.

Cum să ocoliți partea tabulară

Pentru a parcurge partea tabelului, puteți folosi o buclă Pentru fiecare

Pentru fiecare rând din partea tabelară a ciclului

Raport (Atribut String. TabularPart) ;

EndCycle ;

La fiecare iterație în variabilă Linia se transmite următorul rând al secțiunii tabelare. Valorile detaliilor rândului pot fi obținute prin expresie Line.AttributeName.

Cum să obțineți și să ocoliți rândurile selectate ale părții tabelare

Pentru a afișa informații din partea tabelară a obiectului, utilizați un element de formular Câmp tabel. Pentru a activa posibilitatea de a selecta mai multe rânduri într-un câmp de tabel, trebuie să setați valoarea Multiplu la proprietatea lui Modul de selecție.

Pentru a obține o listă a liniilor selectate, utilizați următorul cod:

O buclă este folosită pentru a itera prin liniile selectate. Pentru fiecare:

SelectedRows = FormElements. TableFieldName. SelectedRows;

Pentru fiecare rând din bucla rândurilor selectate

//conținutul buclei

EndCycle ;

Cum să selectați în mod programatic rândurile unei părți tabulare (câmpul tabelului) și să le deselectați

Pentru a deselecta în mod programatic rândurile unui câmp de tabel:

Elemente de formă. TableFieldName. SelectedRows. Clar() ;

Pentru a selecta în mod programatic toate rândurile unui câmp de tabel:

Pentru fiecare CurrentRow From TabularPart Loop
Elemente de formă. TableFieldName. SelectedLines. Adăugați(Rândul curent);
EndCycle ;

Cum să ștergeți partea de masă

TabularPart. Clar() ;

Cum să obțineți rândul curent al unei secțiuni de tabel

Linia curentă este cronologia în care utilizatorul are în prezent cursorul. Pentru a-l obține, trebuie să accesați elementul de control din formularul care este asociat cu partea tabelară.

Pentru formele obișnuite, codul va arăta astfel:

Elemente de formă. TableFieldName. Data curenta;

Pentru formularele gestionate:

Elemente. TableFieldName. Data curenta;

Cum să adăugați un rând nou la o secțiune de tabel

Adăugarea unei noi linii la sfârșitul secțiunii tabelului:

NewRow = TablePart. Adăuga() ;

Adăugarea unei linii noi oriunde în secțiunea tabelului (liniile ulterioare vor fi deplasate):

NewRow = TablePart. Inserare(Index)
//Index - numărul liniei adăugate. Numerotarea liniilor începe de la zero.

Linie nouă. Props1 = „Valoare” ;

Cum să completați în mod programatic detaliile unui rând de tabel

Dacă trebuie să completați în mod programatic detaliile unui rând de secțiune de tabel care este adăugat de utilizator, trebuie să utilizați handlerul de evenimente secțiunea de tabel Când începeți editarea.

Procedura creată de handler are trei parametri:

  • Element- contine un element de control TabularField.
  • Linie nouă- boolean. Conține valoare Adevărat, dacă este adăugat un nou rând de tabel și Minciună, dacă utilizatorul a început să editeze o linie deja existentă.
  • Copie- boolean. Conține valoare Adevărat, dacă utilizatorul copiază linia și Minciună in alte cazuri.

Să ne uităm la un exemplu. Să presupunem că trebuie să completăm detaliile secțiunii tabelare ContCont, în cazul în care se adaugă o nouă linie. Când editați o linie existentă, nu este necesar să schimbați contul de contabilitate.

Procedura TabularPartAtStartEditing(Element, NewRow, Copy)

//Dacă utilizatorul editează o linie existentă, atunci nu facem nimic
Dacă NU NewRow, atunci
Întoarcere;
EndIf ;

//Dacă linia este nouă, setați contul de contabilitate
TechString = Articol. Data curenta; //Obțineți rândul curent al părții tabelare
TechString. Contabilitate = Planuri de conturi. Autoportant. RequiredAccount;
EndProcedure