Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Internet, Wi-Fi
  • Nove funkcije za rad sa nizovima. Nove funkcije za rad s nizovima 1c operacije s nizovima

Nove funkcije za rad sa nizovima. Nove funkcije za rad s nizovima 1c operacije s nizovima

Postoji nekoliko mehanizama za rad sa nizovima u 1C upitima. Prvo se mogu dodati linije. Drugo, možete uzeti podniz iz niza. Treće, nizovi se mogu uspoređivati, uključujući i prema uzorku. To je vjerojatno sve što se može učiniti sa žicama.

Dodavanje niza

Za dodavanje redaka u upitu koristi se operacija “+”. Možete dodati samo nizove ograničene duljine.

ODABERITE "Ime: " + Ime druge strane AS Stupac 1 FROM Counterparties AS Counterparties

Funkcija podniza

PODNIZ(<Строка>, <НачальнаяПозиция>, <Длина>)

Analog funkcije Environment() iz objektnog modela. Funkcija Substring() može se primijeniti na podatke niza i omogućuje odabir fragmenta <Строки> , počevši od broja znaka <НачальнаяПозиция> (znakovi u retku numerirani su počevši od 1) i duljina <Длина> likovi. Rezultat izračuna funkcije ima tip niza promjenjive duljine, a duljina će se smatrati neograničenom ako <Строка> ima neograničenu duljinu i parametar <Длина> nije konstanta niti veća od 1024.

Ako je duljina niza manja od navedene u drugom parametru, funkcija će vratiti prazan niz.

Pažnja! Ne preporučuje se korištenje funkcije SUBSTRING() za pretvaranje nizova neograničene duljine u nizove ograničene duljine. Umjesto toga, bolje je koristiti cast operator EXPRESS().

Funkcija Slična

Ako trebamo provjeriti zadovoljava li atribut niza određene kriterije, uspoređujemo ga:

SELECT Counterparties Stupac 1 FROM Counterparties AS Counterparties Naziv = "Gazprom".

Ali što ako trebate suptilniju usporedbu? Ne samo jednakost ili nejednakost, nego sličnost s određenim uzorkom? Upravo je za to stvorena funkcija SIMILAR.

LIKE — Operator za provjeru sličnosti niza s uzorkom. Analog LIKE-a u SQL-u.

Operator SIMILAR omogućuje vam da usporedite vrijednost izraza navedenog lijevo od njega s nizom uzoraka navedenim desno. Vrijednost izraza mora biti tipa string. Ako vrijednost izraza odgovara uzorku, rezultat operatora bit će TRUE, inače će biti FALSE.

Sljedeći znakovi u nizu predloška su službeni znakovi i imaju različito značenje od znakova niza:

  • % (postotak): niz koji sadrži bilo koji broj proizvoljnih znakova;
  • _ (podvlaka): jedan proizvoljan znak;
  • […] (jedan ili više znakova u uglatim zagradama): svaki pojedinačni znak naveden unutar uglatih zagrada. Nabrajanje može sadržavati raspone, na primjer a-z, što znači proizvoljni znak uključen u raspon, uključujući krajeve raspona;
  • [^...] (u uglatim zagradama znak negacije iza kojeg slijedi jedan ili više znakova): bilo koji pojedinačni znak osim onih navedenih iza znaka negacije.

Bilo koji drugi simbol znači sam za sebe i ne nosi nikakvo dodatno opterećenje. Ako jedan od navedenih znakova treba biti napisan kao sam, tada mu mora prethoditi<Спецсимвол>. Sebe<Спецсимвол>(bilo koji prikladan znak) definiran je u istoj izjavi nakon ključne riječi SPECIAL CHARACTER.

Implementirano u verziji 8.3.6.1977.

Proširili smo skup funkcija dizajniranih za rad s nizovima. Učinili smo to kako bismo vam dali naprednije alate za raščlanjivanje podataka niza. Nove funkcije bit će prikladne i korisne u tehnološkim zadacima analize teksta. U zadacima koji se odnose na raščlanjivanje teksta koji sadrži podatke u oblikovanom obliku. To može biti analiza nekih datoteka primljenih od opreme ili, na primjer, analiza tehnološkog dnevnika.

Prije ste mogli izvoditi sve radnje koje izvode nove funkcije. Korištenje više ili manje složenih algoritama napisanih na ugrađenom jeziku. Stoga vam nove funkcije ne daju nikakve fundamentalno nove mogućnosti. Međutim, oni vam omogućuju smanjenje količine koda i čine ga jednostavnijim i razumljivijim. Osim toga, omogućuju vam da ubrzate izvršenje radnji. Budući da funkcije implementirane u platformu rade, naravno, brže od sličnog algoritma napisanog na ugrađenom jeziku.

Funkcija oblikovanja StrTemplate()

Ova funkcija zamjenjuje parametre u niz. Potreba za takvom pretvorbom često se javlja, primjerice, prilikom prikaza poruka upozorenja. Sintaksa ove funkcije je sljedeća:

StrTemplate(<Шаблон>, <Значение1-Значение10>)

<Шаблон>- ovo je niz u koji trebate zamijeniti prikaze parametara.

<Значение1> , ... <Значение10>- to su parametri (maksimalno deset), čiji se prikazi moraju zamijeniti u nizu.

Da biste označili određeno mjesto u predlošku na kojem želite izvršiti zamjenu, morate koristiti markere kao što su %1, ... %10. Broj markera uključenih u predložak i broj parametara koji sadrže vrijednosti moraju se podudarati.

Na primjer, rezultat izvršavanja takvog operatora:

bit će redak:

Pogreška podataka u retku 2 (potrebna vrsta datuma)

Funkcija za rad sa stringovima StrCompare()

Ova funkcija uspoređuje dva niza na način koji ne razlikuje velika i mala slova. Na primjer, ovako:

Mogli biste izvršiti istu radnju ranije koristeći objekt Usporedba vrijednosti:

Međutim, korištenje nove značajke izgleda lakše. Osim toga, funkcija, za razliku od objekta usporedbe vrijednosti, radi iu tankom klijentu iu web klijentu.

Funkcije za rad sa stringovima StrStartsWith(), StrEndsAt()

Ove funkcije određuju počinje li niz određenim podnizom ili završava li niz navedenim podnizom. Algoritam za ove funkcije nije teško implementirati u ugrađeni jezik, ali njihova prisutnost omogućuje pisanje čišćeg i razumljivijeg koda. I rade brže.

Na primjer, prikladni su za korištenje u If izjavi:

Funkcije za rad sa stringovima StrDivide(), StrConnect()

Ove funkcije dijele niz na dijelove pomoću određenog graničnika. Ili obrnuto, kombiniraju nekoliko redaka u jedan, umetajući odabrani razdjelnik između njih. Pogodni su za izradu ili analizu dnevnika i tehnoloških dnevnika. Na primjer, možete lako raščlaniti unos tehnološkog dnevnika na dijelove prikladne za daljnju analizu:

Funkcija za rad sa stringovima StrFind()

Umjesto stare funkcije Find(), implementirali smo novu funkciju koja ima dodatne mogućnosti:

  • Traži u različitim smjerovima (od početka, od kraja);
  • Pretraživanje s određene pozicije;
  • Potražite pojavu s određenim brojem (drugi, treći itd.).

Zapravo, duplicira mogućnosti stare funkcije. Ovo je učinjeno kako bi se održala kompatibilnost s modulima kompajliranim u starijim verzijama. Preporuča se da više ne koristite staru funkciju Find().

Dolje je primjer korištenja novih mogućnosti pretraživanja. Obrnuto pretraživanje je korisno kada vam je potreban posljednji dio formaliziranog niza, kao što je puni naziv datoteke u URL-u. A pretraživanje s određenog položaja pomaže u slučajevima kada trebate pretraživati ​​u poznatom fragmentu, a ne u cijelom retku.

Redovi u 1C 8.3 u ugrađenom jeziku 1C predstavljaju vrijednosti primitivnog tipa Crta. Vrijednosti ove vrste sadrže Unicode niz proizvoljne duljine. Varijable tipa string skup su znakova u navodnicima.

Primjer 1. Kreirajmo string varijablu s tekstom.

StringVariable = "Zdravo svijete!";

Funkcije za rad sa stringovima u 1s 8.3

Ovaj odjeljak pružit će glavne funkcije koje vam omogućuju promjenu linija u 1c ili analizu podataka sadržanih u njima.

StrLength

StrLength(<Строка>) . Vraća broj znakova sadržanih u nizu proslijeđenom kao parametar.

Primjer 2. Izbrojimo broj znakova u retku “Hello world!”

String = "Zdravo svijete!"; BrojZnakova = StrLength(String); Izvješće (Brojevi znakova);

Rezultat izvršavanja ovog koda bit će prikaz broja znakova u retku: 11.

AbbrL

