Как в 1с объединить строки в

Обновлено: 08.07.2024

Если нужно из некоторой коллекции строк получить одну единую, это можно сделать в цикле:

ИтогСтрока = Строка + ЭлементКоллекции;

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

Есть несколько вариантов получения строки из коллекции.

Первый – с помощью текстового документа. В этом случае все составные части будут идти отдельными строками. При использовании функции ПолучитьТекст(), нужно будет сделать замену символов переноса строк в коде на пустую строку, а после получения результата использовать метод обратного преобразования.

Другой способ – занести все подстроки в массив, который преобразуется в текстовое представление с помощью функции ЗначениеВСтрокуВнутр(), а далее лишнее очищается.

При массовых операциях конкатенации строк можно использовать методы платформы СтрРазделить и СтрСоединить.

ИзвТекст= Новый Массив;
Для НомерКолонки = 1 По Макет.ШиринаТаблицы Цикл
ИзвТекст.Добавить(ТекстОбласти);

РезультатТекст = СтрСоединить(ИзвТекст, Символы.ПС);

Еще один способ операции конкатенации строк — использование объекта ЗаписьXML. У этого объекта можно использовать метод ЗаписатьБезОбработки() для «сборки» документа в том виде, какой подается на вход, т.е. без лишних тегов.

2. Конкатенация в запросах

При создании текстов запросов используя функцию конкатенации можно сделать запросы более гибкими.

Конкатенация в запросах может использоваться при программной "сборке" текста запроса. Пример:

ТекстЗапроса =
"ВЫБРАТЬ
Номенклатура.Наименование КАК Наименование,
&ИмяПоляКод КАК КодНоменклатуры
ИЗ
Справочник.Номенклатура КАК Номенклатура ;

ТекстЗапроса = СтрЗаменить(ТекстЗапроса , "&ИмяПоляКод ", "Номенклатура." + ИмяПоляКод);

Пример изменения имени таблицы в запросе:

"ВЫБРАТЬ
|ТаблицаСправочника.Наименование КАК Наименование,
|ТаблицаСправочника.Код КАК КодСправочника
|ИЗ
|&ТабСправочника КАК ТаблицаСправочника";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса , "&ТабСправочника", "Справочник." + ИмяСправочника);

Также к данной функции можно прибегнуть, когда нужно сложить части строки, чтобы результат мог потом стать проверяемым параметром.

В этой статье я продолжу изучать функции строк. Если функции из предыдущей статьи были и в старых версиях 1С (1С 8.1, 1С 8.2), то в этой статье разберем функции, которые появились уже в платформе 8.3.

Сравнение строк в 1С

Начиная с режима совместимости 8.3.6, появилась возможность сравнивать строки по длине. Это выполняет метод СтрСравнить(<ПерваяСтрока>,<ВтораяСтрока>). В качестве параметров этого метода указываются сравниваемые строки. А возвращает этот метод следующие значения

0 – строки равные

1 – первая строка больше второй

-1 – первая строка меньше второй

Обе строки приравниваются к одинаковому регистру. Причем можно сравнивать, как сами строки, так и переменные с типом строка.

То есть вот так:

Результат сравнения этих строк будет следующий:

Сравнение строк в 1С

Причем не имеет значение, имеются в строке пробелы или нет.

Сравнение строк в 1С c пробелами

В этом случае метод вернул -1, хоть и Строка2 отличается от Строка1 только пробелами.

Функции СтрНачинаетсяС и СтрЗаканчиваетсяНа в 1С

При помощи этих двух похожих функций можно определить начинается ли строка с какой-то подстроки, либо заканчивается ли строка какой-то подстрокой. Причем проверки выполняются с учетом регистра. Обе функции работают, начиная с режима совместимости 8.3.6.

Например, у нас имеется строка «Привет, Владимир Петрович, как дела?». Мы можем определить, начинается эта строка на слове «Привет», и заканчивается ли она словами «как дела?».

И посмотрим, какой результат будет у этих функций

Функции СтрНачинаетсяС СтрЗаканчиватесяНа

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

Функции СтрНачинаетсяС СтрЗаканчиватесяНа

Разделить и соединить строку в 1С

Начиная с режима совместимости 8.3.6, в платформе 1С появилась возможность разъединять и соединять строки. Делается это при помощи функции СтрРазделить и СтрСоединить.

Функция СтрРазделить разделяет строки по определенному разделителю и возвращает массив со строками, которые получились в результате разделения.

