Как убрать панель форматирования и добавить свою кнопку в табличный документ 1С

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

При разработке отчетов или печатных форм в среде 1С:Предприятие 8 часто возникает ситуация, когда при выводе ТабличныйДокумент пользователю демонстрируется лишний функционал. Стандартная панель форматирования (жирный шрифт, курсив, выравнивание) полезна при редактировании шаблонов, но в готовом отчете она лишь загромождает интерфейс и путает конечного пользователя. Разберем пошагово, как избавиться от этой панели и как расширить интерфейс собственными кнопками управления.

Выясним причину появления панели форматирования

Панель инструментов редактирования текста появляется в тот момент, когда 1С определяет, что табличный документ доступен для изменения. Это происходит автоматически, если объект выводится методом Показать() без строгих ограничений на редактирование или если на форме у элемента ПолеТабличногоДокумента не настроены соответствующие свойства. Проанализируем ситуацию: если пользователю нужно только просматривать данные, наличие кнопок «Жирный» или «По центру» является избыточным.

Способ 1: Скрытие панели через свойства «Только просмотр» и «Защита»

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

Проанализируем пример кода перед выводом документа:


// Создаем или получаем табличный документ
ТабДок = Новый ТабличныйДокумент;
// ... заполняем документ данными ...

// Устанавливаем запрет редактирования
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ОтображатьСетку = Ложь;
ТабДок.ОтображатьЗаголовки = Ложь;

// Если нужно запретить даже выделение ячеек (максимальная защита)
ТабДок.Защита = Истина;

ТабДок.Показать("Заголовок нашего отчета");

В этом случае при вызове метода Показать() откроется стандартное окно просмотра, где панель форматирования будет отсутствовать, так как прав на правку текста у пользователя нет. Однако этот метод имеет существенный минус: мы не можем добавить свои кнопки в это стандартное системное окно.

Способ 2: Использование собственной формы (Профессиональный подход)

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

  1. Создание формы: В конфигураторе создадим новую общую форму (или форму в конкретной обработке/отчете). Назовем ее ФормаПросмотраОтчета.
  2. Добавление реквизита: Добавим основной реквизит формы с типом ТабличныйДокумент. Назовем его РезультатОтчета.
  3. Размещение на форме: Перетащим этот реквизит в дерево элементов формы. Платформа создаст элемент типа ПолеТабличногоДокумента.
  4. Настройка свойств: Выделим созданный элемент на форме и в палитре свойств найдем раздел «Оформление». Снимем флажок Отображать панель инструментов. Теперь, даже если документ будет доступен для редактирования, панель форматирования не появится.

Теперь рассмотрим, как программно вызвать эту форму и передать в нее наш готовый документ:


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

ОткрытьФорму("ОбщаяФорма.ФормаПросмотраОтчета", ПараметрыФормы);

В самой форме в обработчике ПриСозданииНаСервере нам нужно принять этот документ:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если Параметры.Свойство("ТабличныйДокумент") Тогда
        // Копируем содержимое в реквизит формы
        ЗначениеВРеквизитФормы(Параметры.ТабличныйДокумент, "РезультатОтчета");
    КонецЕсли;
КонецПроцедуры

Способ 3: Добавление собственных кнопок управления

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

Рассмотрим алгоритм добавления кнопки «Отправить по почте» или «Выгрузить в Excel»:

  1. Перейдем на закладку Команды в редакторе формы.
  2. Нажмем «Добавить» и создадим команду, например, КомандаВыгрузить.
  3. В свойствах команды укажем действие (создадим процедуру на клиенте).
  4. Перетащим созданную команду на Командную панель формы (обычно находится в верхней части дерева элементов).

Посмотрим на пример кода для обработки нажатия нашей кнопки:


&НаКлиенте
Процедура КомандаВыгрузить(Команда)
    // Пример логики сохранения документа
    ИмяФайла = "C:\Reports\MyReport.xlsx";
    РезультатОтчета.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);
    Сообщить("Отчет успешно выгружен в: " + ИмяФайла);
КонецПроцедуры

Дополнительные настройки интерфейса

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

Также стоит обратить внимание на свойство ОтображатьСостояниеОтчета. Если ваш отчет формируется долго, включение этого флажка позволит пользователю видеть прогресс выполнения, что повышает удобство работы.

Резюме

Мы рассмотрели несколько подходов к управлению выводом табличного документа. Первый вариант (использование ТолькоПросмотр) подходит для максимально простых задач. Второй вариант (создание собственной формы) является стандартом качественной разработки в 1С. Он позволяет не только скрыть ненужные панели форматирования через свойство Отображать панель инструментов, но и строить сложные интерфейсы с кастомными кнопками, фильтрами и навигацией, обеспечивая пользователю именно тот набор функций, который необходим для решения его бизнес-задач.

← На главную