Разработка и Конфигурация · 8 мин
Как соединить две строки в 1С
Способы соединить две строки в 1С: оператор «+», СтрСоединить, СтрШаблон, переносы и подстановки. Примеры кода, ошибки и проверка результата.
Соединение строк — одна из самых частых операций во встроенном языке 1С: она нужна при формировании ФИО, адресов, сообщений пользователю, текстов запросов и печатных форм. Платформа предлагает несколько способов: простой оператор «+», функции СтрСоединить и СтрШаблон, а также символы переноса для многострочного текста.
Выбор способа зависит от задачи. Для двух-трёх коротких строк достаточно оператора «+». Если нужно объединить массив значений через разделитель, удобнее СтрСоединить. А когда текст содержит много переменных частей, читаемее всего шаблон со вставками через СтрШаблон.
Попытка сложить строку с числом или датой без преобразования вызовет ошибку выполнения, поэтому нестроковые значения сначала приводят к строковому типу.
Соединение двух строк оператором «+»
Базовый способ — оператор сложения. Он последовательно склеивает операнды слева направо и возвращает новую строку. Исходные переменные при этом не изменяются: результат нужно присвоить переменной или сразу использовать.
Имя = "Иван";
Фамилия = "Петров";
ПолноеИмя = Фамилия + " " + Имя; // "Петров Иван"
Обратите внимание на пробел между частями: оператор «+» ничего не добавляет автоматически. Если разделитель нужен, его включают в выражение явно — как отдельный строковый литерал или внутри одного из операндов.
Оператор удобен для коротких выражений, но при большом количестве частей код становится громоздким: пять-шесть плюсов подряд трудно читать и легко пропустить разделитель. В таких случаях лучше перейти к СтрШаблон или СтрСоединить.
Результат = Строка1 + Строка2;Преобразование чисел и дат перед соединением
Частая ситуация: нужно соединить строку с числом, датой или булевым значением. Напрямую это не сработает — платформа выдаст ошибку «Операции сравнения на больше-меньше..» либо «Преобразование значения к типу Число не может быть выполнено», потому что «+» попытается сложить значения как числа.
Решение — явное приведение типа функцией Строка() или форматирование функцией Формат(). Второй вариант предпочтительнее для дат и чисел, так как позволяет задать нужный вид представления.
Сумма = 1500.5;
Текст = "Итого: " + Формат(Сумма, "ЧДЦ=2") + " руб."; // "Итого: 1500,50 руб."
ДатаОтгрузки = '20260115';
Сообщение = "Отгрузка: " + Формат(ДатаОтгрузки, "ДЛФ=D");
Соединение массива строк через СтрСоединить
Когда частей много и они хранятся в массиве, перебирать их оператором «+» в цикле нерационально. Функция СтрСоединить объединяет элементы массива в одну строку, вставляя между ними указанный разделитель.
Части = Новый Массив;
Части.Добавить("г. Москва");
Части.Добавить("ул. Ленина");
Части.Добавить("д. 10");
Адрес = СтрСоединить(Части, ", "); // "г. Москва, ул. Ленина, д. 10"
Если разделитель не указан, элементы склеиваются вплотную. Функция особенно удобна при формировании списков через запятую, путей к файлам и составных ключей, где количество частей заранее неизвестно.
Учтите, что все элементы массива должны быть строками. Если в массиве могут оказаться числа, преобразуйте их при добавлении или в цикле перед вызовом СтрСоединить.
Формирование текста с подстановками через СтрШаблон
Когда итоговый текст длинный и содержит несколько переменных, удобнее шаблон с метками %1, %2 и так далее. Функция СтрШаблон подставляет параметры на место меток по порядку, что делает код заметно читабельнее цепочки плюсов.
Текст = СтрШаблон("Заказ №%1 от %2 на сумму %3 руб.",
НомерЗаказа,
Формат(ДатаЗаказа, "ДЛФ=D"),
Формат(Сумма, "ЧДЦ=2"));
Шаблон легко редактировать: чтобы поменять формулировку, не нужно перестраивать всё выражение. Это особенно ценно для сообщений пользователю и текстов, которые согласуются с заказчиком. Параметры, как и раньше, должны быть строками — числа и даты форматируйте заранее.
Какой способ выбрать
Две-три короткие строки. Минус: громоздко при большом числе частей.
Массив значений с одинаковым разделителем. Минус: все элементы должны быть строками.
Длинный текст с подстановками. Минус: нужно следить за порядком параметров %1, %2..
Многострочный текст и переносы строк
Для соединения строк с переносом используют системный набор Символы: Символы.ПС — перенос строки, Символы.ВК — возврат каретки, Символы.Таб — табуляция. Обычно достаточно Символы.ПС.
Адрес = "г. Москва" + Символы.ПС
+ "ул. Ленина" + Символы.ПС
+ "д. 10";
Тот же результат даёт СтрСоединить с разделителем Символы.ПС. Альтернатива — многострочный строковый литерал: в коде 1С строка может занимать несколько строк исходника, если каждая следующая часть начинается с символа «|». Такой литерал уже содержит переносы.
Текст = "Первая строка
|Вторая строка
|Третья строка";
Проверка результата и граничные случаи
После соединения полезно проверить результат, особенно если части приходят из данных пользователя или базы. Пустые значения и Неопределено — главные источники сюрпризов: Неопределено в операции «+» вызовет ошибку, а пустая строка просто ничего не добавит, оставив лишние разделители.
Перед соединением отсекайте лишние пробелы функцией СокрЛП, а для проверки пустоты используйте ПустаяСтрока(). Если часть может быть пустой, формируйте массив только из заполненных значений и соединяйте его СтрСоединить — это избавит от двойных запятых и висячих разделителей.
Как проверить результат
Строка содержит все части с правильными разделителями
Слипшийся текст, лишние запятые, пустые фрагменты
СокрЛП применён, пустые части исключены
Двойные пробелы, разделители в начале или конце
Отформатированы через Формат()
Ошибка выполнения или нечитаемое представление
Краткий итог и частые вопросы
Для соединения двух строк в 1С чаще всего достаточно оператора «+». При росте числа частей переходите на СтрСоединить или СтрШаблон, а нестроковые значения всегда приводите к строке заранее. Проверяйте результат на пустых и незаполненных данных — это самая частая причина дефектов.
Что важно запомнить
Две строки соединяются оператором «+», массив — СтрСоединить, текст с подстановками — СтрШаблон. Числа и даты форматируйте через Формат(), переносы добавляйте через Символы.ПС, пустые части исключайте до соединения.
Можно ли соединить строку с числом напрямую?
Нет. Выражение вида "Итого: " + 100 вызовет ошибку выполнения. Сначала преобразуйте число: Формат(100, "ЧДЦ=2") или Строка(100), а затем соединяйте.
Чем СтрСоединить лучше цикла с оператором «+»?
СтрСоединить короче, читабельнее и автоматически вставляет разделитель только между элементами, без лишнего разделителя в конце. Цикл с «+» требует отдельной логики для разделителей и работает медленнее на больших массивах.
Как соединить строки с переносом строки?
Используйте Символы.ПС как разделитель: Строка1 + Символы.ПС + Строка2, либо СтрСоединить(Массив, Символы.ПС). Также можно использовать многострочный литерал с символом «|» в начале каждой строки.
Что делать, если одна из частей может быть Неопределено?
Проверьте значение перед соединением: если оно Неопределено, замените его на пустую строку или пропустите часть. Удобный приём — собирать в массив только заполненные значения и соединять их СтрСоединить.
Как убрать лишние пробелы при соединении ФИО из базы?
Примените СокрЛП к каждой части перед соединением: СокрЛП(Фамилия) + " " + СокрЛП(Имя). Если какие-то части могут быть пустыми, добавляйте в массив только непустые и соединяйте через СтрСоединить с пробелом.
Работает ли оператор «+» в запросах 1С?
Нет, в языке запросов сложение строк через «+» не поддерживается. Для объединения полей в запросе используется функция языка запросов или объединение строк выполняется уже после получения выборки, в коде на встроенном языке.