Лабораторная работа 2. Табличный документ

2.1. Команда "Вывести список" режима "1Средприятие"
2.2. Объект "ТабличныйДокумент"
2.3. Формирование отчета с использованием макета
    2.3.1. Создание общего макета
    2.3.2. Конструктор макета для создания табличного документа
    2.3.3. Свойства ячейки табличного документа
    2.3.4. Именованные области
2.4. Улучшение вида результирующего табличного документа
    2.4.1. Объединение ячеек
    2.4.2. Изменение ширины столбцов
    2.4.3. Форматирование содержимого ячейки
    2.4.4. Установка свойств табличного документа
2.5. Самостоятельная работа
2.6. Формирование отчета без использования макета
2.7. Что мы узнали

До сих пор для отображения информации мы использовали окно "Служебные сообщения", в которое можно помещать различные сообщения в виде строк текста. Но гораздо чаще информацию приходится представлять в табличном виде.

 

 

2.1. Команда "Вывести список" режима "1Средприятие"

Режим "1Средприятие" умеет выводить данные динамических списков в табличный или текстовой документ без какого-либо программирования, для того чтобы познакомиться с этой возможностью - выполните следующее упражнение.

Упражнение №2.1.

Запустите конфигурацию в режиме "1Средприятие". Откройте форму списка регистра сведений "Курсы" и выберете пункт меню "Действия – Вывести список" (см. рис. 2.1).


Рис. 2.1. Команда "Вывести список".

На втором этапе в диалоге "Вывести список" сбросьте флаг у колонки "Картинка" и нажмите на кнопку "ОК" (см. рис. 2.2).


Рис. 2.2. Определение типа выходного документа и состава колонок.

Если Вы все сделали правильно, то результирующий табличный документ будет выглядеть так, как это изображено на рисунке 2.3.


Рис. 2.3. Результат выполнения упражнения №2.1.

Если содержимое табличного документа, полученное таким образом устраивает пользователя, то настройку конфигурации можно оставить без изменения.

Однако постановка нашей задачи требует, чтобы "Во всех отчетах, формируемых ИБ, должно появляться название объединения".

Поэтому нам придется прибегнуть к программированию.

И в последующих разделах мы рассмотрим работу с объектом "ТабличныйДокумент" встроенного языка.

 

 

2.2. Объект "ТабличныйДокумент"

Для работы с табличными документами в "1Средприятии" служит одноименный объект типа "ТабличныйДокумент", который относится к группе Общие объекты.

Табличный документ предназначен для формирования печатных форм первичных документов и отчетов. Табличные документы могут храниться в конфигурации в качестве макетов, которые служат прообразами для создания других табличных документов. Ячейки макета могут иметь свойство "Параметр", предназначенное для заполнения его конкретными данными. Перед выводом области макета в результирующую таблицу параметрам можно присвоить значения. Макеты имеют ячейки с установленным свойством "Параметр расшифровки", значения которых задаются аналогично параметрам. Расшифровка не влияет на внешний вид результирующей таблицы и используется для создания связанных отчетов, открытия форм или иных действий.

Прежде чем формировать отчет средствами встроенного языка с использованием объекта этого типа необходимо его создать. Это можно сделать с помощью конструктора:

ТабДок = Новый ТабличныйДокумент();

Этот объект предоставляет доступ к объектам типа ОбластьЯчеекТабличногоДокумента и РисунокТабличногоДокумента. Он также имеет в своем составе объект типа КолонтитулТабличногоДокумента для доступа к его колонтитулам.

Сам объект будет содержать по окончании работы алгоритма на встроенном языке другой результирующий табличный документ, который может быть выведен в форму, просмотрен, распечатан и даже сохранен пользователем в виде отдельного файла.

Построение отчета возможно с использованием табличного документа и непосредственное формирование отчета, используя свойства и методы данного объекта.

В общем случае, формирование отчета можно представить следующим образом:

ТабДок = Новый ТабличныйДокумент();

// алгоритм формирования табличного документа

ТабДок.Показать();

