Nowe funkcje do pracy z ciągami znaków. Nowe funkcje do pracy z ciągami znaków 1c konwersja na ciąg

Podstawowe możliwości języka programowania zwykle obejmują pracę z liczbami i ciągami znaków. Zwykle te funkcje są zakodowane na stałe w kodzie kompilatora (lub implementowane są „podstawowe” klasy języka programowania).

W 1C możliwość pracy z ciągami jest programowana w samej platformie. Dzisiaj przyjrzymy się funkcjom pracy z ciągami 1C w programach we wbudowanym języku 1C.

Wartość linii 1C

1. Zacznijmy od najprostszego. Utworzenie zmiennej i przypisanie jej stałej wartości ciągu wygląda tak w 1C:

Variable = "Witaj, świecie!";

Jeśli chcesz określić cudzysłów w stałej wartości ciągu 1C, musisz go podwoić „”

Zmienna = "Witaj, świecie"!;

2. Podział linii 1C można określić na dwa sposoby jednocześnie. Pierwszym z nich jest użycie symbolu |

Zmienna = „Witam,
| świat! ";

Drugi polega na użyciu wyliczenia systemowego Symbols. Umożliwia dodawanie zarówno znaków podziału linii 1C, jak i innych znaków niedrukowalnych, takich jak TAB.

Zmienna = „Witam” + Symbole.PS + „pokój!”;

3. Konfiguracje w 1C można opracowywać nie tylko dla jednego języka (rosyjski, angielski lub inny) - ale jednocześnie dla kilku języków. W takim przypadku aktualnie używany język wybiera się na dole okna 1C.

Lista języków znajduje się w oknie konfiguracyjnym w gałęzi Ogólne/Języki. Każdy język ma krótki identyfikator, np ru Lub inż.

Oczywiste jest, że podczas programowania takiej konfiguracji linie 1C mogą być również wielojęzyczne. Aby to zrobić, można utworzyć taką linię 1C, określając przez; opcje według identyfikatora języka:

Variable = "ru=""Witaj, świecie! ""; en=""Witaj, świecie! """;

Jeśli użyjesz linii 1C utworzonej w ten sposób jak zwykle, będzie to to, co jest w niej napisane. Aby system podzielił to na dwie opcje i użył tej żądanej, należy skorzystać z funkcji НStr():

//poprawne dla konfiguracji dwujęzycznych
Raport(NStr(zmienna));

Rekwizyty z linią typu 1C

Atrybut jest polem w katalogu/dokumencie 1C. Różni się od zmiennej w programie w języku 1C tym, że dla atrybutu jest dokładnie wskazany jej typ (liczba, ciąg 1C itp.). Jeśli chcesz odświeżyć sobie pamięć o tym, czym jest rekwizyt, obejrzyj lekcję dalej.

Jeśli określisz typ atrybutu - linia 1C, musisz dodatkowo określić parametry.

Linie 1C mają nieograniczoną długość (oznaczoną jako długość = 0) i ograniczoną długość, wskazującą dokładną liczbę znaków. Wiersze 1C o nieograniczonej długości są przechowywane w osobnej tabeli SQL, więc ich użycie jest mniej produktywne niż ograniczone.

Dlatego użycie strun 1C o nieograniczonej długości ma swoje ograniczenia - nie da się ich zastosować wszędzie. Na przykład nie jest dozwolony jako numer dokumentu, kod referencyjny lub pomiar.

Praca ze strunami 1C

Istnieje kilka wbudowanych funkcji platformy 1C do pracy z ciągami znaków.

  • AbbrLP („Niesamowite, ale prawdziwe!”)
    Usuwa dodatkowe spacje z linii 1C. Można go również użyć do konwersji dowolnych typów na ciąg 1C (na przykład liczby).
  • Zmienna = „Wasja” + AbbrLP(” plus”) + „Ola”; //będzie „Wasja i Ola”
    Przykład sumowania kilku wartości ciągu 1C. Rezultatem będzie jedna linia 1C.
  • Zmienna = Lev("Muzyka", 2); //będzie "Mu"
    Zmienna = Średnia("Muzyka", 2, 2); //będzie „zagrożenie”
    Zmienna = Prawa("Muzyka", 2); //będzie „ka”
    Różne opcje uzyskania podciągu z ciągu 1C.
  • Zmienna = Find("Muzyka", "zy"); //będzie 3
    Wyszukaj podciąg w ciągu 1C, zaczynając od znaku 1.
  • Zmienna = StrLength("Muzyka"); //będzie 6
    Zwraca liczbę znaków w wierszu 1C.
  • Report("Hello") //w oknie wiadomości na dole okna 1C
    Alert("Witam") //wyskakujące okno dialogowe
    Status("Hello") //w linii wyświetlania statusu w lewym dolnym rogu
    .

