Перенос строки в 1С:Предприятии 8.3: где работает Enter, а где нужна настройка
Содержание
Перенести строку в 1С можно только в многострочном поле: в «Комментарии» документа, в описании, в тексте письма. Там новую строку даёт обычный Enter. В однострочном поле (номер, наименование, ИНН) перенос не набирается ни одной комбинацией клавиш. Такое поле нужно переделать в конфигураторе или добавить разрыв строки программно через Символы.ПС.
Всё ниже относится к платформе 1С:Предприятие 8.3 с интерфейсом «Такси» и не зависит от конфигурации: в Бухгалтерии, ЗУП и УТ поля ввода ведут себя одинаково. Разница только в том, какие поля разработчик сделал многострочными.
Какие клавиши переносят строку при вводе
Сначала определите, какое поле перед вами. Многострочное обычно выше одной строки, иногда с полосой прокрутки справа. Однострочное — узкая полоска.
| Где вы печатаете | Что нажать | Что произойдёт |
|---|---|---|
| Многострочное поле формы | Enter | Новая строка внутри поля |
| Однострочное поле формы | Enter | Ввод завершается, курсор уходит дальше |
| Ячейка табличной части документа | Enter | Редактирование ячейки заканчивается |
| Текстовый документ (TXT в 1С) | Enter | Новая строка, как в Блокноте |
| Ячейка табличного документа (отчёт, печатная форма) | см. следующий раздел | Зависит от свойств ячейки |
Для перехода из многострочного поля к следующему полю используйте Tab: Enter там занят переносом.
Привычка из мессенджеров и Excel может подвести. В форме документа Ctrl+Enter — это команда «Провести и закрыть». Нажмёте её в надежде перенести строку — документ проведётся и форма закроется. Если это случилось, откройте документ заново из журнала и допишите текст.
💡 Длинный текст удобнее набрать в Блокноте или Word, а потом вставить в многострочное поле через Ctrl+V. Переносы сохранятся. В однострочное поле вставка склеит текст в одну строку или обрежет его по первому разрыву.
Если поле однострочное, а перенос нужен
Пользователь сам это не исправит. Варианты:
- 📝 перенести длинный текст в реквизит, у которого есть многострочное поле (почти у всех документов это «Комментарий»);
- 🛠 попросить разработчика включить многострочный режим через расширение конфигурации — так типовая конфигурация не снимается с поддержки;
- 📄 если текст нужен только в печатной форме, разбить его прямо в макете (см. ниже).
Перенос текста в ячейке табличного документа
Табличный документ — это все отчёты, печатные формы и файлы MXL. Перенос здесь бывает двух видов, и путают их постоянно.
Автоматический перенос по ширине. Текст сам переходит на следующую строку, когда упирается в правую границу ячейки. Включается свойством ячейки:
- Выделите ячейку или диапазон.
- Откройте свойства ячейки (в конфигураторе — палитра свойств,
Alt+Enter). - В свойстве
Размещение текставыберитеПереносить. - Проверьте ширину колонки: перенос идёт по её правой границе.
Другие значения свойства: Авто — текст заходит на соседние пустые ячейки, Обрезать — лишнее просто не видно, Забивать — текст повторяется до конца ячейки.
Принудительный разрыв. Новая строка там, где вы решили, независимо от ширины. Надёжнее всего задать его в конфигураторе: в палитре свойств у поля Текст есть кнопка открытия многострочного редактора, в нём Enter работает как обычно. При редактировании ячейки прямо на листе разрыв в разных релизах платформы даёт Ctrl+Enter или Shift+Enter — проверьте на своей версии.
Когда отчёт формируется сам
В отчётах на системе компоновки данных (СКД) ячейки строит платформа, руками их не поправить. Перенос включается в оформлении:
- В форме отчёта откройте настройки (кнопка
Настройки…илиЕщё → Настройки…). - Перейдите в расширенный режим, вкладка оформления.
- Добавьте условное оформление для нужного поля и задайте параметр
Размещение=Переносить. - Сохраните вариант отчёта, чтобы настройка не пропала при следующем открытии.
Если вкладок оформления нет, в форме включён простой режим настроек. Переключатель вида настроек обычно стоит в верхней части окна.
Многострочный текст в параметре печатной формы
Частая задача: в печатной форме вывести адрес, назначение платежа или примечание в несколько строк. Данные приходят в параметр макета, а перенос даёт сама ячейка.
- В макете у ячейки с параметром включите
Размещение текста = Переносить. - Сделайте ячейку достаточно широкой: объедините её с соседними, если колонка узкая.
- Не задавайте этой строке макета фиксированную высоту: тогда строка подстроится под текст.
- В коде заполнения передайте текст с
Символы.ПСтам, где нужен разрыв.
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.Примечание = "Доставка до склада покупателя"
+ Символы.ПС + "Разгрузка силами покупателя";
ТабДок.Вывести(ОбластьШапка);
Очень длинный текст (договорные условия на полстраницы) лучше выводить не в одну ячейку, а по строкам: разбейте его через СтрРазделить и выводите отдельную область на каждую строку. Тогда платформа сможет перенести часть текста на следующий лист. Одна огромная ячейка на страницу не делится и уезжает целиком.
Многострочное поле в конфигураторе
Это раздел для разработчика или администратора, который может править конфигурацию. В типовой лучше делать через расширение: создайте расширение, заимствуйте форму и меняйте свойства поля там.
Свойства поля ввода управляемой формы, которые отвечают за перенос:
| Свойство | Что даёт | Типичное значение |
|---|---|---|
МногострочныйРежим | Enter начинает новую строку | Истина |
Высота | Сколько строк видно без прокрутки | 3–5 |
РастягиватьПоВертикали | Поле растёт вместе с окном | Истина |
РасширенноеРедактирование | Длинный текст можно редактировать в отдельном окне | По ситуации |
Проверьте и сам реквизит. Если у строки задана длина, например 150 символов, разрывы строк входят в эту длину: длинный текст обрежется. Для свободного текста ставьте неограниченную длину (0).
Многострочный текст в колонке таблицы
В табличной части каждая ячейка по умолчанию в одну строку. Чтобы показать несколько строк, у колонки формы включают автоматическую высоту ячейки (АвтоВысотаЯчейки), а у поля колонки — многострочный режим. Без этого текст с переносами виден в ячейке только до первого разрыва, остальное открывается при редактировании.
Если длинные тексты в табличной части — норма, удобнее вынести редактирование в отдельное многострочное поле под таблицей. Пользователь выбирает строку, а текст правит в большом поле.
Перенос строки программно: Символы.ПС и многострочные литералы
В коде встроенного языка разрыв строки задают системные символы:
Символы.ПС— перевод строки (LF), основной вариант;Символы.ВК— возврат каретки (CR);Символы.ВК + Символы.ПС— пара CR+LF, как в текстовых файлах Windows.
Пример сборки текста для поля или ячейки макета:
Текст = "Поставщик: " + Поставщик + Символы.ПС
+ "Договор № " + НомерДоговора + Символы.ПС
+ "Сумма: " + Формат(Сумма, "ЧДЦ=2");
Длинный текст можно записать прямо в модуле многострочным литералом. Каждая следующая строка начинается с вертикальной черты:
Текст = "Уважаемый клиент!
|Напоминаем о сроке оплаты.
|С уважением, бухгалтерия";
Отступ перед | не попадёт в текст: платформа его отбрасывает. Черта тоже в результат не входит.
Полезные функции для работы с переносами
| Функция | Что делает |
|---|---|
СтрЧислоСтрок(Текст) | Сколько строк в тексте |
СтрПолучитьСтроку(Текст, Н) | Возвращает строку с номером Н |
СтрРазделить(Текст, Символы.ПС) | Делит текст на массив строк |
СтрЗаменить(Текст, Символы.ПС, " ") | Убирает переносы, заменяя их пробелом |
Чтобы убрать переносы любого происхождения, заменяйте по порядку: сначала пару, потом одиночные символы.
Текст = СтрЗаменить(Текст, Символы.ВК + Символы.ПС, " ");
Текст = СтрЗаменить(Текст, Символы.ПС, " ");
Текст = СтрЗаменить(Текст, Символы.ВК, " ");
Если поменять порядок, пара CR+LF превратится в два пробела подряд.
Переносы в данных из Excel, CSV и буфера обмена
При загрузке перенос строки часто приходит вместе с данными, и это ломает больше, чем кажется.
Excel. Перенос внутри ячейки, набранный через Alt+Enter, хранится как символ LF. При чтении файла в табличный документ 1С он попадает в текст ячейки как Символы.ПС. В наименовании номенклатуры такой символ потом мешает поиску: на экране «Кабель ВВГ 3х2,5», а в базе между словами разрыв строки.
CSV и TXT. Поле в кавычках может содержать перенос. Если читать файл построчно через ЧтениеТекста.ПрочитатьСтроку(), одна запись развалится на две. Помогает подсчёт кавычек: пока их нечётное число, запись не закончилась.
Буфер = "";
Стр = Чтение.ПрочитатьСтроку();
Пока Стр <> Неопределено Цикл
Буфер = ?(Буфер = "", Стр, Буфер + Символы.ПС + Стр);
Если СтрЧислоВхождений(Буфер, """") % 2 = 0 Тогда
ОбработатьЗапись(Буфер); // ваша процедура разбора полей
Буфер = "";
КонецЕсли;
Стр = Чтение.ПрочитатьСтроку();
КонецЦикла;
Буфер обмена. Копирование из Word, PDF или письма часто приносит разрывы посреди фразы. В многострочном поле они останутся как есть, в однострочном текст обрежется или склеится.
Перед загрузкой справочников из внешних файлов чистите наименования, ИНН, артикулы и коды от переносов. Для этого подойдёт код замены из предыдущего раздела.
Текст не переносится на экране или при печати
Большинство жалоб звучит как «перенос сделал, а его не видно». Причина почти всегда в отображении, а не в данных.
Печать: на что смотреть в предварительном просмотре
- 📏 Ширина колонок. Перенос идёт по правой границе ячейки. Узкая колонка — много строк, документ растягивается на лишний лист.
- 📐 Объединённые ячейки. Перенос работает в пределах объединения. Если текст обрезан, проверьте, что объединён весь нужный диапазон.
- 🖨 Масштаб. Режим «Вписать в лист» меняет фактическую ширину колонок. Сравнивайте предпросмотр и бумажный вариант при одном масштабе.
- 🔤 Шрифт. Если в макете стоит шрифт, которого нет на компьютере пользователя, Windows подставит другой, и переносы съедут.
Частые ошибки при переносе строк
Ждать переноса от однострочного поля. Никакая комбинация клавиш не добавит туда разрыв. Если перенос нужен регулярно, это задача на доработку формы, а не на поиск «секретной кнопки».
Перенос в ключевом поле. Разрыв строки в ИНН, коде или артикуле ломает поиск и обмены: значение выглядит правильным, но не совпадает с эталоном. Такие поля храните строго в одну строку.
Текст с переносами в фиксированной длине. Каждый разрыв занимает один или два символа. В реквизите длиной 100 символов текст из пяти строк обрежется раньше, чем вы ожидаете.
CR+LF и LF вперемешку. Текст из Windows-файла приходит с парой символов, из веб-сервиса — с одиночным LF. При сравнении строк они не равны. Перед сравнением приводите к одному виду заменой.
Перенос включили в одной ячейке макета, а печатается другая. В печатной форме бывает несколько областей с похожими ячейками: шапка, строка таблицы, итог. Перенос нужно включать в той области, которая реально выводится.