Как сделать так, чтобы слова в наименовании товара не переносились на новую строку при печати?

Программист 1С v8.3 (Управляемые формы)
← На главную

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

Метод прямого ввода неразрывного пробела

Самый быстрый способ добиться желаемого результата без изменения кода конфигурации — это использование неразрывного пробела. В операционных системах Windows этот символ имеет код 0160. Чтобы внести его непосредственно в поле «Наименование» карточки товара, выполним следующие действия:

  1. Установим курсор в то место строки, где должен быть неразрывный пробел (в нашем примере — между «х» и «23»).
  2. Удалим обычный пробел.
  3. Убедимся, что включена дополнительная цифровая клавиатура (NumPad).
  4. Удерживая клавишу Alt, наберем на цифровой клавиатуре последовательность 0160.
  5. После того как мы отпустим клавишу Alt, система вставит специальный невидимый символ.

Теперь при выводе данного наименования в табличный документ 1С будет воспринимать эту последовательность как единый блок, предотвращая перенос части «23» на следующую строку. Это простое решение позволяет контролировать верстку печатных форм без вмешательства в логику программы.

Программный подход к обработке строк

Если задача требует массовой обработки данных или автоматизации процесса, мы можем делегировать замену обычных пробелов на неразрывные самой системе 1С. Рассмотрим, как это реализовать с помощью встроенного языка программирования. При работе с объектами метаданных, такими как СправочникОбъект или СправочникСсылка, мы можем использовать методы строковых функций.

Для замены всех пробелов или конкретных их групп можно воспользоваться логикой, описанной ниже. Разберем пример, где мы заменяем стандартные пробелы на неразрывные:


// Определим неразрывный пробел как символ с кодом 160
НеразрывныйПробел = Символ(160);

// Исходная строка
Стр1 = "Ноутбук х 23";

// Заменяем все пробелы на неразрывные
Стр2 = СтрЗаменить(Стр1, " ", НеразрывныйПробел);

Если же нам необходимо более сложное преобразование, например, замена пробелов только между определенными словами, можно воспользоваться функцией СтрРазделить и СтрСоединить:


// Разделяем строку по пробелам и собираем обратно через неразрывный пробел
МассивСлов = СтрРазделить(Стр1, " ");
Стр2 = СтрСоединить(МассивСлов, НеразрывныйПробел);

Рекомендации и предостережения

При использовании неразрывного пробела стоит учитывать несколько важных аспектов, которые помогут избежать проблем в будущем:

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

← На главную