Doprowadzenie obiektów do linii 1C

Jak wiadomo, obecnie najpopularniejszym formatem wymiany ustrukturyzowanych informacji jest XML. Nawet najnowsza wersja MS Office Word i Excel zapisuje pliki w tym formacie (odpowiednio docx i xlsx zmieniają rozszerzenie na zip, otwierają w archiwizatorze).

Platforma 1C do wymiany danych zapewnia kilka opcji, z których główną jest także XML.

1. Najprostszą metodą jest użycie funkcji Abbreviation() lub String(). W treści żądania można użyć funkcji REPRESENTACJA(). Wynik ich działania jest taki sam - generują dla użytkownika ciąg znaków reprezentujący dowolny obiekt 1C.

W przypadku katalogu domyślnie będzie to jego nazwa. Dla dokumentu – nazwa dokumentu, numer i data.

2. Dowolny obiekt 1C (z ograniczeniami) można przekonwertować na XML i odwrotnie. Proces konwersji nazywa się serializacją.

StringViewXml = XMLString(Wartość); //pobierz XML z wartości 1C
Wartość1C = XMLValue(Typ("DirectoryLink.Nomenklatura"),TypeStringXml); //pobierz wartość 1C z ciągu XML, musisz określić typ 1C, który powinien zostać odebrany

3. Istnieje własny sposób platformy 1C na konwersję dowolnego obiektu 1C na ciąg znaków. Migrowano z wersji 1C 7.7. Ten format nie jest rozumiany przez inne programy, ale inny 1C go rozumie, co ułatwia używanie go do wymiany między bazami danych 1C.

Wiersz = ValueInRowInt(Wartość1C); //pobierz ciąg 1C z wartości 1C
ValueVFile("C:\MójPlik.txt", Wartość1C); //inna opcja, otrzymamy plik z zapisanym ciągiem znaków z wartości 1C
Wartość1C = WartośćOdStringInt(Ciąg); //powrót z linii 1C
Wartość1C = PlikWartości("C:\MójPlik.txt"); //powrót z pliku

Edycja linii 1C w formularzu

Oprócz pracy z ciągami 1C w programie w języku 1C, oczywiście chciałbym, aby użytkownik mógł je edytować. Istnieje kilka możliwości:

1. Najłatwiej jest poprosić o wprowadzenie linii 1C na żądanie. Tę metodę stosuje się podczas nauczania programowania 1C, w życiu jest ona używana znacznie rzadziej (ale jest używana!).

Zmienna = „”;
Row = EnterValue(Zmienna, „Wprowadź pełne imię i nazwisko”);

2. Aby wyświetlić szczegóły obiektu 1C (katalog/dokument) lub szczegóły formularza (patrz), najczęściej używane jest pole wejściowe. Jest to najpopularniejsze narzędzie w 1C, umożliwiające użytkownikowi pracę z polami edycyjnymi.

3. Możliwości pola wejściowego można rozszerzyć (zobacz właściwości pola wejściowego, kliknij je prawym przyciskiem myszy, więcej szczegółów):

  • Pole wyboru Tryb edycji wielowierszowej
  • Pole wyboru Zaawansowana edycja (dostępne, jeśli zaznaczono poprzednie pole wyboru)
  • Pole wyboru Tryb hasła (patrz).

4. Jeśli wszystkie możliwości pola wejściowego nie są dla Ciebie wystarczające, istnieje wbudowany edytor. Aby dodać go do formularza należy dodać Pole Dokumentu Tekstowego do menu Form/Wstaw Kontrolę. We właściwościach możesz określić jego tryb działania – właściwość Rozszerzenie.