AbbrL(<Строка>) . Skraćuje nevažne znakove lijevo od prvog značajnog znaka u nizu.
Sporedni likovi:

  • prostor;
  • neprekinuti prostor;
  • tabeliranje;
  • povrat prtljage;
  • linijski prijevod;
  • prijevod obrasca (stranica).

Primjer 3. Uklonite sve razmake s lijeve strane retka "world!" i dodajte joj redak "Zdravo".

String = skraćenica("svijet!"); String = "Hello"+String; Izvješće (niz);

Rezultat izvršavanja ovog koda bit će prikaz retka "Hello world!" na ekranu.

Skraćeno

Skraćenica(<Строка>) . Skraćuje nevažne znakove s desne strane prvog značajnog znaka u nizu.

Primjer 4. Formirajte iz redaka "Hello" i "peace!" izraz "Zdravo svijete!"

Redak = Skraćenica("Zdravo ")+" "+ Skraćenica(" svijet!"); Izvješće (niz);

AbbrLP

AbbrLP(<Строка>) . Skraćuje beznačajne znakove s desne strane prvog značajnog znaka u nizu, a također izrezuje beznačajne znakove s lijeve strane prvog značajnog znaka u nizu. Ova se funkcija koristi češće od prethodne dvije jer je univerzalnija.

Primjer 5. Uklonite beznačajna slova lijevo i desno u nazivu druge ugovorne strane.

Counterparty = imenici Counterparties.Find By Details("TIN", "0777121211"); AccountObject = Account.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); AccountObject.Write();

Lav

Lav(<Строка>, <ЧислоСимволов>) . Dobiva prve znakove niza, broj znakova naveden je u parametru Broj znakova.

Primjer 6. Neka u strukturi Zaposlenik sadrže ime, prezime i patronim zaposlenika. Uzmite niz s prezimenom i inicijalima.

NameInitial = Lev(Employee.Name, 1); Inicijal patronimika = Leo(Zaposlenik. Patronimik, 1); Puno ime = Zaposlenik.Prezime + " " + Početno ime + "." + Srednje početno slovo + ".";

Pravo

Pravo(<Строка>, <ЧислоСимволов>) . Dobiva posljednje znakove niza, broj znakova navedenih u parametru Broj znakova. Ako navedeni broj znakova premašuje duljinu niza, vraća se cijeli niz.

Primjer 7. Neka datum u formatu “ggggmmdd” bude napisan na kraju string varijable, dobijte niz s datumom i pretvorite ga u tip datum.

String = "Trenutni datum: 20170910"; StringDate = Prava(String, 8); Datum = Datum(StringDate);

srijeda