При этом метод .Показать() используется для отображения результата работы алгоритма в окне программы. В этом случае можно говорить о том, что в результате выполнения этого метода в окне будет отображен результирующий табличный документ.

Впрочем, в конце работы алгоритма Вы можете использовать методы:

*       Записать(<Имя файла>, <Тип файла таблицы>) для сохранения результатов работы во внешнем файле;

*       Напечатать(<Диалог печати>) для вывода отчета на печать вместо метода .Показать().

В этой главе мы рассмотрим формирование отчета как с использованием макета, так и без него.

 

 

2.3. Формирование отчета с использованием макета

Одним из способов формирования результирующего табличного документа является использование заранее составленного макета.

Такой макет может располагаться как в составе конфигурации, так и быть внешним файлом табличного документа.

ПолучитьОбщийМакет():
//Получение макета
Макет = ПолучитьОбщийМакет("ИмяМакета");

Макет или исходный табличный документ может располагаться как в общих объектах конфигурации, т.е. принадлежать глобальному контексту, так и располагаться внутри прикладного объекта в конфигурации.

Если макет находится в составе прикладного объекта метаданных, то тогда получить макет можно, используя метод ПолучитьМакет() соответствующего менеджера объекта метаданных.

Макет может быть и внешним файлом. Но рассмотрение этого варианта выходит за рамки нашего курса.

 

2.3.1. Создание общего макета

Формальным признаком того, что макет стоит делать общим, является его использование (обращение к нему) из разных модулей в конфигурации. В этом разделе мы рассмотрим (в учебных целях) создание общего макета. О том, как использовать макет в составе прикладного объекта мы расскажем в следующих главах.

Для того чтобы создать общий макет, необходимо в ветви "Общие" выбрать поддерево "Общие макеты" и нажав на правую кнопку мыши выбрать пункт "Добавить" (см. рис. 2.4).


Рис. 2.4. Создание нового общего макета.

Сразу после вышеописанных действий система откроет окно Конструктора макета.

 

 

2.3.2. Конструктор макета для создания табличного документа

С помощью этого конструктора можно создать макет (см. рис. 2.5):

*       Табличного документа;

*       Текстового документа;

*       Двоичных данных;

*       Active document;

*       HTML документа;

*       Географической схемы.

В этой главе мы поговорим только об использовании табличного документа.


Рис. 2.5. Конструктор макета.

Упражнение №2.2.

Создайте новый общий макет и задайте в конструкторе следующие его свойства:

Свойство

Значение

Имя:

КурсУЕ

Синоним:

Курс УЕ

Комментарий:

Табличный документ "Курс УЕ"

Выберите тип макета:

Табличный документ

Нажмите на кнопку "Готово", для того чтобы завершить работу с Конструктором макета.

В результате работы Конструктора макета в дереве "Конфигурация" появится новый объект "КурсУЕ". Для удобства создания макета Конфигуратор сразу откроет окно Редактора табличного документа (см. рис. 2.6).


Рис. 2.6. Результат работы Конструктора макета.

Окно редактора табличного документа визуально похоже на электронную таблицу. Однако это чисто визуальное сходство.

 

 

2.3.3. Свойства ячейки табличного документа

Прежде всего заметим, что каждая ячейка, как и любой объект в конфигурации, имеет свой набор свойств. Поэтому для разработки шаблона необходимо, последовательно открывая свойства соответствующих ячеек, вносить изменения в их свойства (см. рис. 2.7).

Каждая ячейка может содержать некоторый текст. В процессе формирования отчета этот текст, с использованием методов объекта "ТабличныйДокумент", переносится из макета в результирующий табличный документ.

В процессе такого переноса (вывода в результирующий табличный документ) система выполняет некоторые преобразования в зависимости от свойства "Заполнение" группы свойств "Макет".

Как мы видим на рисунке, возможны три варианта – "Текст", "Параметр" и "Шаблон". Что при этом происходит с выводимой в ячейку информацией в каждом из случаев, мы рассмотрим ниже.


Рис. 2.7. Свойства ячейки табличного документа.

Ячейки, содержащие текст, при выводе в результирующий табличный документ будут перенесены без преобразования – точно так, как они заданы в макете.