Pole dokumentu tekstowego nie może być bezpośrednio powiązane z danymi. Konieczne jest napisanie funkcji w obsłudze zdarzenia OnOpen() formularza (patrz):

Elementy formularza.ElementNameTextDocumentField.SetText(StringValue); //tutaj ValueString to tekst otrzymany na przykład z atrybutu

A w module obsługi zapisu - na przykład w przycisku Zapisz - dodaj zapis:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //WartośćLinia tutaj jest atrybutem, w którym zapisujemy wartość

5. W wersji 1C 8.2.11 w zarządzanych formularzach pojawiła się nowa opcja reprezentowania linii 1C - pole Dokument sformatowany.


Podobnie jak w przypadku dokumentu tekstowego, należy je ustawić podczas jego otwierania i zapisać podczas samodzielnego zapisywania za pomocą programu.

  • W obiekcie 1C, którego formę tworzymy (katalog, dokument, przetwarzanie itp.) - dodaj atrybut o typie Value Storage
  • W funkcji OnReadOnServer() ustawiamy tekst z atrybutu

    //tutaj atrybut jest dodanym atrybutem obiektu 1C
    //tutaj FormattedDocument to nazwa pola w formularzu do edycji
    &Na serwerze

    FormattedDocument = CurrentObject.Attributes.Get();
    Koniec procedury

  • W funkcji BeforeWritingOnServer() lub za pomocą przycisku napiszemy tekst z pola

    &Na serwerze
    Procedura podczas odczytu na serwerze (CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Koniec procedury

Wiersze w 1C 8.3 we wbudowanym języku 1C reprezentują wartości typu pierwotnego Linia. Wartości tego typu zawierają ciąg Unicode o dowolnej długości. Zmienne typu string to zbiór znaków ujętych w cudzysłów.

Przykład 1. Stwórzmy zmienną typu string zawierającą tekst.

StringVariable = "Witaj, świecie!";

Funkcje do pracy z ciągami znaków w 1s 8.3

W tej sekcji zostaną przedstawione główne funkcje, które pozwalają zmieniać linie w 1c lub analizować zawarte w nich informacje.

Długość str

Długość siły(<Строка>) . Zwraca liczbę znaków zawartych w ciągu znaków przekazanym jako parametr.

Przykład 2. Policzmy liczbę znaków w wierszu „Witaj, świecie!”

String = "Witaj, świecie!"; LiczbaZnaków = StrLength(String); Raport (liczba znaków);

Efektem wykonania tego kodu będzie wyświetlenie liczby znaków w wierszu: 11.

SkrótL

SkrótL(<Строка>) . Przycina nieistotne znaki na lewo od pierwszego znaczącego znaku w ciągu.
Drobne znaki:

  • przestrzeń;
  • spacja nierozdzielająca;
  • tabulacja;
  • powrót karetki;
  • tłumaczenie liniowe;
  • tłumaczenie formularza (strony).

Przykład 3. Usuń wszystkie spacje z lewej strony wiersza „świat!” i dodaj do niego wiersz „Hello”.

String = skrót("świat!"); Ciąg = „Witam” + Ciąg; Raport (ciąg);

Efektem wykonania tego kodu będzie wyświetlenie na ekranie wiersza „Hello world!”.

W skrócie

Skrót(<Строка>) . Przycina nieistotne znaki na prawo od pierwszego znaczącego znaku w ciągu.

Przykład 4. Formularz z wierszy „Witam” i „pokój!” fraza „Witaj, świecie!”

Linia = skrót("Witam ")+" "+ skrót("świat!"); Raport (ciąg);

SkrótLP

skróconyLP(<Строка>) . Przycina nieistotne znaki na prawo od pierwszego znaczącego znaku w ciągu, a także przycina nieistotne znaki na lewo od pierwszego znaczącego znaku w ciągu. Ta funkcja jest używana częściej niż dwie poprzednie, ponieważ jest bardziej uniwersalna.

Przykład 5. Usuń nieistotne znaki po lewej i prawej stronie nazwy kontrahenta.

Kontrahent = Katalogi Kontrahenci.Wyszukaj według szczegółów("TIN", "0777121211"); ObiektKonta = Konto.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); ObiektKonta.Zapis();

