4. 4. Отчеты в V 8. Введение Для формирования печатных форм в V 8 предназначен табличный документ (ТД). Табличный документ также иногда используется для ввода данных в систему, поскольку его ячейки могут содержать значения, изменяемые с помощью элементов управления.
(продолжение) С помощью элемента управления Поле. Табличного. Документа ТД может быть отображен в экранной форме.
(продолжение) Обычно табличный документ формируется на основе макета, то есть шаблона (см. V 7 -Таблица). На основе макета средствами встроенного языка формируется готовая печатная форма - табличный документ.
Особенности табличного документа • Поддерживается механизм расшифровок (см. V 7) • В табличном документе могут быть группировки, с помощью которых можно отражать промежуточные итоги, например, объем продаж по каждому отделу. Пользователь может легко разворачивать и сворачивать группы специальными маркерами. Есть возможность сделать так, чтобы текст в ячейке автоматически сдвигался вправо в соответствии с уровнем группировки. • У ячеек могут быть примечания, содержащие дополнительную информацию. Ячейка с примечанием имеет маленький треугольник в правом верхнем углу. При наведении курсора мыши на ячейку примечание показывается во всплывающем окне. • В табличном документе может быть расположено поле сводной таблицы, которая позволяет отобразить многомерные данные в виде плоской таблицы с вложенными заголовками
Макет Ячейки табличного документа обычно содержат текст или параметры, а также могут содержать одновременно текст и параметры, заключенные в квадратные скобки. В последнем случае у таких ячеек свойство Заполнение должно быть установлено в значение «Шаблон» . При формировании печатной формы средствами встроенного языка на место параметров будут подставлены конкретные значения.
Сохранение и восстановление печатных форм В конфигурации могут быть общие макеты, которые не принадлежат конкретному объекту. Сформированная печатная форма может быть записана в файл интерактивно или с помощью метода Записать. Поддерживаются следующие форматы файлов: MXL, HTML, XLS , TXT. С помощью меню «Файл ->Открыть» или кнопки на панели инструментов можно загрузить табличный документ из файла. Это также можно сделать программно с помощью метода Прочитать.
Области Областью табличного документа называется группа ячеек, имеющая имя. Обычно области включают в себя одну или несколько строк, колонок или любой прямоугольный диапазон ячеек. К области можно обратиться по координатам или имени (см. V 7)] Примеры: Обл = Макет. Получить. Область("Строка | Колонка"). Обл 1=Макет. Получить. Область( «Шапка | Основа"). Обл 2 = Макет. Получить. Область("Строка").
Пример процедуры формирования отчета Таб. Док = Новый Табличный. Документ; //Получение макета Макет= Документы. Расходная. Накладная. Получить. Макет("Печать") ; //получим область как новый табличный документ Область = Макет. Получить. Область("Заголовок"); //выведем область в табличный документ Таб. Док. Вывести(Область); //табличная часть документа Для Каждого Стр. Состава Из Состав Цикл Область = Макет. Получить. Область("Строка"); Таб. Док. Вывести(Область); Конец. Цикла; //Подвал Область = Макет. Получить. Область("Подвал"); Таб. Док. Вывести(Область); Таб. Док. Показать(); //покажем на экране
Замечание. Событие Выбор При двойном щелчке (или нажатии Enter) на ячейке табличного документа или рисунке возникает событие Выбор Замечание. Следует различать события Выбор и Обработка. Расшифровки. Событие Выбор возникает при двойном щелчке (или нажатии Enter) на ячейке или рисунке, даже если у них нет расшифровки, тогда как событие Обработка. Расшифровки возникает у ячеек или рисунков, содержащих расшифровку. Причем сначала возникает событие Выбор, а потом Обработка. Расшифровки.
Параметры Чтобы вывести в ячейку информацию из базы данных, нужно установить свойство Заполнение в значение «Параметр» или «Шаблон» . Если выбрано значение «Параметр» , то затем указывается имя параметра, которое будет доступно в модуле. Если выбрано значение «Шаблон» , то имена параметров указываются в самой ячейке в квадратных скобках.
Пример отчета с параметрами //получим область как новый табличный документ Область = Макет. Получить. Область("Заголовок"); //укажем параметры области Область. Параметры. Номер. Документа = Номер; Область. Параметры. От = Дата; Область. Параметры. Кому = Контрагент; Таб. Док. Вывести(Область); Область = Макет. Получить. Область("Строка"); Для Каждого Стр. Состава Из Состав Цикл Область. Параметры. Заполнить(Стр. Состава); Таб. Док. Вывести(Область); Конец. Цикла; Область = Макет. Получить. Область("Подвал"); Область. Параметры. Итого. Количество= Состав. Итог("Количество"); Область. Параметры. Итого. Сумма = Состав. Итог("Сумма");
(продолжение) Таб. Док. Вывести(Область); Метод Заполнить позволяет в краткой форме присвоить значения всем параметрам. Соответствие устанавливается по именам параметров области и именам свойств переданного объекта.
Расшифровки делятся на стандартные и нестандартные. Стандартные расшифровки обрабатываются системой автоматически. Возможности – см. V 7 Для обеспечения стандартной расшифровки необходимо: в свойствах ячейки, которая нуждается в расшифровке, найти свойство "парам. расшифровки" и ввести имя переменнойссылки на элемент справочника, форму элемента которого необходимо показать (Например "Расшифровка") В тексте процедуры печати означить данную переменную
пример стандартной расшифровки Процедура Печать(Элемент) Таб. Док = Новый Табличный. Документ; Макет = Справочники. Основные. Средства. Получить. Макет("Печать"); Макет. Параметры. Расшифровка = Истина; // чтобы работала расшифровка Секция = Макет. Получить. Область("Заголовок"); Таб. Док. Вывести(Секция); Секция = Макет. Получить. Область("Шапка"); Таб. Док. Вывести(Секция); Выборка = Справочники. Основные. Средства. Выбрать. Иерархически(); Пока Выборка. Следующий() = Истина Цикл Объект = Выборка. Получить. Объект(); Если Объект. Это. Группа = Истина Тогда Секция = Макет. Получить. Область("Группа"); Секция. Параметры. Код=Объект. Код; Секция. Параметры. Наименование=Объект. Наименование; Таб. Док. Вывести(Секция);
пример стандартной расшифровки (продолжение) Иначе Секция = Макет. Получить. Область("Элемент"); Секция. Параметры. Код=Объект. Код; Секция. Параметры. Расшифровка=Объект; Секция. Параметры. Наименование=Объект. Наименование; Таб. Док. Вывести(Секция); Конец. Если; Конец. Цикла; Таб. Док. Только. Просмотр = Истина; // только в данном режиме работает расшифровка!!! Таб. Док. Показать(); Конец. Процедуры
Нестандартная расшифровка Для выполнения нестандартной расшифровки предназначено событие Обработка. Расшифровки. Замечание. Событие Обработка. Расшифровки можно обработать только, если табличный документ отображается в форме в элементе управления Поле. Табличного. Документа, а не открывается в отдельном окне. Таб. Док = Элементы. Формы. Поле. Таб. Док; Таб. Док. Очистить(); Рассмотрим на примере, как организовать расшифровку строки. Допустим, необходимо при щелчке на строке выдавать список расходных накладных по данному товару. Пусть в форме располагается элемент управления Поле. Табличного. Документа с именем «Таблица. Результат» , в свойствах которого указывается процедура-обработчик события Обработка. Расшифровки с именем ОР.
Нестандартная расшифровка (продолжение) Следующая процедура-обработчик события анализирует расшифровку, и, если это элемент справочника Номенклатура, то формируется вывод конкретизирующего отчета в отдельное окно, а стандартная обработка расшифровки отключается: Процедура ОР(Элемент, Расшифровка, Стандартная. Обработка) Если Тип. Знч(Расшифровка)=Тип("Справочник. Ссылка. Номенклату ра") Тогда //отключим стандартную обработку Стандартная. Обработка = Ложь; Новый. Таб. Док = Новый Табличный. Документ; …………… Конец. Если; Конец. Процедуры
Замечание Обработку расшифровок у ячейки можно отключить, если задать свойство Использование. Расшифровки в значение «Без обработки» . Это же свойство позволяет распространить расшифровку ячейки на всю строку, если установить его в значение «Строка» .
Группировки В V 8 появилась возможность группировать данные в отчете. Группировки могут быть горизонтальные и вертикальные, тогда слева и сверху появляются специальные маркеры, позволяющие пользователю разворачивать и сворачивать группы
Группировки (продолжение) Самый простой способ добавить группировки в отчет - доверить эту задачу системе, тогда от разработчика требуются минимальные усилия: необходимо всего лишь применить методы Начать. Авто. Группировку. Строк и Закончить. Авто. Группировку. Строк, которые включают режим автоматической группировки строк. В этом режиме при вызове методов Вывести и Присоединить указываются дополнительные параметры для группировки: Вывести(<Таблица>, <Уровень>, <Имя группы>, <Открыта>) Таб. Док. Начать. Авто. Группировку. Строк(); Пока Выборка. Следующий() цикл Таб. Док. Вывести(Область. Таб. Док, Выборка. Уровень(), Выборка. Наименование, Ложь); Конец. Цикла; Таб. Док. Закончить. Автогруппировку. Строк(); В качестве имени группировки назначается наименование товара. Все группы выводятся сначала свернутыми, но пользователь может развернуть любую группу с помощью маркера.
Группировки (продолжение) Для ручного управления группами применяются следующие методы объекта Табличный. Документ: Начать. Группу. Строк, Закончить. Группу. Строк, Начать. Группу. Колонок, Закончить. Группу. Колонок – самостоятельно
Примечания Ячейки табличного документа могут иметь примечания, тогда в правом верхнем углу ячейки выводится маленький красный треугольник. При наведении мышки на ячейку примечание показывается во всплывающем окне. Программная установка примечаний реализуется следующим образом: Выборка = Справочники. Номенклатура. Выбрать(); Пока Выборка. Следующий() Цикл Областъ. Ячеек = Макет. Область("Номенклатура"); Областъ. Ячеек. Примечание. Текст = Номенклатура. Комментарий; Областъ. Таб. Док = Макет. Получить. Область("Номенклатура "}; Область. Таб. Док. Параметры. Номенклатура = Номенклатура; Таб. Док. Вывести(Область. Таб. Док); Конец. Цикла;