====== Табличный документ ======
Табличные документы в 1С обычно используются для вывода отчетов и печатных форм. Его структура на внешний вид напоминает Excel и доступны похожие средства форматирования и оформления. Следует отметить, что хорошим в 1С считается построение отчетов в системе СКД, а вывод данных напрямую в табличный документ, оставлен для печатных форм.
===== Макет =====
Макет – описание полей или областей табличного документа, которые будут выведены пользователю. Другими словами это каркас или схема итогового табличного документа.
[[Название области|{{http://i.imgur.com/OFLmPGu.png}}]]\\
Области в отчете выводятся сверху вниз и слева направо. Область может иметь имя, через которое к ней можно обращаться. Имя области задается следующим образом: нужно выделить область которой вы хотите задать имя (можно выделить целиком строку\строки или колонку\колонки) и после этого выбрать меню ''Таблица - Имена - Назначить имя''.
Макеты используются не только для хранения заранее заготовленного оформления отчета, но и к примеру для настройки авторегистрации отчета(так сделано в большинстве типовых конфигураций построенных на обычном приложении), там могут быть какие то бинарные данные или отчет СКД. Макеты могут быть у документов, справочников или у большинства других типов метаданных. Предусмотрены помощники создания печатных форм, которые на основании реквизитов выбранного объекта строят макет, генерируют процедуру и установку кнопки на форму по его заполнению и выводу на печать готового табличного документа.(FIXME Куда нить приляпать замечание о том что можно сделать у одной строки свою ширину колонок)
Ячейки в макете могут иметь следующий тип:
* Текст – будет выведен текст указанный в ячейке
* Параметр – при формировании табличного документа можно установить значение параметра указанного в ячейке макета.
* Шаблон – этот тип ячейки который необходим для вывода текста и параметра одновременно, например в ячейке с типом "Шаблон" можно указать: "Итоговая сумма: [СуммаИтого]", затем при формировании табличного документа мы получим такой вывод: "Итоговая сумма: 1350". Бывает очень удобно при построении сложных макетов.
===== Общий пример работы с макетом =====
Заполнение макета конструктором печати документа реализация товаров и услуг
//{{_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ(Печать1)
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
ТабДок = Новый ТабличныйДокумент;
Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("Печать");
// Заголовок
Область = Макет.ПолучитьОбласть("Заголовок");
ТабДок.Вывести(Область);
// Шапка
Шапка = Макет.ПолучитьОбласть("Шапка");
Шапка.Параметры.Заполнить(ЭтотОбъект);
ТабДок.Вывести(Шапка);
// Товары
Область = Макет.ПолучитьОбласть("ТоварыШапка");
ТабДок.Вывести(Область);
ОбластьТовары = Макет.ПолучитьОбласть("Товары");
Для Каждого ТекСтрокаТовары Из Товары Цикл
ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
ТабДок.Вывести(ОбластьТовары);
КонецЦикла;
// Подвал
Подвал = Макет.ПолучитьОбласть("Подвал");
Подвал.Параметры.Заполнить(ЭтотОбъект);
ТабДок.Вывести(Подвал);
ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Ложь;
ТабДок.ОтображатьЗаголовки = Ложь;
ТабДок.Показать();
//}}_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ
Вкратце, схема следующая:
- Создание табличного документа, который будет показан пользователю.
- Получение макета с нужной нам структурой.
- Получение из макета области которую нужно вывести(можно использовать разные макеты).
- Заполнение параметров, области, если они есть.
- Вывод области в табличный документ
- Вывод табличного документа.
Теперь подробно.
Создаем табличный документ, куда будет выводиться макет
ТабДок = Новый ТабличныйДокумент;
Получаем нужный нам макет:
Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("Печать");
Получаем область из этого макета
Шапка = Макет.ПолучитьОбласть("Шапка");
Устанавливаем значения параметров существующих в этой области
Шапка.Параметры.Заполнить(ЭтотОбъект); //если есть коллекция откуда заполнять данные
//или
Шапка.Параметры. Номер = ЭтотОбъект.Номер;
Выводим эту область в табличном документе
ТабДок.Вывести(Шапка);
Показываем табличный документ
ТабДок.Показать();
Табличный документ можно вывести не только на экран пользователю, но и например в эксель, этот метод бывает чрезвычайно полезным, так как бывает гораздо удобнее сделать печатную форму, и сохранить ее средствами платформы в эксель, чем самому его «мастерить» с помощью com. Делается это следующим образом:
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLS);