К статье
Практический материал

Разработка и Конфигурация · 13 мин

Как расширить область макета в 1С

Как расширить область макета в 1С: добавление строк и колонок в табличный документ, работа с областями в конфигураторе, типовые ошибки и проверка результата.

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

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

Ниже разобраны оба подхода, условия их применения, проверка результата и типичные ошибки, из-за которых макет «рассыпается» при выводе.

Что такое область макета и когда её нужно расширять

Макет в 1С — это табличный документ, хранящийся в конфигурации и служащий шаблоном для печатных форм и отчётов. Макет делится на именованные области: «Шапка», «Строка», «Подвал», «Итого» и т.п. Программный код по очереди получает эти области и выводит их в результирующий табличный документ, подставляя параметры.

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

Расширение области требуется в типовых ситуациях: в печатную форму добавляется новая строка (например, «Скидка» или «Комментарий»), в таблицу товаров добавляется колонка (штрихкод, артикул, ставка НДС), в подвал документа нужно встроить дополнительный блок подписей. Если новый фрагмент должен выводиться вместе с существующей областью — логично расширить её границы, а не создавать отдельную область и переписывать код вывода.

Как расширить область в конфигураторе визуально

Откройте конфигуратор, найдите нужный макет (в дереве конфигурации — ветка «Макеты» у объекта или в «Общие — Макеты») и откройте его двойным щелчком. Макет откроется в редакторе табличного документа, где слева и сверху отображаются панели с границами именованных областей — они выглядят как скобки с подписями имён.

Чтобы расширить горизонтальную область вниз, сначала убедитесь, что под ней есть свободные строки. Если строк не хватает, вставьте их: выделите строку внутри области, кликните правой кнопкой и выберите «Вставить» (или используйте меню «Таблица — Строки — Вставить»). Новая строка появится внутри области, и её граница автоматически расширится — это самый безопасный способ, потому что платформа сама пересчитает диапазон.

Альтернативный вариант — перетащить границу области мышью: наведите курсор на нижнюю линию скобки области в левой панели и потяните её вниз на нужное число строк. Третий способ — выделить новый диапазон строк целиком и назначить имя заново через меню «Таблица — Имена — Назначить имя», указав то же имя области. Платформа заменит старый диапазон новым.

Порядок действий в конфигураторе
  1. 1
    Откройте макет в конфигураторе и найдите нужную именованную область на левой панели
  2. 2
    При необходимости вставьте новые строки или столбцы внутрь области через контекстное меню
  3. 3
    Перетащите границу области на новый диапазон или назначьте имя заново через «Таблица — Имена — Назначить имя»
  4. 4
    Заполните новые ячейки текстом, параметрами или шаблонами
  5. 5
    Сохраните конфигурацию и проверьте вывод печатной формы в режиме предприятия

Расширение области по горизонтали: добавление колонок

С вертикальными областями и широкими таблицами логика та же, но есть нюанс: в типовых печатных формах таблица товаров обычно входит в горизонтальные области («ШапкаТаблицы», «Строка»), а колонки внутри них не именованы. Чтобы добавить колонку, вставьте столбец внутрь макета (правый клик по заголовку колонки — «Вставить») и продублируйте оформление и параметры в каждой области, где эта таблица встречается: шапка, строка, итог, подвал.

Здесь чаще всего допускают ошибку: колонку добавляют только в область «Строка», забыв про шапку и итоги. В результате при выводе таблица «съезжает» — границы ячеек не совпадают по вертикали. Правило простое: любую структурную правку таблицы макета выполняйте синхронно во всех областях, где эта таблица присутствует.

После добавления колонки проверьте общую ширину макета. Если таблица стала шире страницы, при печати документ будет разрываться на два листа. Настройте масштаб или параметры страницы: в свойствах макета или программно через свойства табличного документа (АвтоМасштаб, ОриентацияСтраницы, ПолеСлева/ПолеСправа).

Типичные ошибки при расширении областей
01
Колонку добавили только в одну область таблицы — шапка, строки и итоги не совпадают по ширине, таблица визуально разваливается
02
Новую строку вставили за границей области, а не внутрь — область не расширилась, строка при выводе теряется
03
Параметр в новой ячейке назван иначе, чем в коде заполнения, — в печатной форме выводится пустое значение или имя параметра текстом
04
Макет изменён в типовой конфигурации на поддержке — при следующем обновлении правки затёрты типовым макетом

Программное расширение и динамические области

Когда размер области зависит от данных — например, число строк спецификации заранее неизвестно, — макет не расширяют вручную, а собирают итоговый документ программно. Базовый приём: получить область-строку из макета и вывести её в цикле нужное число раз через метод Вывести() результирующего табличного документа.

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

Ещё один приём — объединение нескольких областей: получить из макета область шапки, область строки и область подвала и вывести их последовательно. Фактически это и есть «расширение» итоговой области вывода, выполненное кодом. Для вертикального наращивания (добавления колонок справа) служит метод Присоединить() — он добавляет область справа от текущего содержимого документа.

bsl
Макет = ПолучитьМакет("Макет");
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Для Каждого ТекСтрока Из ТаблицаТоваров Цикл
    ОбластьСтрока.Параметры.Заполнить(ТекСтрока);
    ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;

Расширение макета в типовой конфигурации без снятия с поддержки

