Работа с текстами в 1С:Предприятие часто требует форматирования — особенно когда нужно разделить информацию на абзацы или вывести данные в удобочитаемом виде. Перенос строки в 1С реализуется по-разному в зависимости от контекста: это может быть Символы.ПС в коде, нажатие Shift+Enter в таблице или специальные настройки в макетах печати. Без правильного подхода текст сливается в сплошной блок, документ теряет структуру, а отчеты становятся нечитаемыми.
В этой статье мы разберем 5 рабочих способов добавить перенос строки в 1С 8.3 — от простых пользовательских действий до программных решений для разработчиков. Вы узнаете, как:
- 🔹 Вставлять разрыв строки в текстовых полях форм (включая ограничения)
- 🔹 Использовать
Символы.ПСиСтрЗаменить()в коде 1С - 🔹 Настраивать переносы в макетах печати и отчетах
- 🔹 Работать с многострочными ячейками в табличных документах
- 🔹 Обходить типичные ошибки, когда перенос "не работает"
Материал актуален для всех современных версий платформы, включая 1С:Предприятие 8.3.23 и новее. Если вы работаете со старыми релизами (до 8.2), некоторые методы могут требовать адаптации — об этом мы тоже упомянем.
1. Перенос строки в текстовых полях форм (для пользователей)
Самый простой способ — когда вам нужно ввести многострочный текст непосредственно в интерфейсе 1С. Например, при заполнении поля Комментарий в документе или справочнике.
По умолчанию в большинстве текстовых полей перенос строки выполняется комбинацией Shift + Enter. Это работает:
- 📝 В полях с типом
Строка(если включен режим многострочности) - 📄 В элементах управления
ПолеHTMLДокументаилиПолеТекстовогоДокумента - 📋 В ячейках табличных частей, если для колонки установлен тип
Строкас флагомМногострочныйРежим
Если Shift+Enter не срабатывает, проверьте:
- Тип поля: однострочные поля (
ПолеВводасМногострочныйРежим = Ложь) не поддерживают переносы. - Настройки формы: иногда разработчики отключают эту функцию через свойство
ПереносСтрокиЗапрещен.
Если поле не поддерживает Shift+Enter, попробуйте вставить символ переноса из буфера обмена. Скопируйте его из этого абзаца: ⏎ (нажмите Ctrl+C на символе и вставьте в 1С).
2. Программный перенос строки в коде 1С
Для разработчиков основной инструмент — это встроенная константа Символы.ПС (перенос строки). Она добавляет разрыв аналогично нажатию Enter в текстовом редакторе.
Примеры использования:
// Простой перенос
Текст = "Первая строка" + Символы.ПС + "Вторая строка";
// Перенос в сообщении пользователю
Сообщить("Ошибка в строке 1:" + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Важное);
// Перенос в запросе (для SQL-подобных конструкций)
Запрос.Текст =
"ВЫБРАТЬ" + Символы.ПС +
" Номенклатура.Наименование КАК Товар," + Символы.ПС +
" СУММА(Количество) КАК Итого";
Важно: в некоторых контекстах (например, при формировании HTML или PDF) Символы.ПС может не сработать. В таких случаях используйте:
- 🔧 Для HTML: замените на тег
<br>с помощьюСтрЗаменить(Текст, Символы.ПС, "<br>") - 📄 Для табличных документов: используйте метод
УстановитьТекст()с параметромПереносСтроки = Истина
3. Перенос строки в макетах печати и отчетах
При формировании печатных форм или отчетов перенос строки настраивается через макеты. Здесь есть два подхода:
- Явное указание переноса в тексте макета:
// В тексте макета (например, в шапке документа)Текст = "Адрес доставки: " + Символы.ПС + АдресПолный;
- Настройка свойств области макета:
- 📏 Установите флаг
ПереносСтрокидля текстовой области - 📐 Задайте фиксированную высоту или включите
АвтоВысота
- 📏 Установите флаг
Типичная ошибка: если текст "обрезается" при печати, проверьте:
- 🔍 Размеры области макета (возможно, не хватает места для нескольких строк)
- 🔍 Параметр
ОбрезкаТекста(должен бытьЛожь) - 🔍 Шрифт и межстрочный интервал (слишком крупный шрифт может "выталкивать" текст за границы)
| Проблема | Возможная причина | Решение |
|---|---|---|
| Перенос не отображается в печатной форме | В макете отключен ПереносСтроки |
Открыть макет, выбрать текстовую область → свойства → поставить галочку ПереносСтроки |
| Текст сливается в одну строку при экспорте в Excel | Excel игнорирует Символы.ПС |
Использовать Символы.ВК (возврат каретки) или настраивать ячейки Excel через ТабличныйДокумент.Экспорт() |
| Перенос работает в предварительном просмотре, но не при печати | Драйвер принтера игнорирует форматирование | Экспортировать в PDF, затем печатать из Adobe Reader |
4. Работа с табличными документами
В табличных документах (например, в отчетах или печатных формах) перенос строки настраивается через свойства ячейки. Вот ключевые моменты:
Способ 1: Ручное форматирование
- Выделите ячейку в табличном документе.
- В панели свойств найдите параметр
ПереносСтрокии установитеИстина. - Для принудительного переноса введите
Символы.ПСв текст ячейки:
ТабличныйДокумент.Область(1,1).Текст = "Строка 1" + Символы.ПС + "Строка 2";
Способ 2: Автоматический перенос по словам
Если текст длинный и нужно переносить его по границам слов:
ТабличныйДокумент.Область(1,1).ПереносСтроки = Истина;
ТабличныйДокумент.Область(1,1).ГоризонтальноеПоложение = ГоризонтальноеПоложение.ПоЛевомуКраю;
Почему перенос не работает в ячейке табличного документа?
Если вы установили ПереносСтроки = Истина, но текст все равно в одну строку, проверьте:
1. Ширину колонки — если она слишком узкая, текст обрезается despite настройки переноса.
2. Высоту строки — если зафиксирована, длинный текст будет обрезан.
3. Свойство ОбрезкаТекста — должно быть Ложь.
4. Шрифт — некоторые шрифты (например, моноширинные) могут игнорировать переносы.
5. Перенос строки в запросах и результатах выборки
При работе с запросами 1С перенос строки может понадобиться для:
- 📊 Форматирования результатов выборки (например, для вывода адреса в несколько строк)
- 📋 Разделения данных в отчетах по категориям
- 🔍 Логирования ошибок с подробным описанием
Пример: добавление переноса в результат запроса:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Клиенты.Наименование КАК Клиент,
| ""Адрес: "" + Символы.ПС + Клиенты.Адрес КАК АдресФорматированный
|ИЗ
| Справочник.Клиенты КАК Клиенты";
Результат = Запрос.Выполнить();
Важно: в конструкторе запросов 1С символ Символы.ПС не отображается визуально — его нужно добавлять вручную в тексте запроса.
Для динамического формирования строк с переносами используйте функцию СтрСоединить():
СписокСтрок = Новый Массив;
СписокСтрок.Добавить("Строка 1");
СписокСтрок.Добавить("Строка 2");
РезультирующийТекст = СтрСоединить(СписокСтрок, Символы.ПС);
6. Типичные ошибки и как их избежать
Даже опытные разработчики сталкиваются с проблемами при работе с переносами строк в 1С. Вот наиболее распространенные случаи и их решения:
Ячейка/поле поддерживает многострочный режим|Проверены настройки макета (ПереносСтроки, АвтоВысота)|Учтена специфика экспорта (Excel, PDF, HTML)|Тестируется на реальных данных, а не на коротких строках-->
Ошибка 1: Перенос не работает в ПолеHTMLДокумента
⚠️ Внимание:ПолеHTMLДокументаигнорируетСимволы.ПС. Вместо него используйте HTML-тег<br>:
ПолеHTML.УстановитьТекст(СтрЗаменить(ТекстСПереносами, Символы.ПС, "<br>"));
Ошибка 2: При экспорте в Excel переносы пропадают
Excel не распознает Символы.ПС как разрыв строки. Решения:
- 🔄 Замените
Символы.ПСнаСимволы.ВК(возврат каретки,Chr(13)) - 📊 Настройте ячейки Excel на
ПереносТекста = ИстиначерезТабличныйДокумент.Экспорт()
Ошибка 3: В печатной форме текст обрезается
⚠️ Внимание: Если в макете печати установлена фиксированная высота области, длинный текст с переносами будет обрезан. Используйте АвтоВысота = Истина или увеличивайте высоту области вручную.
Для корректного отображения переносов в отчетах всегда проверяйте три параметра: ПереносСтроки (включен), ОбрезкаТекста (отключена), АвтоВысота (включена или достаточная фиксированная высота).
FAQ: Частые вопросы о переносе строк в 1С
Можно ли сделать перенос строки в поле ввода справочника, если оно однострочное?
Нет, однострочные поля (ПолеВвода с МногострочныйРежим = Ложь) не поддерживают переносы. Решения:
- Измените свойство поля на
МногострочныйРежим = Истина(требует правки конфигурации). - Используйте вместо него
ПолеHTMLДокументаилиПолеТекстовогоДокумента.
Почему при выводе в сообщение (Сообщить()) перенос строки не работает?
В окне сообщений 1С переносы отображаются, но только если текст не содержит HTML-тегов. Проверьте:
- Используете ли вы
Символы.ПС, а не<br>. - Нет ли в тексте символов, которые могут интерпретироваться как разметка (например,
<или>).
Пример корректного вывода:
Сообщить("Первая строка" + Символы.ПС + "Вторая строка");
Как сделать перенос строки в ячейке табличной части документа?
Для этого:
- Откройте форму документа в режиме конфигуратора.
- Найдите табличную часть и выберите колонку, где нужен перенос.
- В свойствах колонки установите
МногострочныйРежим = Истина. - Сохраните изменения и обновите конфигурацию.
После этого в ячейке будет работать Shift+Enter.
Есть ли разница между Символы.ПС и Символы.ВК?
Да, это разные символы:
Символы.ПС— символ перевода строки (LF,Chr(10)).Символы.ВК— символ возврата каретки (CR,Chr(13)).
В большинстве случаев в 1С используется Символы.ПС, но для совместимости с некоторыми системами (например, старыми версиями Excel) может потребоваться комбинация Символы.ВК + Символы.ПС (Chr(13) + Chr(10)).
Как вставить перенос строки в текстовый документ (например, в акте выполненных работ)?
В текстовых документах 1С (например, в ТекстовыйДокумент или ПолеТекстовогоДокумента) перенос добавляется:
- Через
Shift+Enterв интерфейсе. - Через код:
ТекстовыйДокумент.Вставить(Символы.ПС);
Для форматирования абзацев используйте также ТекстовыйДокумент.ДобавитьСтроку().