Інтернет Windows Android

1з 8 видалити пробіли з рядка. Порівняння рядків між собою

Часто буває, що при завантаженні та вивантаженні з 1С 8.2 та 8.3 даних у числах зустрічаються прогалини, які заважають нормально обробляти дані. Вирішення цієї проблеми дуже просте.

Розглянемо, які бувають види прогалин.

Прогалини можуть бути двох видів:

  • нерозривний пробіл;
  • "звичайний" пробіл.

Забираємо нерозривні прогалини

СтроковеУявлення = Рядок(Число); // система запише до змінної «10 000»

Видалити такі прогалини в 1С дуже просто через функцію формату числа:

Число = Формат (10000, "ЧГ =");

СтроковеУявлення = Рядок(Число); // система запише до змінної «10000»

Ми встановили угруповання у форматному рядку Пусте значення (можна записати і «0»).

Якщо тип даних вже "рядок", тоді можна використовувати наступний спосіб:

РядковеУявлення = СтрЗаменить(Рядок(РядковеУявлення), Символи.НПП, «»); // у змінній СтроковеУявлення було «10 000», стало «10000»

Тобто ми просто замінили нерозривну прогалину (Символи.НПП) у рядку на порожнє значення.

Звичайні прогалини

Забрати звичайний пробіл у рядку простіше простого. Достатньо виконати таку функцію:

РядковеУявлення = СтрЗаменить(Рядок(РядковеУявлення), » «, «»); // "10 000", стало "10000"

Приклад аналогічний попередньому способу. Однак замість Символи.НПП ми використовуємо рядок з одним пропуском.

Якщо Ви починаєте вивчати програмування 1С, рекомендуємо наш безкоштовний курс (не забудьте підписатися на YouTube - Регулярно виходять нові відео).

FAQ чи платформа 8 для чайників.

Судячи з форумів, присвячених тематиці 1С, у програмістів, що вперше зіткнулися з платформою 1С v 8 або переходять з 7.7, часто виникають одні й ті самі питання. Тут я вирішив зібрати найчастіше зустрічаються, на мій погляд.

В:Як прибрати прогалину в числі 12 600,00?
В:Важливо розуміти, що тут використовується не символ пробілу, а так звана, «нерозривна пробіл», тому така, наприклад, конструкція:

СтрЗаменить(ЗміннаЧисло," ","");

працювати не буде. Існують два варіанти вирішення проблеми, або вказати для заміни замість пробілу Символи.НПП, або використовуючи функцію Формат().

СтрЗамінити (Змінна Число, Символи. НВП, ""); // 1-й варіант
Формат (Змінна Число, "ЧГ ="); // 2-й варіант

В:Як у запиті поставити умову таким чином, щоб у результуючу вибірку потрапили документи лише певного виду?
В:Це можна зробити за допомогою оператора мови запитів ПОСИЛАННЯ, який дозволяє перевірити, чи є значення виразу, вказаного ліворуч від нього, посиланням на таблицю, вказану праворуч. Розглянемо з прикладу, виберемо з регістру накопичення РеалізаціяПослуг лише записи, котрим реєстратором є документ РеализацияТоваровПослуг:

