Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Программная доработка макета построителя отчета          
Batchir Подменю пользователя
сообщение 09.02.09, 11:57
Сообщение #1

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

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

Свойство построителя отчета Макет

Объект ПостроительОтчета имеет свойство Макет, которое содержит макет - табличный документ, который будет использован для вывода отчета. В случае, когда данное свойство не установлено, построитель отчета генерирует макет автоматически при каждом доступе к значению данного свойства и использует сгенерированный макет для вывода отчета. Если программно изменить значение данного свойства, то построитель отчета перестает генерировать макет, а для вывода отчета будет использовать установленный макет. Для того чтобы построитель отчета продолжил автоматическую генерацию макета, необходимо "сбросить" свойство Макет, присвоив ему значение Неопределено.

Пример установки макета:



// Установить построителю отчета макет
ПостроительОтчета.Макет = ПолучитьМакет("МакетОтчета");


Пример сброса макета и получения автоматически сгенерированного макета:



// Получение автоматически сгенерированного макета
ПостроительОтчета.Макет = Неопределено;
СгенерированныйМакет = ПостроительОтчета.Макет;



Изменение сгенерированного макета

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

Пример:


// Получение автоматически сгенерированного макета
ПостроительОтчета.Макет = Неопределено;
Макет = ПостроительОтчета.Макет;
// Некоторые действия по изменению макета
Макет.Область().ЦветФона = Новый Цвет(0,0,0);
Макет.Область().ЦветТекста = Новый Цвет(255,255,255);
// Установка макета построителя отчета
ПостроительОтчета.Макет = Макет;

В данном примере были изменены цвет фона и цвет текста во всем макете.

Изменение оформительских свойств для определенных полей

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

Пример:


ТекущаяОбласть = Неопределено;
Пока Истина Цикл 
  // Осуществим поиск ячейки, в которой находится параметр - Количество 
  ТекущаяОбласть = Макет.НайтиТекст("Количество", ТекущаяОбласть, Макет.Область(), 
  Истина, Истина, Истина, Ложь); 
  Если ТекущаяОбласть <> Неопределено Тогда 
  Если ТекущаяОбласть.Параметр = "Количество" Тогда 
  // Установим формат значения - два знака после запятой 
  ТекущаяОбласть.Формат = "ЧДЦ=2"; 
  КонецЕсли; 
  Иначе 
  Прервать; 
  КонецЕсли; 
КонецЦикла;

В приведенном примере в макете ищется поле "Количество" и устанавливается формат поля - два знака после запятой.

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

Пример:


ТекущаяОбласть = Неопределено;
Пока Истина Цикл 
  // Осуществим поиск ячейки, в которой находится параметр - Количество 
  ТекущаяОбласть = Макет.НайтиТекст("Количество", ТекущаяОбласть, Макет.Область(), 
  Истина, Истина, Истина, Ложь); 
  Если ТекущаяОбласть <> Неопределено Тогда 
  Если ТекущаяОбласть.Параметр = "Количество" Тогда 
  // Установим необходимую ширину колонки 
  ТекущаяОбласть.ШиринаКолонки = 10;
  КонецЕсли; 
  Иначе 
  Прервать; 
  КонецЕсли; 
КонецЦикла;



Изменение полей для определенных группировок

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

Пример:



ПостроительОтчетаОтчет.Макет = Неопределено;
Макет = ПостроительОтчетаОтчет.Макет;

// Удалим поле ВалютнаяСумма из всех областей группировок, выше группировки Валюта 
Для Каждого Группировка Из ПостроительОтчетаОтчет.ИзмеренияСтроки Цикл 
  Если Группировка.ПутьКДанным = "Валюта" Тогда 
  Прервать; 
  Иначе 
  // Ищем области с именем группировки, а также с именем группировки + обозначение иерархии 
  ИменаОбластей = Новый Массив; 
  ИменаОбластей.Добавить(Группировка.Имя); 
  ИменаОбластей.Добавить(Группировка.Имя + "Иерархия"); 

  Для Каждого ИмяГруппировки Из ИменаОбластей Цикл 
  Область = Макет.Области.Найти(ИмяГруппировки); 
  Если Область <> Неопределено Тогда 
  ТекущаяОбласть = Неопределено; 
  Пока Истина Цикл 
  // Осуществим поиск ячейки, в которой находится параметр - ВалютнаяСуммаОборот
  ТекущаяОбласть = Макет.НайтиТекст("ВалютнаяСуммаОборот", ТекущаяОбласть, 
  Область, Истина, Истина, Истина, Ложь); 
  Если ТекущаяОбласть <> Неопределено Тогда 
  Если ТекущаяОбласть.Параметр = "ВалютнаяСуммаОборот" Тогда 
  // Удалим параметр из области 
  ТекущаяОбласть.Параметр = "";
  КонецЕсли;
  Иначе 
  Прервать; 
  КонецЕсли; 
  КонецЦикла;
  КонецЕсли;
  КонецЦикла;
  КонецЕсли;
КонецЦикла;

ПостроительОтчетаОтчет.Макет = Макет;



Работа с макетом оформления

При необходимости использования макета оформления для доработанных макетов следует установить построителю отчета макет оформления после доработки маета, и вызвать метод построителя ОформитьМакет(). В приведенном ранее примере следует перед указанным кодом сбросить макет оформления построителя отчета, присвоив ему значение Неопределено, а после доработки макета установить требуемый макет оформления и вызвать метод ОформитьМакет().

Пример:


// Сброс макета оформления
ПостроительОтчетаОтчет.МакетОформления = Неопределено; 

// Код доработки макета
// ...

// Оформление доработанного макета
ПостроительОтчетаОтчет.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Классика);
ПостроительОтчетаОтчет.ОформитьМакет(); 

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 15:26
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!