Почему в табличном документе 1С недоступны команды «Скрыть» и «Отобразить» и как убрать пустые строки при печати?

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

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

Причины недоступности команд скрытия и появления пустых промежутков

Проанализируем основные факторы, которые блокируют стандартные инструменты форматирования строк и колонок в платформе 1С:

  1. Выделение диапазона ячеек вместо строк целиком. Команды скрытия и отображения в платформе 1С работают исключительно для строк и колонок целиком. Если выделена только область ячеек внутри строки, команды скрытия в меню остаются недоступными.
  2. Скрытые заголовки строк и колонок. Если в табличном документе отключено отображение координатной сетки с номерами строк (1, 2, 3...), пользователь не может кликнуть по заголовку строки слева, чтобы выделить её полностью.
  3. Включенные свойства защиты и режима только для чтения. Если для табличного документа программно установлены свойства ТолькоПросмотр = Истина или Защита = Истина, любые изменения структуры, удаление и скрытие строк блокируются платформой.
  4. Очистка вместо физического удаления. Нажатие клавиши Delete или использование команды очистки стирает исключительно текст и форматирование внутри ячеек, сохраняя сами строки и их исходную высоту, что приводит к появлению пустого зазора между таблицами.

Способ 1. Интерактивная настройка и удаление строк в режиме «1С:Предприятие»

Если печатная форма уже сформирована на экране и пользователю необходимо быстро убрать ненужные строки без изменения конфигурации, выполним следующие шаги:

  1. Включение режима редактирования. Перейдем в главное меню: Таблица — Вид — Редактирование (или нажмем пиктограмму с карандашом на панели инструментов). Это снимет флаг режима просмотра.
  2. Снятие защиты. Если пункт редактирования недоступен, проверим пункт Таблица — Вид — Защита и отключим его.
  3. Отображение заголовков. Включим пункт меню Таблица — Вид — Отображать заголовки. На экране слева появится колонка с номерами строк.
  4. Удаление строк со сдвигом. Выделим ненужные строки с подписями целиком, нажав левой кнопкой мыши на их номера слева. Затем вызовем контекстное меню правой кнопкой мыши и выберем команду Удалить... — Строки либо воспользуемся меню Таблица — Формат — Скрыть. При физическом удалении строк нижняя таблица автоматически подтянется вверх без пустого промежутка.

Способ 2. Программное управление свойствами табличного документа

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


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

Если же требуется скрыть или удалить ненужные строки программно перед показом документа пользователю, применим свойство Видимость или метод УдалитьОбласть:


// Вариант 1. Скрытие строк целиком по именам или номерам строк
ТабДок.Область("R10:R15").Видимость = Ложь;

// Вариант 2. Физическое удаление области со сдвигом по вертикали
ОбластьПодвала = ТабДок.Область("R10:R15");
ТабДок.УдалитьОбласть(ОбластьПодвала, ТипСмещенияТабличногоДокумента.ПоВертикали);

Обратим внимание: свойство Видимость = Ложь работает только для областей, представляющих собой полные строки (формат R10:R15) или полные колонки (формат C2:C5).

Способ 3. Модульный вывод секций макета (рекомендуемый подход)

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

Разделим исходный макет на независимые именованные области: Шапка, Таблица1, Подвал1, Таблица2, Подвал2. В коде процедуры печати предусмотрим проверку условий или параметров печати:


// Получаем области макета
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьТаблица1 = Макет.ПолучитьОбласть("Таблица1");
ОбластьПодвал1 = Макет.ПолучитьОбласть("Подвал1");
ОбластьТаблица2 = Макет.ПолучитьОбласть("Таблица2");

// Выводим данные последовательно
ТабДок.Вывести(ОбластьШапка);
ТабДок.Вывести(ОбластьТаблица1);

// Выводим промежуточный подвал только при необходимости
Если ВыводитьПромежуточныеПодписи Тогда
    ТабДок.Вывести(ОбластьПодвал1);
КонецЕсли;

// Вторая таблица выводится сразу за первой без лишних зазоров
ТабДок.Вывести(ОбластьТаблица2);

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

← На главную