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

Быстрый старт · 10 мин

Как перенести строки в 1С: все рабочие способы

Как перенести строки в 1С: Ctrl+Enter в многострочных полях, символы ПС и ВК в коде, перенос в печатных формах и типичные ошибки при работе с переносами.

Перенос строки в 1С — задача, которая встречается в трёх разных ситуациях: при вводе текста в многострочное поле (например, комментарий к документу), при формировании строки в программном коде и при выводе данных в печатную форму или отчёт. В каждом случае действует свой механизм, и способ, который работает в одном месте, может не сработать в другом.

Причина в том, что 1С различает «визуальный» перенос, который пользователь видит на экране, и символы перевода строки, которые реально хранятся в данных. В многострочном поле формы перенос создаётся сочетанием клавиш, в коде — служебными символами, а в запросах и выгрузках — специальными конструкциями языка.

Ниже разобраны все основные сценарии: от простого ввода текста до программной вставки переносов и исправления типичных проблем, когда перенос «есть, но не отображается» или, наоборот, мешает обработке данных.

Почему Enter не переносит строку в 1С

Большинство полей ввода в 1С — однострочные: наименование контрагента, ИНН, номер документа. В них нажатие Enter означает «завершить редактирование и перейти к следующему полю», а не перенос строки. Это стандартное поведение платформы, и изменить его настройками нельзя.

Перенос возможен только там, где поле изначально спроектировано как многострочное: комментарии, описания, дополнительная информация, произвольные текстовые блоки. Визуально такие поля обычно выше одной строки и имеют полосу прокрутки. Если поле выглядит как одиночная строка — перенос в нём недоступен в принципе, и нужно искать другое место для текста (например, табличную часть или отдельный реквизит).

Ещё одна причина путаницы — разница между хранением и отображением. Строка может содержать символы переноса, но показываться в одну строку, если поле вывода однострочное. Текст при этом не потерян: он станет виден при открытии поля на редактирование или в многострочном режиме.

Перенос строки при вводе текста в форме

В многострочном поле формы (комментарий, описание, содержание письма) перенос строки выполняется сочетанием Ctrl+Enter. Обычный Enter в таких полях часто также работает как перенос — поведение зависит от настройки поля в конкретной конфигурации, поэтому надёжнее использовать Ctrl+Enter: это сочетание гарантированно вставляет перевод строки и не закрывает форму.

Порядок действий простой: поставьте курсор в нужное место текста, нажмите Ctrl+Enter — текст после курсора переместится на новую строку. Чтобы убрать перенос, поставьте курсор в начало следующей строки и нажмите Backspace.

Как сделать перенос в многострочном поле
  1. 1
    Откройте документ или элемент справочника и найдите многострочное поле (комментарий, описание).
  2. 2
    Щёлкните внутрь поля и поставьте курсор в место будущего переноса.
  3. 3
    Нажмите Ctrl+Enter — появится новая строка.
  4. 4
    Запишите объект, чтобы переносы сохранились в базе.
  5. 5
    Откройте объект повторно и убедитесь, что текст отображается в несколько строк.

Если Ctrl+Enter не срабатывает, проверьте, действительно ли поле многострочное. Признак однострочного поля: курсор не перемещается вниз стрелками клавиатуры, а высота поля не увеличивается. В таком случае текст с переносами придётся размещать в другом реквизите — например, в типовых конфигурациях у многих объектов есть поле «Комментарий» или «Дополнительная информация».

Перенос строки в программном коде 1С

При формировании строк в модуле используются служебные символы. Самый распространённый способ — константа Символы.ПС (перевод строки). Строка собирается через конкатенацию:

ТекстСообщения = "Первая строка" + Символы.ПС + "Вторая строка";

Альтернативы: Символ(10) — тот же перевод строки по коду, Символ(13) + Символ(10) — классическая пара «возврат каретки + перевод строки», которая нужна при выгрузке в файлы, где принят Windows-формат переносов (например, некоторые текстовые форматы обмена). Для вывода в поле формы или сообщение пользователю достаточно Символы.ПС.

Ещё один удобный приём — многострочные строковые литералы прямо в коде. В 1С строка может занимать несколько строк модуля, если каждая следующая часть начинается с вертикальной черты:

Текст = "Первая строка

|Вторая строка

|Третья строка";

Важный нюанс: такой литерал сам по себе не вставляет символы переноса в значение — строки склеиваются в одну. Если нужны реальные переносы, их добавляют явно через Символы.ПС между частями.

bsl
ТекстПисьма = "Уважаемый клиент!" + Символы.ПС + Символы.ПС + "Ваш заказ отгружен." + Символы.ПС + "С уважением, отдел продаж";

Перенос в запросах и при обработке текста

В языке запросов 1С перенос строки можно задать через функцию СИМВОЛ(10) — например, при объединении полей адреса в одну строку с разбивкой. Это полезно, когда многострочное представление формируется сразу в запросе для отчёта.

При программной обработке текста часто нужна обратная операция — разбить строку по переносам или, наоборот, убрать их. Для разбора удобна функция СтрРазделить(Текст, Символы.ПС), которая возвращает массив строк. Для удаления переносов используют СтрЗаменить(Текст, Символы.ПС, " ") — типичный приём перед выгрузкой в форматы, где перевод строки недопустим (например, в однострочные поля CSV).

При чтении данных из внешних файлов учитывайте, что переносы могут прийти в виде пары Символ(13)+Символ(10). Если удалять только ПС, в конце строк останутся «мусорные» символы ВК, которые ломают сравнение строк и поиск. Надёжнее чистить оба варианта.

Перенос строк в печатных формах и отчётах

В макетах табличных документов перенос внутри ячейки включается свойством «Переносить» (многострочный режим ячейки). Если текст в ячейке обрезается, хотя в данных он содержит переносы, — проверьте это свойство в параметрах ячейки макета. Без него содержимое показывается одной строкой и визуально «съедается».

В схеме компоновки данных (СКД) многострочный вывод зависит от настроек оформления поля: для длинных текстов включают перенос в параметре «Оформление» соответствующего поля отчёта. В формах списков длинный текст колонки обычно обрезается — это ограничение интерфейса, а не потеря данных.

Если печатная форма формируется программно и переносы пропадают, причина почти всегда одна из двух: либо в шаблоне текста переносы не вставлены (строка собрана без Символы.ПС), либо ячейка макета не настроена на многострочный вывод. Проверяйте сначала данные, потом макет.

Контрольные точки

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

Отображение текста в форме
Норма

Текст виден в несколько строк после записи и повторного открытия объекта

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

Весь текст в одну строку — поле однострочное или переносы не сохранились

Строка, собранная в коде
Норма

В сообщении или поле видны реальные переносы

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

Строки склеены — забыли добавить Символы.ПС между частями

Ячейка печатной формы
Норма

Длинный текст переносится, высота строки подстраивается

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

Текст обрезан — у ячейки не включён многострочный режим

Выгрузка в файл
Норма

Переносы присутствуют только там, где разрешены форматом

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

Файл не загружается на приёмнике — лишние переносы внутри значений

Типичные ошибки и ограничения

Самая частая ошибка пользователей — попытка перенести строку в однострочном поле копированием текста с переносами из Word или Excel. При вставке 1С обычно либо обрезает текст до первого переноса, либо склеивает строки. Итог: часть информации теряется незаметно. Перед вставкой проверяйте результат, открыв поле на редактирование.

Вторая группа ошибок — программные: сборка строки без Символы.ПС (текст склеивается), использование только Символ(13) там, где нужен Символ(10), и наоборот. Третья — попытка вывести многострочный текст в однострочную ячейку макета и поиск «пропавших» переносов не в том месте.

Типичные ошибки
01
Нажатие Enter в однострочном поле — вместо переноса завершается ввод и фокус уходит на следующий реквизит.
02
Вставка многострочного текста из Excel в однострочное поле — часть текста после первого переноса теряется.
03
Сборка строки в коде без Символы.ПС — все части склеиваются в одну строку.
04
Удаление только Символы.ПС при очистке текста из Windows-файла — остаются символы ВК, ломающие сравнение строк.
05
Вывод в ячейку макета без свойства переноса — текст визуально обрезается, хотя в данных он полный.

Ограничение, о котором стоит помнить: переносы строк в данных могут мешать поиску и сравнению. Две внешне одинаковые строки, отличающиеся только невидимыми символами переноса, для платформы — разные значения. При загрузке данных из внешних источников полезно нормализовать текст: убрать лишние переносы и пробелы по краям.

Итог

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

В формах перенос делается через Ctrl+Enter и только в многострочных полях. В коде используйте Символы.ПС, для Windows-форматов файлов — пару Символ(13)+Символ(10). Если перенос «не виден», проверяйте тип поля, свойства ячейки макета и наличие служебных символов в самих данных.

Частые вопросы

Почему Ctrl+Enter не работает в поле комментария?

Скорее всего, поле в этой конфигурации однострочное или форма открыта в режиме, где редактирование заблокировано. Проверьте, доступно ли поле для ввода (курсор мигает внутри), и попробуйте обычный Enter — в некоторых многострочных полях именно он вставляет перенос. Если поле однострочное, используйте другое предназначенное для текста поле объекта.

Как перенести строку в наименовании элемента справочника?

Стандартное наименование — однострочное поле, перенос в нём невозможен. Если нужно многострочное описание, используйте реквизиты «Описание», «Комментарий» или добавьте дополнительный реквизит через механизм дополнительных сведений, где доступен многострочный формат.

Чем Символы.ПС отличается от Символ(13)?

Символы.ПС — это перевод строки (код 10), а Символ(13) — возврат каретки. Для отображения текста внутри 1С достаточно ПС. Пара из кодов 13 и 10 нужна при выгрузке в текстовые файлы Windows-формата, где принят именно такой маркер конца строки.

Как убрать переносы строк из текста программно?

Используйте вложенную замену: сначала СтрЗаменить(Текст, Символ(13), ""), затем СтрЗаменить(Текст, Символы.ПС, " "). Такой порядок корректно обрабатывает и Windows-переносы (пара 13+10), и одиночные переводы строки, заменяя их на пробел без склейки слов.

Почему в печатной форме текст с переносами выводится одной строкой?

У ячейки макета не включён многострочный режим. Откройте макет, выделите ячейку и в палитре свойств включите перенос текста. Также проверьте, что высота строки макета позволяет показать несколько строк или задана автоотметка высоты.

Можно ли перенести строку в сообщении пользователю?

Да. При выводе через Сообщить() или объект СообщениеПользователю вставьте Символы.ПС между частями текста — сообщение отобразится в несколько строк в панели сообщений.