В тоже время ячейки содержащие параметр или шаблон будут преобразованы в текстовое представление согласно формату, который задан для параметров в одноименном свойстве "Формат".

Поэтому прежде чем рассматривать обращение к параметрам во встроенном языке системы, давайте создадим ячейку, содержащую параметр.

Упражнение №2.3.

Измените свойства левой верхней ячейки в макете "КурсУЕ" в соответствии со следующими значениями.

Свойство:

Значение:

Группа свойств "Основные:"

Размещение:

Переносить

Группа свойств "Макет:"

Заполнение:

Параметр

Параметр:

НаименованиеОрганизации

Группа свойств "Оформление:"

Шрифт:

Times New Roman, 11

Остальные свойства можно оставить без изменения или выбрать по своему вкусу.

Если Вы все сделали правильно, то содержимое окна с макетом табличного документа будет выглядеть так, как это изображено на рисунке 2.8.


Рис. 2.8. Свойства ячейки содержащей параметр.

Параметрам, которые заданы в ячейках макета, нужно присвоить конкретные значения до того, как часть табличного документа будет выведена в результирующий табличный документ.

Сделать это можно как с использованием именованных областей, так и без них.

В последнем случае, чтобы обратиться к свойствам ячейки необходимо будет получить область табличного документа, используя ее адрес.

В следующем подразделе мы рассмотрим использование именованных областей для формирования результирующего табличного документа.

 

 

2.3.4. Именованные области

Результирующий табличный документ формируется последовательным переносом именованных областей из исходного табличного документа.

Поэтому предварительно для макета должны быть определены области, каждой из которых мы должны присвоить Имя.

Область (именования) может быть отдельной ячейкой, может быть прямоугольной областью, а также целой строкой (строками) или целым столбцом (столбцами).

Поскольку мы будем формировать наш отчет построчно, наращивая его сверху вниз, то в этой главе в качестве именованной области мы используем только строки табличного документа.

Для того чтобы присвоить области имя, необходимо сначала ее выделить, затем выбрать пункт меню "Таблица – Имена – Назначить имя…". После чего Конфигуратор откроет диалог (см. рис. 2.9), в котором нужно дать области некоторое имя.


Рис. 2.9. Создание именованной области в макете.

Выполните следующее упражнение:

Упражнение №2.4.

Выделите первую строку в макете "КурсыУЕ".

Назначьте ей в качестве имени имя "Заголовок".

По окончании упражнения окно табличного документа примет вид изображенный на рисунке №2.10.


Рис. 2.10. Область "Заголовок".

Эту область мы поместим в результирующий табличный документ только один раз, используя для достижения этой цели методы .ПолучитьОбласть() и .Вывести() объекта "ТабличныйДокумент":

//Получение части документа из макета
Область = Макет.ПолучитьОбласть("Заголовок");
// действия по заполнению параметров части документа…
ТабДок.Вывести(Область);

Метод ПолучитьОбласть() возвращает объект типа ТабличныйДокумент, который представляет собой часть исходного табличного документа.

Для того чтобы присвоить значения параметрам области документа перед ее выводом в результирующий табличный документ, необходимо воспользоваться свойством Параметры:

ТабДок = Новый ТабличныйДокумент();
//Получение макета
Макет = ПолучитьОбщийМакет("КурсУЕ");
//Получение части документа из макета
Область = Макет.ПолучитьОбласть("Заголовок");
// действия по заполнению параметров части документа
Область.Параметры.НаименованиеОрганизации =
Константы.НаименованиеОрганизации.Получить();
ТабДок.Вывести(Область);
……………………………………………………………………
ТабДок.Показать("История курса УЕ");

Если приведенный фрагмент программы добавить в процедуру ПечатьКурсаУЕ() и запустить ее на выполнение, то в результате будет открыто окно табличного документа, изображенное на рисунке 2.11.


Рис. 2.11. Результат вывода именованной области "Заголовок".

А пока самостоятельно создайте две области, выполнив следующее упражнение:

Упражнение №2.5.

