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