Srijeda(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Dobiva podniz iz niza proslijeđenog kao parametar Crta, počevši od znaka čiji je broj naveden u parametru Početni broj a duljina prešla u parametar Broj znakova. Numeriranje znakova u retku počinje od 1. Ako je u parametru Početni broj navedena je vrijednost manja ili jednaka nuli, tada parametar ima vrijednost 1. Ako je parametar Broj znakova nije navedeno, tada se odabiru znakovi do kraja retka.

Primjer 8. Neka string varijabla počevši od devete pozicije sadrži kod regije, trebali biste ga dobiti i napisati u posebnom redu.

String = "Regija: 99 Moskva"; Regija = Prosj. (niz, 9, 2);

PageFind

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Traži određeni podniz u nizu, vraćajući broj pozicije prvog znaka pronađenog podniza. Pogledajmo parametre ove funkcije:

  • Crta. Izvorni niz;
  • Traži podniz. Podniz za pretraživanje;
  • Smjer pretraživanja. Određuje smjer traženja podniza u nizu. Može uzeti vrijednosti:
    • Smjer pretraživanja. Od početka;
    • Search.End Direction;
  • Početni položaj. Određuje poziciju u nizu na kojoj počinje pretraga;
  • NumberOccurrences. Određuje broj pojavljivanja pretraženog podniza u izvornom nizu.

Primjer 9. U retku "Hello world!" Odredite mjesto posljednjeg pojavljivanja znaka "i".

PositionNumber = StrFind("Zdravo svijete!", "and", SearchDirection.End); Izvještaj(BrojPozicije);

Rezultat izvršavanja ovog koda bit će prikaz broja zadnjeg pojavljivanja simbola "i": 9.

VReg

VReg(<Строка>) . Pretvara sve znakove u navedenom nizu u 1s8 u velika slova.

Primjer 10: Pretvorite niz "hello world!" na velika slova.

StringVreg = VReg("zdravo svijete!"); Izvješće (StringVreg);

Rezultat izvršavanja ovog koda bit će prikaz retka "HELLO WORLD!"

NReg

NReg(<Строка>) . Pretvara sve znakove u navedenom nizu u 1s8 u mala slova.

Primjer 11: Pretvorite niz "HELLO WORLD!" malim slovima.

StringNreg = NReg("ZDRAVO SVIJETE!"); Izvješće (StringVreg);

Rezultat izvršavanja ovog koda bit će prikaz retka "zdravo svijetu!"

Treg

TReg(<Строка>) . Pretvara niz na sljedeći način: prvi znak svake riječi pretvara se u velika slova, a preostali znakovi riječi pretvaraju se u mala slova.

Primjer 12: Napišite velikim početnim slovima riječi u retku "zdravo svijete!"

StringTreg = TReg("zdravo svijete!"); Izvješće(StringTreg);

Rezultat izvršavanja ovog koda bit će prikaz retka "Hello World!"

Simbol

Simbol(<КодСимвола>) . Dobiva znak prema njegovom Unicode kodu.

Primjer 13. Dodajte lijevo i desno retku "Hello World!" simbol ★

StringWithStars = Symbol("9733")+"Hello World!"+Symbol("9733"); Izvješće (niz sa zvjezdicama);

Rezultat izvršavanja ovog koda bit će prikaz retka "★Hello World!★"

Šifra simbola

SimbolKod(<Строка>, <НомерСимвола>) . Dobiva kod Unicode znaka iz niza navedenog u prvom parametru, koji se nalazi na poziciji navedenoj u drugom parametru.

Primjer 14. Saznajte kod posljednjeg znaka u retku "Hello World!"

String = "Hello World!"; Šifra znaka = Šifra znaka (niz, dužina niza (niz)); Obavijesti(CharacterCode);

Rezultat izvršavanja ovog koda bit će prikaz koda simbola “!” - 33.

Prazna linija

Prazna linija (<Строка>) . Provjerava da li se niz sastoji samo od beznačajnih znakova, odnosno da li je prazan.

Primjer 15. Provjeriti je li niz koji se sastoji od tri razmaka prazan.

Empty = EmptyString(" "); Izvješće (prazno);

Rezultat izvršavanja ovog koda bit će prikaz riječi "Da" (string izraz logičke vrijednosti Pravi).

PageReplace

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Pronalazi sva pojavljivanja podniza za pretraživanje u izvornom nizu i zamjenjuje ga zamjenskim podnizom.

Primjer 16. U retku "Hello World!" riječ “Mir” zamijeniti riječju “Prijatelji”.

String = StrReplace("Zdravo svijete!", "Svijete", "Prijatelji"); Izvješće (niz);

Rezultat izvršavanja ovog koda bit će prikaz retka "Zdravo prijatelji!"

StrBrojLines

StrNumberRow(<Строка>) . Omogućuje brojanje redaka u nizu s više redaka. Za prelazak na novi redak u 1s 8, koristite simbol P.S(znak novog retka).

Primjer 17. Odredite broj redaka u tekstu:
"Prvi red
Druga linija
Treća linija"

Broj = StrNumberString("Prvi red"+Znakovi.PS +"Drugi red"+Simboli.PS +"Treći red"); Izvješće (Broj);

Rezultat izvršavanja ovog koda bit će prikaz broja redaka u tekstu: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Dobiva redak u nizu s više reda prema njegovom broju. Numeriranje redaka počinje od 1.

Primjer 18. Dobiti zadnji red u tekstu:
"Prvi red
Druga linija
Treća linija"

Tekst = "Prvi red" + "Drugi red" + "Treći red". ZadnjiRed = StrGetRow(Tekst, StrBrojReda(Tekst)); Izvješće (Zadnji red);

Rezultat izvršavanja ovog koda bit će prikaz retka "Treći red".

PageNumberOccurrences

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Vraća broj pojavljivanja navedenog podniza u nizu. Funkcija je osjetljiva na velika i mala slova.

Primjer 19. Odredite koliko se puta slovo “c” pojavljuje u retku “Lines in 1s 8.3 and 8.2”, bez obzira na velika i mala slova.

Linija = "Linije u 1s 8.3 i 8.2"; BrojPojava = StrBrojPojava(Vreg(Niz), "C"); Izvješće (Broj pojavljivanja);

Rezultat izvršavanja ovog koda bit će prikaz broja pojavljivanja: 2.

Stranica počinje s

StrStartsWith(<Строка>, <СтрокаПоиска>) . Provjerava počinje li niz proslijeđen u prvom parametru nizom u drugom parametru.

Primjer 20. Utvrditi da li PIB odabrane druge ugovorne strane počinje brojem 1. Upisati varijablu Protustranka Protustranke.

TIN = Suprotna ugovorna strana.TIN; StartsUNits = StrStartsWith(TIN, "1"); If Započinje jedinicama Then //Vaš kod EndIf;

PageEndsOn

StrEndsWith(<Строка>, <СтрокаПоиска>) . Provjerava završava li niz proslijeđen u prvom parametru nizom u drugom parametru.

Primjer 21. Utvrditi da li PIB odabrane druge ugovorne strane završava brojem 2. Upisati varijablu Protustranka pohranjuje se referenca na element imenika Protustranke.

TIN = Suprotna ugovorna strana.TIN; EndsWithTwo = StrEndsWith(TIN, "2"); If EndsInTwo Then //Vaš kod EndIf;

PageSplit

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Rastavlja niz u dijelove pomoću navedenih znakova za razdvajanje i zapisuje dobivene nizove u polje. Prvi parametar pohranjuje izvorni niz, drugi sadrži niz koji sadrži razdjelnik, a treći označava trebaju li prazni znakovi biti upisani u niz (prema zadanim postavkama Pravi).

Primjer 22. Neka imamo niz koji sadrži brojeve odvojene simbolom “;”, dobijemo niz brojeva iz niza.

Niz = "1; 2; 3"; Niz = StrDivide(Niz, ";"); For Count = 0 By Array.Quantity() - 1 pokušaj ciklusa Array[Count] = Number(AbbrLP(Array[Count])); Niz izuzetaka [Sch] = 0; EndAttemptsEndCycle;

Kao rezultat izvršenja dobit će se niz s brojevima od 1 do 3.

PageConnect

StrConnect(<Строки>, <Разделитель>) . Pretvara niz nizova iz prvog parametra u niz koji sadrži sve elemente niza odvojene graničnikom navedenim u drugom parametru.

Primjer 23. Koristeći niz brojeva iz prethodnog primjera, dobiti izvorni niz.

Za Račun = 0 Po Array.Quantity() - 1 ciklus Array[Act] = String(Array[Act]); EndCycle; Redak = StrConnect(niz, "; ");

Osnovne mogućnosti programskog jezika obično uključuju rad s brojevima i nizovima. Obično su ove značajke tvrdo kodirane u kod prevoditelja (ili su implementirane "osnovne" klase programskog jezika).

U 1C, sposobnost rada sa nizovima programirana je u samoj platformi. Danas ćemo pogledati značajke rada s 1C nizovima u programima na ugrađenom 1C jeziku.

Vrijednost linije 1C

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

Varijabla = "Zdravo, svijete!";

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

Varijabla = "Zdravo, svijete"!;

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

Varijabla = "Pozdrav,
| svijet! ";

Drugi je korištenje nabrajanja sustava simbola. Omogućuje vam dodavanje prijeloma redaka 1C i drugih znakova koji se ne ispisuju, kao što je TAB.

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

3. Konfiguracije u 1C mogu se razviti ne samo za jedan jezik (ruski, engleski ili drugi) - već istovremeno za nekoliko jezika. U ovom slučaju, trenutno korišteni jezik odabran je na dnu prozora 1C.

Popis jezika nalazi se u konfiguracijskom prozoru u grani General/Languages ​​​​. Svaki jezik ima kratki identifikator kao što je ru ili hrv.

Jasno je da kod programiranja takve konfiguracije 1C linije također mogu biti višejezične. Da biste to učinili, moguće je stvoriti takvu 1C liniju određivanjem kroz; opcije prema identifikatoru jezika:

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

Ako koristite ovako oblikovanu liniju 1C kao i obično, tada će biti ono što je u njoj napisano. Kako bi ga sustav podijelio u dvije opcije i koristio željenu, potrebno je koristiti NStr() funkciju:

//ispravno za dvojezične konfiguracije
Izvješće(NSr(varijabla));

Rekviziti sa strunom tipa 1C

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

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

1C linije dolaze u neograničenoj duljini (označeno kao duljina = 0) i ograničenoj duljini, koja označava točan broj znakova. 1C redovi neograničene duljine pohranjuju se u zasebnu SQL tablicu, tako da je njihova upotreba manje produktivna od ograničenih.

Zato korištenje 1C nizova neograničene duljine ima svoja ograničenja - nije ih moguće koristiti svugdje. Na primjer, nije dopušten kao broj dokumenta, referentni kod ili mjera.

Rad s 1C nizovima

Postoji nekoliko ugrađenih funkcija 1C platforme za rad s nizovima.

  • AbbrLP ("Nevjerojatno, ali istinito!")
    Uklanja dodatne razmake iz retka 1C. Također se može koristiti za pretvaranje bilo koje vrste u 1C niz (na primjer, brojeve).
  • Varijabla = "Vasya" + AbbrLP(" plus") + "Olya"; //bit će "Vasya plus Olya"
    Primjer zbrajanja nekoliko vrijednosti niza 1C. Rezultat će biti jedna linija 1C.
  • Varijabla = Lev("Glazba", 2); //bit će "Mu"
    Varijabla = Medium("Glazba", 2, 2); //bit će "prijetnja"
    Varijabla = Prava("Glazba", 2); //bit će "ka"
    Razne opcije za dobivanje podniza iz niza 1C.
  • Varijabla = Find("Glazba", "zy"); //bit će 3
    Potražite podniz u nizu 1C, počevši od znaka 1.
  • Varijabla = StrLength("Glazba"); //bit će 6
    Vraća broj znakova u retku 1C.
  • Izvješće ("Hello") //u prozoru s porukom na dnu prozora 1C
    Upozorenje("Zdravo") //skočni dijaloški okvir
    Status("Hello") //u retku prikaza statusa dolje lijevo
    .

Dovođenje objekata na liniju 1C

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

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

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

Za direktorij prema zadanim postavkama, ovo će biti njegov naziv. Za dokument – ​​naziv dokumenta, broj i datum.

2. Bilo koji 1C objekt (s ograničenjima) može se pretvoriti u XML i obrnuto. Proces pretvorbe naziva se serijalizacija.

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

3. Postoji vlastiti način 1C platforme za pretvaranje bilo kojeg 1C objekta u niz. Migrirao je iz verzije 1C 7.7. Ovaj format ne razumiju drugi programi, ali drugi 1C ga razumiju, što olakšava njegovu upotrebu za razmjenu između 1C baza podataka.

Redak = ValueInRowInt(Value1C); //dobi niz 1C iz vrijednosti 1C
ValueVFile("C:\MyFile.txt", Vrijednost1C); //druga opcija, dobivamo datoteku sa spremljenim nizom iz 1C vrijednosti
Vrijednost1C = VrijednostIzStringInt(Niz); //natrag s linije 1C
Value1C = ValueFile("C:\MyFile.txt"); //nazad iz datoteke

Uređivanje 1C linija na obrascu

Osim rada s nizovima 1C u programu na jeziku 1C, naravno da bih želio da ih korisnik može uređivati. 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 = "";
Redak = EnterValue(varijabla, "Unesite puno ime");

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

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

  • Potvrdni okvir Višeredni način uređivanja
  • Potvrdni okvir za napredno uređivanje (dostupan ako je potvrđen prethodni potvrdni okvir)
  • Potvrdni okvir Način zaporke (pogledajte).

4. Ako vam sve mogućnosti polja za unos nisu dovoljne, postoji ugrađeni uređivač. Da biste ga dodali u obrazac, trebate dodati polje tekstualnog dokumenta u izbornik Form/Insert Control. U njegovim svojstvima možete odrediti način rada – svojstvo Extension.

Polje tekstualnog dokumenta ne može se izravno povezati s podacima. Potrebno je napisati funkciju u OnOpen() obrađivaču događaja obrasca (vidi):

Elementi obrasca.ImeElementaTekstDokumentPolje.PostaviTekst(StringValue); //ovdje je ValueString tekst primljen, na primjer, od atributa

A u rukovatelju spremanjem - na primjer, u gumbu Spremi - dodajte spremanje:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //Vrijednost Redak ovdje je atribut u koji spremamo vrijednost

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


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

  • U 1C objekt čiji obrazac kreiramo (imenik, dokument, obrada itd.) - dodajte atribut s tipom Pohrana vrijednosti
  • 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 poslužitelju

    FormattedDocument = CurrentObject.Attributes.Get();
    Kraj postupka

  • U funkciji BeforeWritingOnServer() ili pomoću gumba ispisat ćemo tekst iz polja

    &Na poslužitelju
    Procedura prilikom čitanja na poslužitelju (trenutni objekt)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Kraj postupka

Najbolji članci na temu