Функция СтрСоединить принимает массив строки и соединят их в одную.

Разберем подробнее и с примерами.

Функция СтрРазделить имеете следующий синтаксис СтрРазделить(<Строка>,<Разделитель>, <ВключатьПустые>).

Строка – разделяемая строка

Разделитель – символ или символы, по которым строка будет разделена

В этом примере два массива, посмотрим в отладке на первый

Разделить строку в 1С с пустыми символами

А также на второй:

Разделить строку в 1С без пустых символов

Точно также, как разложили строку, мы можем соединить её из строк в массиве, используя метод СтрСоединить. Этот метод является функцией, которая возвращает соединенную строку и имеет следующий синтаксис.

МассивСтрок – массив или фиксированный массив строк, которые нужно будет соединить.

Разделитель – символ или строка, которая будет вставлена между соединяемыми строками. Необязательный параметр. Если его не будет, то строки будут соединены слитно.

Доработаем предыдущий пример: объединим строки в массиве без пустого символа, поставив наклонную черту в качестве разделителя.

Получится следующий результат:

Объединить строку в 1С

Другие статьи о примитивных типах:

Программировать в 1С за 11 шагов

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму
.

можно оплатить вручную:

Строки сравниваются посимвольно по коду символа, для ясности несколько примеров "Строка12" < "Строка2", "8.3.9.2000" > "8.3.8", "8.3.9.2000" > "8.3.10"

С учетом регистра можно сравнить строки через знаки сравнения как в примерах

Сравнение без учета регистра можно произвести функций СтрСравнить. Поддерживается с платформы 8.3.6.

  • -1 - первая строка меньше второй
  • 1 - первая строка больше второй.
  • 0 - первая строка равна второй

Преобразование в строку (Строка, Формат)

В языке 1С есть автоматическое преобразование типа когда все части выражения приводятся к типу первого выражения

Преобразование функцией Строка

при преобразовании появляется символ неразрывный пробел, а он обычно не нужен

"Правильнее" будет преобразовывать функцией формат, которая приводит к строке простые типы и можно воспользоватся конструктором


Строка на разных языках НСтр

Форматирование строки по шаблону СтрШаблон. Поддерживается с платформы 8.3.6.

Очень полезная функция которая позволяет избежать соединения строк и сделать текст более читабельным

Функции СтрСоединить, СтрРазделить. Поддерживается с платформы 8.3.6.

Очень полезные функции улучшают читаемость кода.

СтрРазделить удобна когда необходимо разобрать строку с разделителями, например CSV файл, разбор текста на слова, строки

Аналогично, только наоборот работает функция СтрСоединить, преобразуя массив к строке.

Другие функции работы со строками, которые могут быть полезны

СтрСократить (Текст, Количество, Многострочная = Ложь) - сокращает текст до заданной длины заменяя окончание на .

ЭтоКорректныйИдентификатор (Строка) - Проверяет является ли строка корректным идентификатором, строка вида СуммаКонтрагента, _Идентификатор

Когда в 1с встает вопрос разбора большого текста это уже зоопарк из СтрДлина, Сред, СтрНайти для повышения читаемости программ для подобных задач использую свои функции: РазборПрочитатьЦелоеЧисло, РазборПрочитатьШестнадцатеричноеЧисло, РазборПрочитатьНезначимые, РазборПрочитатьИдентификатор,

РазборПропуститьНаборСимволов, РазборПрочитатьСимвол, РазборПрочитатьДоСимвола, РазборНайтиТекст

В данной статье будет рассмотрено как реализовано соединение строк / строки с числом внутри запроса системы 1С, и как производится соединение полей с различными типами в строку СКД. Кроме того, поговорим о массовой конкатенации строк в 1С.

1. Соединение строк

Пусть у нас имеется какое-то количество строк, с которыми нужно сделать группировку строк, как в примере таблицы ниже:



Рис. 1 Строки до соединения

Необходимо провести группировку так, чтобы результат выглядел следующим образом:



Рис. 2 Результат соединения строк

Для этого нужно обратиться к полю «Строковое число», после чего привить его к ресурсам, используя следующее выражение: «СоединитьСтроки(строковое_поле)».

Как было в примере до каких-либо действий:



Рис. 3 Пример до соединения

И вот какой результат получился после первых манипуляций:



Рис. 4 После использования поля Строковое число

В данном примере «Информация» – это вычисляемое поле, но вместо него может быть использован любой иной вид поля.

