Dodaj red u tabelarni dio dokumenta 1s 8.3. Prečice: opšte radnje

Za prethodni primjer možete dodati sljedeće linije koda:

Elementi obrasca.TableField1.AddRow(); stranica = FormElements.TableField1.CurrentRow; p.Prvi = 3; p.Second = "Brašno"; p.Količina = 350;

Kako odrediti broj redova u tabeli vrijednosti u 1s 8?

countRows = table.Quantity(); Izvještaj("Broj redova u tabeli vrijednosti tablice = " + broj redova);

rezultat:

Broj redova u tabeli vrednosti tabele = 3

Kako izbrisati red u tabeli vrijednosti u 1s 8?

rowTable = tablica; table.Delete(rowTable);

Kako skupiti tablicu vrijednosti u 1s 8?

Skupi:

table.Collapse("Drugi", "Količina");

Nakon konvolucije dobijamo:

Kako sortirati tablicu vrijednosti u 1s 8?

Poredaj po drugom i trećem stupcu:

table.Sort("Drugo, Količina");

Kako postaviti polje tabele na liniju u 1c 8?

U drugom redu:

Elementi obrasca.TableField1.CurrentRow = tablica;

Obrazac za štampanje u 1s 8

Prvo napravimo raspored (naziv područja: odaberite potrebne linije rasporeda, u svojstvima, u polje Naziv unesite naziv područja), zatim ga prikazujemo u dokumentu proračunske tablice:

Procedura CommandPanel1Print(Button) varijabla td, rs, rs1, raspored, kod, ime, naziv; kod = 0; layout = GetLayout("Proizvodi"); header = layout.GetArea("Header"); header.Parameters.datta = CurrentDate(); pc = layout.GetArea("pc"); pc1 = layout.GetArea("pc1"); td = Novi tabelarni dokument; td.Output(cap); nomen = Imenici.Nomenklatura; odabir = nom.SelectHierarchically(); while fetch.Next() kod petlje = code + 1; ako je sample.ThisGroup = Tačno onda pc1.Parameters.code = code; pc1.Parameters.name = selection.Name; td.Output(rs1); else rs.Parameters.code = code; rs.Parameters.name = selection.Name; td.Withdraw(rs); endIf; endCycle; etc.ViewOnly = Tačno; td.Show("Imenik ""Nomenklatura"""); EndProcedure

Osnovne mogućnosti programskog jezika obično uključuju rad sa brojevima i nizovima. Obično su ove karakteristike tvrdo kodirane u kod kompajlera (ili se implementiraju „bazne“ klase programskog jezika).

U 1C, mogućnost rada sa stringovima je programirana u samoj platformi. Danas ćemo pogledati karakteristike rada sa 1C stringovima u programima na ugrađenom 1C jeziku.

Vrijednost linije 1C

1. Počnimo s najjednostavnijim. Kreiranje varijable i dodjeljivanje konstantne vrijednosti niza izgleda ovako u 1C:

Variable = "Zdravo, svijet!";

Ako trebate navesti znak navodnika u konstantnoj vrijednosti stringa 1C, morate ga udvostručiti ""

Varijabla = "Zdravo, svijete"!;

2. Prijelom reda 1C može se specificirati na dva načina odjednom. Prvi je korištenje simbola |

Variable = "Zdravo,
| svijet! ";

Drugi je korištenje sistemske numeracije Symbols. Omogućava vam da dodate i 1C prijelome reda i druge znakove koji se ne štampaju, kao što je TAB.

Varijabla = "Zdravo" + Simboli.PS + "mir!";

3. Konfiguracije u 1C mogu se razvijati ne samo za jedan jezik (ruski, engleski ili drugi) - već istovremeno za nekoliko jezika. U ovom slučaju, jezik koji se trenutno koristi se odabire na dnu prozora 1C.

Lista jezika se nalazi u prozoru za konfiguraciju u grani Općenito/Jezici. Svaki jezik ima kratak identifikator kao npr ru ili eng.

