Как исправить отсутствие переноса текста в поле планировщика после обновления на платформу 8.3.18?

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

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

Проанализируем причину изменений

Для начала выясним, почему поведение системы изменилось. Начиная с версии 8.3.18, компания «1С» провела масштабное обновление элемента управления Планировщик. Это было связано с переходом на новые механизмы отрисовки интерфейса (в частности, на использование Chromium-based движков в тонком и веб-клиенте). Эти изменения позволили добавить поддержку типа ФорматированнаяСтрока для большинства текстовых свойств планировщика.

В старых версиях платформы планировщик работал с обычным типом Строка и пытался самостоятельно обрабатывать спецсимволы. Теперь же механизм отрисовки стал более строгим: если свойству передана обычная строка, она воспринимается как сплошной текст без форматирования. Символы переноса (LF/CRLF) могут просто игнорироваться или заменяться пробелами, так как движок ожидает явного указания структуры текста через объект форматирования.

Решение 1: Преобразование текста в Форматированную строку

Самый простой и эффективный способ вернуть перенос строк — это явно преобразовать значение свойства Текст элемента планировщика в объект ФорматированнаяСтрока. Рассмотрим, как это реализовать в коде программного заполнения планировщика.

Допустим, ранее ваш код выглядел так:


// Старый подход, который перестал работать в 8.3.18
ЭлементПланировщика.Текст = "Заявка №123" + Символы.ПС + "Клиент: ООО «Вектор»";

Чтобы исправить ситуацию, нам нужно обернуть строку в конструктор форматированной строки. Разберем по шагам, как это сделать правильно:


// Новый подход для платформы 8.3.18+
ТекстДляОтображения = "Заявка №123" + Символы.ПС + "Клиент: ООО «Вектор»";
ЭлементПланировщика.Текст = Новый ФорматированнаяСтрока(ТекстДляОтображения);

Важный момент: Даже если вы используете простую строку с символами Символы.ПС, передача ее в конструктор Новый ФорматированнаяСтрока() заставляет платформу проанализировать содержимое и корректно отрисовать переносы.

Решение 2: Использование массива для сложного форматирования

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

Посмотрим на пример реализации через массив:


МассивСоставаТекста = Новый Массив;
МассивСоставаТекста.Добавить("Первая строка текста");
МассивСоставаТекста.Добавить(Символы.ПС); // Явное добавление переноса
МассивСоставаТекста.Добавить("Вторая строка текста (подробности)");

// Устанавливаем форматированную строку из массива
ЭлементПланировщика.Текст = Новый ФорматированнаяСтрока(МассивСоставаТекста);

Такой подход считается «лучшей практикой» в современной разработке на 1С, так как он минимизирует ошибки интерпретации спецсимволов движком отрисовки.

Работа с интерактивно созданными элементами

Если ваши пользователи создают элементы планировщика интерактивно (мышкой на форме), вы можете заметить, что введенные ими переносы строк также не сохраняются. Выясним, как это исправить. В платформе 8.3.18 появилось новое свойство элемента формы Планировщик — ТипТекстаНовыхЭлементов.

Для корректной работы выполните следующие действия:

  1. Откройте форму с планировщиком в конфигураторе.
  2. Найдите элемент управления Планировщик в дереве элементов.
  3. В палитре свойств найдите параметр ТипТекстаНовыхЭлементов.
  4. Установите значение Форматированная строка.

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

Влияние режима совместимости

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

  1. Если вы обновили платформу до 8.3.18, но оставили старый режим совместимости (например, 8.3.12), планировщик может пытаться работать «по-старому», но из-за обновления внутренних библиотек отрисовка все равно может ломаться.
  2. При установке режима совместимости 8.3.18 и выше использование ФорматированнаяСтрока становится обязательным стандартом для реализации многострочного текста во всех элементах планировщика, включая шкалу времени и измерения.

Альтернативные варианты отображения информации

Если основной текст элемента слишком велик и не умещается даже с переносами, разберем еще один прием. В платформе (начиная с 8.3.17) появилась интересная возможность в ИнтервалахФона (Background Intervals). В отличие от основных элементов, текст в интервалах фона поддерживает автоматический перенос по словам (word wrap), если это позволяет ширина колонки.

Вы можете использовать это для вывода фоновой информации:


Интервал = Планировщик.ИнтервалыФона.Добавить(НачалоПериода, КонецПериода);
Интервал.Текст = "Очень длинное описание, которое автоматически распределится по ширине ячейки фона";

Подведем итоги

Мы выяснили, что отсутствие переноса текста в 8.3.18 — это не ошибка, а следствие перехода на более современный механизм отображения. Чтобы исправить проблему в вашем прикладном решении, придерживайтесь следующих правил:

Применение этих простых шагов позволит вам вернуть привычный вид планировщика и сделать интерфейс ваших решений более удобным для конечных пользователей.

← На главную