Лабораторная работа 2. Табличный документ |
2.1. Команда
"Вывести список" режима "1С:Предприятие" До сих пор для отображения информации мы использовали окно
"Служебные сообщения", в которое можно помещать различные сообщения
в виде строк текста. Но гораздо чаще информацию приходится представлять в
табличном виде. |
2.1. Команда "Вывести список" режима "1С:Предприятие" |
|||
Режим "1С:Предприятие"
умеет выводить данные динамических списков в табличный или текстовой
документ без какого-либо программирования,
для того чтобы познакомиться с этой возможностью - выполните следующее
упражнение.
Если Вы все сделали правильно, то результирующий табличный
документ будет выглядеть так, как это изображено на рисунке 2.3.
Если содержимое табличного документа, полученное таким образом
устраивает пользователя,
то настройку конфигурации можно оставить без изменения. Однако постановка нашей задачи требует, чтобы "Во всех
отчетах, формируемых ИБ, должно появляться название объединения". Поэтому нам придется прибегнуть к программированию. И в последующих разделах мы рассмотрим работу с объектом
"ТабличныйДокумент" встроенного языка. |
2.2. Объект "ТабличныйДокумент" |
Для работы с табличными документами в
"1С:Предприятии" служит одноименный объект
типа "ТабличныйДокумент", который относится к группе Общие
объекты. Табличный документ предназначен для
формирования печатных форм первичных документов и отчетов.
Табличные документы могут храниться в конфигурации в качестве макетов,
которые служат прообразами для создания других табличных документов. Ячейки
макета могут иметь свойство
"Параметр", предназначенное для заполнения его конкретными данными.
Перед выводом области макета в результирующую таблицу параметрам можно
присвоить значения. Макеты имеют ячейки с установленным свойством
"Параметр расшифровки", значения которых задаются аналогично
параметрам. Расшифровка не влияет на внешний вид результирующей таблицы и
используется для создания связанных отчетов, открытия форм или иных действий. Прежде чем формировать отчет средствами встроенного языка с
использованием объекта
этого типа необходимо его создать. Это можно сделать с помощью конструктора: ТабДок = Новый ТабличныйДокумент(); Этот объект предоставляет доступ к объектам типа ОбластьЯчеекТабличногоДокумента и РисунокТабличногоДокумента. Он также имеет в своем составе объект типа КолонтитулТабличногоДокумента
для доступа к его колонтитулам. Сам объект будет содержать по окончании работы алгоритма
на встроенном языке другой результирующий табличный документ, который
может быть выведен в форму, просмотрен, распечатан и даже сохранен
пользователем в виде отдельного файла. Построение отчета возможно с использованием табличного документа
и непосредственное формирование отчета, используя свойства и методы
данного объекта. В общем случае, формирование отчета можно представить следующим
образом: ТабДок = Новый ТабличныйДокумент(); // алгоритм формирования табличного документа ТабДок.Показать(); При этом метод .Показать()
используется для отображения результата работы алгоритма в окне
программы.
В этом случае можно говорить о том, что в результате выполнения этого метода
в окне будет отображен результирующий табличный документ. Впрочем, в конце работы алгоритма Вы можете использовать методы:
В этой главе мы рассмотрим формирование отчета
как с использованием макета,
так и без него. |
2.3. Формирование отчета с использованием макета |
Одним из способов формирования результирующего табличного
документа является использование заранее составленного макета. Такой макет может располагаться как в составе конфигурации, так
и быть внешним файлом
табличного документа. ПолучитьОбщийМакет(): Макет
или исходный табличный документ может располагаться как в общих объектах
конфигурации, т.е. принадлежать глобальному контексту, так и располагаться
внутри прикладного объекта в конфигурации. Если макет находится в составе прикладного объекта метаданных,
то тогда получить макет можно, используя метод
ПолучитьМакет() соответствующего менеджера объекта метаданных. Макет может быть и внешним файлом. Но рассмотрение этого
варианта выходит за рамки нашего курса. |
2.3.1. Создание общего макета |
Формальным признаком того, что макет
стоит делать общим, является его использование (обращение к нему) из разных модулей
в конфигурации. В этом разделе мы рассмотрим (в учебных целях) создание
общего макета. О том, как использовать макет в составе прикладного объекта мы
расскажем в следующих главах. Для того чтобы создать общий макет, необходимо в ветви
"Общие" выбрать поддерево "Общие макеты" и нажав на
правую кнопку мыши выбрать пункт "Добавить" (см. рис. 2.4).
Сразу после вышеописанных действий система откроет окно Конструктора
макета. |
2.3.2. Конструктор макета для создания табличного документа |
|||||||||||||
С помощью этого конструктора
можно создать макет
(см. рис. 2.5):
В этой главе мы поговорим только об использовании табличного
документа.
В результате работы Конструктора
макета
в дереве
"Конфигурация" появится новый объект
"КурсУЕ". Для удобства создания макета Конфигуратор сразу откроет
окно Редактора табличного документа (см. рис. 2.6).
Окно редактора табличного документа визуально похоже на электронную
таблицу. Однако это чисто визуальное сходство. |
2.3.3. Свойства ячейки табличного документа |
|||||||||||||||||||
Прежде всего заметим, что каждая ячейка,
как и любой объект
в конфигурации, имеет свой набор свойств.
Поэтому для разработки шаблона необходимо, последовательно открывая свойства
соответствующих ячеек, вносить изменения в их свойства (см. рис. 2.7). Каждая ячейка может содержать некоторый текст. В процессе
формирования отчета
этот текст, с использованием методов
объекта "ТабличныйДокумент", переносится из макета в результирующий
табличный документ. В процессе такого переноса (вывода в результирующий табличный
документ) система выполняет некоторые преобразования в зависимости от
свойства "Заполнение" группы свойств "Макет". Как мы видим на рисунке, возможны три варианта –
"Текст", "Параметр" и "Шаблон". Что при этом
происходит с выводимой в ячейку информацией в каждом из случаев, мы
рассмотрим ниже.
Ячейки, содержащие текст, при выводе в результирующий
табличный документ будут перенесены без преобразования – точно так, как они
заданы в макете. В тоже время ячейки содержащие параметр или шаблон будут
преобразованы в текстовое представление согласно формату,
который задан для параметров в одноименном свойстве
"Формат". Поэтому прежде чем рассматривать обращение к параметрам во
встроенном языке системы, давайте создадим ячейку, содержащую параметр.
Если Вы все сделали правильно, то содержимое окна
с макетом
табличного документа будет выглядеть так, как это изображено на рисунке 2.8.
Параметрам,
которые заданы в ячейках макета, нужно присвоить конкретные значения до того,
как часть табличного документа будет выведена в результирующий табличный
документ. Сделать это можно как с использованием именованных областей, так
и без них. В последнем случае, чтобы обратиться к свойствам
ячейки необходимо будет получить область табличного документа, используя ее адрес. В следующем подразделе мы рассмотрим использование именованных
областей для формирования результирующего табличного документа. |
2.3.4. Именованные области |
||||||
Результирующий табличный документ
формируется последовательным переносом именованных областей из
исходного табличного документа. Поэтому предварительно для макета
должны быть определены области, каждой из которых
мы должны присвоить Имя. Область (именования) может быть отдельной ячейкой,
может быть прямоугольной областью, а также целой строкой (строками) или целым
столбцом (столбцами). Поскольку мы будем формировать наш отчет
построчно, наращивая его сверху вниз, то в этой главе в качестве именованной
области мы используем только строки табличного документа. Для того чтобы присвоить области имя, необходимо сначала ее
выделить, затем выбрать пункт меню "Таблица – Имена – Назначить
имя…". После чего Конфигуратор откроет диалог (см. рис. 2.9), в котором
нужно дать области некоторое имя.
Выполните следующее упражнение:
По окончании упражнения окно
табличного документа примет вид изображенный на рисунке №2.10.
Эту область мы поместим в результирующий табличный документ
только один раз, используя для достижения этой цели методы .ПолучитьОбласть() и .Вывести() объекта "ТабличныйДокумент": //Получение части документа из макета Метод ПолучитьОбласть() возвращает объект типа ТабличныйДокумент,
который представляет собой часть исходного табличного документа. Для того чтобы присвоить значения параметрам области
документа перед ее выводом в результирующий табличный документ, необходимо
воспользоваться свойством Параметры: ТабДок = Новый ТабличныйДокумент(); Если приведенный фрагмент программы
добавить в процедуру ПечатьКурсаУЕ() и запустить ее на выполнение, то в результате будет открыто
окно табличного документа, изображенное на рисунке 2.11.
А пока самостоятельно создайте две области, выполнив следующее
упражнение:
|
2.4. Улучшение вида результирующего табличного документа |
2.4.1. Объединение
ячеек
Если Вы правильно выполнили предыдущее упражнение, то в режиме
"1С:Предприятие" результат работы
процедуры ПечатьКурсаУЕ() будет выглядеть примерно так, как это изображено на рисунке 2.13. Очевидно, что сформированный таким образом табличный документ обладает
рядом недостатков: 1.
Наименование
организации с трудом помещается в одну ячейку; 2.
Ширина
столбца для колонок "Дата" и "Значение" не достаточна для
отображения необходимой информации; 3.
Числовые
значения курса
УЕ должны печататься с 4-мя знаками после запятой. Последующие подразделы позволят решить указанные выше проблемы. |
2.4.1. Объединение ячеек |
||||||||||||
Наименование организации в отчете
будет выглядеть лучше, если мы объединим две соседних ячейки. Для этого, используя мышь или клавиатуру, выделите в макете
КурсУЕ две первых ячейки.
После чего в основном меню программы выберите пункт "Таблица –
Объединить". После таких действий эти две ячейки станут одной. Поэтому ее
свойства следует "слегка" изменить, чтобы в режиме "1С:Предприятие" улучшить ее вид:
Для закрепления этого приема разработки макетов
выполните следующее упражнение:
|
2.4.2. Изменение ширины столбцов |
|||
Если выделить первый столбец нашего макета
и, используя правую кнопку мыши, выбрать пункт контекстного меню "Ширина
колонок…", то на экране появится одноименный диалог (см. рис. 2.14). В этом диалоге мы можем указать ширину столбца в явном виде. Единицей измерения в данном случае служит ширина символа
шрифта по умолчанию. Поэтому величина "9,00" означает, что по
умолчанию девять символов шрифта по-умолчанию с гарантией впишутся в ячейку
этой колонки. А какой шрифт
является шрифтом по умолчанию? Сразу после создания в конфигурации макета для него
устанавливается шрифт "Arial" высотой 8 пунктов. А у нас текстовое представление параметра Дата будет иметь 10
символов, при отображении которых мы использовали шрифт высотой 11 пунктов.
Поэтому нам нужно установить ширину первого столбца равной: 10*11/8 = 13,25.
Округлим результат до 13 и выполним следующее упражнение.
|
2.4.3. Форматирование содержимого ячейки |
|||
В результате выполнения Упражнения №2.8 окно табличного
документа примет вид, изображенный на рисунке 2.15. Из этого рисунка мы можем сделать выводы о текстовом
представлении для данных типа Дата и Число по умолчанию. По умолчанию, при отображении типа данных Дата вне зависимости
от ее состава текстовая строка будет содержать как дату, так и время. При формировании текстового представления числа отбрасываются
все пробелы слева и все незначащие нули справа. Для явного указания формата,
который будет использоваться при преобразовании значений параметров в текст ячейки,
служит поле
"Формат" группы свойств "Значения:". В это поле следует вводить строку форматирования
таким же образом, как это описано для функции
Формат(…) встроенного
языка системы. Для упрощения заполнения этого свойства
следует использовать кнопку выбора, которая есть в этом поле окна
"Свойства", нажатие на эту кнопку открывает диалог "Редактор
форматной строки". Если мы откроем этот редактор для ячейки, которая содержит
параметр "Дата" то, переключившись на закладку "Дата", мы
сможем выбрать необходимый формат
даты (см. рис. 2.16).
|
2.4.4. Установка свойств табличного документа |
|||
Перед отображением результирующего табличного документа в окне
программы
(или перед его печатью) можно, а часто - даже нужно, установить свойства
этого документа в целом. Так, например, в процедуре
ПечатьКурсаУЕ() перед применением метода .Показать() мы можем установить следующие свойства: // Установка свойств табличного документа в целом
|
2.5. Самостоятельная работа |
|||
Для закрепления только что рассмотренного материала выполните
следующее упражнение самостоятельно.
|
2.6. Формирование отчета без использования макета |
Объект
ТабличныйДокумент позволяет строить отчеты
без использования макета. Пример иллюстрирующий построение отчета
без использования макета можно найти в Приложении
B. |
2.7. Что мы узнали |
В этой главе мы рассмотрели основы формирования отчетов с
использованием объекта "ТабличныйДокумент". Для формирования отчета мы использовали макет, который
расположили в общих макетах конфигурации. Создание макетов в Конфигураторе
происходит с использованием специального Конструктора. Сам макет представляет
собой табличный документ с включенным свойством "Макет". Наличие
этого режима делает возможным изменение в процессе его редактирования
группы свойств "Макет". В эту группу входят свойства
"Заполнение" и "Параметр", которые мы рассмотрели в этой
главе. Обычно при проектировании отчета его макет разбивают на
отдельные области, каждой из которых дают имя. Это имя используют в
дальнейшем для получения части макета (в качестве объекта типа
"ТабличныйДокумент"), который выводят в результирующий табличный
документ. Редактор табличных документов, который входит в состав
платформы, содержит достаточный набор функций, позволяющий создать
практически любое необходимое оформление (форматирование)
документа. В этой главе мы использовали формирование табличного документа,
содержащего отчет из постановки задачи, вызываемый из формы списка регистра
сведений "Курсы". |