Jasno je da prilikom programiranja takve konfiguracije 1C linije mogu biti i višejezične. Da biste to učinili, moguće je kreirati takvu 1C liniju navođenjem kroz; opcije prema identifikatoru jezika:

Variable = "ru=""Zdravo, svijete! ""; en=""Zdravo, svijete! """;

Ako koristite liniju 1C formiranu na ovaj način kao i obično, to će biti ono što je napisano u njoj. Da bi ga sistem podijelio na dvije opcije i koristio željenu, potrebno je koristiti NStr() funkciju:

//ispravan za dvojezične konfiguracije
Izvještaj(NStr(Varijabla));

Rekviziti sa linijom tipa 1C

Atribut je polje u 1C direktoriju/dokumentu. Razlikuje se od varijable u programu na 1C jeziku po tome što je za atribut precizno naznačen njen tip (broj, 1C niz, itd.). Ako trebate osvježiti sjećanje na to što je rekvizit, pogledajte lekciju dalje.

Ako navedete vrstu atributa - red 1C, tada morate dodatno navesti parametre.

1C linije dolaze u neograničenoj dužini (označeno kao dužina = 0) i ograničenoj dužini, što ukazuje na tačan broj znakova. 1C redovi neograničene dužine pohranjeni su u zasebnoj SQL tablici, tako da je njihova upotreba manje produktivna od ograničenih.

Zato upotreba 1C nizova neograničene dužine ima svoja ograničenja - nije ih moguće koristiti svuda. Na primjer, nije dozvoljeno kao broj dokumenta, referentni kod ili mjera.

Rad sa 1C žicama

Postoji nekoliko ugrađenih funkcija 1C platforme za rad sa stringovima.

  • AbbrLP („Nevjerovatno, ali istinito!“)
    Uklanja dodatne razmake iz 1C linije. Također se može koristiti za pretvaranje bilo koje vrste u 1C string (na primjer, brojeve).
  • Varijabla = "Vasya" + AbbrLP(" plus") + "Olya"; //biće "Vasya plus Olya"
    Primjer zbrajanja nekoliko vrijednosti niza 1C. Rezultat će biti jedan red 1C.
  • Varijabla = Lev("Muzika", 2); //bit će "Mu"
    Varijabla = Medium("Muzika", 2, 2); //postat će "prijetnja"
    Varijabla = Prava("Muzika", 2); // biće "ka"
    Različite opcije za dobijanje podniza iz 1C niza.
  • Varijabla = Find("Muzika", "zy"); //biće 3
    Potražite podniz u nizu 1C, počevši od znaka 1.
  • Varijabla = StrLength("Muzika"); //biće 6
    Vraća broj znakova u liniji 1C.
  • Report("Hello") //u prozoru za poruke na dnu prozora 1C
    Alert("Hello") //popup dijalog
    Status("Hello") //u redu prikaza statusa u donjem lijevom kutu
    .

Dovođenje objekata na liniju 1C

Kao što znate, trenutno najpopularniji format za razmjenu strukturiranih informacija je XML. Čak i najnovija verzija MS Office Worda i Excela spremaju datoteke u ovom formatu (docx i xlsx, mijenjaju ekstenziju u zip, otvaraju u arhiveru).

1C platforma za razmjenu podataka nudi nekoliko opcija, od kojih je glavna također XML.

1. Najjednostavniji metod je korištenje funkcije Abbreviation() ili String(). Možete koristiti funkciju REPRESENTATION() u tijelu zahtjeva. Rezultat njihove akcije je isti - oni generiraju string reprezentaciju bilo kojeg 1C objekta za korisnika.

Za direktorij po defaultu, ovo će biti njegovo ime. Za dokument – ​​naziv dokumenta, broj i datum.

2. Bilo koji 1C objekat (sa ograničenjima) može se konvertovati u XML i obrnuto. Proces konverzije se naziva serijalizacija.