Lew

Lew(<Строка>, <ЧислоСимволов>) . Pobiera pierwsze znaki ciągu, liczba znaków jest określona w parametrze Liczba znaków.

Przykład 6. Wpuść strukturę Pracownik zawierać imię, nazwisko i nazwisko pracownika. Uzyskaj ciąg znaków z nazwiskiem i inicjałami.

NameInitial = Lev(Employee.Name, 1); Inicjał patronimiczny = Lew (pracownik. Patronimiczny, 1); FullName = Pracownik.Nazwisko + " " + Inicjał imienia + "." + Środkowy inicjał + „.”;

Prawidłowy

Prawidłowy(<Строка>, <ЧислоСимволов>) . Pobiera ostatnie znaki ciągu, liczbę znaków określoną w parametrze Liczba znaków. Jeśli podana liczba znaków przekracza długość ciągu, zwracany jest cały ciąg.

Przykład 7. Niech na końcu zmiennej łańcuchowej zostanie zapisana data w formacie „rrrrmmdd”, pobierz ciąg znaków z datą i przekonwertuj go na typ data.

String = "Bieżąca data: 20170910"; StringDate = Prawa(Ciąg, 8); Data = Data(StringDate);

Środa

Środa(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Pobiera podciąg z ciągu przekazanego jako parametr Linia, zaczynając od znaku, którego numer jest określony w parametrze Numer początkowy i długość przekazana do parametru Liczba znaków. Numeracja znaków w linii zaczyna się od 1. Jeśli w parametrze Numer początkowy podano wartość mniejszą lub równą zero, wówczas parametr przyjmuje wartość 1. Jeżeli parametr Liczba znaków nie jest określony, wybierane są znaki do końca linii.

Przykład 8. Niech zmienna łańcuchowa zaczynająca się od dziewiątej pozycji zawiera kod regionu, należy go pobrać i zapisać w osobnej linii.

String = "Region: 99 Moskwa"; Region = Średnia (Ciąg, 9, 2);

Znajdź stronę

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Wyszukuje określony podciąg w ciągu, zwracając numer pozycji pierwszego znaku znalezionego podciągu. Przyjrzyjmy się parametrom tej funkcji:

  • Linia. Ciąg źródłowy;
  • Wyszukaj podciąg. Wyszukaj podciąg;
  • Kierunek wyszukiwania. Określa kierunek wyszukiwania podciągu w ciągu. Może przyjmować wartości:
    • Kierunek wyszukiwania. Od początku;
    • Szukaj. Kierunek końcowy;
  • Pozycja początkowa. Określa pozycję w ciągu, od której rozpoczyna się wyszukiwanie;
  • LiczbaWystąpień. Określa numer wystąpienia przeszukiwanego podciągu w ciągu źródłowym.

Przykład 9. W wierszu „Witaj, świecie!” Określ położenie ostatniego wystąpienia znaku „i”.

PositionNumber = StrFind("Witaj, świecie!", "i", SearchDirection.End); Raport (numer pozycji);

Efektem wykonania tego kodu będzie wyświetlenie numeru ostatniego wystąpienia symbolu „i”: 9.

VReg

VReg(<Строка>) . Konwertuje wszystkie znaki w określonym ciągu w formacie 1s8 na wielkie litery.

Przykład 10: Konwertuj ciąg „witaj świecie!” do wielkich liter.

StringVreg = VReg("Witaj, świecie!"); Raport(StringVreg);

Efektem wykonania tego kodu będzie wyświetlenie wiersza „HELLO WORLD!”

NReg

NReg(<Строка>) . Konwertuje wszystkie znaki określonego ciągu w postaci 1s 8 na małe litery.

Przykład 11: Konwertuj ciąg „HELLO WORLD!” na małe litery.

StringNreg = NReg("WITAJ ŚWIECIE!"); Raport(StringVreg);

Efektem wykonania tego kodu będzie wyświetlenie wiersza „hello world!”

Treg

TReg(<Строка>) . Konwertuje ciąg w następujący sposób: pierwszy znak każdego słowa jest konwertowany na wielkie litery, pozostałe znaki słowa są konwertowane na małe litery.

Przykład 12: Zacznij pisać wielkimi literami słowa w wierszu „witaj, świecie!”

StringTreg = TReg("Witaj, świecie!"); Raport (StringTreg);

Efektem wykonania tego kodu będzie wyświetlenie wiersza „Hello World!”

Symbol

Symbol(<КодСимвола>) . Pobiera znak według jego kodu Unicod.

Przykład 13. Dodaj lewą i prawą stronę do linii „Hello World!” symbol ★

StringWithStars = Symbol("9733")+"Witaj świecie!"+Symbol("9733"); Raport(StringWithStars);

Efektem wykonania tego kodu będzie wyświetlenie wiersza „★Hello World!★”

Kod symbolu

Kod symbolu (<Строка>, <НомерСимвола>) . Pobiera kod znaku Unicode z ciągu określonego w pierwszym parametrze, znajdującego się w pozycji określonej w drugim parametrze.

Przykład 14. Znajdź kod ostatniego znaku w wierszu „Hello World!”

String = "Witaj, świecie!"; CharacterCode = CharacterCode(String, StrLength(String)); Powiadom (kod znaku);

Efektem wykonania tego kodu będzie wyświetlenie kodu symbolicznego „!” - 33.

Pusta linia

Pusta linia (<Строка>) . Sprawdza, czy ciąg składa się tylko z nieistotnych znaków, czyli czy jest pusty.

Przykład 15. Sprawdź, czy ciąg składający się z trzech spacji jest pusty.

Pusty = PustyString(" "); Raport (pusty);

Efektem wykonania tego kodu będzie wyświetlenie słowa „Tak” (wyrażenie łańcuchowe o wartości logicznej PRAWDA).

StronaZastąp

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Znajduje wszystkie wystąpienia szukanego podciągu w ciągu źródłowym i zastępuje je podciągiem zastępczym.

Przykład 16. W wierszu „Hello World!” zastąp słowo „Pokój” słowem „Przyjaciele”.

String = StrReplace("Witaj świecie!", "Świecie", "Przyjaciele"); Raport (ciąg);

Efektem wykonania tego kodu będzie wyświetlenie wiersza „Hello Friends!”

Linie StrNumber

StrNumberRow(<Строка>) . Umożliwia zliczenie liczby linii w ciągu wielowierszowym. Aby przejść do nowej linii w 1s 8, użyj symbolu PS(znak nowej linii).

Przykład 17. Określ liczbę linii w tekście:
"Pierwsza linia
Druga linia
Trzecia linia”

Number = StrNumberString("Pierwsza linia"+Znaki.PS +"Druga linia"+Symbole.PS +"Trzecia linia"); Numer raportu);