Создайте две области "Шапка" и "Строка", разместив их в макете "КурсУЕ" так как это изображено на рисунке 2.12.

Самостоятельно внесите изменения в текст процедуры ПечатьКурсаУЕ() таким образом, чтобы она отображала курсы УЕ в табличном документе.

Проверьте работу процедуры в режиме "1Средприятие".


Рис. 2.12. Области "Шапка" и "Строка".

 

 

2.4. Улучшение вида результирующего табличного документа

2.4.1. Объединение ячеек
2.4.2. Изменение ширины столбцов
2.4.3. Форматирование содержимого ячейки
2.4.4. Установка свойств табличного документа


Рис. 2.13. Первый вариант работы процедуры ПечатьКурсаУЕ().

Если Вы правильно выполнили предыдущее упражнение, то в режиме "1Средприятие" результат работы процедуры ПечатьКурсаУЕ() будет выглядеть примерно так, как это изображено на рисунке 2.13.

Очевидно, что сформированный таким образом табличный документ обладает рядом недостатков:

1.     Наименование организации с трудом помещается в одну ячейку;

2.     Ширина столбца для колонок "Дата" и "Значение" не достаточна для отображения необходимой информации;

3.     Числовые значения курса УЕ должны печататься с 4-мя знаками после запятой.

Последующие подразделы позволят решить указанные выше проблемы.

 

 

2.4.1. Объединение ячеек

Наименование организации в отчете будет выглядеть лучше, если мы объединим две соседних ячейки.

Для этого, используя мышь или клавиатуру, выделите в макете КурсУЕ две первых ячейки. После чего в основном меню программы выберите пункт "Таблица – Объединить".

После таких действий эти две ячейки станут одной. Поэтому ее свойства следует "слегка" изменить, чтобы в режиме "1Средприятие" улучшить ее вид:

Упражнение №2.6.

Измените следующие свойства ячейки:

Группа свойств "Положение:":

Свойство

Значение

По горизонтали:

Центр

По вертикали:

Центр

Для закрепления этого приема разработки макетов выполните следующее упражнение:

Упражнение №2.7.

В области "Шапка" объедините две ячейки, которые должны содержать текст "История курса УЕ" и установите для этой ячейки те же свойства, что и в предыдущем упражнении.

Что изменилось в результате таких действий?

Как будет выглядеть теперь результирующий табличный документ в режиме "1Средприятие"?

 

 

2.4.2. Изменение ширины столбцов


Рис. 2.14. Настройка ширины колонок.

Если выделить первый столбец нашего макета и, используя правую кнопку мыши, выбрать пункт контекстного меню "Ширина колонок…", то на экране появится одноименный диалог (см. рис. 2.14).

В этом диалоге мы можем указать ширину столбца в явном виде.

Единицей измерения в данном случае служит ширина символа шрифта по умолчанию. Поэтому величина "9,00" означает, что по умолчанию девять символов шрифта по-умолчанию с гарантией впишутся в ячейку этой колонки.

А какой шрифт является шрифтом по умолчанию?

Сразу после создания в конфигурации макета для него устанавливается шрифт "Arial" высотой 8 пунктов.

А у нас текстовое представление параметра Дата будет иметь 10 символов, при отображении которых мы использовали шрифт высотой 11 пунктов. Поэтому нам нужно установить ширину первого столбца равной: 10*11/8 = 13,25. Округлим результат до 13 и выполним следующее упражнение.

Упражнение №2.8.

Установите ширину первой колонки равной 13. Рассчитайте минимальную ширину второй колонки. Измените ее ширину, используя диалог "Ширина колонок".

Какую ширину Вы установили для второй колонки?

Как будет выглядеть теперь результирующий табличный документ в режиме "1Средприятие"?

 

 

 

 

 

2.4.3. Форматирование содержимого ячейки


Рис. 2.15. Результат выполнения Упражнения №2.8.

В результате выполнения Упражнения №2.8 окно табличного документа примет вид, изображенный на рисунке 2.15.

Из этого рисунка мы можем сделать выводы о текстовом представлении для данных типа Дата и Число по умолчанию.

