При разработке отчетов или печатных форм в среде 1С:Предприятие 8 часто возникает ситуация, когда при выводе ТабличныйДокумент пользователю демонстрируется лишний функционал. Стандартная панель форматирования (жирный шрифт, курсив, выравнивание) полезна при редактировании шаблонов, но в готовом отчете она лишь загромождает интерфейс и путает конечного пользователя. Разберем пошагово, как избавиться от этой панели и как расширить интерфейс собственными кнопками управления.
Панель инструментов редактирования текста появляется в тот момент, когда 1С определяет, что табличный документ доступен для изменения. Это происходит автоматически, если объект выводится методом Показать() без строгих ограничений на редактирование или если на форме у элемента ПолеТабличногоДокумента не настроены соответствующие свойства. Проанализируем ситуацию: если пользователю нужно только просматривать данные, наличие кнопок «Жирный» или «По центру» является избыточным.
Самый быстрый способ убрать панель форматирования — это запретить редактирование документа. Рассмотрим, как это сделать программно. Если мы устанавливаем режим «Только просмотр», платформа понимает, что инструменты изменения текста не требуются, и скрывает их.
Проанализируем пример кода перед выводом документа:
// Создаем или получаем табличный документ
ТабДок = Новый ТабличныйДокумент;
// ... заполняем документ данными ...
// Устанавливаем запрет редактирования
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ОтображатьСетку = Ложь;
ТабДок.ОтображатьЗаголовки = Ложь;
// Если нужно запретить даже выделение ячеек (максимальная защита)
ТабДок.Защита = Истина;
ТабДок.Показать("Заголовок нашего отчета");
В этом случае при вызове метода Показать() откроется стандартное окно просмотра, где панель форматирования будет отсутствовать, так как прав на правку текста у пользователя нет. Однако этот метод имеет существенный минус: мы не можем добавить свои кнопки в это стандартное системное окно.
Чтобы получить полный контроль над интерфейсом и решить задачу по добавлению своих кнопок, нам необходимо отказаться от метода Показать() и выводить табличный документ в специально созданную форму. Разберем по шагам, как это реализовать.
ФормаПросмотраОтчета.ТабличныйДокумент. Назовем его РезультатОтчета.ПолеТабличногоДокумента.Отображать панель инструментов. Теперь, даже если документ будет доступен для редактирования, панель форматирования не появится.Теперь рассмотрим, как программно вызвать эту форму и передать в нее наш готовый документ:
// Код в модуле, где формируется отчет
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ТабличныйДокумент", МойСформированныйТабДок);
ОткрытьФорму("ОбщаяФорма.ФормаПросмотраОтчета", ПараметрыФормы);
В самой форме в обработчике ПриСозданииНаСервере нам нужно принять этот документ:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("ТабличныйДокумент") Тогда
// Копируем содержимое в реквизит формы
ЗначениеВРеквизитФормы(Параметры.ТабличныйДокумент, "РезультатОтчета");
КонецЕсли;
КонецПроцедуры
Когда табличный документ размещен на нашей собственной форме, мы можем добавить любое количество кнопок. Разберем, как это сделать правильно через механизм команд.
Рассмотрим алгоритм добавления кнопки «Отправить по почте» или «Выгрузить в Excel»:
КомандаВыгрузить.Посмотрим на пример кода для обработки нажатия нашей кнопки:
&НаКлиенте
Процедура КомандаВыгрузить(Команда)
// Пример логики сохранения документа
ИмяФайла = "C:\Reports\MyReport.xlsx";
РезультатОтчета.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);
Сообщить("Отчет успешно выгружен в: " + ИмяФайла);
КонецПроцедуры
Проанализируем ситуацию, когда нам нужно полностью «стерилизовать» интерфейс, чтобы пользователь не мог вызвать контекстное меню с функциями форматирования. В свойствах элемента ПолеТабличногоДокумента на форме найдите свойство Автоконтекстное меню. Если его отключить, то при нажатии правой кнопкой мыши по ячейкам ничего не произойдет. Вы можете создать свое лаконичное контекстное меню, добавив туда только необходимые команды (например, «Копировать» или «Расшифровать»).
Также стоит обратить внимание на свойство ОтображатьСостояниеОтчета. Если ваш отчет формируется долго, включение этого флажка позволит пользователю видеть прогресс выполнения, что повышает удобство работы.
Мы рассмотрели несколько подходов к управлению выводом табличного документа. Первый вариант (использование ТолькоПросмотр) подходит для максимально простых задач. Второй вариант (создание собственной формы) является стандартом качественной разработки в 1С. Он позволяет не только скрыть ненужные панели форматирования через свойство Отображать панель инструментов, но и строить сложные интерфейсы с кастомными кнопками, фильтрами и навигацией, обеспечивая пользователю именно тот набор функций, который необходим для решения его бизнес-задач.