Быстрый старт · 10 мин
Как перенести строки в 1С: все рабочие способы
Как перенести строки в 1С: Ctrl+Enter в многострочных полях, символы ПС и ВК в коде, перенос в печатных формах и типичные ошибки при работе с переносами.
Перенос строки в 1С — задача, которая встречается в трёх разных ситуациях: при вводе текста в многострочное поле (например, комментарий к документу), при формировании строки в программном коде и при выводе данных в печатную форму или отчёт. В каждом случае действует свой механизм, и способ, который работает в одном месте, может не сработать в другом.
Причина в том, что 1С различает «визуальный» перенос, который пользователь видит на экране, и символы перевода строки, которые реально хранятся в данных. В многострочном поле формы перенос создаётся сочетанием клавиш, в коде — служебными символами, а в запросах и выгрузках — специальными конструкциями языка.
Ниже разобраны все основные сценарии: от простого ввода текста до программной вставки переносов и исправления типичных проблем, когда перенос «есть, но не отображается» или, наоборот, мешает обработке данных.
Почему Enter не переносит строку в 1С
Большинство полей ввода в 1С — однострочные: наименование контрагента, ИНН, номер документа. В них нажатие Enter означает «завершить редактирование и перейти к следующему полю», а не перенос строки. Это стандартное поведение платформы, и изменить его настройками нельзя.
Перенос возможен только там, где поле изначально спроектировано как многострочное: комментарии, описания, дополнительная информация, произвольные текстовые блоки. Визуально такие поля обычно выше одной строки и имеют полосу прокрутки. Если поле выглядит как одиночная строка — перенос в нём недоступен в принципе, и нужно искать другое место для текста (например, табличную часть или отдельный реквизит).
Ещё одна причина путаницы — разница между хранением и отображением. Строка может содержать символы переноса, но показываться в одну строку, если поле вывода однострочное. Текст при этом не потерян: он станет виден при открытии поля на редактирование или в многострочном режиме.
Перенос строки при вводе текста в форме
В многострочном поле формы (комментарий, описание, содержание письма) перенос строки выполняется сочетанием Ctrl+Enter. Обычный Enter в таких полях часто также работает как перенос — поведение зависит от настройки поля в конкретной конфигурации, поэтому надёжнее использовать Ctrl+Enter: это сочетание гарантированно вставляет перевод строки и не закрывает форму.
Порядок действий простой: поставьте курсор в нужное место текста, нажмите Ctrl+Enter — текст после курсора переместится на новую строку. Чтобы убрать перенос, поставьте курсор в начало следующей строки и нажмите Backspace.
- 1Откройте документ или элемент справочника и найдите многострочное поле (комментарий, описание).
- 2Щёлкните внутрь поля и поставьте курсор в место будущего переноса.
- 3Нажмите Ctrl+Enter — появится новая строка.
- 4Запишите объект, чтобы переносы сохранились в базе.
- 5Откройте объект повторно и убедитесь, что текст отображается в несколько строк.
Если Ctrl+Enter не срабатывает, проверьте, действительно ли поле многострочное. Признак однострочного поля: курсор не перемещается вниз стрелками клавиатуры, а высота поля не увеличивается. В таком случае текст с переносами придётся размещать в другом реквизите — например, в типовых конфигурациях у многих объектов есть поле «Комментарий» или «Дополнительная информация».
Перенос строки в программном коде 1С
При формировании строк в модуле используются служебные символы. Самый распространённый способ — константа Символы.ПС (перевод строки). Строка собирается через конкатенацию:
ТекстСообщения = "Первая строка" + Символы.ПС + "Вторая строка";
Альтернативы: Символ(10) — тот же перевод строки по коду, Символ(13) + Символ(10) — классическая пара «возврат каретки + перевод строки», которая нужна при выгрузке в файлы, где принят Windows-формат переносов (например, некоторые текстовые форматы обмена). Для вывода в поле формы или сообщение пользователю достаточно Символы.ПС.
Ещё один удобный приём — многострочные строковые литералы прямо в коде. В 1С строка может занимать несколько строк модуля, если каждая следующая часть начинается с вертикальной черты:
Текст = "Первая строка
|Вторая строка
|Третья строка";
Важный нюанс: такой литерал сам по себе не вставляет символы переноса в значение — строки склеиваются в одну. Если нужны реальные переносы, их добавляют явно через Символы.ПС между частями.
ТекстПисьма = "Уважаемый клиент!" + Символы.ПС + Символы.ПС + "Ваш заказ отгружен." + Символы.ПС + "С уважением, отдел продаж";Перенос в запросах и при обработке текста
В языке запросов 1С перенос строки можно задать через функцию СИМВОЛ(10) — например, при объединении полей адреса в одну строку с разбивкой. Это полезно, когда многострочное представление формируется сразу в запросе для отчёта.
При программной обработке текста часто нужна обратная операция — разбить строку по переносам или, наоборот, убрать их. Для разбора удобна функция СтрРазделить(Текст, Символы.ПС), которая возвращает массив строк. Для удаления переносов используют СтрЗаменить(Текст, Символы.ПС, " ") — типичный приём перед выгрузкой в форматы, где перевод строки недопустим (например, в однострочные поля CSV).
При чтении данных из внешних файлов учитывайте, что переносы могут прийти в виде пары Символ(13)+Символ(10). Если удалять только ПС, в конце строк останутся «мусорные» символы ВК, которые ломают сравнение строк и поиск. Надёжнее чистить оба варианта.
Перенос строк в печатных формах и отчётах
В макетах табличных документов перенос внутри ячейки включается свойством «Переносить» (многострочный режим ячейки). Если текст в ячейке обрезается, хотя в данных он содержит переносы, — проверьте это свойство в параметрах ячейки макета. Без него содержимое показывается одной строкой и визуально «съедается».
В схеме компоновки данных (СКД) многострочный вывод зависит от настроек оформления поля: для длинных текстов включают перенос в параметре «Оформление» соответствующего поля отчёта. В формах списков длинный текст колонки обычно обрезается — это ограничение интерфейса, а не потеря данных.
Если печатная форма формируется программно и переносы пропадают, причина почти всегда одна из двух: либо в шаблоне текста переносы не вставлены (строка собрана без Символы.ПС), либо ячейка макета не настроена на многострочный вывод. Проверяйте сначала данные, потом макет.
Как проверить результат
Текст виден в несколько строк после записи и повторного открытия объекта
Весь текст в одну строку — поле однострочное или переносы не сохранились
В сообщении или поле видны реальные переносы
Строки склеены — забыли добавить Символы.ПС между частями
Длинный текст переносится, высота строки подстраивается
Текст обрезан — у ячейки не включён многострочный режим
Переносы присутствуют только там, где разрешены форматом
Файл не загружается на приёмнике — лишние переносы внутри значений
Типичные ошибки и ограничения
Самая частая ошибка пользователей — попытка перенести строку в однострочном поле копированием текста с переносами из Word или Excel. При вставке 1С обычно либо обрезает текст до первого переноса, либо склеивает строки. Итог: часть информации теряется незаметно. Перед вставкой проверяйте результат, открыв поле на редактирование.
Вторая группа ошибок — программные: сборка строки без Символы.ПС (текст склеивается), использование только Символ(13) там, где нужен Символ(10), и наоборот. Третья — попытка вывести многострочный текст в однострочную ячейку макета и поиск «пропавших» переносов не в том месте.
Ограничение, о котором стоит помнить: переносы строк в данных могут мешать поиску и сравнению. Две внешне одинаковые строки, отличающиеся только невидимыми символами переноса, для платформы — разные значения. При загрузке данных из внешних источников полезно нормализовать текст: убрать лишние переносы и пробелы по краям.
Что важно запомнить
В формах перенос делается через Ctrl+Enter и только в многострочных полях. В коде используйте Символы.ПС, для Windows-форматов файлов — пару Символ(13)+Символ(10). Если перенос «не виден», проверяйте тип поля, свойства ячейки макета и наличие служебных символов в самих данных.
Частые вопросы
Почему Ctrl+Enter не работает в поле комментария?
Скорее всего, поле в этой конфигурации однострочное или форма открыта в режиме, где редактирование заблокировано. Проверьте, доступно ли поле для ввода (курсор мигает внутри), и попробуйте обычный Enter — в некоторых многострочных полях именно он вставляет перенос. Если поле однострочное, используйте другое предназначенное для текста поле объекта.
Как перенести строку в наименовании элемента справочника?
Стандартное наименование — однострочное поле, перенос в нём невозможен. Если нужно многострочное описание, используйте реквизиты «Описание», «Комментарий» или добавьте дополнительный реквизит через механизм дополнительных сведений, где доступен многострочный формат.
Чем Символы.ПС отличается от Символ(13)?
Символы.ПС — это перевод строки (код 10), а Символ(13) — возврат каретки. Для отображения текста внутри 1С достаточно ПС. Пара из кодов 13 и 10 нужна при выгрузке в текстовые файлы Windows-формата, где принят именно такой маркер конца строки.
Как убрать переносы строк из текста программно?
Используйте вложенную замену: сначала СтрЗаменить(Текст, Символ(13), ""), затем СтрЗаменить(Текст, Символы.ПС, " "). Такой порядок корректно обрабатывает и Windows-переносы (пара 13+10), и одиночные переводы строки, заменяя их на пробел без склейки слов.
Почему в печатной форме текст с переносами выводится одной строкой?
У ячейки макета не включён многострочный режим. Откройте макет, выделите ячейку и в палитре свойств включите перенос текста. Также проверьте, что высота строки макета позволяет показать несколько строк или задана автоотметка высоты.
Можно ли перенести строку в сообщении пользователю?
Да. При выводе через Сообщить() или объект СообщениеПользователю вставьте Символы.ПС между частями текста — сообщение отобразится в несколько строк в панели сообщений.