Раздели на сайта
Избор на редактора:
- Как да премахнете напълно Avast Програма за премахване на Avast
- Мобилно приложение aliexpress
- Подредба на клавиатурата QWERTY и AZERTY Специални версии на клавиатурата Dvorak
- Остров Сао Висенте Остров Сао Висенте
- Правила, които нарушаваме Добре ли е да поставите лактите си на масата
- Кои USB флашки са най-надеждни и най-бързи?
- Свързване на лаптоп към телевизор чрез USB кабел за свързване на лаптоп към VGA телевизор
- Промяна на интерфейса на Steam - от прости снимки до цялата презентация на екрана Нов дизайн на Steam
- Как да отмените абонамент за Megogo по телевизията: подробни инструкции Как да се отпишете от абонаменти за megogo
- Как да разделите диск с инсталиран Windows без загуба на данни Разделете диска 7
реклама
Нови функции за работа с низове. Нови функции за работа с низове Операции с низове 1в |
Има няколко механизма за работа с низове в 1C заявки. Първо могат да се добавят линиите. Второ, можете да вземете подниз от низ. Трето, низовете могат да се сравняват, включително по модел. Това вероятно е всичко, което може да се направи с низове. Добавяне на низовеЗа добавяне на редове в заявка се използва операцията „+“. Можете да добавяте само низове с ограничена дължина. ИЗБЕРЕТЕ "Име: " + Име на контрагенти 1 от директория КАТО контрагенти WHERE Връзка Поднизова функцияПОДНИЗ(<Строка>, <НачальнаяПозиция>, <Длина>) Аналог на функцията Environment() от обектния модел. Функцията Substring() може да се приложи към низови данни и ви позволява да изберете фрагмент <Строки> , започвайки с номера на знака <НачальнаяПозиция> (знаците в ред се номерират от 1) и дължина <Длина> герои. Резултатът от изчислението на функцията има тип низ с променлива дължина и дължината ще се счита за неограничена, ако <Строка> има неограничена дължина и параметър <Длина> не е константа или по-голямо от 1024. Ако дължината на низа е по-малка от зададената във втория параметър, тогава функцията ще върне празен низ. внимание!Не се препоръчва използването на функцията SUBSTRING() за преобразуване на низове с неограничена дължина в низове с ограничена дължина. Вместо това е по-добре да използвате cast оператора EXPRESS(). Функция ПодобнаАко трябва да се уверим, че атрибут на низ отговаря на определени критерии, ние го сравняваме: ИЗБЕРЕТЕ Контрагенти КАТО Колона 1 ОТ Указател КАТО Контрагенти WHERE Име = "Газпром". Но какво ще стане, ако имате нужда от по-фино сравнение? Не просто равенство или неравенство, а сходство с определен модел? Точно за това е създадена функцията SIMILAR. LIKE — Оператор за проверка на низ за сходство с модел. Аналог на LIKE в SQL. Операторът SIMILAR ви позволява да сравните стойността на израза, посочен вляво от него, с низа на модела, посочен вдясно. Стойността на израза трябва да е от тип низ. Ако стойността на израза съответства на модела, резултатът от оператора ще бъде TRUE, в противен случай ще бъде FALSE. Следните знаци в низа на шаблона са служебни знаци и имат значение, различно от символа на низа:
Всеки друг символ означава себе си и не носи допълнително натоварване. Ако един от изброените знаци трябва да бъде написан като себе си, тогава той трябва да бъде предшестван от<Спецсимвол>. себе си<Спецсимвол>(всеки подходящ знак) се дефинира в същия израз след ключовата дума SPECIAL CHARACTER. Бележки от „През огледалото“.18.08.2014 г. Нови функции за работа с низовеВнедрено във версия 8.3.6.1977. Разширихме набора от функции, предназначени за работа с низове. Направихме това, за да ви предоставим по-усъвършенствани инструменти за анализиране на низови данни. Новите функции ще бъдат удобни и полезни при технологични задачи за анализ на текст. В задачи, свързани с разбор на текст, който съдържа данни във форматиран вид. Това може да бъде анализ на някои файлове, получени от оборудването, или например анализ на технологичен дневник. Бихте могли да извършвате всички действия, които изпълняват нови функции преди. Използване на повече или по-малко сложни алгоритми, написани на вграден език. Следователно новите функции не ви дават принципно нови възможности. Те обаче ви позволяват да намалите количеството код и да направите кода по-опростен и разбираем. В допълнение, те ви позволяват да ускорите изпълнението на действията. Тъй като функциите, внедрени в платформата, работят, разбира се, по-бързо от подобен алгоритъм, написан на вграден език. Функция за форматиране StrTemplate()Тази функция замества параметри в низ. Необходимостта от такова преобразуване често възниква, например, когато се показват предупредителни съобщения. Синтаксисът за тази функция е както следва: StrTemplate(<Шаблон>, <Значение1-Значение10>) <Шаблон>- това е низът, в който трябва да замените представянията на параметрите. <Значение1> , ... <Значение10>- това са параметри (максимум десет), чиито представяния трябва да бъдат заместени в низа. За да посочите конкретно място в шаблона, където искате да извършите заместването, трябва да използвате маркери като %1, ... %10. Броят на маркерите, включени в шаблона, и броят на параметрите, съдържащи стойности, трябва да съвпадат. Например резултатът от изпълнението на такъв оператор: ще има ред: Грешка в данните на ред 2 (изисква се тип дата) Функция за работа с низове StrCompare()Тази функция сравнява два низа без значение за главни и малки букви. Например така: Можете да извършите същото действие по-рано, като използвате обекта Сравнение на стойностите: Използването на новата функция обаче изглежда по-лесно. И освен това, функция, за разлика от обект Сравнение на стойностите, работи както в тънкия клиент, така и в уеб клиента. Функции за работа с низове StrStartsWith(), StrEndsAt()Тези функции определят дали даден низ започва с определен подниз или дали низът завършва с определен подниз. Алгоритъмът за тези функции не е труден за внедряване във вграден език, но тяхното присъствие ви позволява да пишете по-чист и по-разбираем код. И работят по-бързо. Например, удобно е да ги използвате в оператора Ако: Функции за работа с низове StrDivide(), StrConnect()Тези функции разделят низ на части с помощта на определен разделител. Или обратното, те комбинират няколко реда в един, като вмъкват избрания разделител между тях. Те са удобни за създаване или анализ на дневници и технологични дневници. Например, можете лесно да анализирате запис в технологичен дневник на части, подходящи за по-нататъшен анализ: Функция за работа с низове StrFind()Вместо старата функция намери ()Внедрихме нова функция, която има допълнителни възможности:
Всъщност тя дублира възможностите на старата функция. Това се прави, за да се поддържа съвместимост с модули, компилирани в по-стари версии. Стара функция намери ()Препоръчително е да не се използва повторно. По-долу е даден пример за използване на новите възможности за търсене. Обратното търсене е полезно, когато имате нужда от последния фрагмент от формализиран низ, като например пълното име на файл в URL. И търсенето от определена позиция помага в случаите, когато трябва да търсите в известен фрагмент, а не в целия ред. Основните възможности на езика за програмиране обикновено включват работа с числа и низове. Обикновено тези характеристики са твърдо кодирани в кода на компилатора (или са внедрени „базовите“ класове на езика за програмиране). В 1C възможността за работа с низове е програмирана в самата платформа. Днес ще разгледаме характеристиките на работата с 1C низове в програми на вградения език 1C. Стойност на линията 1C 1. Да започнем с най-простото. Създаването на променлива и присвояването на постоянна стойност на низ изглежда така в 1C: Променлива = "Здравей, свят!"; Ако трябва да зададете символ за кавички в постоянна стойност на 1C низ, тогава трябва да го удвоите "" Променлива = "Здравей, свят"!; 2. Прекъсване на ред 1C може да бъде зададено по два начина едновременно. Първият е използването на символа | Променлива = "Здравейте, Второто е използването на системното изброяване на символите. Тя ви позволява да добавяте както 1C нов ред, така и други непечатаеми знаци, като TAB. Променлива = "Здравей" + Символи.PS + "мир!"; 3. Конфигурациите в 1C могат да бъдат разработени не само за един език (руски, английски или друг) - но едновременно за няколко езика. В този случай текущият използван език е избран в долната част на прозореца 1C. Списъкът с езици се намира в прозореца за конфигурация в клона Общи/Езици. Всеки език има кратък идентификатор като напр ruили инж. Ясно е, че при програмиране на такава конфигурация 1C линиите също могат да бъдат многоезични. За да направите това, е възможно да създадете такава линия 1C, като посочите чрез; опции по езиков идентификатор: Променлива = "ru=""Здравей, свят! ""; en=""Здравей, свят! """; Ако използвате линията 1C, образувана по този начин, както обикновено, тогава ще бъде това, което е написано в нея. За да може системата да го раздели на две опции и да използва желаната, трябва да използвате функцията НStr(): //правилно за двуезични конфигурации Подпори с линия тип 1C Атрибутът е поле в директорията/документа на 1C. Различава се от променлива в програма на езика 1C по това, че за атрибута е точно посочен нейният тип (число, 1C низ и т.н.). Ако трябва да опресните паметта си какво е реквизит, гледайте урока нататък. Ако посочите типа атрибут - ред 1C, тогава трябва допълнително да посочите параметрите. Редовете 1C се предлагат с неограничена дължина (посочена като дължина = 0) и ограничена дължина, указваща точния брой знаци. 1C редове с неограничена дължина се съхраняват в отделна SQL таблица, така че използването им е по-малко продуктивно от ограничените. Ето защо използването на 1C низове с неограничена дължина има своите ограничения - не е възможно да се използват навсякъде. Например не е позволено като номер на документ, референтен код или измерване. Работа с 1C низове Има няколко вградени функции на платформата 1C за работа с низове.
Привеждане на обекти в линия 1C Както знаете, най-популярният формат за обмен на структурирана информация в момента е XML. Дори най-новата версия на MS Office Word и Excel запазва файлове в този формат (docx и xlsx, съответно, променете разширението на zip, отворете в архиватор). Платформата 1C за обмен на данни предоставя няколко опции, основната от които също е XML. 1. Най-простият метод е да използвате функцията Abbreviation() или String(). Можете да използвате функцията REPRESENTATION() в тялото на заявката. Резултатът от тяхното действие е същият - те генерират низово представяне на всеки 1C обект за потребителя. За директория по подразбиране това ще бъде нейното име. За документ – име, номер и дата на документа. 2. Всеки 1C обект (с ограничения) може да бъде преобразуван в XML и обратно. Процесът на преобразуване се нарича сериализация. StringViewXml = XMLString(стойност); //вземете XML от 1C стойност 3. Има собствен начин на платформата 1C за конвертиране на всеки 1C обект в низ. Мигрира от версия 1C 7.7. Този формат не се разбира от други програми, но други 1C го разбират, което улеснява използването му за обмен между 1C бази данни. Ред = ValueInRowInt(Value1C); //вземете низ 1C от стойност 1C Редактиране на 1C линии във формуляра В допълнение към работата с 1C низове в програма на езика 1C, разбира се, бих искал потребителят да може да ги редактира. Има няколко възможности за това: 1. Най-лесният начин е да поискате въвеждането на линия 1C при поискване. Този метод се използва при преподаване на 1C програмиране; в живота се използва много по-рядко (но се използва!). Променлива = ""; 2. За да се покажат подробности за 1C обект (директория/документ) или подробности за формуляр (вижте), най-често се използва поле за въвеждане. Това е най-разпространеният инструмент в 1C за потребителя да работи с полета за редактиране. 3. Възможностите на полето за въвеждане могат да бъдат разширени (вижте свойствата на полето за въвеждане, щракнете с десния бутон върху него, повече подробности):
4. Ако всички възможности на полето за въвеждане не са ви достатъчни, има вграден редактор. За да го добавите към формуляра, трябва да добавите поле за текстов документ към менюто Form/Insert Control. В свойствата му можете да посочите режима му на работа – свойството Разширение. Поле на текстов документ не може да бъде свързано директно с данни. Необходимо е да напишете функция в манипулатора на събитие OnOpen() на формата (вижте): Form Elements.ElementNameTextDocumentField.SetText(StringValue); //тук ValueString е текстът, получен например от атрибута И в манипулатора за запазване - например в бутона Запазване - добавете запис: ValueString = FormElements.ElementNameTextDocumentField.GetText(); //Стойност Редът тук е атрибутът, където запазваме стойността 5. В 1C версия 8.2.11 в управляваните форми се появи нова опция за представяне на 1C линия - полето Форматиран документ. Подобно на полето на текстов документ, трябва да го зададете при отварянето му и да го запишете, когато го запазвате сами с помощта на програмата.
Типът String се среща във всички езици за програмиране. Той е примитивен и в 1C има много функции за работа с него. В тази статия ще разгледаме подробно различни начини за работа с типове низове в 1C 8.3 и 8.2, като използваме примери. ЛинияЗа да конвертирате променлива от всякакъв тип в низ, има функция със същото име „String()“. Входният параметър ще бъде самата променлива, чието низово представяне трябва да бъде получено.
Възможно е да се преобразуват не само примитивни типове в низ, но и други, например елементи на директории и документи. SokrLP, SokrL, SokrPВходните параметри на тези функции са променлива от низов тип. Функциите премахват незначещите знаци (интервали, връщане на каретка и т.н.): съответно от лявата и дясната страна, само от лявата страна и само отдясно.
Лъв, десен, среденТези функции ви позволяват да изрежете част от низ. Функцията "Left()" ще върне частта от низ от лявата му страна на указаната дължина. Функцията "Right()" е подобна, но изрязва отдясно. Функцията “Avg()” ви позволява да посочите номера на знака, от който ще бъде избран редът и неговата дължина.
StrLengthФункцията определя броя на символите, които се съдържат в низова променлива.
НамеретеФункцията дава възможност да се търси част от низ в низова променлива. Върнатата стойност ще бъде число, което показва позицията на началото на намерения низ. Ако не бъде намерено съвпадение, се връща нула. Моля, обърнете внимание, че търсенето е чувствително към главни и малки букви. Ако има повече от едно срещане на подниза за търсене в оригиналния низ, функцията ще върне началото на първото срещане.
EmptyStringИзползването на тази функция ви позволява да определите дали даден низ е празен. Второстепенни символи като интервал, връщане на каретка и други не се вземат предвид.
VReg, NReg, TRegТези функции са много полезни при сравняване и конвертиране на низови променливи. „Vreg()“ ще върне оригиналния низ с главни букви, „HPreg()“ с малки букви, а „TReg()“ ще го форматира така, че първият знак на всяка отделна дума да е с главни букви, а всички следващи знаци са с главни букви.
PageReplaceТази функция е аналогична на замяната в текстови редактори. Тя ви позволява да замените един знак или набор от знаци с друг в низови променливи.
StrNumberLinesФункцията ви позволява да определите броя на редовете, разделени с връщане на каретка в текстова променлива. Цикълът в примера по-долу ще премине през три кръга, защото функцията LineNumberRow ще върне стойността 3:
StrGetStringТази функция работи с многоредов текст по същия начин като предишната. Позволява ви да получите конкретен низ от текстова променлива.
PageNumberOccurrencesФункцията отчита броя на срещанията на знак или подниз в търсения низ.
Символ и символен кодТези функции ви позволяват да получите знак по неговия код в Unicode кодирането, както и да определите този код по самия знак.
Често срещани задачи при работа с низовеКонкатениране на низовеЗа да комбинирате няколко низа (за да извършите конкатенация), е достатъчно да използвате оператора за добавяне.
Тип преобразуванеЗа да конвертирате тип в низ, например връзка към елемент от директория, номер и т.н., е достатъчно да използвате функцията „String()“. Функции като “ScrLP()” също ще преобразуват променливи в низ, но незабавно с отрязване на незначителните знаци.
Моля, обърнете внимание, че когато преобразувате число в низ, програмата автоматично добавя интервал, разделящ хилядата. За да избегнете това, можете да използвате следните конструкции:
Кавички в низДоста често ще трябва да се справяте с необходимостта да посочите кавички в низова променлива. Това може да бъде или текстът на заявката, написан в конфигуратора, или просто променлива. За да разрешите този проблем, просто трябва да поставите две кавички.
Многоредов, нов редЗа да създадете многоредов текст, просто добавете нови редове (Symbols.PS) към него.
Как да премахнете интервалиЗа да премахнете интервали отдясно или отляво, можете да използвате функцията “ScrAP()” (както и “ScrL()” и “ScrP()”):
Ако след преобразуването на число в низ трябва да премахнете неразделящите се интервали, използвайте следната конструкция:
Програмистите също често използват следната конструкция, която ви позволява да премахнете или замените с друг знак всички интервали в текстова променлива:
Сравняване на низове един с другМожете да сравнявате термини с обичайния знак за равенство. Сравнението е чувствително към главни и малки букви.
Внедрено във версия 8.3.6.1977. Разширихме набора от функции, предназначени за работа с низове. Направихме това, за да ви предоставим по-усъвършенствани инструменти за анализиране на низови данни. Новите функции ще бъдат удобни и полезни при технологични задачи за анализ на текст. В задачи, свързани с разбор на текст, който съдържа данни във форматиран вид. Това може да бъде анализ на някои файлове, получени от оборудването, или например анализ на технологичен дневник. Бихте могли да извършвате всички действия, които изпълняват нови функции преди. Използване на повече или по-малко сложни алгоритми, написани на вграден език. Следователно новите функции не ви дават принципно нови възможности. Те обаче ви позволяват да намалите количеството код и да направите кода по-опростен и разбираем. В допълнение, те ви позволяват да ускорите изпълнението на действията. Тъй като функциите, внедрени в платформата, работят, разбира се, по-бързо от подобен алгоритъм, написан на вграден език. Функция за форматиране StrTemplate()Тази функция замества параметри в низ. Необходимостта от такова преобразуване често възниква, например, когато се показват предупредителни съобщения. Синтаксисът за тази функция е както следва: StrTemplate(<Шаблон>, <Значение1-Значение10>) <Шаблон>- това е низът, в който трябва да замените представянията на параметрите. <Значение1> , ... <Значение10>- това са параметри (максимум десет), чиито представяния трябва да бъдат заместени в низа. За да посочите конкретно място в шаблона, където искате да извършите заместването, трябва да използвате маркери като %1, ... %10. Броят на маркерите, включени в шаблона, и броят на параметрите, съдържащи стойности, трябва да съвпадат. Например резултатът от изпълнението на такъв оператор: ще има ред: Грешка в данните на ред 2 (изисква се тип дата) Функция за работа с низове StrCompare()Тази функция сравнява два низа без значение за главни и малки букви. Например така: Можете да извършите същото действие по-рано, като използвате обекта за сравнение на стойности: Използването на новата функция обаче изглежда по-лесно. И освен това, функцията, за разлика от обекта за сравнение на стойности, работи както в тънкия клиент, така и в уеб клиента. Функции за работа с низове StrStartsWith(), StrEndsAt()Тези функции определят дали даден низ започва с определен подниз или дали низът завършва с определен подниз. Алгоритъмът за тези функции не е труден за внедряване във вграден език, но тяхното присъствие ви позволява да пишете по-чист и по-разбираем код. И работят по-бързо. Например, те са удобни за използване в израза If: Функции за работа с низове StrDivide(), StrConnect()Тези функции разделят низ на части с помощта на определен разделител. Или обратното, те комбинират няколко реда в един, като вмъкват избрания разделител между тях. Те са удобни за създаване или анализ на дневници и технологични дневници. Например, можете лесно да анализирате запис в технологичен дневник на части, подходящи за по-нататъшен анализ: Функция за работа с низове StrFind()Вместо старата функция Find(), внедрихме нова функция, която има допълнителни възможности:
Всъщност тя дублира възможностите на старата функция. Това се прави, за да се поддържа съвместимост с модули, компилирани в по-стари версии. Препоръчително е вече да не използвате старата функция Find(). По-долу е даден пример за използване на новите възможности за търсене. Обратното търсене е полезно, когато имате нужда от последния фрагмент от формализиран низ, като например пълното име на файл в URL. И търсенето от определена позиция помага в случаите, когато трябва да търсите в известен фрагмент, а не в целия ред. |
Прочетете: |
---|
Нов
- Мобилно приложение aliexpress
- Подредба на клавиатурата QWERTY и AZERTY Специални версии на клавиатурата Dvorak
- Остров Сао Висенте Остров Сао Висенте
- Правила, които нарушаваме Добре ли е да поставите лактите си на масата
- Кои USB флашки са най-надеждни и най-бързи?
- Свързване на лаптоп към телевизор чрез USB кабел за свързване на лаптоп към VGA телевизор
- Промяна на интерфейса на Steam - от прости снимки до цялата презентация на екрана Нов дизайн на Steam
- Как да отмените абонамент за Megogo по телевизията: подробни инструкции Как да се отпишете от абонаменти за megogo
- Как да разделите диск с инсталиран Windows без загуба на данни Разделете диска 7
- Защо издателите не могат да редактират всички страници