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