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

Обучение и Решения · 8 мин

Как перейти на следующую строку в 1С

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

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

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

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

Переход на новую строку при вводе данных в полях

В пользовательском режиме чаще всего требуется перейти на следующую строку в поле «Комментарий», в описании номенклатуры или в тексте письма. Если поле многострочное, стандартное сочетание — Ctrl+Enter. Нажатие просто Enter в таком поле обычно завершает редактирование и перемещает фокус на следующий элемент формы.

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

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

Перенос строки в коде: Символы.ПС и Символ(10)

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

Типовой пример формирования многострочного сообщения:

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

Сообщить(ТекстСообщения);

Альтернатива — функция Символ(10), которая возвращает символ по его коду. Результат идентичен Символы.ПС, но запись через Символы.ПС читается легче и считается более правильным стилем. Использовать Символ(13) + Символ(10) вручную стоит только при обмене данными с системами, жёстко требующими CRLF-окончания, например при формировании некоторых текстовых файлов для сторонних программ.

bsl
Текст = "Строка 1" + Символы.ПС + "Строка 2";

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

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

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

|Ваш заказ сформирован и передан в доставку.

|Срок доставки — 3 рабочих дня.";

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

Перенос строки в запросах и в текстах полей СКД

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

Практичный подход: в запросе выбирать части строки отдельными полями, а объединять их с Символы.ПС уже в обработке результата. Это надёжнее, чем попытки вставить непечатаемый символ прямо в текст запроса, и переносимо между разными СУБД (файловый вариант, MS SQL, PostgreSQL).

Переносы строк в печатных формах и табличном документе

При выводе в табличный документ перевод строки внутри текста ячейки работает только если включено свойство ячейки «Размещение текста» с переносом, а сам текст содержит символы перевода строки. Если передать в параметр макета строку с Символы.ПС, но в макете для ячейки не задан перенос, текст отобразится в одну строку или обрежется.

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

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

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

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

Текст разбит на строки, как задумано

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

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

Печатная форма
Норма

Ячейка растягивается по высоте, строки видны полностью

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

Текст обрезан — не включён перенос в макете

Текстовый файл при выгрузке
Норма

Строки разделены, файл открывается корректно

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

Всё слитно — используйте Символы.ПС или пару ВК+ПС

Перенос строки в текстовых файлах и обмене данными

При записи текстовых файлов через объект ЗаписьТекста перевод строки добавляется методом ЗаписатьСтроку() — он сам вставляет разделитель после каждой строки. Если файл формируется вручную склейкой строк, разделитель нужно добавлять явно: Символы.ПС для Linux-формата или Символы.ВК + Символы.ПС для строгого Windows-формата.

При чтении файлов объект ЧтениеТекста с методом ПрочитатьСтроку() корректно обрабатывает оба варианта разделителей, поэтому при импорте обычно не требуется дополнительных действий. Проблемы возникают в основном при обмене с внешними системами через API, где перевод строки в JSON передаётся как экранированная последовательность \n — её формирует сериализатор автоматически, вручную подставлять символы не нужно.

Типичные ошибки
01
Попытка нажать Enter в однострочном поле — ввод завершается, данные теряются из фокуса
02
Вывод многострочного текста в ячейку макета без включённого переноса — текст обрезается на печати
03
Ручная вставка Символ(13)+Символ(10) там, где достаточно Символы.ПС — лишние пустые строки при выгрузке в Linux-формат
04
Ожидание переносов из текста запроса в данные результата — переносы в запросе влияют только на читаемость кода

Частые вопросы о переходе на новую строку в 1С

Почему Enter не переносит строку в поле «Комментарий»?

Значит, реквизит объекта имеет тип строки ограниченной длины или поле настроено как однострочное. Попробуйте Ctrl+Enter; если не помогает — многострочность должен включить разработчик в свойствах реквизита и поля формы.

Чем Символы.ПС отличается от Символы.ВК?

ПС (LF, код 10) — перевод строки, ВК (CR, код 13) — возврат каретки. В большинстве случаев внутри 1С достаточно Символы.ПС; пара ВК+ПС нужна для файлов и протоколов, требующих Windows-окончаний строк.

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

Склейте текст с Символы.ПС между частями и передайте в Сообщить() или в текст предупреждения. Многострочный литерал с вертикальными чертами тоже сохранит переносы.

Можно ли вставить перенос строки в наименование номенклатуры?

Наименование обычно однострочное, и вставить перенос туда нельзя. Для многострочного описания используйте реквизиты «Описание» или «Дополнительное описание», если они предусмотрены конфигурацией.

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

В макете для ячейки не включён перенос текста. Откройте макет, в свойствах ячейки установите перенос и при необходимости автоподбор высоты строки, затем проверьте печать повторно.

Как передать перенос строки при обмене через JSON или XML?

Вручную ничего вставлять не нужно: сериализаторы 1С (ЗаписьJSON, ЗаписьXML) автоматически экранируют переводы строк как \n. Достаточно, чтобы в исходной строке был Символы.ПС.

Итог

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

В полях ввода переход на новую строку — Ctrl+Enter, и только если поле многострочное. В коде используйте Символы.ПС или многострочные литералы с вертикальной чертой. В печатных формах перенос работает только при включённом свойстве переноса в ячейке макета.