При разработке сложных печатных форм в системе 1С часто возникает ситуация, когда стандартная сетка макета (общая ширина колонок для всего документа) становится ограничением. Например, в «шапке» документа нам нужны три широкие колонки, а в табличной части — десять узких. Если просто начать двигать границы колонок, изменения затронут весь макет сверху донизу. Чтобы избежать этого и создать «разрез» сетки, используется механизм «Формат строк». В этой статье мы подробно разберем, как управлять сеткой макета интерактивно и программно.
Самый быстрый и интуитивно понятный способ создать индивидуальную сетку для выбранной области — это использование манипуляций мышью непосредственно в редакторе макета. Рассмотрим этот процесс по шагам:
Иногда разработчики ищут конкретную комбинацию клавиш или команду меню, чтобы выполнить это действие «строго». Проанализируем, как это сделать без перетаскивания границ:
Выделим целевые строки, затем в главном меню выберем пункт Таблица — Формат строк — Создать. Это действие мгновенно создаст разрыв сетки. Если же нам нужно, наоборот, пристыковать текущую строку к сетке предыдущей, мы используем команду Таблица — Формат строк — Объединить с предыдущим.
Для опытных разработчиков важно уметь управлять структурой документа динамически. Представим ситуацию, когда печатная форма формируется из разных кусков кода, и нам нужно гарантировать, что определенная секция будет иметь свою ширину колонок, независимо от того, как настроен общий макет в конфигураторе. Для этого используется метод СоздатьФорматСтрок() объекта Область.
Рассмотрим пример кода:
// Получаем макет из конфигурации
Макет = ПолучитьМакет("МояПечатнаяФорма");
// Выделяем область с 5-й по 10-ю строку целиком
ОбластьСетки = Макет.Область(5, , 10, );
// Создаем независимый формат строк для этой области
ОбластьСетки.СоздатьФорматСтрок();
// Теперь можно программно задать ширину колонок только для этой области
ОбластьСетки.Область(1, 1).ШиринаКолонки = 20;
ОбластьСетки.Область(1, 2).ШиринаКолонки = 50;
Использование этого метода крайне полезно при построении сложных отчетов, где количество и размер колонок зависят от настроек пользователя или данных в базе.
Как понять, что в макете уже настроены разные форматы строк? Проанализируем поведение интерфейса конфигуратора. Когда мы перемещаемся курсором (активной ячейкой) между строками с разными форматами, верхняя линейка с номерами колонок (1, 2, 3...) визуально «перестраивается» или «прыгает». Это главный признак того, что сетка разделена. Кроме того, в некоторых версиях платформы номера колонок в строках с уникальным форматом могут отображаться более жирным шрифтом.
Иногда возникает необходимость «склеить» сетку обратно. Выясним, как сделать это правильно, не повредив оформление текста. Существует два способа:
Очистить — Формат, система удалит разрыв сетки. Внимание: этот метод опасен тем, что он удаляет вообще всё оформление ячеек (рамки, цвета, шрифты, выравнивание).Проанализируем критически важный аспект: сохранение таких макетов в формат .xls или .xlsx. Система Microsoft Excel не поддерживает концепцию «разных сеток для разных строк» в том виде, в котором это реализовано в 1С. При экспорте Excel пытается имитировать этот эффект, создавая огромное количество скрытых и очень узких вспомогательных колонок.
Рекомендация: Если вы планируете, что пользователи будут часто сохранять отчет в Excel для дальнейшей работы, старайтесь минимизировать количество «разрезов» сетки. Используйте Объединение ячеек там, где это возможно. Большое количество форматов строк может привести к тому, что файл Excel будет «тормозить», а колонки станут иметь ширину 0.1 мм, что сделает редактирование документа невозможным.
Если вы создали сложную структуру колонок для одной секции макета и хотите применить такую же структуру для другой, не нужно делать это вручную. Рассмотрим механизм «Специальной вставки»:
Ctrl+C.Таким образом, вы перенесете настройки ширины и количества колонок, сохранив при этом текст и данные в ячейках-приемниках.