Довідковий матеріал

Розшифровки у звітах і діаграмах 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. Виклик як розшифровки форми елемента за допомогою автоформи:

<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();
}
Записатися телефоном