Неправилен брой категории в изходния ред 1c. Нови функции за работа с низове

Неправилен брой категории в изходния ред 1c.  Нови функции за работа с низове
Неправилен брой категории в изходния ред 1c. Нови функции за работа с низове

Основните възможности на езика за програмиране обикновено включват работа с числа и низове. Обикновено тези характеристики са твърдо кодирани в кода на компилатора (или са внедрени „базовите“ класове на езика за програмиране).

В 1C възможността за работа с низове е програмирана в самата платформа. Днес ще разгледаме характеристиките на работата с 1C низове в програми на вградения език 1C.

Стойност на линията 1C

1. Да започнем с най-простото. Създаването на променлива и присвояването на постоянна стойност на низ изглежда така в 1C:

Променлива = "Здравей, свят!";

Ако трябва да зададете символ за кавички в постоянна стойност на 1C низ, тогава трябва да го удвоите ""

Променлива = "Здравей, свят"!;

2. Прекъсване на ред 1C може да бъде зададено по два начина едновременно. Първият е използването на символа |

Променлива = "Здравейте,
| свят! ";

Второто е използването на системното изброяване на символите. Тя ви позволява да добавяте както 1C прекъсвания на редове, така и други непечатаеми символи, като TAB.

Променлива = "Здравей" + Символи.PS + "мир!";

3. Конфигурациите в 1C могат да бъдат разработени не само за един език (руски, английски или друг) - но едновременно за няколко езика. В този случай текущият използван език е избран в долната част на прозореца 1C.

Списъкът с езици се намира в прозореца за конфигурация в клона Общи/Езици. Всеки език има кратък идентификатор като напр ruили инж.

Ясно е, че при програмиране на такава конфигурация 1C линиите също могат да бъдат многоезични. За да направите това, е възможно да създадете такава линия 1C, като посочите чрез; опции по езиков идентификатор:

Променлива = "ru=""Здравей, свят! ""; en=""Здравей, свят! """;

Ако използвате линията 1C, образувана по този начин, както обикновено, тогава ще бъде това, което е написано в нея. За да може системата да го раздели на две опции и да използва желаната, трябва да използвате функцията НStr():

//правилно за двуезични конфигурации
Доклад(NSr(Променлива));

Подпори с линия тип 1C

Атрибутът е поле в директорията/документа на 1C. Тя се различава от променлива в програма на езика 1C по това, че за атрибута е точно посочен нейният тип (число, 1C низ и т.н.). Ако трябва да опресните паметта си какво е реквизит, гледайте урока нататък.

Ако посочите типа атрибут - ред 1C, тогава трябва допълнително да посочите параметрите.

Редовете 1C се предлагат с неограничена дължина (посочена като дължина = 0) и ограничена дължина, указваща точния брой знаци. 1C линиите с неограничена дължина се съхраняват в отделен SQL таблица, така че използването им е по-малко продуктивно, отколкото ограничено.

Ето защо използването на 1C низове с неограничена дължина има своите ограничения - не е възможно да се използват навсякъде. Например не е позволено като номер на документ, референтен код или измерване.

Работа с 1C низове

Има няколко вградени функции на платформата 1C за работа с низове.

  • AbbrLP („Невероятно, но вярно!“)
    Премахва се от линия 1C допълнителни пространства. Може също да се използва за конвертиране на всякакви типове в 1C низ (например числа).
  • Променлива = "Вася" + AbbrLP(" плюс") + "Оля"; //ще има "Вася плюс Оля"
    Пример за сумиране на няколко стойности на 1C низ. Резултатът ще бъде един ред 1C.
  • Променлива = Лев("Музика", 2); //ще бъде "Му"
    Променлива = Средна ("Музика", 2, 2); //ще има "заплаха"
    Променлива = Права ("Музика", 2); //ще има "ка"
    Различни опции за получаване на подниз от низ 1C.
  • Променлива = Find("Музика", "zy"); // ще има 3
    Търсене на подниз в низ 1C, като се започне от символ 1.
  • Променлива = StrLength("Музика"); // ще има 6
    Връща броя знаци в реда 1C.
  • Доклад ("Здравей") // в прозореца за съобщения в долната част на прозореца 1C
    Alert("Hello") //изскачащ диалогов прозорец
    Status("Hello") //в реда за показване на състоянието долу вляво
    .