2. Соединение полей в строку в запросе в системе компоновки данных

Пусть необходимо создать строку путем сложения трёх различных полей (Поле1, Поле2 и Поле3) в системе компоновки данных. Но не у всех полей тип соответствует типу «Строка».

В таком случае наиболее очевидное действие – это преобразование численного типа в строчный тип внутри запроса. Для этого надо использовать оператор «Представление(Числовое_поле)», но это не будет полноценной строкой, следовательно, объединение строк не сможет быть осуществлено, то есть будет возникать ошибка, как показано на скриншоте с примером ниже:



Рис. 5 Ошибка при соеднинении строк

Внутри запроса поля не следует трогать, а чтобы произвести объединение строк воспользуемся разделом «Вычисляемые поля», после чего всё становится реализуемым, как показано ниже:




Рис. 6 Объединение строк с использованием Вычисляемых полей

То есть решением будет форматирование исходного типа с данными в строчный тип, это можно делать при помощи оператора «Формат» для придания необходимого вида, например, удалив разделители, как демонстрируется в примере ниже:



Рис. 7 Результат форматирования данных в строчный тип

3. Массовая конкатенация строк в 1С

Операция конкатенации может применяться как в управляемом приложении, так и в обычном, и в мобильном приложениях.

Для того чтобы произвести массовую конкатенацию строк в 1С, необходимо воспользоваться методами «СтрРазделить» и «СтрСоединить». Например, соединение строк будет выглядеть следующим образом:

Рис. 8 Операция конкатенации

Подобная обработка данных имеет довольно быстрое исполнение, а также уменьшает нагрузку и потребление оперативной памяти.

Замечание: данная операция используется при 1000 и более строк, либо при меньшем количестве строк, но большой их длине.

В данной статье будет рассмотрено как реализовано соединение строк / строки с числом внутри запроса системы 1С, и как производится соединение полей с различными типами в строку СКД. Кроме того, поговорим о массовой конкатенации строк в 1С.

1. Соединение строк

Пусть у нас имеется какое-то количество строк, с которыми нужно сделать группировку строк, как в примере таблицы ниже:



Рис. 1 Строки до соединения

Необходимо провести группировку так, чтобы результат выглядел следующим образом:



Рис. 2 Результат соединения строк

Для этого нужно обратиться к полю «Строковое число», после чего привить его к ресурсам, используя следующее выражение: «СоединитьСтроки(строковое_поле)».

Как было в примере до каких-либо действий:



Рис. 3 Пример до соединения

И вот какой результат получился после первых манипуляций:



Рис. 4 После использования поля Строковое число

В данном примере «Информация» – это вычисляемое поле, но вместо него может быть использован любой иной вид поля.

2. Соединение полей в строку в запросе в системе компоновки данных

Пусть необходимо создать строку путем сложения трёх различных полей (Поле1, Поле2 и Поле3) в системе компоновки данных. Но не у всех полей тип соответствует типу «Строка».

В таком случае наиболее очевидное действие – это преобразование численного типа в строчный тип внутри запроса. Для этого надо использовать оператор «Представление(Числовое_поле)», но это не будет полноценной строкой, следовательно, объединение строк не сможет быть осуществлено, то есть будет возникать ошибка, как показано на скриншоте с примером ниже:



Рис. 5 Ошибка при соеднинении строк

Внутри запроса поля не следует трогать, а чтобы произвести объединение строк воспользуемся разделом «Вычисляемые поля», после чего всё становится реализуемым, как показано ниже:




Рис. 6 Объединение строк с использованием Вычисляемых полей

То есть решением будет форматирование исходного типа с данными в строчный тип, это можно делать при помощи оператора «Формат» для придания необходимого вида, например, удалив разделители, как демонстрируется в примере ниже:



Рис. 7 Результат форматирования данных в строчный тип

3. Массовая конкатенация строк в 1С

Операция конкатенации может применяться как в управляемом приложении, так и в обычном, и в мобильном приложениях.

Для того чтобы произвести массовую конкатенацию строк в 1С, необходимо воспользоваться методами «СтрРазделить» и «СтрСоединить». Например, соединение строк будет выглядеть следующим образом:

Рис. 8 Операция конкатенации

Подобная обработка данных имеет довольно быстрое исполнение, а также уменьшает нагрузку и потребление оперативной памяти.

Замечание: данная операция используется при 1000 и более строк, либо при меньшем количестве строк, но большой их длине.

Читайте также: