1С:Предприятие 8.2 /
Разработчикам /
Web-расширения
Расшифровки в отчетах и диаграммах Web-расширения
Расшифровка – это отображение дополнительной , уточняющей информации. Например, для поля "Сумма продаж" в отчете или диаграмме расшифровкой может служить отчет, содержащий список документов, по которым были произведены продажи. Для ячейки отчета "Контрагент" (область легенды для диаграммы) в качестве расшифровки может быть вызвана форма контрагента и т.п.
Механизм работы расшифровок в отчетах и диаграммах Web-расширения работает одинаковым образом. Поэтому далее мы рассмотрим реализацию расшифровок на примере веб-отчетов.
В качестве расшифровок в веб-приложении могут выступать отчеты, диаграммы и формы элементов объектных таблиц. Эти типы расшифровок Web-расширение поддерживает автоматически. Кроме того, пользователь может создать собственную произвольную процедуру обработки вызова расшифровки.
Расшифровки задаются в свойстве Details объекта V8ReportSource (V8ChartSource для диаграмм). Свойство Details представляет собой коллекцию V8ReportSourceDetailsCollection, элементами которой являются объекты типа V8ReportSourceDetails.
Объект V8ReportSourceDetails имеет следующие свойства:
- Name – уникальное имя расшифровки. По этому имени происходит идентификация расшифровки.
- URL – содержит URL формы, которую необходимо вызвать в качестве расшифровки. Если расшифровкой является форма элемента, то значение этого свойства можно оставить пустым. В этом случае будет использоваться автоформа DefaultObjectForm, и будет задействован механизм соответствия форм и таблиц из файла TableFormMap.xml.
- URLTarget – служит для указания назначения открываемой формы. Значение _blank указывает на открытие формы в новом окне.
- KeyFieldForElementForm – если расшифровкой служит форма элемента объектной таблицы, то в этом свойстве необходимо указать имя поля отчета, содержащее значение ссылки на элемент. По этому свойству происходит определение, какой тип формы является расшифровкой. Наличие значения указывает, что будет открыта форма элемента.
- DetailsParameters – является коллекцией V8ReportSourceDetailsParameterCollection, состоящей из элементов V8ReportSourceDetailsParameter. В этой коллекции задаются параметры, которые будут переданы в форму расшифровки. Эти параметры передаются только в том случае, если расшифровка НЕ является формой элемента.
Рассмотрим состав и назначение свойств объекта V8ReportSourceDetailsParameter:
- ReportParameter – имя параметра, передаваемого в форму-расшифровку.
- Condition – задает условие сравнения.
- Value1 – в этом свойстве указывается поле отчета, содержащее значение для сравнения.
- Value2 – если условием сравнения (свойство Condition) является интервал, то в этом свойстве указывается поле отчета, содержащее значение второй границы интервала.
Эти параметры через строку запроса передаются в открываемую форму-расшифровку. Объекты 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) служат для описания формата полей отчета (диаграммы) и для связи полей с расшифровками. Рассмотрим свойства этих объектов, предназначенных для работы расшифровок:
- Name – имя поля отчета (диаграммы).
- Details – задает использование расшифровки.
- DetailsName – имя расшифровки из коллекции Details объекта V8ReportSource (V8ChartSource).
В тех случаях, когда для решаемой задачи не достаточно функциональности , предоставляемой 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, содержащий следующие свойства:
- DetailsName – имя расшифровки.
- RowGroup – номер группировки строк .
- ColumnGroup – номер группировки колонок.
Для получения значения, содержащегося в ячейке, для которой вызвана расшифровка, можно воспользоваться следующим кодом:
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();
}
Тренинг-семинар «Как получить работу бухгалтера»
Курсы бухгалтеров с трудоустройством
Курсы программирования 1С:Предприятие 8.2
Другие материалы по теме:
значение свойства, расшифровка, отображение, интервал, группировки строк, событие, события, группировки, функции, свойства, механизм, буфер обмена, копировать, форма, пользователь, обмен, формы, значения, объект, элемент, конфигурирование, параметры, работы, контрагент, значение, отчет
Материалы из раздела: 1С:Предприятие 8.2 / Разработчикам / Web-расширения
Другие материалы по теме:
Особенности масштабирования по выбранному объекту
Нас находят: 48808, V8ReportSourceDetails
Мы на Facebook