StringViewXml = XMLString(Vrijednost); //dobijemo XML iz 1C vrijednosti
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); //dobijamo 1C vrijednost iz XML niza, morate navesti 1C tip koji treba primiti

3. Postoji vlastiti način 1C platforme za pretvaranje bilo kojeg 1C objekta u string. Migrirao je sa verzije 1C 7.7. Ovaj format ne razumiju drugi programi, ali ga drugi 1C razumiju, što ga čini lakim za razmjenu između 1C baza podataka.

Red = ValueInRowInt(Value1C); //dobijamo string 1C iz vrijednosti 1C
ValueVFile("C:\MyFile.txt", Value1C); //druga opcija, dobijamo datoteku sa sačuvanim nizom iz 1C vrijednosti
Value1C = ValueFromStringInt(String); //povratak sa linije 1C
Value1C = ValueFile("C:\MyFile.txt"); //povratak iz datoteke

Uređivanje 1C linija na obrascu

Pored rada sa 1C stringovima u programu na 1C jeziku, naravno da želim da korisnik može da ih uređuje. Za to postoji nekoliko mogućnosti:

1. Najlakši način je zatražiti unos 1C linije na zahtjev. Ova metoda se koristi pri podučavanju 1C programiranja, u životu se koristi mnogo rjeđe (ali se koristi!).

Varijabla = "";
Red = EnterValue(Variable, "Unesite puno ime");

2. Za prikaz detalja 1C objekta (direktorij/dokument) ili detalje obrasca (vidi), najčešće se koristi polje za unos. Ovo je najčešći alat u 1C za korisnika za rad s poljima za uređivanje.

3. Mogućnosti polja za unos se mogu proširiti (pogledajte svojstva polja za unos, desni klik na njega, više detalja):

  • Potvrdni okvir Višelinijski način uređivanja
  • Potvrdni okvir za napredno uređivanje (dostupno ako je prethodno potvrđen okvir za potvrdu)
  • Polje za potvrdu Način lozinke (vidi).

4. Ako vam sve mogućnosti polja za unos nisu dovoljne, postoji ugrađeni uređivač. Da biste ga dodali u obrazac, potrebno je da dodate polje tekstualnog dokumenta u meni Kontrola obrasca/umetanja. U njegovim svojstvima možete odrediti njegov način rada – svojstvo Extension.

Polje tekstualnog dokumenta ne može se povezati direktno s podacima. Potrebno je napisati funkciju u OnOpen() rukovatelju događaja oblika (pogledajte):

Elementi obrasca.ElementNameTextDocumentField.SetText(StringValue); //ovdje ValueString je tekst primljen, na primjer, iz atributa

I u rukovatelju spremanja - na primjer, u dugme Sačuvaj - dodajte spremanje:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueLinija ovdje je atribut u koji pohranjujemo vrijednost

5. U 1C verziji 8.2.11, u upravljanim obrascima, pojavila se nova opcija za predstavljanje 1C linije - polje Formatirani dokument.


Slično kao i polje tekstualnog dokumenta, morate ga postaviti prilikom otvaranja i zapisati kada ga sami pohranjujete pomoću programa.

  • U 1C objekt čiju formu kreiramo (direktorij, dokument, obrada itd.) - dodajte atribut sa tipom Value Storage
  • U funkciji OnReadOnServer() postavljamo tekst iz atributa

    //ovdje je atribut dodani atribut 1C objekta
    //ovdje FormattedDocument je naziv polja na obrascu za uređivanje
    &Na serveru

    FormattedDocument = CurrentObject.Attributes.Get();
    EndProcedure

  • U funkciji BeforeWritingOnServer() ili pomoću dugmeta upisaćemo tekst iz polja

    &Na serveru
    Procedura prilikom čitanja na serveru (trenutni objekt)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    EndProcedure

Tablični dijelovi postoje za mnoge objekte u 1C:

  • Imenici
  • Dokumentacija
  • Izvještaji i obrada
  • Kontni planovi
  • Planovi karakterističnih tipova
  • Planovi kalkulacije
  • Poslovni procesi i zadaci

