Не всегда устраивает 1С с её подходом к визуализации данных. В рамках проекта Pharma-MPD испробовал возможность построения панели отчетов с помощью гаджетов рабочего стола Google. Подробное описание применения с точки зрения пользователя можно прочитать тут.
Для реализации такой схемы необходимо обеспечить гаджеты информацией для отображения. С этим справляется фоновая задача, которая формирует xml-файл и выкладывает его в видное место из сети. По сути мы знаем имя файла и фоновая задача формирует в нем данные с известной нам структурой.
Во время визуализации данных средствами google происходит парсинг нужного xml-файла. В результате мы можем получить отображение данных в динамике, как показано на примере ниже.
Или вот такое вот отображение количества активных пользователей в системе:
Код последнего примера:
function drawChart(value) {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Label');
data.addColumn('number', 'Value');
data.addRows(1);
data.setValue(0, 0, 'Users');
data.setValue(0, 1, value);
var chart = new google.visualization.Gauge(document.getElementById('content_div'));
var options = {width: 400, height: 120, greenFrom: 0, greenTo: 15, redFrom: 25, redTo: 30,
yellowFrom:15, yellowTo: 25, minorTicks: 5, max: 30};
chart.draw(data, options);
}
function displayActivity() {
var d = new Date();
var url = "http://ffmanager.com.ua/statistics.xml" + '?nocache=' + d.getTime();
var prefs = new _IG_Prefs(__MODULE_ID__);
// calorie limit set by user
_IG_FetchXmlContent(url, function (response) {
if (response == null || typeof(response) != "object" || response.firstChild == null) {
_gel("content_div").innerHTML = "Invalid data.";
return;
}
var activity = parseInt(response.getElementsByTagName("ActiveUsersCount").item(0).textContent);
drawChart(activity);
var refresh_interval = prefs.getInt("refresh_interval");
setTimeout(displayActivity, refresh_interval * 1000);
});
}
google.setOnLoadCallback(displayActivity);
В коде происходит считывание xml-файла и заполнение этими данными графика. Все коды гаджетов открытые и можно в их свойствах разобрать логику. Для создания гаджетов можно воспользоваться Google Gadgets Editor.
Как уже писал ранее, формирование данных для графиков выполняется с помощью регламентного задания, которое выполняется раз в 15 минут и выкладывает xml-файл в доступное из Сети место. Следующим этапом развития данного подхода может быть использование веб-сервисов для получения данных со стороны 1с после аутентификации пользователя.
Похожие записи: