К статье
Практический материал

Разработка и Конфигурация · 9 мин

1С: как добавить текст к переменной

Как в 1С добавить текст к переменной: оператор +, СтрШаблон, СтрСоединить, перевод чисел и дат в строку, типичные ошибки и примеры кода на встроенном языке.

Во встроенном языке 1С добавить текст к переменной — значит выполнить конкатенацию, то есть соединение строк. Самый простой способ — оператор «+»: если оба операнда строковые, результатом будет их объединение. Но у этого подхода есть ограничения: нельзя складывать строку с числом или датой напрямую, иначе возникнет ошибка преобразования типов.

Выбор способа зависит от задачи. Для простых случаев достаточно оператора «+», для шаблонных сообщений удобнее функция СтрШаблон, а для объединения массива строк — СтрСоединить. Ниже разобраны все варианты с примерами кода и типичными ошибками.

Базовый способ: оператор «+» для соединения строк

Оператор сложения в 1С работает как конкатенатор, если хотя бы один из операндов — строка, а второй можно безопасно интерпретировать. На практике надёжнее, чтобы оба операнда были строками.

Имя = "Иван";

Фамилия = "Петров";

ПолноеИмя = Имя + " " + Фамилия;

// Результат: "Иван Петров"

Приветствие = "Здравствуйте, ";

Приветствие = Приветствие + ПолноеИмя;

// Результат: "Здравствуйте, Иван Петров"

Переменную можно дополнять той же самой переменной: конструкция Переменная = Переменная + "текст" полностью корректна. Это стандартный приём накопления строки в цикле, например при формировании списка номенклатуры или текста письма.

1c
ТекстСообщения = "Найдены ошибки:";
Для Каждого СтрокаОшибки Из СписокОшибок Цикл
    ТекстСообщения = ТекстСообщения + Символы.ПС + "- " + СтрокаОшибки;
КонецЦикла;

Добавление чисел, дат и других типов к строке

Главное ограничение оператора «+»: он не выполняет неявное преобразование числа или даты в строку. Выражение "Сумма: " + 100 вызовет ошибку «Преобразование значения к типу Строка не может быть выполнено». Перед соединением нестроковые значения нужно привести к строке явно.

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

СуммаДокумента = 12500.5;

ДатаДокумента = ТекущаяДатаСеанса();

Текст = "Сумма: " + Формат(СуммаДокумента, "ЧДЦ=2; ЧРГ= ")

+ " от " + Формат(ДатаДокумента, "ДЛФ=D");

// Результат: "Сумма: 12 500,50 от 15.05.2026"

Функция СтрШаблон: подстановка значений в шаблон

Когда в текст нужно вставить несколько значений, цепочка из «+» становится трудночитаемой. Функция СтрШаблон решает это: в строке-шаблоне расставляются места подстановки %1, %2 и так далее, а значения передаются параметрами. Дополнительный плюс — функция сама преобразует аргументы к строковому виду.

Текст = СтрШаблон("Документ №%1 от %2 на сумму %3 руб.",

НомерДокумента,

Формат(ДатаДокумента, "ДЛФ=D"),

Формат(СуммаДокумента, "ЧДЦ=2"));

Для вывода символа процента в самом тексте его удваивают: «%%». Учитывайте, что СтрШаблон доступна в современных версиях платформы; в устаревших конфигурациях на старых релизах платформы её может не быть, и там остаётся только конкатенация через «+».

СтрСоединить и накопление строк в цикле

Если нужно объединить элементы массива или коллекции через разделитель, используйте СтрСоединить. Это чище и быстрее, чем ручной цикл с проверкой первого элемента.

МассивСлов = Новый Массив;

МассивСлов.Добавить("Яблоки");

МассивСлов.Добавить("Груши");

МассивСлов.Добавить("Сливы");

СтрокаТоваров = СтрСоединить(МассивСлов, ", ");

// Результат: "Яблоки, Груши, Сливы"

Для многострочного текста в качестве разделителя передавайте Символы.ПС (перевод строки) или Символы.ВК + Символы.ПС, если результат будет выгружаться в текстовый файл под Windows. При накоплении строки в цикле вручную добавляйте разделитель перед элементом, начиная со второго, чтобы не получить лишний разделитель в конце или начале.

Способы добавить текст к переменной

Оператор «+»

Простые соединения 2–3 строк. Требует явного преобразования нестроковых типов.

СтрШаблон

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

СтрСоединить

Объединение массива строк через разделитель. Не подходит для подстановки в середину текста.

Строка() и Формат()

Не соединяют, а готовят значения к соединению. Формат() управляет представлением чисел и дат.

Многострочные строковые литералы

Если текст, который нужно добавить к переменной, сам занимает несколько строк, в 1С предусмотрен многострочный литерал: каждая следующая строка начинается с символа «|». Это удобно для запросов, длинных сообщений и шаблонов писем.

ШаблонПисьма = "Уважаемый клиент!

|Ваш заказ готов к выдаче.

|С уважением, отдел продаж";

ТекстПисьма = ШаблонПисьма + Символы.ПС + "Номер заказа: " + Строка(НомерЗаказа);

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

Проверка результата и типичные ошибки

После соединения строк проверьте результат через Сообщить(), окно «Вычислить выражение» в отладчике (Shift+F9) или вывод в поле формы. Обращайте внимание на пробелы на стыках: самая частая визуальная ошибка — слипшиеся слова вида «ИванПетров» из-за пропущенного пробела между фрагментами.

Типичные ошибки
01
Сложение строки с числом без Строка() или Формат() — ошибка преобразования типов и остановка кода.
02
Пропущенный пробел между фрагментами — слова слипаются, текст нечитаем.
03
Лишний разделитель в конце при склейке в цикле — строка вида «Яблоки, Груши, ».
04
Использование «+» вместо СтрШаблон в длинных шаблонах — код трудно сопровождать, легко перепутать порядок фрагментов.
05
Добавление перевода строки внутрь многострочного литерала повторно — появляются пустые строки.
Контрольные точки

Как проверить результат

Тип результата
Норма

Строка — соединение выполнено

Тревожный признак

Ошибка «Преобразование значения к типу Строка не может быть выполнено»

Стыки фрагментов
Норма

Между словами есть пробелы, числа и даты читаемы

Тревожный признак

Слова слиплись, дата выведена в служебном формате

Конец строки
Норма

Нет висячего разделителя в конце

Тревожный признак

Строка заканчивается запятой или переводом строки

Как выбрать способ в конкретной ситуации

Для одноразового соединения пары строк берите «+» — это самый читаемый вариант. Для сообщений пользователю с несколькими параметрами — СтрШаблон: текст остаётся цельным, его проще редактировать и переводить. Для списков из коллекций — СтрСоединить. Функции Строка() и Формат() применяйте как вспомогательные при любом из способов.

Маршрут решения

Как выбрать действие

Нужно добавить короткий текст к строковой переменнойИспользуйте Переменная = Переменная + "текст"
Добавляется число, дата или булевоСначала преобразуйте значение через Строка() или Формат()
В текст вставляется три и более значенийИспользуйте СтрШаблон с местами подстановки %1, %2, %3
Объединяется массив или коллекция строкСоберите элементы в массив и вызовите СтрСоединить с разделителем
Текст формируется в большом циклеНакапливайте части в массиве и один раз вызовите СтрСоединить вместо многократной конкатенации

Часто задаваемые вопросы

Почему выражение «"Текст" + 100» выдаёт ошибку?

Оператор «+» в 1С не преобразует число в строку автоматически. Используйте "Текст" + Строка(100) или "Текст" + Формат(100, "ЧГ="), если нужно убрать разделители групп разрядов.

Как добавить к переменной перевод строки?

Добавьте системный набор символов: Переменная = Переменная + Символы.ПС. Для файлов под Windows иногда требуется комбинация Символы.ВК + Символы.ПС.

Можно ли использовать += как в других языках?

Нет, оператора += во встроенном языке 1С нет. Пишите полную форму: Переменная = Переменная + "добавляемый текст".

Как вставить значение переменной в середину текста?

Либо разбейте текст на части и соедините через «+», либо используйте СтрШаблон("Часть до %1 часть после", Переменная) — второй вариант удобнее при нескольких вставках.

Что выведет Строка() для даты и почему формат «странный»?

Строка() возвращает представление значения по умолчанию, которое может не соответствовать привычному виду. Для дат и чисел используйте Формат() с явной форматной строкой, например Формат(Дата, "ДЛФ=D").

Чем отличается СтрСоединить от соединения в цикле?

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

Итог

Что важно запомнить

Текст к переменной добавляется оператором «+», нестроковые значения предварительно преобразуются через Строка() или Формат(). Для шаблонов с несколькими значениями используйте СтрШаблон, для массивов — СтрСоединить, а при накоплении в большом цикле собирайте части в массив.