Tablični dijelovi vam omogućavaju pohranjivanje neograničene količine strukturiranih informacija koje pripadaju jednom objektu.

Pogledajmo neke tehnike za rad s tabelarnim dijelovima.

Kako zaobići tabelarni dio

Da biste prešli dio tablice, možete koristiti petlju Za svaki

Za svaki red iz tabelarnog dijela ciklusa

Izvještaj(String. TabularPart atribut) ;

EndCycle ;

Na svakoj iteraciji u varijablu Linija prenosi se sljedeći red tabelarnog dijela. Vrijednosti detalja reda mogu se dobiti izrazom Line.AttributeName.

Kako doći i zaobići odabrane redove tabelarnog dijela

Za prikaz informacija iz tabelarnog dijela objekta koristite element obrasca Polje tabele. Da biste omogućili mogućnost odabira više redova u polju tabele, morate postaviti vrijednost Višestruko na njegovom imanju Način odabira.

Da biste dobili listu odabranih linija, koristite sljedeći kod:

Petlja se koristi za ponavljanje kroz odabrane linije. Za svaki:

SelectedRows = FormElements. TableFieldName. SelectedRows;

Za svaki red iz petlje odabranih redova

//sadržaj petlje

EndCycle ;

Kako programski odabrati redove tabelarnog dijela (polje tabele) i poništiti njihov odabir

Da programski poništite odabir redova polja tabele:

Elementi forme. TableFieldName. SelectedRows. Clear() ;

Da programski odaberete sve redove polja tabele:

Za svaki CurrentRow From TabularPart Loop
Elementi forme. TableFieldName. SelectedLines. Dodaj (TrenutniRed) ;
EndCycle ;

Kako očistiti dio tabele

TabularPart. Clear() ;

Kako dobiti trenutni red sekcije tabele

Trenutna linija je vremenska linija u kojoj korisnik trenutno ima kursor. Da biste ga dobili, potrebno je pristupiti kontrolnom elementu na obrascu koji je pridružen tabelarnom dijelu.

Za obične forme kod će izgledati ovako:

Elementi forme. TableFieldName. CurrentData;

Za upravljane forme:

Elementi. TableFieldName. CurrentData;

Kako dodati novi red u sekciju tabele

Dodavanje novog reda na kraj odjeljka tabele:

NewRow = TablePart. Dodati() ;

Dodavanje novog reda bilo gdje u odjeljku tablice (naknadni redovi će biti pomjereni):

NewRow = TablePart. umetnuti (indeks)
//Indeks - broj dodane linije. Numerisanje redova počinje od nule.

Nova linija. Props1 = "Vrijednost" ;

Kako programski popuniti detalje reda tabele

Ako trebate programski popuniti detalje reda odjeljka tablice koji je dodao korisnik, morate koristiti rukovalac događaja odjeljka tablice Kada započnete uređivanje.

Procedura koju kreira rukovalac ima tri parametra:

  • Element- sadrži kontrolni element TabularField.
  • Nova linija- boolean. Sadrži vrijednost Istinito, ako se doda novi red tabele, i laž, ako je korisnik počeo uređivati ​​već postojeću liniju.
  • Kopiraj- boolean. Sadrži vrijednost Istinito, ako korisnik kopira liniju, i Lazi u drugim slučajevima.

Pogledajmo primjer. Recimo da trebamo popuniti detalje tabelarnog dijela AccountAccount, u slučaju da se doda novi red. Prilikom uređivanja postojeće linije, ne morate mijenjati računski račun.

Procedura TabularPartAtStartEditing(Element, NewRow, Copy)

//Ako korisnik uređuje postojeću liniju, onda ništa ne radimo
Ako NIJE NewRow Onda
Povratak;
EndIf ;

//Ako je linija nova, postavite računski račun
TechString = Stavka. CurrentData; //Nabavite trenutni red tabelarnog dijela
TechString. Računovodstvo = Kontni plan. Samonosivi. RequiredAccount;
EndProcedure