Вывод на печать. Работа с табличными документами.
Табличный документ – агрегатный объект. Таблица типа Excel, используется для вывода данных в качестве печатных форм, для ввода данных, могут быть и другие применения.
Рис.1.1. Табличный документ
В программных модулях табличный документ создаётся
С помощью универсального конструктора объектов Новый
ТабДок = Новый ТабличныйДокумент;
При создании печатных форм табличный документ используется в виде особого типа табличных документов – макета. Для того что бы табличный документ стал макетом в нём должно быть задано специальное свойство
Рис.1.2. Задание свойства «макет» для табличного документа.
Макет отличается тем что в нём могут быть заданы именованные области для вывода, к которым можно обращаться при формировании печатной формы и помещать их в формируемых документ как одно целое.
Рис.1.3. Макет с именованными областями.
Именованные области могут быть горизонтальными или вертикальными.
Создаются именованные области через команду основного меню режима конфигуратора "Таблица/Имена/НазначитьИмя". При этом строки или столбцы, включаемые в область, должны быть выделены (рис. )
Рис.1.4. Создание именованной области
Обращение к именованной области макета происходит методом ПолучитьОбласть("ИмяОбласти")
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Особенностью макетов является то, что их ячейки могут включать различный тип заполнения данными. Тип заполнения задаётся свойством «Заполнение» из группы свойств ячейки - макет.
Рис.1.5. Возможные типы заполнений данными ячейки макета.
Возможны следующие типы заполнений
Текст
Параметр
Шаблон
Тип заполнения – Текст подразумевает, что данные как в ячейку вводятся так и отображаются.
Заполнение «Параметр» позволяет использовать в качестве значения ячейки – реквизиты или переменные контекста, то есть объекта в для которого создаётся макет. Например реквизиты справочника.
Заполнение «Шаблон» указывает, что в качестве значения используется шаблон, созданный на основе специального языка формул табличных документов 1с. В данном практикуме язык формул таблиц не будет рассматривать рассматриваться.
Создание печатного документа должно включать следующие действия
1. Создание печатного документа (на клиенте)
ТабДок = Новый ТабличныйДокумент;
2. Вызов макета (в приведённом ниже примере вызывается макет из обработки с именем "ОбработкаПечать" (на сервере)
Макет= = Обработки.ОбработкаПечать.ПолучитьМакет("Макет1");
3. Подготовка данных выводимых на печать,
В данной работе подготовка данных будет производится на основе запроса.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Наименование,
| Номенклатура.Код,
| Номенклатура.ЦенаПродажи,
| Номенклатура.ВидНоменклатуры
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|
|СГРУППИРОВАТЬ ПО
| Номенклатура.ВидНоменклатуры,
| Номенклатура.Наименование,
| Номенклатура.Код,
| Номенклатура.ЦенаПродажи";
Результат = Запрос.Выполнить();
4. Заполнение формирование документа. Заполнение включает получение необходимой области в макете операцией макета ПолучитьОбласть() с последующим выводом данной области в документ методом документа Вывести() При получении области происходит автоматическая подстановка значений параметров в документ и вычисление шаблонов. Пример кода заполнение документа приведён ниже.
ТабДок.Очистить();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ТабДок.Вывести(ОбластьЗаголовок);
СтрокаТабл = Макет.ПолучитьОбласть("Детали");
ВыборкаСрокиР = Результат.Выбрать();
Пока ВыборкаСтрокаР.Следующий() Цикл
СтрокаТабл.Параметры.Заполнить(ВыборкаСтрокаР);
ТабДок.Вывести(СтрокаТабл, ВыборкаСрокиР.Уровень());
КонецЦикла;
Непосредственно вставку в макет можно выполнять командой
ОбластьШапка.Параметры.НомерДокумента=Док.Номер;
Вывод документ заполненных именованных областей макета.
ТабДок.Вывести( ОбластьШапка);
5. Отображение документа. Выполняется операцией документа Показать( ).
Необходимо помнить, что получение данных из информационной базы (обычно требуемая при заполнении документа) можно делать в программных модулях, выполняемых на сервере. Тогда как отображение документа, конечно же, возможно только на клиенте. Поэтому обычно формирование печатного происходит в двух процедурах. В процедуре, с директивой &наКлиенте – в данной процедуре происходит создание и отображение документа, и процедуре с директивой &НаСервере или &НаСервереБезКонтекста происходит заполнение документа.
&НаКлиенте
Процедура ПечатьСпр(Команда)
ТабДок = Новый ТабличныйДокумент;
ЗапонениеДок (ТабДок);
ТабДок.Показать( );
КонецПроцедуры
&НаСервере
Процедура ЗапонениеДок (ТабДок);
//Действия по заполнению документа (действия 2,3,4,5)
КонецПроцедуры
Формирование документа для печати может быть упрощено за счёт использования конструктора вызываемого в из программного модуля через контекстное меню. Конструктор, целесообразно вызывать для процедуры, выполняемой на сервере, то есть для создание действий по заполнению документа.
Рис.1.6. Вызов конструктора запросов с обработкой результатов.
При вызове конструктора необходимо задать режим вывода результата в табличный документ (закладка Тип обработки)
Рис.1.7. Конструктор запросов с обработкой результатов.
Дата добавления: 2017-08-01; просмотров: 256;