Обучение и Решения · 8 мин
Как перейти на следующую строку в 1С
Как перейти на новую строку в 1С: Enter в многострочных полях, Символы.ПС и Символ(10) в коде, перенос строк в запросах, печатных формах и при вводе данных.
Вопрос о переходе на следующую строку в 1С возникает в нескольких разных ситуациях: при вводе многострочного текста в поле документа, при формировании строки во встроенном языке, при составлении текста запроса или при выводе печатной формы. В каждом случае действует свой механизм, и универсальной комбинации клавиш на все случаи не существует.
Основная сложность в том, что в однострочных полях ввода клавиша Enter завершает ввод или активирует кнопку по умолчанию, а не вставляет перевод строки. Поэтому пользователю нужно либо использовать специальное сочетание клавиш, либо поле должно быть изначально настроено как многострочное разработчиком конфигурации.
В программном коде перенос строки формируется иначе — через системный набор символов Символы.ПС или функцию Символ(10). Ниже разобраны все рабочие способы с указанием, где каждый из них применим и какие ограничения имеет.
Переход на новую строку при вводе данных в полях
В пользовательском режиме чаще всего требуется перейти на следующую строку в поле «Комментарий», в описании номенклатуры или в тексте письма. Если поле многострочное, стандартное сочетание — Ctrl+Enter. Нажатие просто Enter в таком поле обычно завершает редактирование и перемещает фокус на следующий элемент формы.
Если поле однострочное, никакое сочетание клавиш не поможет: платформа физически не хранит переводы строк в однострочном реквизите. Признак однострочного поля — оно занимает ровно одну строку по высоте и не растягивается при вводе длинного текста. В этом случае варианты такие: найти другое предназначенное для этого поле (например, «Дополнительная информация»), либо попросить разработчика изменить тип реквизита на неограниченную строку с многострочным режимом.
- 1Установите курсор в поле ввода (например, «Комментарий»)
- 2Нажмите Ctrl+Enter — появится перевод строки
- 3Если сочетание не сработало, попробуйте Shift+Enter
- 4Если поле остаётся однострочным — это ограничение реквизита, а не ошибка
- 5Проверьте результат, сохранив и повторно открыв объект
Перенос строки в коде: Символы.ПС и Символ(10)
Во встроенном языке 1С перевод строки вставляется через системное перечисление Символы. Свойство Символы.ПС соответствует символу перевода строки (LF, код 10), а Символы.ВК — возврату каретки (CR, код 13). Для полноценного переноса в Windows-окружении иногда используют пару ВК+ПС, но в большинстве случаев достаточно Символы.ПС.
Типовой пример формирования многострочного сообщения:
ТекстСообщения = "Первая строка" + Символы.ПС + "Вторая строка";
Сообщить(ТекстСообщения);
Альтернатива — функция Символ(10), которая возвращает символ по его коду. Результат идентичен Символы.ПС, но запись через Символы.ПС читается легче и считается более правильным стилем. Использовать Символ(13) + Символ(10) вручную стоит только при обмене данными с системами, жёстко требующими CRLF-окончания, например при формировании некоторых текстовых файлов для сторонних программ.
Текст = "Строка 1" + Символы.ПС + "Строка 2";Многострочные строковые литералы в модуле
Если нужно задать длинный текст прямо в коде, не склеивая строки оператором «+», используют многострочный строковый литерал. Каждая строка такого литерала начинается с символа вертикальной черты |, а переносы строк внутри текста сохраняются автоматически:
ТекстПисьма = "Уважаемый клиент!
|Ваш заказ сформирован и передан в доставку.
|Срок доставки — 3 рабочих дня.";
Такой способ удобен для шаблонов писем, служебных сообщений и текстов запросов. Важный нюанс: внутри многострочного литерала переносы сохраняются как есть, поэтому лишние пробелы перед вертикальной чертой попадут в итоговую строку. Для объединения кусков без переноса используют обычную конкатенацию с Символы.ПС в нужных местах.
Перенос строки в запросах и в текстах полей СКД
В тексте запроса на языке запросов 1С переводы строк между конструкциями расставляются свободно — они нужны только для читаемости. Но если требуется получить перевод строки внутри значения, которое вернёт запрос (например, склеить адрес из нескольких частей с переносами), применяется конструкция с символом через функцию, доступную в конкретной СУБД, либо склейка выполняется уже после запроса в коде.
Практичный подход: в запросе выбирать части строки отдельными полями, а объединять их с Символы.ПС уже в обработке результата. Это надёжнее, чем попытки вставить непечатаемый символ прямо в текст запроса, и переносимо между разными СУБД (файловый вариант, MS SQL, PostgreSQL).
Переносы строк в печатных формах и табличном документе
При выводе в табличный документ перевод строки внутри текста ячейки работает только если включено свойство ячейки «Размещение текста» с переносом, а сам текст содержит символы перевода строки. Если передать в параметр макета строку с Символы.ПС, но в макете для ячейки не задан перенос, текст отобразится в одну строку или обрежется.
Порядок настройки: открыть макет, выделить нужную ячейку, в палитре свойств установить «Переносить» (или тип размещения текста с переносом), при необходимости включить автовысоту строки. После этого многострочные значения параметров будут выводиться корректно.
Как проверить результат
Текст разбит на строки, как задумано
Весь текст в одну строку — поле однострочное или нет переноса
Ячейка растягивается по высоте, строки видны полностью
Текст обрезан — не включён перенос в макете
Строки разделены, файл открывается корректно
Всё слитно — используйте Символы.ПС или пару ВК+ПС
Перенос строки в текстовых файлах и обмене данными
При записи текстовых файлов через объект ЗаписьТекста перевод строки добавляется методом ЗаписатьСтроку() — он сам вставляет разделитель после каждой строки. Если файл формируется вручную склейкой строк, разделитель нужно добавлять явно: Символы.ПС для Linux-формата или Символы.ВК + Символы.ПС для строгого Windows-формата.
При чтении файлов объект ЧтениеТекста с методом ПрочитатьСтроку() корректно обрабатывает оба варианта разделителей, поэтому при импорте обычно не требуется дополнительных действий. Проблемы возникают в основном при обмене с внешними системами через API, где перевод строки в JSON передаётся как экранированная последовательность \n — её формирует сериализатор автоматически, вручную подставлять символы не нужно.
Частые вопросы о переходе на новую строку в 1С
Почему Enter не переносит строку в поле «Комментарий»?
Значит, реквизит объекта имеет тип строки ограниченной длины или поле настроено как однострочное. Попробуйте Ctrl+Enter; если не помогает — многострочность должен включить разработчик в свойствах реквизита и поля формы.
Чем Символы.ПС отличается от Символы.ВК?
ПС (LF, код 10) — перевод строки, ВК (CR, код 13) — возврат каретки. В большинстве случаев внутри 1С достаточно Символы.ПС; пара ВК+ПС нужна для файлов и протоколов, требующих Windows-окончаний строк.
Как перенести строку в сообщении пользователю?
Склейте текст с Символы.ПС между частями и передайте в Сообщить() или в текст предупреждения. Многострочный литерал с вертикальными чертами тоже сохранит переносы.
Можно ли вставить перенос строки в наименование номенклатуры?
Наименование обычно однострочное, и вставить перенос туда нельзя. Для многострочного описания используйте реквизиты «Описание» или «Дополнительное описание», если они предусмотрены конфигурацией.
Почему в печатной форме текст с переносами выводится в одну строку?
В макете для ячейки не включён перенос текста. Откройте макет, в свойствах ячейки установите перенос и при необходимости автоподбор высоты строки, затем проверьте печать повторно.
Как передать перенос строки при обмене через JSON или XML?
Вручную ничего вставлять не нужно: сериализаторы 1С (ЗаписьJSON, ЗаписьXML) автоматически экранируют переводы строк как \n. Достаточно, чтобы в исходной строке был Символы.ПС.
Что важно запомнить
В полях ввода переход на новую строку — Ctrl+Enter, и только если поле многострочное. В коде используйте Символы.ПС или многострочные литералы с вертикальной чертой. В печатных формах перенос работает только при включённом свойстве переноса в ячейке макета.