Разработка и Конфигурация · 11 мин
Как в 1С сделать табличный документ
Как программно создать табличный документ в 1С: макеты, области, вывод данных, оформление и печать. Примеры кода, типичные ошибки и ответы на вопросы.
Табличный документ в 1С — это универсальный объект для вывода данных в виде таблицы: печатных форм, отчётов, прайс-листов и накладных. Он строится на основе макета, в котором заранее описаны области, шрифты, границы и параметры, а затем заполняется данными программно. Именно так работает большинство печатных форм в типовых конфигурациях.
Задача возникает в двух сценариях. Первый — вы разработчик или внедренец и создаёте новую печатную форму или отчёт. Второй — вы администратор или бухгалтер, которому нужно понять, как устроена существующая форма, чтобы поправить её или добавить свою. В обоих случаях базовый принцип один: макет плюс программный вывод областей.
Ниже разобран полный цикл: создание макета, настройка областей, программный вывод данных, оформление, вывод на печать и типичные ошибки, из-за которых документ «не собирается» или выглядит криво.
Что такое табличный документ и где он применяется
Табличный документ — объект встроенного языка 1С, представляющий двумерную таблицу с ячейками, объединениями, картинками и форматированием. Его можно показать пользователю на форме, отправить на печать, сохранить в файл Excel, PDF или MXL. По сути это аналог листа Excel внутри платформы.
Типичные применения: печатные формы документов (счета, акты, ТОРГ-12), простые отчёты без СКД, прайс-листы, этикетки, выгрузки для обмена с контрагентами. Если данные нужно вывести строго по заданному шаблону с точным расположением элементов — табличный документ подходит лучше, чем СКД.
Важно понимать разницу: макет — это шаблон, хранящийся в конфигурации, а табличный документ — результат, который формируется в момент выполнения кода. Один макет может порождать неограниченное количество готовых документов с разными данными.
Создаём макет табличного документа
Макет создаётся в конфигураторе. Откройте ветку объекта, для которого нужна печатная форма (например, документа «РеализацияТоваровУслуг»), либо общий раздел «Общие → Макеты», если форма универсальная. Через контекстное меню выберите «Добавить», в поле «Тип макета» укажите «Табличный документ» и задайте имя, например «МакетПечати».
Откроется редактор, похожий на Excel. Здесь вы рисуете будущую форму: вводите текст в ячейки, задаёте ширину колонок, настраиваете шрифты, границы и заливку через палитру свойств. Статический текст (заголовки, подписи) просто впечатывается в ячейки.
Места, куда будут подставляться данные, оформляются параметрами. Выделите ячейку, в палитре свойств установите свойство «Заполнение» в значение «Параметр», а в тексте ячейки укажите имя параметра в угловых скобках, например <НомерДокумента>. Если ячейка должна содержать и текст, и параметр, используйте заполнение «Шаблон»: Счёт № <Номер> от <Дата>.
Разбиваем макет на области
Макет выводится в табличный документ не целиком, а по областям — это даёт гибкость: шапку вывести один раз, строки товаров — в цикле, подвал — в конце. Область создаётся выделением строк или колонок и назначением имени через меню «Таблица → Имена → Назначить имя» (Ctrl+Shift+N).
Типовая структура макета печатной формы: область «Шапка» (заголовок документа, реквизиты сторон), область «Строка» (одна строка табличной части), область «Итого» (суммы) и область «Подвал» (подписи, расшифровки). Для строк табличной части область должна охватывать ровно одну строку макета, чтобы её можно было многократно выводить в цикле.
Области бывают горизонтальные (строки) и вертикальные (колонки). Для обычных печатных форм достаточно горизонтальных. Вертикальные нужны, когда таблица растёт вправо — например, при выводе данных по месяцам в колонках.
- 1Создайте макет типа «Табличный документ» у объекта или в общих макетах
- 2Нарисуйте статическую часть формы: заголовки, рамки, подписи
- 3Пометьте ячейки с данными как параметры или шаблоны
- 4Выделите строки и назначьте имена областям: Шапка, Строка, Итого, Подвал
- 5Сохраните конфигурацию и проверьте, что макет открывается без ошибок
Программно заполняем и выводим документ
Вывод выполняется в модуле объекта, в модуле менеджера объекта (для команд печати) или в общем модуле. Общая схема: создать объект ТабличныйДокумент, получить макет, в цикле получать области, заполнять параметры и выводить.
Процедура СформироватьПечатнуюФорму(СсылкаНаДокумент) Экспорт
ТабДок = Новый ТабличныйДокумент;
Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("МакетПечати");
// Шапка
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.НомерДокумента = СсылкаНаДокумент.Номер;
ОбластьШапка.Параметры.ДатаДокумента = Формат(СсылкаНаДокумент.Дата, "ДЛФ=D");
ТабДок.Вывести(ОбластьШапка);
// Строки табличной части
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Для Каждого СтрокаТовары Из СсылкаНаДокумент.Товары Цикл
ОбластьСтрока.Параметры.Номенклатура = СтрокаТовары.Номенклатура;
ОбластьСтрока.Параметры.Количество = СтрокаТовары.Количество;
ОбластьСтрока.Параметры.Сумма = СтрокаТовары.Сумма;
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
// Подвал
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьПодвал.Параметры.ИтогоСумма = СсылкаНаДокумент.Товары.Итог("Сумма");
ТабДок.Вывести(ОбластьПодвал);
ТабДок.Показать("Печатная форма");
КонецПроцедуры
Метод Вывести добавляет область вниз документа. Если нужно выстроить области горизонтально (например, колонки периодов), используйте Присоединить. Обратите внимание: одну и ту же область макета можно заполнять и выводить многократно — после вывода её параметры стоит очищать или просто перезаписывать в следующей итерации.
Вместо обращения к реквизитам ссылки напрямую в больших формах лучше использовать запрос: выбрать шапку и табличную часть одним пакетом запросов, затем обойти выборки. Это быстрее и безопаснее при печати нескольких документов сразу.
Если печатная форма вызывается для массива документов, выводите их в один ТабличныйДокумент и разделяйте методом ВывестиГоризонтальныйРазделительСтраниц() — тогда каждый документ начнётся с новой страницы при печати.
Оформление: внешний вид и параметры страницы
Основное оформление задаётся в макете: шрифты, границы, выравнивание, цвет фона. Но часть свойств удобнее настроить программно у самого табличного документа после формирования.
Ключевые свойства объекта ТабличныйДокумент: ОриентацияСтраницы (книжная или альбомная), АвтоМасштаб (вписать в ширину страницы), ПолеСлева, ПолеСправа и другие поля в миллиметрах, ЧерноБелаяПечать, КоличествоЭкземпляров. Также полезно Защита — запрещает редактирование документа пользователем, что важно для официальных печатных форм.
Для повторения шапки таблицы на каждой странице при печати задайте свойство ПовторятьПриПечатиСтроки — укажите диапазон строк заголовка. Без этого длинная таблица на второй странице останется без шапки, что часто становится замечанием при проверке форм.
Вывод пользователю: показ, печать и сохранение
Готовый табличный документ показывают методом Показать() или размещают на управляемой форме через реквизит типа ТабличныйДокумент (элемент формы «Поле табличного документа»). В типовых конфигурациях печатные формы обычно открываются в стандартном окне предварительного просмотра через подсистему печати БСП.
Для сохранения в файл используется метод Записать с указанием типа файла: ТабДок.Записать("C:\Форма.xlsx", ТипФайлаТабличногоДокумента.XLSX). Поддерживаются форматы MXL, XLSX, PDF, HTML, ODS и другие. Учтите: при записи в PDF и Excel часть сложного форматирования (некоторые объединения, картинки) может отображаться иначе, чем на экране, — проверяйте результат на реальных данных.
Прямая печать без предпросмотра выполняется методом Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать). Используйте её осторожно и только там, где пользователь осознанно запускает печать, иначе легко отправить на принтер лишние десятки страниц.
Проверка результата и типичные ошибки
После формирования проверьте документ на тестовых данных разного объёма: один товар, двадцать товаров, пустая табличная часть, длинные наименования. Особое внимание — переносу строк: если в ячейке длинный текст, включите в макете свойство «Размещение текста» с переносом и проверьте, не «съезжает» ли высота строк.
Самые частые проблемы: ошибка «Область не найдена» из-за опечатки в имени области, пустые значения вместо данных из-за несовпадения имён параметров, съехавшая вёрстка из-за вывода области не той ширины и отсутствие итогов, потому что область «Итого» выведена до цикла строк.
Как проверить результат
Все строки выведены, итоги совпадают с данными документа
Часть строк отсутствует или итоги не сходятся
Форма помещается в ширину страницы, шапка повторяется на каждом листе
Колонки обрезаны справа, на второй странице нет шапки
Все подстановки заполнены реальными данными
Видны угловые скобки с именами параметров или пустые места
FAQ: частые вопросы о табличных документах в 1С
Чем табличный документ отличается от отчёта на СКД?
Табличный документ даёт полный ручной контроль над каждой ячейкой и подходит для строго регламентированных печатных форм. СКД лучше для аналитических отчётов с группировками, отборами и настройками пользователя, но точную вёрстку в ней делать сложнее.
Как добавить печатную форму, не меняя конфигурацию?
Используйте механизм внешних печатных форм (в конфигурациях на БСП — «Администрирование → Печатные формы, отчеты и обработки»). Внешняя обработка реализует функцию Печать, возвращающую готовый табличный документ, и подключается без снятия конфигурации с поддержки.
Почему вместо данных выводится текст в угловых скобках?
Ячейке не задано свойство «Заполнение» в значение «Параметр» или «Шаблон» — платформа воспринимает текст как обычную строку. Откройте макет, выделите ячейку и измените свойство заполнения в палитре свойств.
Как вывести несколько документов одной печатной формой?
Сформируйте один ТабличныйДокумент, в цикле по массиву ссылок выводите области каждого документа, а между документами вызывайте ВывестиГоризонтальныйРазделительСтраниц(), чтобы каждый начинался с нового листа.
Можно ли сохранить табличный документ в Excel?
Да, методом Записать с типом файла XLSX или XLS. Учтите, что сложное форматирование и некоторые элементы оформления могут переноситься с искажениями, поэтому файл стоит открыть и проверить визуально.
Как запретить пользователю редактировать готовую форму?
Установите свойству Защита табличного документа значение Истина перед показом. Для отдельных ячеек доступность настраивается свойством «Защита» в макете или программно через область.
Что важно запомнить
Табличный документ строится по схеме «макет → области → параметры → программный вывод». Создайте макет с именованными областями и параметрами, заполните их в коде и выведите методом Вывести, затем настройте ориентацию, масштаб и защиту. Для типовых конфигураций на поддержке используйте внешние печатные формы или расширения.