Привеждане на обекти в линия 1C

Както знаете, най-популярният формат за обмен на структурирана информация в момента е XML. Дори последна версияГ-ЦА Office Wordи Excel запазват файлове в този формат (docx и xlsx, съответно, променете разширението на zip, отворете в архиватор).

Платформата 1C за обмен на данни предоставя няколко опции, основната от които също е XML.

1. Най-простият метод е да използвате функцията Abbreviation() или String(). Можете да използвате функцията REPRESENTATION() в тялото на заявката. Резултатът от тяхното действие е същият - те генерират низово представяне на всеки 1C обект за потребителя.

За директория по подразбиране това ще бъде нейното име. За документ – име, номер и дата на документа.

2. Всеки 1C обект (с ограничения) може да бъде конвертиран в XML и обратно. Процесът на преобразуване се нарича сериализация.

StringViewXml = XMLString(стойност); //вземете XML от 1C стойност
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); //вземете 1C стойността от XML низа, трябва да посочите типа 1C, който трябва да бъде получен

3. Има собствен начин на платформата 1C за конвертиране на всеки 1C обект в низ. Мигрира от версия 1C 7.7. Този формат не се разбира от други програми, но други 1C го разбират, което улеснява използването му за обмен между 1C бази данни.

Ред = ValueInRowInt(Value1C); //вземете низ 1C от стойност 1C
ValueVFile("C:\MyFile.txt", Value1C); // друга опция, получаваме файл със записан низ от стойността 1C
Value1C = ValueFromStringInt(String); //назад от ред 1C
Value1C = ValueFile("C:\MyFile.txt"); //назад от файл

Редактиране на 1C линии във формуляра

В допълнение към работата с 1C низове в програма на езика 1C, разбира се, бих искал потребителят да може да ги редактира. Има няколко възможности за това:

1. Най-лесният начин е да поискате въвеждането на линия 1C при поискване. Този метод се използва при преподаване на програмиране на 1C, в живота се използва много по-рядко (но се използва!).

Променлива = "";
Ред = EnterValue(Променлива, "Въведете пълно име");

2. За да се покажат подробности за 1C обект (директория/документ) или подробности за формуляр (вижте), най-често се използва поле за въвеждане. Това е най-разпространеният инструмент в 1C за потребителя да работи с полета за редактиране.

3. Възможностите на полето за въвеждане могат да бъдат разширени (вижте свойствата на полето за въвеждане, Кликнете с десния бутонвърху него, повече подробности):

  • Квадратче за отметка Многоредов режим на редактиране
  • Квадратче за отметка за разширено редактиране (достъпно, ако предишното квадратче за отметка е отметнато)
  • Квадратче за отметка Режим на парола (вижте).

4. Ако всички възможности на полето за въвеждане не са ви достатъчни, има вграден редактор. За да го добавите към формуляра, трябва да добавите поле към контролното меню Form/Insert текстов документ. В свойствата му можете да посочите режима му на работа – свойството Разширение.

Поле на текстов документ не може да бъде свързано директно с данни. Необходимо е да напишете функция в манипулатора на събитие OnOpen() на формата (вижте):

Form Elements.ElementNameTextDocumentField.SetText(StringValue); //тук ValueString е текстът, получен например от атрибута

И в манипулатора за запазване - например в бутона Запазване - добавете запис:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //Стойност Редът тук е атрибутът, където запазваме стойността

5. В 1C версия 8.2.11, в контролирани форми, се появи нова възможност 1C редово представяне – форматирано поле на документа.