Efektem wykonania tego kodu będzie wyświetlenie liczby linii tekstu: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Pobiera wiersz w ciągu wielowierszowym według jego numeru. Numeracja linii zaczyna się od 1.

Przykład 18. Pobierz ostatnią linijkę tekstu:
"Pierwsza linia
Druga linia
Trzecia linia”

Tekst = „Pierwsza linia” + Symbole PS + „Druga linia” + Symbole PS + „Trzecia linia”; LastRow = StrGetRow(Tekst, StrNumberLines(Tekst)); Raport (ostatnia linia);

Efektem wykonania tego kodu będzie wyświetlenie wiersza „Trzecia linia”.

Numer stronyWystąpienia

StrNumberWystąpienia(<Строка>, <ПодстрокаПоиска>) . Zwraca liczbę wystąpień określonego podciągu w ciągu. W funkcji rozróżniana jest wielkość liter.

Przykład 19. Określ, ile razy litera „c” pojawia się w wierszu „Wiersze w 1s 8.3 i 8.2”, niezależnie od jej wielkości.

Linia = „Linie w 1s 8,3 i 8,2”; NumberOccurrences = StrNumberOccurrences(Vreg(String), "C"); Raport (NumberWystąpień);

Efektem wykonania tego kodu będzie wyświetlenie liczby wystąpień: 2.

Strona zaczyna się od

StrZaczyna się z(<Строка>, <СтрокаПоиска>) . Sprawdza, czy ciąg znaków przekazany w pierwszym parametrze zaczyna się od ciągu z drugiego parametru.