По умолчанию, при отображении типа данных Дата вне зависимости от ее состава текстовая строка будет содержать как дату, так и время.

При формировании текстового представления числа отбрасываются все пробелы слева и все незначащие нули справа.

Для явного указания формата, который будет использоваться при преобразовании значений параметров в текст ячейки, служит поле "Формат" группы свойств "Значения:".

В это поле следует вводить строку форматирования таким же образом, как это описано для функции Формат(…) встроенного языка системы.

Для упрощения заполнения этого свойства следует использовать кнопку выбора, которая есть в этом поле окна "Свойства", нажатие на эту кнопку открывает диалог "Редактор форматной строки".

Если мы откроем этот редактор для ячейки, которая содержит параметр "Дата" то, переключившись на закладку "Дата", мы сможем выбрать необходимый формат даты (см. рис. 2.16).


Рис. 2.16. Выбор формата для представления даты.

Упражнение №2.9.

Установите, используя "Редактор форматной строки", необходимый формат для представления ячеек, содержащих параметры Дата и Значение.

Какие форматные строки Вы сформировали и почему?

Как будет выглядеть теперь результирующий табличный документ в режиме "1Средприятие"?

 

 

2.4.4. Установка свойств табличного документа

Перед отображением результирующего табличного документа в окне программы (или перед его печатью) можно, а часто - даже нужно, установить свойства этого документа в целом.

Так, например, в процедуре ПечатьКурсаУЕ() перед применением метода .Показать() мы можем установить следующие свойства:

// Установка свойств табличного документа в целом
// перед его отображением:

ТабДок.ИмяПараметровПечати = "ПараметрыКурсаУЕ";
ТабДок.ИмяСохраненияПоложенияОкна = "ОкноКурсаУЕ";
ТабДок.ОтображатьЗаголовки = Ложь;
ТабДок.ОтображатьСетку = Ложь;
ТабДок.СохранятьСвойстваОтображения = Истина;
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ФиксацияСверху = 3;
ТабДок.Показать("История курса УЕ");

Упражнение №2.10.

Внесите в процедуру ПечатьКурсаУЕ() текст, приведенный выше, и проверьте ее работоспособность.

Как будет выглядеть теперь результирующий табличный документ в режиме "1Средприятие"?

 

 

2.5. Самостоятельная работа

Для закрепления только что рассмотренного материала выполните следующее упражнение самостоятельно.

Упражнение №2.11.

Внесите необходимые изменения в текст процедуры ПечатьЧерезЗапрос(Кнопка) модуля формы списка регистра сведений "Курсы", чтобы процедура формировала отчет аналогичный рассмотренному выше.

Обязательно проверьте работу процедуры в режиме "1Средприятие".

По окончании отладки замените номер версии в свойствах конфигурации на величину "1.0.0.2".

 

 

2.6. Формирование отчета без использования макета

Объект ТабличныйДокумент позволяет строить отчеты без использования макета.

Пример иллюстрирующий построение отчета без использования макета можно найти в Приложении B.

 

 

2.7. Что мы узнали

В этой главе мы рассмотрели основы формирования отчетов с использованием объекта "ТабличныйДокумент".

Для формирования отчета мы использовали макет, который расположили в общих макетах конфигурации. Создание макетов в Конфигураторе происходит с использованием специального Конструктора. Сам макет представляет собой табличный документ с включенным свойством "Макет". Наличие этого режима делает возможным изменение в процессе его редактирования группы свойств "Макет". В эту группу входят свойства "Заполнение" и "Параметр", которые мы рассмотрели в этой главе.

Обычно при проектировании отчета его макет разбивают на отдельные области, каждой из которых дают имя. Это имя используют в дальнейшем для получения части макета (в качестве объекта типа "ТабличныйДокумент"), который выводят в результирующий табличный документ.

Редактор табличных документов, который входит в состав платформы, содержит достаточный набор функций, позволяющий создать практически любое необходимое оформление (форматирование) документа.

В этой главе мы использовали формирование табличного документа, содержащего отчет из постановки задачи, вызываемый из формы списка регистра сведений "Курсы".