Правка макета типовой печатной формы напрямую в конфигураторе — рабочий, но рискованный путь. Если конфигурация находится на полной поддержке, изменённый макет включится в сравнение при обновлении, и при неаккуратном объединении ваши доработки будут заменены типовой версией. Даже при частичной поддержке каждое обновление потребует ручного контроля изменённых макетов.

Безопасная альтернатива — внешняя печатная форма. Макет копируется во внешнюю обработку, расширяется там, а обработка подключается через механизм «Дополнительные отчеты и обработки» (в типовых конфигурациях на БСП — раздел «Администрирование — Печатные формы, отчеты и обработки»). Типовая конфигурация при этом не меняется вообще, обновления проходят штатно.

Ещё один вариант для управляемых приложений — расширение конфигурации. Макет добавляется в расширение и дорабатывается там, а код вывода переопределяется через аннотации «Вместо» или «После». Это сохраняет поддержку основной конфигурации и позволяет переносить доработку между базами.

Способы доработки макета

Правка макета в конфигураторе

Быстро и просто, но требует снятия объекта с поддержки и ручного контроля при обновлениях

Внешняя печатная форма

Типовая конфигурация не меняется; подходит для печатных форм документов, требует регистрации обработки

Расширение конфигурации

Сохраняет поддержку и переносится между базами; требует навыков работы с механизмом расширений

Проверка результата и типичные проблемы после расширения

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

Обратите внимание на свойства новых ячеек. Если в ячейке с параметром не заполнено свойство «Заполнение» (должно стоять «Параметр» или «Шаблон»), значение из кода не подставится — на печать выйдет пустота или исходный текст ячейки. Для длинных текстов проверьте свойство «РазмещениеТекста» — без переноса строка может обрезаться или раздвигать макет.

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

Контрольные точки

Как проверить результат

Границы области в редакторе
Норма

Скобка области охватывает все новые строки/колонки, имя одно

Тревожный признак

Рядом появилась вторая область с похожим именем или граница обрывается раньше новых строк

Вывод печатной формы
Норма

Новые данные выводятся, таблица ровная, колонки совпадают по ширине

Тревожный признак

Строки съезжают, колонки не совпадают, часть данных пустая

Печать на бумагу / PDF
Норма

Документ помещается на лист, поля не обрезаны

Тревожный признак

Таблица разрывается на два листа по вертикали

Параметры новых ячеек
Норма

Значения подставляются из данных документа

Тревожный признак

Выводится пустота или имя параметра как текст

Ограничения и частные случаи

Не всякий макет можно расширить произвольно. Макеты типа «Схема компоновки данных» (СКД) не являются табличными документами: в них структура задаётся настройками отчёта, и «расширение области» там означает добавление полей в набор данных и ресурсов, а не правку ячеек. Если печатная форма построена на СКД, ищите нужную доработку в настройках схемы, а не в редакторе табличного документа.

В макетах типа «Географическая схема», «Графическая схема» и HTML-документ понятие именованной области табличного документа отсутствует — к ним материал статьи не применим. Убедиться в типе макета можно в палитре свойств макета в конфигураторе.

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

FAQ

Как добавить строку внутрь области, а не после неё?

Установите курсор на любую строку внутри области и выполните вставку через контекстное меню — новая строка появится внутри, и граница области расширится автоматически. Если курсор стоит на первой строке области и нужно добавить строку выше неё, вставьте строку и затем перетащите верхнюю границу области на одну строку вверх.

Почему после расширения области выводится старая версия макета?

Наиболее вероятные причины: конфигурация базы данных не обновлена после сохранения (клавиша F7 в конфигураторе), печатная форма формируется из внешней обработки со своей копией макета, либо сеанс пользователя закэшировал старые данные — перезапустите клиентское приложение. Также проверьте, не переопределён ли макет расширением конфигурации.

Можно ли расширить область программно, не меняя макет?

Размер самой именованной области в макете кодом не изменить, но итоговый документ собирается динамически: область-строка выводится в цикле нужное число раз через Вывести(), колонки добавляются методом Присоединить(), а в уже сформированный документ фрагменты вставляются методом ВставитьОбласть(). Этого достаточно для любых динамических форм.

Что делать, если таблица после добавления колонки не помещается на лист?

Варианты: переключить ориентацию страницы на альбомную, уменьшить поля страницы, включить автомасштаб табличного документа, сократить ширину маловажных колонок или включить перенос текста в ячейках. Параметры страницы задаются в свойствах табличного документа — в макете или программно перед выводом на печать.

Как перенести доработанный макет в другую базу?

Если макет правился в конфигураторе — через выгрузку конфигурации или сравнение и объединение с переносом конкретного макета. Если доработка оформлена внешней печатной формой, достаточно скопировать файл обработки и зарегистрировать её в целевой базе. Расширение конфигурации выгружается в файл и загружается в другую базу штатно.

Исчезнет ли доработка макета при обновлении типовой конфигурации?

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

Итог

Что важно запомнить

Область макета расширяется вставкой строк или колонок внутрь неё либо перетаскиванием границы в редакторе табличного документа; динамический размер достигается программным выводом областей в цикле. Структурные правки таблицы выполняйте синхронно во всех связанных областях, а типовые конфигурации дорабатывайте через внешние печатные формы или расширения, чтобы не потерять изменения при обновлении.