Przykład 20. Ustal, czy NIP wybranego kontrahenta zaczyna się od cyfry 1. Wprowadź zmienną Kontrahent Kontrahenci.

NIP = Kontrahent.TIN; StartsUNits = StrStartsWith(TIN, „1”); Jeśli zaczyna się od jednostek, to //Twój kod EndIf;

Strona się kończy

STREnds With (<Строка>, <СтрокаПоиска>) . Sprawdza, czy ciąg znaków przekazany w pierwszym parametrze kończy się ciągiem znaków w drugim parametrze.

Przykład 21. Ustal, czy NIP wybranego kontrahenta kończy się na cyfrę 2. Wprowadź zmienną Kontrahent przechowywane jest odwołanie do elementu katalogu Kontrahenci.

NIP = Kontrahent.TIN; EndsWithTwo = StrEndsWith(TIN, "2"); Jeśli EndsInTwo, to //Twój kod EndIf;

Podział strony

StrPodziel(<Строка>, <Разделитель>, <ВключатьПустые>) . Dzieli ciąg na części przy użyciu określonych znaków rozdzielających i zapisuje wynikowe ciągi w tablicy. Pierwszy parametr przechowuje ciąg źródłowy, drugi zawiera ciąg zawierający ogranicznik, a trzeci wskazuje, czy do tablicy mają być zapisywane puste ciągi (domyślnie PRAWDA).

Przykład 22. Weźmy ciąg zawierający liczby oddzielone symbolem „;”, pobierz tablicę liczb z ciągu.

Ciąg = "1; 2; 3"; Array = StrDivide(String, ";"); Dla Count = 0 Według Array.Quantity() - 1 próba cyklu Array[Count] = Number(AbbrLP(Array[Count])); Tablica wyjątków[Sch] = 0; EndAttemptsEndCycle;

W wyniku wykonania otrzymana zostanie tablica z liczbami od 1 do 3.

PageConnect

StrConnect(<Строки>, <Разделитель>) . Konwertuje tablicę ciągów z pierwszego parametru na ciąg zawierający wszystkie elementy tablicy oddzielone ogranicznikiem określonym w drugim parametrze.

Przykład 23. Korzystając z tablicy liczb z poprzedniego przykładu, uzyskaj oryginalny ciąg.

Dla konta = 0 według Array.Quantity() - 1 cykl Array[Act] = String(Array[Act]); Koniec cyklu; Wiersz = StrConnect(tablica, "; ");

Zaimplementowano w wersji 8.3.6.1977.

Rozszerzyliśmy zestaw funkcji przeznaczonych do pracy z ciągami znaków. Zrobiliśmy to, aby zapewnić bardziej zaawansowane narzędzia do analizowania danych łańcuchowych. Nowe funkcje będą wygodne i przydatne w technologicznych zadaniach analizy tekstu. W zadaniach związanych z analizowaniem tekstu zawierającego dane w sformatowanej formie. Może to być analiza niektórych plików otrzymanych ze sprzętu lub np. analiza dziennika technologicznego.

Można było wykonać wszystkie wcześniejsze akcje, które wykonywały nowe funkcje. Korzystanie z mniej lub bardziej skomplikowanych algorytmów napisanych w wbudowanym języku. Dlatego nowe funkcje nie dają żadnych zasadniczo nowych możliwości. Pozwalają jednak zmniejszyć ilość kodu i sprawić, że kod będzie prostszy i bardziej zrozumiały. Dodatkowo pozwalają przyspieszyć realizację działań. Ponieważ funkcje zaimplementowane w platformie działają oczywiście szybciej niż podobny algorytm napisany w wbudowanym języku.

Funkcja formatująca StrTemplate()

Ta funkcja zamienia parametry na ciąg znaków. Konieczność takiej konwersji często pojawia się np. przy wyświetlaniu komunikatów ostrzegawczych. Składnia tej funkcji jest następująca:

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

<Шаблон>- jest to ciąg znaków, w który należy podstawić reprezentacje parametrów.

<Значение1> , ... <Значение10>- są to parametry (maksymalnie dziesięć), których reprezentacje należy podstawić do ciągu znaków.

