В процессе разработки в среде 1С часто возникает ситуация, когда стандартного метода Сообщить() становится недостаточно. Если нужно вывести пользователю подробный лог выполнения операции, длинную инструкцию или сложный отчет на несколько десятков строк, обычное окно сообщений превращается в нечитаемую «портянку». Создавать под каждое такое сообщение отдельную форму в дереве метаданных — избыточно и неудобно для поддержки. В этой статье мы разберем, как эффективно решать задачу вывода объемных данных, используя возможности платформы и Библиотеки стандартных подсистем (БСП).
Разберем один из самых простых и в то же время мощных способов вывода больших массивов текста. Платформа 1С:Предприятие имеет встроенный объект ТекстовыйДокумент, который предназначен для работы с неструктурированным текстом. Его преимущество в том, что метод Показать() открывает отдельное окно, которое уже содержит весь необходимый функционал: поиск (Ctrl+F), копирование, выделение и даже сохранение в файл.
Проанализируем пример кода для реализации этого метода:
ТекстЛога = Новый ТекстовыйДокумент;
ТекстЛога.ДобавитьСтроку("Начало процесса: " + ТекущаяДата());
// Допустим, здесь идет цикл обработки данных
Для Каждого СтрокаДанных Из ТаблицаРезультатов Цикл
ТекстЛога.ДобавитьСтроку("Обработана строка: " + СтрокаДанных.Наименование);
КонецЦикла;
ТекстЛога.ДобавитьСтроку("Завершено: " + ТекущаяДата());
ТекстЛога.Показать("Результат обработки данных");
Этот способ идеален для технических специалистов или администраторов, так как окно ТекстовыйДокумент максимально информативно и привычно для тех, кто работает с кодом или логами.
Если ваша конфигурация построена на базе БСП (что справедливо для большинства современных типовых решений), вам доступны готовые программные интерфейсы, которые делают вывод текста эстетичным и удобным. Рассмотрим метод ПоказатьТекст общего модуля ОбщегоНазначенияКлиент.
Этот метод программно создает форму, выводит в нее переданную строку и предоставляет пользователю удобный интерфейс. Это избавляет разработчика от необходимости вручную создавать объекты в конфигураторе.
Пример использования функции БСП:
ТекстСообщения = "Уважаемый пользователь!
Ниже приведен список документов, которые не прошли проверку:
... (тут ваш объемный текст) ...";
ПараметрыОкна = Новый Структура;
ПараметрыОкна.Вставить("Заголовок", "Детальная информация");
ОбщегоНазначенияКлиент.ПоказатьТекст(ТекстСообщения, ПараметрыОкна);
Важный момент: если ваше сообщение связано с ошибками, лучше использовать метод ПоказатьИнформациюОбОшибке. Он позволяет вывести краткое описание, а весь длинный текст спрятать под кнопку «Подробности», что не пугает рядового пользователя огромным объемом информации.
Проанализируем ситуацию, когда сообщение должно быть частью рабочего процесса на текущей форме. Как отмечалось в обсуждении, пользователи часто игнорируют всплывающие окна. В этом случае эффективным решением будет использование декораций типа «Надпись» с гиперссылками.
Рассмотрим алгоритм реализации:
Гиперссылка.ТекстовыйДокумент или через изменение видимости скрытой группы на этой же форме).Такой подход экономит место на экране и дает пользователю выбор: читать подробности или продолжить работу.
Когда текста много, он становится «слепым». Чтобы облегчить восприятие, выясним, как использовать объект ФорматированнаяСтрока. Это позволяет выделить ключевые моменты цветом, шрифтом или вставить рабочие ссылки на объекты информационной базы.
Посмотрим на пример формирования структурированного сообщения:
МассивЧастей = Новый Массив;
МассивЧастей.Добавить("Внимание! ");
МассивЧастей.Добавить(Новый ФорматированнаяСтрока("Обнаружены критические ошибки:", Новый Шрифт(,,Истина))); // Жирный
МассивЧастей.Добавить(Символы.ПС);
МассивЧастей.Добавить(Новый ФорматированнаяСтрока(ТекстОшибки, Новый Цвет(255, 0, 0))); // Красный текст
Результат = Новый ФорматированнаяСтрока(МассивЧастей);
// Далее выводим в поле формы, поддерживающее этот тип
Использование форматирования значительно снижает психологическое сопротивление пользователя перед чтением длинного текста, так как взгляд сразу цепляется за важные акценты.
Для самых сложных случаев, когда требуется полноценная верстка (таблицы, списки, выделение цветом разных блоков), разберем метод создания формы «на лету» с использованием поля HTML-документа. Это позволяет превратить обычное сообщение в полноценный интерактивный отчет без изменения метаданных конфигурации.
Вы можете программно создать новую управляемую форму, добавить на нее элемент типа ПолеHTMLДокумента и передать туда сформированный HTML-код. Это дает полный контроль над визуализацией: от размеров шрифтов до отступов и рамок.
Выясним, какой метод лучше выбрать в зависимости от ситуации:
ТекстовыйДокумент.Показать(). Быстро, надежно, функционально.ОбщегоНазначенияКлиент.ПоказатьТекст(). Соответствует стандартам разработки 1С.ФорматированнаяСтрока в сочетании с элементами формы.Помните о главном правиле интерфейса: если сообщение превышает 5-7 строк, его нужно либо структурировать, либо предоставлять пользователю возможность ознакомиться с ним в отдельном окне, не блокируя основной процесс работы.