Запит=Новий Запит("
|ВИБРАТИ
| РеалізаціяПослуг.Реєстратор,
| РеалізаціяПослуг.Сума

| РеєстрНакопичення.РеалізаціяПослуг ЯК РеалізаціяПослуг
|ДЕ
| Реєстратор ПОСИЛАННЯ Документ.РеалізаціяТоварівПослуг");

В:Як перенести певні документи/довідники між ідентичними конфігураціями?
В:Це можна зробити за допомогою типової обробки ВивантаженняЗавантаженняДанихXML.epf, що поставляється на дисках ІТС.

В:Як перенести дані між різними конфігураціями (або з 7.7 до 8)?
В:Оптимальним варіантом, на мій погляд, є використання типової конфігурації «Конвертація даних», яка постачається на дисках ІТС, там же є кілька статей із описом використання цієї конфігурації.

В:Як у запиті додати до поля не рядкового типу певний рядок, наприклад ВИБРАТИ Реалізація Товарів Послуг. Сума + "крб."?
В:Ніяк. У запиті перетворення типів неможливе. Деяких вводить в оману конструкція мови запитів ВИРАЗИТИ, але вона лише наводить значення складового типу до одного зі складових це значення типів і, в жодному разі не перетворює тип, тому в цій ситуації не застосовується.

В:Як у запиті задати умову поля з типом рядок необмеженої довжини, наприклад, вибрати всі документи з певним коментарем?
В:Для цього необхідно обмежити довжину поля за допомогою оператора мови запитів ВИРАЗИТИ. Наприклад:

Запит=Новий Запит("
|ВИБРАТИ
| Реалізація ТоварівПослуг.

| Документ.РеалізаціяТоварівПослуг ЯК РеалізаціяТоварівПослуг
|ДЕ
| ВИРАЗИТИ(РеалізаціяТоварівПослуг.Коментар ЯК РЯДКУ(100)) = &Коментар");

В:Чи є аналог функції 7.7 КаталогИБ() в 8?
В:Ні, оскільки така функція не мала сенсу для клієнт-серверного режиму роботи. Тим не менш, для файлового режиму роботи можна отримати каталог інформаційної бази за допомогою наступної конструкції:

КаталогИБ=НСтр(РядокСполукиІнформаційноїБази(),"File");

В:Як вимкнути вузол від розподіленої інформаційної бази?
В:За допомогою наступної конструкції:

ПланиОбміну.ВстановитиГоловнийВузол(Невизначено);

Або запустити конфігуратор із параметром командного рядка /ResetMasterNode (для базових версій не використовується).

В:Як одержати ім'я документа (аналог методу 7.7 Вид())?
В:За допомогою метаданих. Наприклад:

В:Яким одним запитом вибрати документи всіх видів?
В:Використовуючи метадані та можливість об'єднання запиту В:

Запит = Новий Запит;
Текст = "";
Для кожного Документ З Метадані.Документи Цикл
Текст=Текст+"ВИБРАТИ Посилання З Документ."+Документ.Ім'я+"ОБ'ЄДНАТИ";
КінецьЦикл;
Запрос.Текст=Лев(Текст,СтрДліна(Текст)-СтрДліна("ОБ'ЄДНАТИ"));
Вибірка = Запит. Виконати (). Вибрати ();

В:Як перервати виконання звіту/обробки?
В:За допомогою оператора Обробка Переривання Користувача () рекомендується використовувати всередині циклів. При натисканні користувачем комбінації клавіш Ctrl+Break відбувається переривання виконання та видається відповідне повідомлення. Наприклад:

Поки Вибірка.Наступний() Цикл
Обробка Переривання Користувача ();

КінецьЦикл;

В:На формі є ТабличнеПоле з типом ДеревоЗначень та встановленою властивістю Дерево. Чому не відображається ДеревоЗначень?
В:Потрібно також, для однієї з колонок встановити властивість Відображати Ієрархію.

В:Як використовувати регламентні завдання у файловому режимі роботи інформаційної бази?
В:На відміну від клієнт-серверного, у файловому режимі відповідальність за реалізацію автоматичного запуску регламентних завдань покладається на розробника. Щоб реалізувати автозапуск завдань, потрібен Обробник Очікування періодично перевіряє «прострочені» завдання і запускає їх. Рекомендується використовувати для цього окремий сеанс. Приклад:

Процедура Перевірка Задань()
Виконати Обробку Задань ();
КінецьПроцедури
ПідключитиОбробникОчікування("ПеревіркаЗадань",3);

В:Як з рядка з роздільниками отримати масив?
В:Як приклад, наведу свій варіант функції, що працює «в обох напрямках», тобто. при передачі рядка з роздільниками – формує масив, а під час передачі масиву – формує з нього рядок із роздільниками.

Функція РядокМасив(Знач Значення,Розділювач)
Якщо ТипЗнч(Значення)=Тип("Рядок") Тоді
МнСтр=Стр Замінити(Значення,Розділювач,Символи.ПС);
Масив = Новий Масив;
Для н=1 По СтрЧислоРік(МнСтр) Цикл
Масив.Додати(СтрОтриматиСтроку(МнСтр,н));
КінецьЦикл;
Повернення Масив;
ІнакшеЯкщо ТипЗнч(Значення)=Тип("Масив") Тоді
Рядок="";
Для кожного елемента з значення циклу
Рядок=Рядок+?(Рядок"",Розділювач,"")+Елемент;
КінецьЦикл;
Повернення Ряду;
Інакше
Повернення Невизначено;
КінецьЯкщо;
КінецьФункції

В:Як увімкнути можливість внесення змін до конфігуратора в типовій конфігурації?
В:Оскільки типові конфігурації знаходяться на підтримці (що дозволяє в автоматичному режимі виконувати оновлення), то за замовчуванням, можливість внесення змін до конфігурації вимкнуто. Щоб увімкнути цю можливість, необхідно в конфігураторі вибрати пункт меню «Конфігурація > Підтримка > Налаштування підтримки» і у вікні натиснути кнопку «Увімкнути можливість змін».

В:Як встановити пароль для обробки/конфігурації?
В:У 1С v 8 паролі можна встановлювати лише на модулі об'єктів. Щоб встановити пароль, необхідно відкрити модуль об'єкта і вибрати пункт меню «Текст > Встановити пароль». Також існує можливість постачання конфігурації без вихідних текстів модулів об'єктів (налаштовується «Конфігурація > Постачання конфігурації > Налаштування постачання»). Хочеться помітити, що на даний момент, жоден із цих способів не є надійним захистом від перегляду вихідного тексту модуля.

В:Чому не працює пошук документа за допомогою методу ЗнайтиПономеру(<Номер документа>)?
В:Необхідно пам'ятати, що у разі, якщо для цього виду документів у конфігураторі задана періодична нумерація, крім номера документа обов'язково потрібно вказувати дату інтервалу другим параметром. Інакше здійснюватиметься пошук документа з порожньою датою, що, очевидно, не призведе до бажаного результату.

В:У 1С 8.1 при необхідності підключитися до вже запущеної програми налагодження (Конфігуратор > Налагодження > Підключення) у доступних предметах налагодження порожньо. В чому причина?
В:Справа в тому, що для програми, яку збираємося налагоджувати, потрібно явно дозволити налагодження. Меню Сервіс > Установки > закладка Системні > прапор «Налагодження дозволено».

В:Як організувати перебір рядків динамічного списку (наприклад, Довідник Список або Документ Список)?
В:Це можна зробити за допомогою будівельника звітів, наприклад:

Построитель=Новый ПостроительСчета;
Будівник.ДжерелівДанних=Новий ОписДжерелівДанних(ДокументСписок);
Вибірка=Побудівник.Результат.Вибрати();
Поки Вибірка.Наступний() Цикл
Повідомити(Вибірка.Посилання);
КінецьЦикл;

Примітка: у вибірку попадуть рядки відповідно до встановленого на даний момент відбору.

В:Як перевірити значення властивостей об'єктів метаданих? Наприклад, вид ієрархії довідника чи режим запису регістру, чи періодичність номера документа?
В:Всі ці властивості є властивостями об'єктів метаданих. Отримати значення такого типу можна так само через метадані. Приклади:

// Приклад 1. ВидІєрархії довідника
Якщо Метадані.Довідники[Ім'яДовідника].ВиглядІєрархії = Метадані.ВластивостіОб'єктів.ВиглядІєрархії.ІєрархіяГруппІЕлементів Тоді...
// Приклад 2. РежимЗаписиРегістра
Якщо Метадані.РегістриВідомостей[Ім'яРегістра].РежимЗаписиРегістра = Метадані.ВластивостіОб'єктів.РежимЗаписиРегістра.ПідпорядкуванняРеєстратору Тоді...
// Приклад 3. Переодичність номера документа
Якщо Метадані.Документи[Ім'яДокумента].ПеріодичністьНомери = Метадані.ВластивостіОб'єктів.ПеріодичністьНомериДокумента.Неперіодичний Тоді...

В:Як реалізувати у дереві значень прапорець із трьома станами?
В:Розглянемо докладніше постановку завдання. На формі є табличне поле, джерелом даних якого є дерево значень. В одній із колонок розташований елемент управління «Прапорець». Необхідно щоб він міг приймати три стани «Включено», «Вимкнено» і «Невизначено». У цьому стан «Невизначено» чи званий «сірий прапорець», тобто. обраний частково, встановлюється у тому випадку, якщо не у всіх підлеглих рядків стан прапорця однаковий. Так само якщо рядок має підпорядковані рядки, то при зміні його прапорця відповідним чином повинні змінюватися прапорці та всіх підпорядкованих рядків.
По-перше, додамо нашу колонку з прапорцем у дерево значень:

Дерево.Колонки.Додати("Помітка",Новий ОписТипів("Число"));
ЕлементиФорми.Дерево.СтворитиКолонки();
Колонки Дерева = ЕлементиФорми.Дерево.Колонки;
КолонкиДерева.Пометка.ДанныеПлажка="Пометка";
КолонкиДерева.Пометка.ВстановитиЕлементУправління(Тип("Прапорець"));
Колонки Дерева.Пометка.РежимРедагування=РежимРедагуванняКолонки.Непосредств
енно;
КолонкиДерева.Помітка.ТриСтаниПрапорець=Істина;

По-друге, при зміні прапорця потрібно встановлювати відповідні значення у підпорядкованих рядках та контролювати значення прапорця у «рядку-батьку»:

Процедура ДеревоПріЗміні Прапорець(Елемент, Колонка)
ПоточнаРядок = Елемент.ПоточнаРядок;
Якщо ПоточнаРядок.Помітка=2 Тоді
ПоточнаРядок.Помітка=0;
КінецьЯкщо;
Установка Прапорців (Поточний Рядок, Поточний Рядок. Помітка);
Поки ПоточнаРядок.БатькоНевизначено Цикл
Поточна Рядок. Батько. Позначка =? (Встановлено Для всіх (Поточна Рядок), Поточна Рядок. Помітка, 2);
ПоточнаРядок=ПоточнаРядок.Батько;
КінецьЦикл;
КінецьПроцедури

Тут процедура Установка Прапорців() рекурсивно встановлює прапорці у підпорядкованих рядках:

Процедура Установка Прапорців(ПоточнаРядок,Значення)
Для кожного Стр З ПоточнаРядок.Рядки Цикл
Стр.Пометка=Значення;
Установка Прапорців (Стор,Стор.Пометка);
КінецьЦикл;
КінецьПроцедури

А функція ВстановленоДляВсіх() перевіряє, чи встановлено однакове значення для всіх рядків на поточному рівні:

Функція ВстановленоДляВсіх(Рядок)
Для кожного Стр З Рядка.Батьки.Рядки Цикл
Якщо стор.поміткарядок.помітка тоді
Повернення Брехня;
КінецьЯкщо;
КінецьЦикл;
Повернення Істина;
КінецьФункції

В:Як у формі списку реалізувати сортування за своїм реквізитом?
В:Якщо реквізит примітивного типу, достатньо встановити для якості реквізиту «Індексувати» значення «Індексувати» або «Індексувати з доп. впорядкуванням» (не доступно для реквізитів типу СховищеЗначення). Якщо ж реквізит посилального типу, необхідно явно дозволити йому доступність сортування. Наприклад:

ЕлементУП=ЕлементиФорми.ДовідникСписок.НастройкаПорядку.Найти("Реквізит1");
Якщо ЕлементУПНевизначено Тоді
ЕлементУП.Доступність = Істина;
КінецьЯкщо;

Рядки 1С 8.3 у вбудованій мові 1с являють собою значення примітивного типу Рядок. Значення цього типу містять рядок у форматі Unicode довільної довжини. Змінні рядкового типу є набором символів, укладених у лапки.

Приклад 1. Створимо рядкову змінну тексту.

Строкова Змінна = "Привіт світ!";

Функції роботи з рядками 1с 8.3

У цьому розділі будуть наведені основні функції, що дозволяють змінювати рядки в 1с, або аналізувати інформацію, що міститься в них.

СтрДліна

СтрДліна(<Строка>) . Повертає кількість символів, що містяться в рядку, переданому у параметрі.

Приклад 2. Порахуємо кількість символів у рядку "Привіт світ!".

Рядок = "Привіт світ!"; КількістьСимволів = СтрДліна(Рядок); Повідомити(КількістьСимволів);

Результатом виконання цього коду буде виведення на екран кількості символів рядка: 11.

СокрЛ

СокрЛ(<Строка>) . Відсікає незначні символи, що стоять ліворуч від першого символу в рядку.
Незначні символи:

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

Приклад 3. Прибрати усі прогалини з лівого боку рядка світ! та приєднати до неї рядок "Привіт".

Рядок = СокрЛ ("світ!"); Рядок = "Привіт" + Рядок; Повідомити(Рядок);

Підсумком виконання цього коду буде виведення на екран рядка "Привіт мир!".

СокрП

СокрП(<Строка>) . Відсікає незначні символи, що стоять праворуч від першого символу в рядку.

Приклад 4. Сформувати з рядків "Привіт" та "світ!" фразу «Привіт світ!»

Рядок = СокрП("Привіт")+"+СокрЛ("світ!"); Повідомити(Рядок);

СокрЛП

СокрЛП(<Строка>) . Відсікає незначні символи, що стоять праворуч від першого символу в рядку, також відсікає незначні символи, що стоять ліворуч від першого символу в рядку. Ця функція використовується частіше за попередні два, тому що вона більш універсальна.

Приклад 5. Прибрати незначні символи ліворуч і праворуч у найменуванні контрагента.

Контрагент = Довідники.Контрагенти.ЗнайтиПоРеквізиту("ІПН", "0777121211"); КонтрагентОб'єкт = Контрагент.Отримати Об'єкт (); КонтрагентОбъект.Наименование = СокрЛП(КонтрагентОбъект.Наименование); КонтрагентОб'єкт. Записати ();

Лев

Лев(<Строка>, <ЧислоСимволов>) . Отримує перші символи рядка, кількість символів вказується у параметрі Число символів.

Приклад 6. Нехай у структурі Співробітникутримуватися ім'я, прізвище та по батькові співробітника. Отримати рядок із прізвищем та ініціалами.

ІніціалІмені = Лев (Співробітник. Ім'я, 1); Ініціал Батьківщини = Лев (Співробітник. По батькові, 1); ПовнеІм'я = Співробітник.Прізвище + "" + ІніціалІмені + "." + Ініціал Батьківщини + ".";

Має рацію

Прав(<Строка>, <ЧислоСимволов>) . Отримує останні символи рядка, кількість символів вказується у параметрі Число символів.Якщо вказана кількість символів перевищує довжину рядка, то повертається весь рядок.

Приклад 7. Нехай наприкінці рядкової змінної записано дату у форматі «ггггммдд», отримати рядок з датою та перетворити її на тип Дата.

Рядок = "Поточна дата: 20170910"; РядокДата = Прав(Рядок, 8); Дата = Дата (РядокДата);

Середовище

Середа(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Отримує підрядок із рядка переданого у параметрі Рядок, починаючи з символу номер якого вказано у параметрі ПочатковийНомерта довжиною переданої у параметр Число символів.Нумерація символів у рядку починається з 1. Якщо у параметрі ПочатковийНомервказано значення, менше або рівне нулю, то параметр приймає значення 1. Якщо параметр Число символівне вказано, вибираються символи до кінця рядка.

Приклад 8. Нехай у рядковій змінній, починаючи з дев'ятої позиції, міститься код регіону, слід отримати його та записати в окремий рядок.

Рядок = "Регіон: 99 р. Москва"; Регіон = Середовище (Рядок, 9, 2);

СтрНайти

СтрНайти(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Здійснює пошук зазначеного підрядка у рядку, повертає номер позиції першого символу знайденого підрядка. Розглянемо параметри цієї функції:

  • Рядок. Вихідний рядок;
  • ПідстрокаПошук. Шуканий підрядок;
  • Напрям Пошуку. Вказує напрямок пошуку підрядка у рядку. Може приймати значення:
    • НапрямокПошуку.Спочатку;
    • Напрямок Пошуку.;
  • ПочатковаПозиція. Вказує позицію у рядку, з якого починається пошук;
  • НомерВходження. Вказує номер входження шуканого підрядка у вихідному рядку.

Приклад 9. У рядку "Привіт мир!" визначити позицію останнього входження символу "і".

НомерПозиції = СтрНайти("Привіт світ!", "і", НапрямокПошуку.Сконця); Повідомити(НомерПозиції);

Підсумком виконання цього коду буде виведення на екран номера останнього входження символу "і": 9.

ВРег

ВРег(<Строка>) . Перетворює всі символи вказаного рядка 1с 8 до верхнього регістру.

Приклад 10. Перетворити рядок "Привіт мир!" до верхнього регістру.

РядокВрег = ВРег("привіт світ!"); Повідомити(РядокВрег);

Підсумком виконання цього коду буде виведення на екран рядка «ПРИВІТ СВІТ!»

НРег

НРег(<Строка>) . Перетворює всі символи вказаного рядка в 1з8 до нижнього регістру.

Приклад 11. Перетворити рядок «ПРИВІТ СВІТ!» до нижнього регістру.

РядокНрег = НРег("ПРИВІТ СВІТ!"); Повідомити(РядокВрег);

Підсумком виконання цього коду буде виведення на екран рядка «Привіт світ!»

трег

трег(<Строка>) . Перетворює рядок наступним чином: перший символ кожного слова переводиться у верхній регістр, інші символи слова перетворюються на нижній регістр.

Приклад 12. Зробити великими перші літери слів у рядку «Привіт світ!».

РядокТрег = ТРег("привіт світ!"); Повідомити(РядокТрег);

Підсумком виконання цього коду буде виведення на екран рядка "Привіт Мир!"

Символ

Символ(<КодСимвола>) . Отримує символ за його кодом у кодуванні Unicod.

Приклад 13. Додамо ліворуч та праворуч у рядок «Привіт Мир!» символ ★

РядокЗі зірок = Символ("9733")+"Привіт Світ!"+Символ("9733"); Повідомити (Рядок зі Зірками);

Результатом виконання цього коду буде виведення на екран рядка «★Привіт Мир!★»

КодСимволу

КодСимволу(<Строка>, <НомерСимвола>) . Отримує код символу в кодуванні Unicode з рядка, зазначеного в першому параметрі, розташованого в позиції, зазначеному в другому параметрі.

Приклад 14. Дізнатись код останнього символу в рядку «Привіт Світ!».

Рядок = "Привіт Мир!"; КодСимволу = КодСимволу(Рядок, СтрДліна(Рядок)); Повідомити(КодСимволу);

Підсумком виконання цього коду буде виведення на екран коду символу "!" - 33.

Порожня стрічка

Порожня стрічка(<Строка>) . Перевіряє, чи складається рядок тільки з незначних символів, тобто чи є він порожнім.

Приклад 15. Перевірити чи порожній рядок складається з трьох пробілів.

Порожня = ПорожняРядок(" "); Повідомити(Порожня);

Результатом виконання цього коду буде виведення на екран слова «Так» (рядковий вираз логічного значення Істина).

СтрЗамінити

СтрЗамінити(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Знаходить у вихідному рядку всі входження підрядка пошуку та замінює її на підрядок заміни.

Приклад 16. У рядку "Привіт Мир!" замінити слово "Світ" на слово "Друзі".

Рядок = СтрЗаменить("Привіт Мир!", "Світ", "Друзі"); Повідомити(Рядок);

Підсумком виконання цього коду буде виведення на екран рядка "Привіт Друзі!"

СтрЧислоРядок

СтрЧислоРядок(<Строка>) . Дозволяє порахувати кількість рядків у рядковому рядку. Для переходу на новий рядок 1с 8 використовується символ ПС(Символ перекладу рядка).

Приклад 17. Визначити кількість рядків у тексті:
«Перший рядок
Другий рядок
Третій рядок»

Число = СтрЧіслоРядок("Перший рядок"+Символи.ПС +"Другий рядок"+Символи.ПС +"Третій рядок"); Повідомити (Число);

Результатом виконання цього коду буде виведення на екран кількості рядків у тексті: 3

СтрОтриматиРядок

СтрОтриматиРоку(<Строка>, <НомерСтроки>) . Отримує рядок у рядковому рядку за його номером. Нумерація рядків починається з першого.

Приклад 18. Отримати останній рядок у тексті:
«Перший рядок
Другий рядок
Третій рядок»

Текст = "Перший рядок" + Символи. ПС + "Другий рядок" + Символи. ПС + "Третій рядок"; ОстанняРядок = СтрОтриматиРоку(Текст, СтрЧислоРік(Текст)); Повідомити(ОстанняРядок);

Підсумком виконання цього коду буде виведення на екран рядка "Третій рядок".

СтрЧислоВходжень

СтрЧислоВходжень(<Строка>, <ПодстрокаПоиска>) . Повертає кількість входжень зазначеного підрядка в рядок. Функція чутлива до регістру.

Приклад 19. Визначити скільки разів входить до рядка «Рядки в 1с 8.3 і 8.2» літера «с», незалежно від її регістру.

Рядок = "Рядки в 1с 8.3 та 8.2"; ЧислоВходжень = СтрЧислоВходжений(Врег(Рядок), "С"); Повідомити(ЧислоВходжений);

Результатом виконання цього коду буде виведення на екран числа входжень: 2.

ПочинаєтьсяС

ПочинаєтьсяС(<Строка>, <СтрокаПоиска>) . Перевіряє, чи починається рядок переданий у першому параметрі, з рядка в другому параметрі.

Приклад 20. Визначити чи починається ІПН обраного контрагента з цифри 1. Нехай у змінній Контрагент Контрагенти.

ІПН = Контрагент.ІПН; ПочинаєтьсяСединицы = СтрНачинаетсяС(ІНН, "1"); Якщо починаєтьсяСединицы Тоді //Ваш код КінецьЯкщо;

СтрЗакінчуєтьсяНа

СтрЗаканчиваетсяНа(<Строка>, <СтрокаПоиска>) . Перевіряє чи закінчується рядок переданий у першому параметрі, на рядок у другому параметрі.

Приклад 21. Визначити чи закінчується ІПН обраного контрагента на цифру 2. Нехай у змінній Контрагентзберігається посилання на елемент довідника Контрагенти.

ІПН = Контрагент.ІПН; Закінчується На Двійку = Стр Заканчується На (ІПН, "2"); Якщо Закінчується На Двійку Тоді // Ваш код Кінець Якщо;

СтрРозділити

Поділити(<Строка>, <Разделитель>, <ВключатьПустые>) . Розділяє рядок на частини за вказаними символами-розділювачами та записує отримані рядки у масив. У першому параметрі зберігається вихідний рядок, у другому рядок містить роздільник, у третьому вказується, чи потрібно записувати в масив порожні рядки (за замовчуванням Істина).

Приклад 22. Нехай ми маємо рядок, що містить числа розділені символом «;», отримати з рядка масив чисел.

Рядок = "1; 2; 3"; Масив = СтрРозділити(Рядок, ";"); Для Сч = 0 По Масив. Кількість () - 1 Цикл Спроба Масив [Сч] = Число (СокрЛП (Масив [Сч])); Виняток Масив [Сч] = 0; КінецьСпроби КінецьЦикл;

В результаті виконання буде отримано масив із числами від 1 до 3-х.

СтрЗ'єднати

СтрЗ'єднати(<Строки>, <Разделитель>) . Перетворює масив рядків з першого параметра на рядок, що містить всі елементи масиву через роздільник, зазначений у другому параметрі.

Приклад 23. Використовуючи масив чисел із попереднього прикладу, отримати вихідний рядок.

Для Сч = 0 По Масив. Кількість () - 1 Цикл Масив [Сч] = Рядок (Масив [Сч]); КінецьЦикл; Рядок = СтрЗ'єднати(Масив, "; ");

Тип «Рядок» зустрічається у всіх мовах програмування. Він є примітивним, і в 1С існує багато функцій для роботи з ним. У цій статті ми докладно розглянемо різні способи роботи з рядковими типами 1С 8.3 та 8.2 на прикладах.

Рядок

Щоб перетворити змінну будь-якого типу на рядок, існує однойменна функція «Рядок()». Вхідним параметром буде сама змінна, рядкове представлення якої потрібно отримати.

Рядок (Брехня) // повертає «Ні»
Рядок(12345) // повертає «12 345»
Рядок(ПоточнаДата()) //»21.07.2017 11:55:36″

Перетворювати до рядка можна як примітивні типи, а й інші, наприклад елементи довідників, документів.

СокрЛП, СокрЛ, СокрП

Як вхідні параметри даних функцій виступає змінна рядкового типу. Функції видаляють незначні символи (пробіли, переноси каретки та інші): з лівого та правого боку, тільки з лівого боку, і лише з правого відповідно.

СокрЛП(" Будуть видалені пробіли з обох сторін") // "Будуть видалені пробіли з обох сторін"
СокрЛ(" Будуть видалені пробіли з обох боків") // "Будуть видалені пробіли зліва "
СокрП(" Будуть видалені пробіли з обох сторін") // "Будуть видалені пробіли праворуч"

Лев, Прав, Середовище

Ці функції дозволяють обрізати частину рядка. Функція «Лев()» поверне частину рядка з її лівого боку вказаної довжини. Функція «Прав()» аналогічна, але обрізка проводиться праворуч. Функція «Серед()» дозволяє вказати номер символу, з якого буде виділено рядок та його довжину.

Лев («Строкова змінна», 4) // Повертає «Стро»
Прав(«Строкова змінна», 7) // повертає «ременна»
Середовище («Строкова змінна», 2, 5)// повертає «троко»

СтрДліна

Функція визначає кількість символів, які містяться в рядковій змінній.

СтрДліна(«Слово») // результатом виконання буде число 5

Знайти

Функція дає можливість шукати в будь-якій рядковій змінній частині рядка. Як значення, що повертається буде виступати число, яке показує позицію початку знайденого рядка. Якщо збігу не виявлено, повертається нуль.

Зверніть увагу, що пошук здійснюється з урахуванням регістру. Якщо в початковому рядку більше одного входження підрядка пошуку, функція поверне початок першого входження.

Знайти («раз, два, раз, два, три», «два») // функція поверне число 6

Порожня стрічка

Використання цієї функції дозволяє визначити, чи є рядок порожнім. Незначні символи, наприклад пробіл, перенесення каретки та інші не враховуються.

ПорожнійРядок(«Пупкін Василь Іванович») // функція поверне значення Брехня
ПорожнійРядок(" ") // функція поверне значення Істина

ВРег, НРег, ТРег

Ці функції дуже корисні при порівнянні та перетворенні рядкових змінних. «Врег()» поверне вихідний рядок у верхньому регістрі, «НРег()» у нижньому, а «Трег()» відформатує його так, що перший символ кожного окремого слова буде з великої літери, а всі наступні з маленької.

ВРег(«ГеНераЛьний ДИРЕКТОР») // значення, що повертається – «ГЕНЕРАЛЬНИЙ ДИРЕКТОР»
НРег(«ГеНераЛьний дИРЕктОр») // значення, що повертається – «генеральний директор»
ТРег(«ГеНераЛьний дИРЕктОр») // значення, що повертається – «Генеральний Директор»

СтрЗамінити

Ця функція є аналогом заміни текстових редакторах. Вона дозволяє підміняти один символ або набір символів іншим рядковим змінним.

СтрЗаменить(«червоний, білий, жовтий», «,», «;») // поверне «червоний; білий; жовтий»

СтрЧислоРядок

Функція дозволяє визначити кількість рядків, розділених перенесенням каретки у текстовій змінній.

Цикл, у наведеному нижче прикладі, пройде три кола, оскільки функція СтрЧислоРок поверне значення 3:

Для інд = 1 по СтрЧислоРік («Рядок1» + Символи.ПС + «Рядок2» + Символи.ПС + «Рядок3») Цикл
<тело цикла>
КінецьЦикл;

СтрОтриматиРядок

Ця функція працює з багаторядковим текстом так само, як і попередня. Вона дозволяє отримати певний рядок із текстової змінної.

СтрОтриматиСтроку(«Рядок1» + Символи.ПС + «Рядок2» + Символи.ПС + «Рядок3», 2) // поверне «Рядок2»

СтрЧислоВходжень

Функція підраховує кількість входжень символу або підрядки в рядку.

СтрЧислоВкладень(«а;б;в;г;«,«;») // функція поверне число 4

Символ та КодСимволу

Ці функції дозволяють отримувати символ за кодом у кодуванні Unicode, а також визначати цей код за самим символом.

КодСимволу («А») // функція поверне число 1040
КодСимволу (1040) // функція поверне «А»

Часті завдання під час роботи з рядками

Об'єднання рядків

Щоб об'єднати кілька рядків (здійснити конкатенацію) достатньо використовувати оператор додавання.

"Рядок 1" + "Рядок 2" //результатом складання двох рядків буде "Рядок 1 Рядок 2"

Перетворення типів

Для того, щоб перетворити тип на рядок, наприклад, посилання на елемент довідника, число та інше, достатньо використовувати функцію «Рядок()». Функції, подібні до «СокрЛП()» так само перетворюватимуть змінні в рядок, але вже відразу з відсіченням незначних символів.

Рядок(1000) // поверне «1 000»

Зверніть увагу, що при перетворенні числа в рядок, програма автоматично додала пробіл, що відокремлює тисячу. Для того, щоб цього уникнути, можна скористатися такими конструкціями:

СтрЗаменить(Рядок(1000),Символи.НПП,») // поверне «1000»

Рядок (Формат (1000, "ЧГ =")) // поверне "1000"

Лапки у рядку

Досить часто вам доведеться стикатися з необхідністю вказати у рядковій змінній лапці. Це може бути текст запиту, написаний в конфігураторі, так і просто змінна. Для вирішення цього завдання вам достатньо встановити два символи лапок.

Заголовок = Рядок («ТОВ ««Роги і копита»» - це ми!») // поверне «ТОВ «Роги та копита» - це ми!»

Багаторядність, перенесення рядка

Для того, щоб створити багаторядковий текст, достатньо додати до нього символи перенесення рядка (Символи.ПС).

БагаторядковийТекст = «Перший рядок» + Символи.ПС + «Другий рядок»

Як прибрати прогалини

Для того, щоб прибрати прогалини праворуч або зліва можна скористатися функцією «СокрЛП()» (а також «СокрЛ()» та «СокрП()»):

РядокБезПробілів = СокрЛП(" Багато букв ") // функція поверне значення "Багато букв"

Якщо після перетворення числа в рядок вам потрібно було прибрати нерозривні прогалини, скористайтесь наступною конструкцією:

РядокБезПробілів = СтрЗаменить(Рядок(99999),Символи.НПП,»») // поверне «99999»

Також програмісти часто користуються нижче наведеною конструкцією, яка дозволяє видалити, або замінити на інший символ усі прогалини текстової змінної:

РядокБезПробілів = СтрЗамінити(«прийом», »,») // поверне «привіт»

Порівняння рядків між собою

Порівняти терміни можна звичайним знаком рівності. При порівнянні враховується регістр.

«Здрастуйте» = «здравствуйте» // поверне Брехня
«Здрастуйте» = «Здрастуйте» // поверне Істина
«Здрастуйте» = «До побачення» // поверне Брехня