Aby wskazać konkretne miejsce w szablonie, w którym chcesz dokonać podstawienia, musisz użyć znaczników takich jak %1, ...%10. Liczba znaczników biorących udział w szablonie i liczba parametrów zawierających wartości muszą się zgadzać.

Przykładowo wynik wykonania takiego operatora:

będzie linijka:

Błąd danych w linii 2 (wymagany typ daty)

Funkcja do pracy z ciągami znaków StrCompare()

Ta funkcja porównuje dwa ciągi znaków bez uwzględniania wielkości liter. Na przykład tak:

Możesz wykonać tę samą akcję wcześniej, używając obiektu Porównanie wartości:

Jednak korzystanie z nowej funkcji wygląda na łatwiejsze. Poza tym funkcja, w przeciwieństwie do obiektu Porównanie wartości, działa zarówno w kliencie cienkim, jak i kliencie internetowym.

Funkcje do pracy z ciągami znaków StrStartsWith(), StrEndsAt()

Funkcje te określają, czy ciąg znaków zaczyna się od określonego podciągu, czy też kończy się na określonym podciągu. Algorytm dla tych funkcji nie jest trudny do zaimplementowania w języku osadzonym, ale ich obecność pozwala na pisanie czystszego i bardziej zrozumiałego kodu. I działają szybciej.

Na przykład wygodnie jest ich używać w instrukcji If:

Funkcje do pracy z ciągami znaków StrDivide(), StrConnect()

Funkcje te dzielą ciąg znaków na części przy użyciu określonego ogranicznika. Lub odwrotnie, łączą kilka linii w jedną, wstawiając między nie wybrany separator. Są wygodne do tworzenia lub analizowania logów i dzienników technologicznych. Można na przykład łatwo rozbić wpis dziennika technologicznego na części nadające się do dalszej analizy:

Funkcja do pracy z ciągami znaków StrFind()

Zamiast starej funkcji Find() zaimplementowaliśmy nową funkcję, która posiada dodatkowe możliwości:

  • Szukaj w różnych kierunkach (od początku, od końca);
  • Szukaj z określonej pozycji;
  • Wyszukaj wystąpienie o podanym numerze (drugi, trzeci itd.).

W rzeczywistości powiela możliwości starej funkcji. Odbywa się to w celu zachowania kompatybilności z modułami skompilowanymi w starszych wersjach. Zaleca się, aby nie używać już starej funkcji Find().

Poniżej znajduje się przykład wykorzystania nowych możliwości wyszukiwania. Wyszukiwanie odwrotne jest przydatne, gdy potrzebna jest ostatnia część sformalizowanego ciągu, na przykład pełna nazwa pliku w adresie URL. A wyszukiwanie od określonej pozycji pomaga w przypadkach, gdy trzeba szukać w znanym fragmencie, a nie w całej linii.

Cześć wszystkim
Dzisiaj poprosili mnie, abym nie wyświetlał przedrostka dokumentu podczas drukowania dokumentu wdrożeniowego, rozwiązałem problem w następujący sposób.

StrReplace(Numer, Lev(Numer, 3), "" );

Kiedy zajrzałem do asystenta składni, spodobał mi się tak bardzo, że chciałem o nim napisać praca z ciągami znaków w 1C:Enterprise.

Ciąg w 1C odnosi się do prymitywnego typu danych.

Jeśli spojrzysz na pomoc 1C, zobaczymy następujący opis typu String:
Wartości tego typu zawierają ciąg Unicode o dowolnej długości.
Jeśli użyjesz własnych słów na temat ciągów, zadziała. Łańcuch to stała składająca się z różnych znaków, zawsze otoczona cudzysłowami.

Ustawianie linii
Powitanie = „Witam, pasażerze”;

Linie wielowierszowe w typowych konfiguracjach tworzone są najczęściej przy użyciu pionowego separatora „|”:
String = "Wieloliniowy
|sznurek
|pisz
|tekst";

Znak cudzysłowu w ciągu znaków jest określany za pomocą podwójnych cudzysłowów.
String = ""Tekst w cudzysłowie"";