Подобно на полето на текстов документ, трябва да го зададете при отварянето му и да го запишете, когато го запазвате сами с помощта на програмата.

  • В обекта 1C, чиято форма създаваме (директория, документ, обработка и т.н.) - добавете атрибут с тип Съхранение на стойност
  • Във функцията OnReadOnServer() задаваме текста от атрибута

    // тук Атрибутът е добавеният атрибут на 1C обекта
    //тук FormattedDocument е името на полето във формата за редактиране
    &На сървъра

    FormattedDocument = CurrentObject.Attributes.Get();
    EndProcedure

  • Във функцията BeforeWritingOnServer() или чрез бутона ще напишем текста от полето

    &На сървъра
    Процедура при четене на сървър (текущ обект)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    EndProcedure

Редовете в 1C 8.3 във вградения език 1C представляват стойности от примитивен тип Линия. Стойности от този типсъдържа Unicode низ с произволна дължина. Променливите тип низ са набор от знаци, затворени в кавички.

Пример 1. Нека създадем низова променлива с текст.

StringVariable = "Здравей свят!";

Функции за работа с низове в 1s 8.3

Този раздел ще предостави основните функции, които ви позволяват да променяте редове в 1c или да анализирате информацията, съдържаща се в тях.

StrLength

StrLength(<Строка>) . Връща броя знаци, съдържащи се в низа, подаден като параметър.

Пример 2. Нека преброим броя на знаците в реда „Здравей свят!“

String = "Здравей свят!"; NumberofCharacters = StrLength(String); Доклад (число знаци);

Резултатът от изпълнението на този код ще бъде показването на броя знаци в реда: 11.

AbbrL

AbbrL(<Строка>) . Изрязва незначещите знаци отляво на първия значим знак в низа.
Второстепенни герои:

  • пространство;
  • непрекъсваемо пространство;
  • табулиране;
  • връщане на карета;
  • редов превод;
  • превод на формуляра (страница).

Пример 3. Премахнете всички интервали от лявата страна на реда "свят!" и добавете реда „Здравей“ към него.

Низ = Съкращение ("свят!"); String = "Hello"+String; Доклад (низ);

Резултатът от изпълнението на този код ще бъде показването на реда „Hello world!“ на екрана.

Съкратено

съкращение (<Строка>) . Изрязва незначещите знаци отдясно на първия значим знак в низа.

Пример 4. Формирайте от редовете „Здравей“ и „мир!“ фразата „Здравей свят!“

Ред = Съкращение("Здравей ")+" "+ Съкращение("свят!"); Доклад (низ);

AbbrLP

AbbrLP(<Строка>) . Изрязва незначещите знаци отдясно на първия значим знак в низа и също така изрязва незначещите знаци отляво на първия значим знак в низа. Тази функциясе използва по-често от предишните две, тъй като е по-универсален.

Пример 5. Премахване на незначещите знаци отляво и отдясно в името на контрагента.

Контрагент = Директории. Контрагенти. Намери по детайли ("TIN", "0777121211"); AccountObject = Account.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); AccountObject.Write();

лъв

Лъв(<Строка>, <ЧислоСимволов>) . Получава първите знаци от низа, броят на знаците е посочен в параметъра Брой знаци.

Пример 6. Нека в структурата служителсъдържат собственото, фамилното и бащиното име на служителя. Вземете низ с фамилия и инициали.

NameInitial = Lev(Employee.Name, 1); Бащино име = Лео (Служител. Бащино име, 1); Пълно име = Employee.LastName + " " + FirstName Initial + "." + Среден инициал + ".";

вярно

точно(<Строка>, <ЧислоСимволов>) . Получава последните знаци от низ, броя на знаците, посочени в параметъра Брой знаци.Ако зададеният брой знаци надвишава дължината на низа, тогава се връща целият низ.

Пример 7. Нека датата във формат "ггггммдд" бъде записана в края на низова променлива, вземете низ с датата и го преобразувайте във вид дата.

низ = " Текущата дата: 20170910"; StringDate = Права(String, 8); Дата = Дата(StringDate);

сряда

