Как исправить обрезание текста в печатной форме и табличной части 1С

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

При разработке печатных форм в 1С программисты часто сталкиваются с ситуацией, когда длинный текст, введенный пользователем, не выводится полностью. Казалось бы, все настройки установлены верно: включен перенос текста, в макете стоит автовысота, а тип данных — строка неограниченной длины. Однако текст все равно «срезается». Рассмотрим подробно, почему это происходит и как решить проблему на разных уровнях: от макета до механизмов сохранения данных.

Проверка базовых настроек макета

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

  1. Размещение текста: Убедимся, что для ячейки установлено значение Переносить. Если стоит Авто или Обрезать, текст никогда не растянет строку по вертикали.
  2. Автовысота строки: В свойствах строки макета (не ячейки, а именно всей строки) должен быть установлен флаг Автовысота.
  3. Тип заполнения: Если используется Шаблон, помните, что в конфигураторе такая ячейка может выглядеть узкой и не расширяться. Реальное растягивание произойдет только в режиме «Предприятие» при выводе данных.

Если эти настройки заданы, но текст все равно не помещается, переходим к анализу более специфических причин.

Проблема объединенных ячеек

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

Чтобы обойти это ограничение, используем проверенный метод «технической колонки»:

Анализ механизма сохранения настроек

Рассмотрим ситуацию, описанную в обсуждении: текст обрезается не в самой печатной форме, а еще на этапе подготовки данных в табличной части (ТЧ) на форме настроек. Автор заметил, что при первом вводе все печатается корректно, но после закрытия и повторного открытия формы текст оказывается усеченным.

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

Для решения этой проблемы рекомендуется отказаться от автоматического сохранения настроек формы в пользу программного управления через ХранилищеОбщихНастроек или ХранилищеНастроекДанныхФормы. Для готовой реализации этой логики подойдёт пример сохранения настроек формы средствами БСП.

Программное сохранение длинных строк

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


// Процедура сохранения настроек
Процедура ПриЗакрытии()
    Настройки = Новый Структура;
    Настройки.Вставить("ТабличнаяЧастьДанных", ТабличнаяЧасть.Выгрузить());
    ХранилищеОбщихНастроек.Сохранить("МояПечатнаяФорма", "НастройкиПользователя", Настройки);
КонецПроцедуры

// Процедура восстановления настроек
Процедура ПриОткрытии()
    Настройки = ХранилищеОбщихНастроек.Загрузить("МояПечатнаяФорма", "НастройкиПользователя");
    Если Настройки <> Неопределено Тогда
        ТабличнаяЧасть.Загрузить(Настройки.ТабличнаяЧастьДанных);
    КонецЕсли;
КонецПроцедуры

Использование ХранилищеОбщихНастроек гарантирует, что данные будут сохранены в системной таблице базы данных в виде объекта ХранилищеЗначения, который не имеет жестких ограничений на длину строки, в отличие от старых механизмов «сохранения параметров». При необходимости просматривать и корректировать эти данные пригодится обработка для управления хранилищем настроек пользователей.

Визуальное отображение в табличной части

Если текст в самой таблице на форме выглядит обрезанным (не помещается в строку визуально), это можно исправить с помощью Условного оформления или настройки свойств колонки. Выясним, как сделать строки ТЧ выше:

Подведем итог: если ваша печатная форма «съедает» текст, в первую очередь проверьте, не теряются ли данные при сохранении настроек формы. Если же данные в ТЧ полные, но макет их режет — используйте метод «технической колонки» для борьбы с объединенными ячейками. Сочетание правильной настройки макета и надежного способа хранения данных позволит создавать профессиональные и удобные печатные формы.

← На главную