Меню


Курсы СтимулСправочникПолезные материалы1С:Предприятие 8.2РазработчикамWeb-расширения

1С:Предприятие 8.2 /
Разработчикам /
Web-расширения

Оглавление

Расшифровки в отчетах и диаграммах Web-расширения

Расшифровка – это отображение дополнительной , уточняющей информации. Например, для поля "Сумма продаж" в отчете или диаграмме расшифровкой может служить отчет, содержащий список документов, по которым были произведены продажи. Для ячейки отчета "Контрагент" (область легенды для диаграммы) в качестве расшифровки может быть вызвана форма контрагента и т.п.

Механизм работы расшифровок в отчетах и диаграммах Web-расширения работает одинаковым образом. Поэтому далее мы рассмотрим реализацию расшифровок на примере веб-отчетов.

В качестве расшифровок в веб-приложении могут выступать отчеты, диаграммы и формы элементов объектных таблиц. Эти типы расшифровок Web-расширение поддерживает автоматически. Кроме того, пользователь может создать собственную произвольную процедуру обработки вызова расшифровки.

Расшифровки задаются в свойстве Details объекта V8ReportSource (V8ChartSource для диаграмм). Свойство Details представляет собой коллекцию V8ReportSourceDetailsCollection, элементами которой являются объекты типа V8ReportSourceDetails.

Объект V8ReportSourceDetails имеет следующие свойства:

Рассмотрим состав и назначение свойств объекта V8ReportSourceDetailsParameter:

Эти параметры через строку запроса передаются в открываемую форму-расшифровку. Объекты V8ReportSource и V8ChartSource умеют разбирать параметры в строке запроса. Этот разбор происходит в методе InitializeByRequest, который вызывается при загрузке элемента управления, в том случае, если установлено значение свойстваInitByRequest. Переданные значения устанавливаются как элементы отбора отчета (диаграммы).

Для открытия формы расшифровки Web-расширение размещает на странице код на JavaScript. Примеры для различных случаев:

1. Вызов в качестве расшифровки формы элемента c помощью автоформы:

<script>OpenWindow(“DefaultObjectForm.aspx?KeyValue=value&KeyType=type”, “_blank”);</script>

2. Вызов в качестве расшифровки формы элемента с заданным URL:

<script>OpenWindow(“FormName.aspx?KeyValue=value&KeyType=type”, “_blank”);</script>

3. Вызов в качестве расшифровки формы отчета:

<script>OpenWindowNoSize(“ReportFormName.aspx?Command=Execute&Name=reportParameter&Type=reportParameterType&ComparisonType=condition&Value=value”, “_blank”);</script>

4. Вызов в качестве расшифровки формы отчета с условием "интервал":

<script>OpenWindowNoSize(“ReportFormName.aspx?Command=Execute&Name=reportParameter&Type=reportParameterType&ComparisonType=condition&ValueFrom=value1&ValueTo=value2”, “_blank”);</script>

5. Вызов в качестве расшифровки формы отчета в случае нескольких параметров:

<script>OpenWindowNoSize(“ReportFormName.aspx?Command=Execute&Name1=reportParameter1&Type1=reportParameterType1& ComparisonType1=condition1&Value1=value1&Name2=reportParameter2& Type2=reportParameterType2&ComparisonType2=condition2&Value2=value2);</script>

Функции OpenWindow и OpenWindowNoSize расположены в js-файле скриптов V8CoreScripts.js. Параметр Command=Execute указывает на немедленное формирование и отображение отчета (диаграммы).

Связь полей отчета с расшифровками задается при помощи свойства FieldFormats объекта V8ReportSource (V8ChartSource). Свойство FieldFormats представляет собой коллекцию V8ReportSourceFieldFormatCollection, состоящую из элементов типа V8ReportSourceFieldFormat (для диаграмм V8ChartSourceFieldFormatCollection и V8ChartSourceFieldFormat соответственно).

Объекты V8ReportSourceFieldFormat (V8ChartSourceFieldFormat) служат для описания формата полей отчета (диаграммы) и для связи полей с расшифровками. Рассмотрим свойства этих объектов, предназначенных для работы расшифровок:

В тех случаях, когда для решаемой задачи не достаточно функциональности , предоставляемой Web-расширением, пользователь может реализовать собственный алгоритм отображения расшифровки. Для этого служит событие Details элемента управления V8ReportViewer (V8ChartViewer).

Задание обработчика для этого события отменяет встроенную обработку расшифровок. Обратиться к встроенной функциональности можно при помощи вызова метода OnDetails объекта V8ReportSourceBase, который является предком для объектов V8ReportSource и V8ChartSource.

Обработчик события Details выглядит следующим образом:

        private void ReportViewer_Details(object source, _1C.V8.WebControls.V8DetailsEventArgs e)
{

}

В параметре source передается объект V8ReportViewer (V8ChartViewer), в котором произошло событие расшифровки. Параметр e имеет тип V8DetailsEventArgs, содержащий следующие свойства:

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

        private void ReportViewer_Details(object source, _1C.V8.WebControls.V8DetailsEventArgs e)
{
int index = ReportSource.Details.IndexOf(e.DetailsName);
if (index > -1)
{
Hashtable cellValues = ReportSource.GetCellValues(e.RowGroup, e.ColumnGroup);
object value = cellValues["ИмяПоля"];
...
}
}

Далее возможна реализация различных алгоритмов отображения информации в качестве расшифровки. В качестве простого примера – отображение значения в ячейке при помощи javascript-функции alert:

        private void ReportViewer_Details(object source, _1C.V8.WebControls.V8DetailsEventArgs e)
{
int index = ReportSource.Details.IndexOf(e.DetailsName);
if (index > -1)
{
Hashtable cellValues = ReportSource.GetCellValues(e.RowGroup, e.ColumnGroup);
object value = cellValues["ИмяПоля"];
RegisterStartupScript("Startup1", "<script>alert('" + value.ToString() + "');</script>");
}
ReportSource.Refresh();
}

Нас находят: 48808, V8ReportSourceDetails


Подписка на новости RSS

Мы на Facebook