Operacji na ciągach znaków jest wiele (przeszukiwanie wnętrza ciągu, ustalanie pierwszych itp.), lepiej zajrzeć do Asystenta składni.
Pomocnik składni - Ogólny opis wbudowanego języka -> funkcje wbudowane -> funkcje do pracy z ciągami znaków.

Funkcje do pracy z ciągami znaków

Oto krótkie podsumowanie funkcji pracy z ciągami znaków:

VReg(<Строка>) — Funkcja konwertuje wszystkie znaki w ciągu znaków na wielkie litery.

Kod symbolu (<Строка>, <НомерСимвола>) – Funkcja odbiera kod znaku znajdującego się w przesyłanym ciągu znaków na pozycji o podanym numerze.

Lew(<Строка>, <ЧислоСимволов>) – Funkcja wybiera pierwsze lewe znaki ciągu.

Znajdować(<Строка>, <ПодстрокаПоиска>) — Funkcja znajduje wystąpienie szukanego ciągu jako podciągu w ciągu źródłowym.

NReg(<Строка>) — Funkcja konwertuje wszystkie znaki w ciągu na małe litery.

Prawidłowy(<Строка>, <ЧислоСимволов>) – Funkcja ta różni się od funkcji Left tym, że wybiera ostatnie znaki z prawej strony ciągu.

Pusta linia (<Строка>) — Funkcja sprawdza ciąg znaków pod kątem obecności znaków znaczących.

Symbol(<КодСимвола>) — Funkcja konwertuje kod znaku na ciąg zawierający ten znak.

SkrótL(<Строка>) — Funkcja odcina nieistotne znaki na lewo od pierwszego znaczącego znaku w ciągu.

skróconyLP(<Строка>) — Funkcja przycina nieistotne znaki na lewo od pierwszego znaczącego znaku w wierszu i spacje na prawo od ostatniego znaczącego znaku w wierszu.

Skrót(<Строка>) — Funkcja odcina nieistotne znaki na prawo od ostatniego znaczącego znaku w ciągu.

Środa(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) — Funkcja wybiera ciąg znaków, zaczynając od znaku<НачальныйНомер>, Łączna<ЧислоСимволов>.

Długość siły(<Строка>) — Funkcja pobiera liczbę znaków w wierszu.

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) — Funkcja znajduje wszystkie wystąpienia szukanego podciągu w ciągu źródłowym i zastępuje je podciągiem zastępczym.

StrGetString(<Строка>, <НомерСтроки>) - Funkcja pobiera ciąg wielowierszowy według liczby.

StrNumberWystąpienia(<Строка>, <ПодстрокаПоиска>) — Funkcja oblicza liczbę wystąpień szukanego podciągu w ciągu źródłowym.

StrNumberRow(<Строка>) — Funkcja zlicza liczbę linii w ciągu wielowierszowym. W ciągu wielowierszowym linie oddzielane są znakami nowej linii.

TReg(<Строка>) — Funkcja konwertuje ciąg znaków na wielkość liter tytułu. Oznacza to, że pierwszy znak każdego słowa jest konwertowany na wielkość liter w tytule lub na wielką literę, jeśli wielkość liter w tytule nie została określona dla znaku. Pozostałe znaki są konwertowane na małe litery.

Wpisz konwersje
Do jawnej konwersji typów danych służą funkcje o tej samej nazwie z typem danych, na który odbywa się konwersja: String(<Значение>)

StringFromNumbers = String(Numer);

Wszystkie te funkcje zostały szczegółowo opisane w Asystencie składni, w jaki sposób Asystent składni może pomóc początkującemu programiście opisałem w artykule.

Przykłady pracy z ciągami znaków

Konwersja liczby na ciąg znaków i odwrotnie.

Aby uzyskać ciąg znaków reprezentujący rok, użyj funkcji Format.

Rok = Format(CurrentDate(), „DF=rrrr”) // Rok = „2012”

Aby zamienić liczbę na ciąg znaków bez wstawiania znaku oddzielającego grupę (spacji nierozdzielającej), należy skorzystać z funkcji Format z parametrem NG=0:

Liczba = 2012 Linia = Format(Numer, „NH=0” ); //Ciąg = „2012”

Ciąg Bez spacji.