сряда(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Получава подниз от низа, предаден като параметър Линия, започвайки от знака, чийто номер е посочен в параметъра Начален номери дължината, предадена в параметъра Брой знаци.Номерирането на знаците в ред започва от 1. Ако в параметъра Начален номере зададена стойност, по-малка или равна на нула, тогава параметърът приема стойност 1. Ако параметърът Брой знацине е указано, тогава се избират знаци до края на реда.

Пример 8. Нека низовата променлива, започваща от деветата позиция, съдържа регионалния код, трябва да го получите и да го запишете на отделен ред.

String = "Регион: 99 Москва"; Регион = ср.(низ, 9, 2);

PageFind

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Търси определен подниз в низ, връщайки номера на позицията на първия знак от намерения подниз. Нека да разгледаме параметрите на тази функция:

  • Линия. Изходен низ;
  • Подниз за търсене. Подниз за търсене;
  • Посока на търсене. Указва посоката за търсене на подниз в низ. Може да приема стойности:
    • Посока на търсене. От началото;
    • Search.End Direction;
  • Начална позиция. Указва позицията в низа, от която започва търсенето;
  • NumberOccurrences. Указва номера на срещане на търсения подниз в изходния низ.

Пример 9. В реда "Hello world!" Определете позицията на последното срещане на знака "и".

PositionNumber = StrFind("Здравей свят!", "и", SearchDirection.End); Доклад (номер на позиция);

Резултатът от изпълнението на този код ще бъде показване на номера на последното срещане на символа „и“: 9.

VReg

VReg(<Строка>) . Преобразува всички знаци в посочения низ в 1s8 в главни букви.

Пример 10: Преобразуване на низа "hello world!" до главни букви.

StringVreg = VReg("здравей свят!"); Доклад (StringVreg);

Резултатът от изпълнението на този код ще бъде показването на реда „HELLO WORLD!“

NReg

NReg(<Строка>) . Преобразува всички знаци от посочения низ в 1s 8 в малки букви.

Пример 11: Преобразуване на низа "HELLO WORLD!" до малки букви.

StringNreg = NReg("HELLO WORLD!"); Доклад (StringVreg);

Резултатът от изпълнението на този код ще бъде показването на реда „здравей свят!“

Трег

TReg(<Строка>) . Преобразува низ по следния начин: първият знак от всяка дума се преобразува в главни букви, останалите знаци от думата се преобразуват в малки букви.

Пример 12: Напишете с главни букви първите букви на думите в реда „здравей свят!“

StringTreg = TReg("здравей свят!"); Доклад(StringTreg);

Резултатът от изпълнението на този код ще бъде показването на реда "Hello World!"

Символ

символ (<КодСимвола>) . Получава знак чрез неговия Unicode код.

Пример 13. Добавете ляво и дясно към реда „Hello World!“ символ ★

StringWithStars = Symbol("9733")+"Hello World!"+Symbol("9733"); Доклад(StringWithStars);

Резултатът от изпълнението на този код ще бъде показването на реда „★Hello World!★“

Код на символа

Символен код(<Строка>, <НомерСимвола>) . Получава кода на символа Unicode от низа, посочен в първия параметър, разположен на позицията, посочена във втория параметър.

Пример 14. Разберете кода на последния знак в реда „Hello World!“

String = "Здравей свят!"; Код на символ = Код на символ (низ, дължина на низа (низ)); Известяване (Код на символ);

Резултатът от изпълнението на този код ще бъде показването на символния код “!” - 33.

Празен ред

Празен ред(<Строка>) . Проверява дали низът се състои само от незначещи знаци, тоест дали е празен.

Пример 15. Проверете дали низ, състоящ се от три интервала, е празен.

Empty = EmptyString(" "); Доклад (празен);

Резултатът от изпълнението на този код ще бъде показването на думата „Да“ (низов израз с логическа стойност Вярно).

PageReplace

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Намира всички срещания на търсения подниз в изходния низ и го заменя със заместващия подниз.

Пример 16. В реда "Hello World!" заменете думата „Мир“ с думата „Приятели“.

String = StrReplace("Здравей свят!", "Свят", "Приятели"); Доклад (низ);

Резултатът от изпълнението на този код ще бъде показването на реда „Здравейте приятели!“

StrNumberLines

StrNumberRow(<Строка>) . Позволява ви да преброите броя на редовете в многоредов низ. Да отидеш до нова линияв 1s 8 се използва символът PS(знак за нов ред).

Пример 17. Определете броя на редовете в текста:
"Първа линия
Втора линия
Трети ред"

Number = StrNumberString("Първи ред"+Characters.PS +"Втори ред"+Symbols.PS +"Трети ред"); Доклад (номер);

Резултатът от изпълнението на този код ще бъде показването на броя редове в текста: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Получава ред в многоредов низ по неговия номер. Номерацията на редовете започва от 1.

Пример 18. Вземете последния ред в текста:
"Първа линия
Втора линия
Трети ред"

Текст = "Първи ред" + Символи PS + "Втори ред" + Символи PS + "Трети ред"; LastRow = StrGetRow(Текст, StrNumberLines(Текст)); Доклад (последен ред);

Резултатът от изпълнението на този код ще бъде показването на реда „Трети ред“.

PageNumberOccurrences

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Връща броя на срещанията на посочения подниз в низ. Функцията е чувствителна към главни и малки букви.

Пример 19. Определете колко пъти се появява буквата „c“ в реда „Редове в 1s 8.3 и 8.2“, независимо от главния й регистър.

Line = "Редове в 1s 8.3 и 8.2"; NumberOccurrences = StrNumberOccurrences(Vreg(String), "C"); Доклад (Брой Случвания);

Резултатът от изпълнението на този код ще бъде показването на броя на срещанията: 2.

PageStartsWith

StrStartsWith(<Строка>, <СтрокаПоиска>) . Проверява дали низът, подаден в първия параметър, започва с низа във втория параметър.

Пример 20. Определете дали TIN на избрания контрагент започва с числото 1. Нека във променливата Контрагент Контрагенти.

TIN = Контрагент.TIN; StartsUNits = StrStartsWith(TIN, "1"); If Започва с единици Then //Вашият код EndIf;

PageEndsOn

StrEndsWith(<Строка>, <СтрокаПоиска>) . Проверява дали низът, предаден в първия параметър, завършва с низа във втория параметър.

Пример 21. Определете дали TIN на избрания контрагент завършва с числото 2. Нека във променливата Контрагентсе съхранява препратка към елемент от директория Контрагенти.

TIN = Контрагент.TIN; EndsWithTwo = StrEndsWith(TIN, "2"); If EndsInTwo Then //Вашият код EndIf;

PageSplit

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Разделя низ на части с помощта на посочените разделителни знаци и записва получените низове в масив. Първият параметър съхранява изходния низ, вторият низът, съдържащ разделителя, третият показва дали трябва да бъде записан в масива празни редове(по подразбиране Вярно).

Пример 22. Нека имаме низ, съдържащ числа, разделени със символа “;”, получаваме масив от числа от низа.

Низ = "1; 2; 3"; Array = StrDivide(String, ";"); За брой = 0 чрез Array.Quantity() - 1 опит за цикъл Array[Count] = Number(AbbrLP(Array[Count])); Изключение Array[Sch] = 0; EndAttemptsEndCycle;

В резултат на изпълнението ще се получи масив с числа от 1 до 3.

PageConnect

StrConnect(<Строки>, <Разделитель>) . Преобразува масива от низове от първия параметър в низ, съдържащ всички елементи на масива, разделени от разделителя, посочен във втория параметър.

Пример 23. Използвайки масива от числа от предишния пример, вземете оригиналния низ.

За сметка = 0 чрез Array.Quantity() - 1 цикъл Array[Act] = String(Array[Act]); EndCycle; Ред = StrConnect(Масив, "; ");

ЧАСТ 1. МЕТОДИ (26).

1.1. Основни методи (10). Независими, изградени на собствени прости алгоритми.

Page_Add() (дясно-ляво добавяне с определени знаци).

Page_Inverse () (инверсия - знаци от дясно на ляво).

Page_Codes() (кодове на знаци до ”,” и масив с кодове)

Page_Characters() (низ от кодове, разделени с ”,” или от масив с кодове)

Page_ReplaceSymbols() (замяна на някои символи с други).

String_FromArray() (низ от масив от фрагменти, разделени с разделител)

Page_FindIn() (търсене на подниз (включително вдясно) с указан номер на срещане).

Page_FindGr() (Търсене на група знаци, включени в посочения набор от знаци)

Page_FindNumber() (Търсене на число, включително вдясно с посочен номерсъбития)

Page_Interpret() (в масив, според установения синтаксис)

1.2. Производни методи (12). Всъщност това е използването на четири обобщени алгоритъмни метода (вижте част 2)

Page_Number() (от началото и от края на реда, не се „страхувайте“ от нецифрови знаци.

Page_Find() (търсене на подниз (включително нечувствителен към главни и малки букви и вдясно) с определен номер на срещане).

Page_Replace() (търсене (включително без значение за главни и малки букви и с дясна ръка) и замяна на разделителни поднизове).

String_Piece() (част от низ между посочените срещания на разделителя (ляв или десен)).

Page_ReplacePiece() (заменя “chunk” в изходния низ с посочения низ).

Page_ВArray() (между посочените срещания на разделителя (включително тези отдясно и без регистър).

Page_TransferBySyllables() (разделен на поднизове „Едва ли“, с тире).

Page_MoveByWords() (разделен на поднизове „Меко“)

Page_Cut() („Нарязване“ на поднизове с определени дължини)

Str_Shorten() (заменя лявата група от "съкратени" знаци с "низ за заместване"

Page_Abbreviation() (заменете дясната група от „намалени“ знаци с „низ за заместване“

Str_ShortenS() (замяна в средата на групата от „съкратени“ знаци с „низ за заместване“

Page_Extend (разширяване до определена дължина чрез увеличаване на броя на посочените знаци)

1.3. Подробни методи (3). "Разчленяване" на линия с прехвърляне към таблица с подробна информация.

Page_vTableIn() (в таблицата според системата от вложени разделители).

Page_vTableGr (към таблицата според многостепенен филтър).

Page_inTableNumbers (в таблица с числа и фрагменти между тях).

ЧАСТ 2. ОБОБЩЕНИ МЕТОДИ-АЛГОРИМИ (3).

Page_Occurrence() (методи „Намиране“ и „Замяна“).

Page_Fragments() (методи “Piece”, “ReplacePiece,”InArray”,”inTableIn”).

Page_Abcr() (методи "AbcrL", "AbcrP", "AbcrS", "Разгъване".

Page_Split() (методи „Преместване по срички“, „Преместване по думи“, „Изрязване“).

ЧАСТ 3. УНИВЕРСАЛНА ФУНКЦИЯ.

Това е един вид интерфейс за условно програмиране, който позволява

приложете няколко метода към низ наведнъж. Изпълнен като

функции със седем параметъра („Демо“ е изградено върху тази функция):

Страница_(методи, подметоди, вход, параметър1, параметър2, дължина_номер_позиция, допълнителен изход)

Настроики:

- “Методи” - няколко “комбинирани” и (или) един “изключителен” метод

(кодове или имена от един знак, възможно чрез ",")

- “Подметоди” - няколко “комбинирани” и (или) “изключителни” опции

“изключителен” метод (еднобуквени кодове или имена);

- “Вход” - Низ, или Масив или Таблица със стойности;

- “Param1” - низ за търсене, замествания, разделители, филтри;

- “Param2” - заместващ низ или знаци;

- “Length_Number_Position” - Число, Числа чрез разделител или масив с Числа;

- “Допълнителен изход” - Число или низ или масив или таблица със стойности;

Имена и/или едносимволни кодове на подметоди, както и номера в

(Length_Number_Position) може да бъде във всеки случай и отделен

някой от следните разделители: ”, :;”.

ЧАСТ 4. НЯКОЛКО ПРИМЕРИ.

Има NumbersInLine=(Str_FindNumber(InLine)<>Недефиниран);

Има числа в ред = (String_FindGr(Inline,"+0123456789")>0);

Има латински = (Str_FindGr(InStr, Str_Interpret("lL"))>0);

Има определени знаци = (Str_NfindGr(VxStr, "+to rogYu.0p9")>0);

IsNotPrinted=(Str_FindGr(InxStr, Line_Interpret("-l-L-r-R-P-Z-C"))>0);

ЧАСТ 5. ЗАКЛЮЧЕНИЕ.

Където беше възможно, се задоволявах с едно минаване по линията. Второто преминаване обикновено е на фрагменти. Не съм използвал вградената функция StrNumberOccurrences().

Използват се вградени функции: Left(), Right(), Middle(), StrLength()

- (позиционирането и получаването на част от линията трябва да бъде „бързо“).

Внедрено във версия 8.3.6.1977.

Разширихме набора от функции, предназначени за работа с низове. Направихме това, за да ви предоставим по-усъвършенствани инструменти за анализиране на низови данни. Новите функции ще бъдат удобни и полезни при технологични задачи за анализ на текст. В задачи, свързани с анализиране на текст, който съдържа данни във форматирана форма. Това може да бъде анализ на някои файлове, получени от оборудването, или например анализ на технологичен дневник.

Бихте могли да извършвате всички действия, които изпълняват нови функции преди. Използване на повече или по-малко сложни алгоритми, написани на вграден език. Следователно новите функции не ви дават принципно нови възможности. Те обаче ви позволяват да намалите количеството код и да направите кода по-опростен и разбираем. В допълнение, те ви позволяват да ускорите изпълнението на действията. Тъй като функциите, внедрени в платформата, работят, разбира се, по-бързо от подобен алгоритъм, написан на вграден език.

Функция за форматиране StrTemplate()

Тази функция замества параметри в низ. Необходимостта от такова преобразуване често възниква, например, когато се показват предупредителни съобщения. Синтаксисът за тази функция е както следва:

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

<Шаблон>- това е низът, в който трябва да замените представянията на параметрите.

<Значение1> , ... <Значение10>- това са параметри (максимум десет), чиито представяния трябва да бъдат заместени в низа.

За да посочите конкретно място в шаблона, където искате да извършите заместването, трябва да използвате маркери като %1, ... %10. Броят на маркерите, включени в шаблона, и броят на параметрите, съдържащи стойности, трябва да съвпадат.

Например резултатът от изпълнението на такъв оператор:

ще има ред:

Грешка в данните на ред 2 (изисква се тип дата)

Функция за работа с низове StrCompare()

Тази функция сравнява два низа без значение за главни и малки букви. Например така:

Можете да извършите същото действие по-рано, като използвате обекта за сравнение на стойности:

Използването на новата функция обаче изглежда по-лесно. И освен това, функцията, за разлика от обекта за сравнение на стойности, работи както в тънкия клиент, така и в уеб клиента.

Функции за работа с низове StrStartsWith(), StrEndsAt()

Тези функции определят дали даден низ започва с определен подниз или дали низът завършва с определен подниз. Алгоритъмът за тези функции не е труден за внедряване във вграден език, но тяхното присъствие ви позволява да пишете по-чист и по-разбираем код. И работят по-бързо.

Например, те са удобни за използване в израза If:

Функции за работа с низове StrDivide(), StrConnect()

Тези функции разделят низ на части с помощта на определен разделител. Или обратното, те комбинират няколко реда в един, като вмъкват избрания разделител между тях. Те са удобни за създаване или анализ на дневници и технологични дневници. Например, можете лесно да анализирате запис в технологичен дневник на части, подходящи за по-нататъшен анализ:

Функция за работа с низове StrFind()

Вместо старата функция Find(), внедрихме нова функция, която има допълнителни възможности:

  • Търсене в различни посоки (от началото, от края);
  • Търсене от определена позиция;
  • Търсене на събитие с определен номер (второ, трето и т.н.).

Всъщност тя дублира възможностите на старата функция. Това се прави, за да се поддържа съвместимост с модули, компилирани в по-стари версии. Препоръчително е вече да не използвате старата функция Find().

По-долу е даден пример за използване на новите възможности за търсене. Обратното търсене е полезно, когато имате нужда от последния фрагмент от формализиран низ, например, пълно имефайл в URL. И търсенето от определена позиция помага в случаите, когато трябва да търсите в известен фрагмент, а не в целия ред.

Бележки от „През огледалото“.

18.08.2014 г. Нови функции за работа с низове

Внедрено във версия 8.3.6.1977.

Разширихме набора от функции, предназначени за работа с низове. Направихме това, за да ви предоставим по-усъвършенствани инструменти за анализиране на низови данни. Новите функции ще бъдат удобни и полезни при технологични задачи за анализ на текст. В задачи, свързани с анализиране на текст, който съдържа данни във форматирана форма. Това може да бъде анализ на някои файлове, получени от оборудването, или например анализ на технологичен дневник.

Бихте могли да извършвате всички действия, които изпълняват нови функции преди. Използване на повече или по-малко сложни алгоритми, написани на вграден език. Следователно новите функции не ви дават принципно нови възможности. Те обаче ви позволяват да намалите количеството код и да направите кода по-опростен и разбираем. В допълнение, те ви позволяват да ускорите изпълнението на действията. Тъй като функциите, внедрени в платформата, работят, разбира се, по-бързо от подобен алгоритъм, написан на вграден език.

Функция за форматиране StrTemplate()

Тази функция замества параметри в низ. Необходимостта от такова преобразуване често възниква, например, когато се показват предупредителни съобщения. Синтаксисът за тази функция е както следва:

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

<Шаблон>- това е низът, в който трябва да замените представянията на параметрите.

<Значение1> , ... <Значение10>- това са параметри (максимум десет), чиито представяния трябва да бъдат заместени в низа.

За да посочите конкретно място в шаблона, където искате да извършите заместването, трябва да използвате маркери като %1, ... %10. Броят на маркерите, включени в шаблона, и броят на параметрите, съдържащи стойности, трябва да съвпадат.

Например резултатът от изпълнението на такъв оператор:

ще има ред:

Грешка в данните на ред 2 (изисква се тип дата)

Функция за работа с низове StrCompare()

Тази функция сравнява два низа без значение за главни и малки букви. Например така:

Можете да извършите същото действие по-рано, като използвате обекта Сравнение на стойностите:

Използването на новата функция обаче изглежда по-лесно. И освен това, функция, за разлика от обект Сравнение на стойностите, работи както в тънкия клиент, така и в уеб клиента.

Функции за работа с низове StrStartsWith(), StrEndsAt()

Тези функции определят дали даден низ започва с определен подниз или дали низът завършва с определен подниз. Алгоритъмът за тези функции не е труден за внедряване във вграден език, но тяхното присъствие ви позволява да пишете по-чист и по-разбираем код. И работят по-бързо.

Например, удобно е да ги използвате в оператора Ако:

Функции за работа с низове StrDivide(), StrConnect()

Тези функции разделят низ на части с помощта на определен разделител. Или обратното, те комбинират няколко реда в един, като вмъкват избрания разделител между тях. Те са удобни за създаване или анализ на дневници и технологични дневници. Например, можете лесно да анализирате запис в технологичен дневник на части, подходящи за по-нататъшен анализ:

Функция за работа с низове StrFind()

Вместо старата функция Намирам()Внедрихме нова функция, която има допълнителни възможности:

  • Търсене в различни посоки (от началото, от края);
  • Търсене от определена позиция;
  • Търсене на събитие с определен номер (второ, трето и т.н.).

Всъщност тя дублира възможностите на старата функция. Това се прави, за да се поддържа съвместимост с модули, компилирани в по-стари версии. Стара функция Намирам()Препоръчително е да не се използва повторно.

По-долу е даден пример за използване на новите възможности за търсене. Обратното търсене е полезно, когато имате нужда от последната част от формализиран низ, като например пълното име на файл в URL. И търсенето от определена позиция помага в случаите, когато трябва да търсите в известен фрагмент, а не в целия ред.