Профессиональные решения для 1С 8.2 Суббота, 24.06.2017, 16:49
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Поделиться ссылкой


Главная » 2013 » Октябрь » 3 » Отображение графиков в 1С 8.2 с расширенными функциональными возможностями
23:27
Отображение графиков в 1С 8.2 с расширенными функциональными возможностями
Стандартные диаграммы 1С 8.2 предоставляют программистам неплохие возможности для вывода нескольких типов диаграмм и графиков, однако являются статичными и не позволяют выходить за рамки типового оформления.
Если возникает потребность в более функциональном отображении графиков, например, произвольные всплывающие подсказки на сериях, интерактивное отключение серий, красивое оформление, я рекомендую использовать решение с применением технологий html+java script. В 1С 8.2 имеется типовой элемент формы Поле HTML документа, в которое можно вывести созданную в модуле страницу. При этом можно использовать красивые и многофункциональные компоненты сторонних разработчиков. Для диаграмм и графиков существует очень хорошая библиотека от www.highcharts.com, которую можно использовать бесплатно, по крайней мере в некоммерческих целях. При этом на сайте есть хорошо организованная документация по функциям библиотеки.
Для примера, я выкладываю простую обработку (неуправляемая форма), демонстрирующую создание графика функции с помощью этой библиотеки.
Результат работы обработки представлен на картинке:
Для формирования html - документа используется заготовка страницы, в которой имеются участки для замены после вычисления необходимых значений. Текст макета-заготовки приведен ниже:

    <!DOCTYPE html >
<html >
<head >
  <meta http-equiv= "content-type " content= "text/html; charset=UTF-8 " >
  <title > - jsFiddle demo</title >
  <script type='text/javascript' src='jquery-1.9.1.js' ></script >
<script type='text/javascript' >//<![CDATA[
$(function () {
        $('#container').highcharts({
            title: {
                text: '~заголовок~',
                x: -20 //center
            },
            subtitle: {
                text: 'график',
                x: -20
            },
            xAxis: {
                tickInterval: 1
            },
            yAxis: {
                title: {
                    text: 'Y(X)'
                },
                plotLines: [{
                    value: 0,
                    width: 1,
                    color: '#808080'
                }]
            },
            tooltip: {
                shared: true,
                crosshairs: true,
                formatter: function() {
                    var s = '<b >'+'X='+ this.x +'<br >'+'Y='+ this.y +'</b >';
                    return s;
                }
            },
            legend: {
                layout: 'vertical',
                align: 'right',
                verticalAlign: 'middle',
                borderWidth: 0
            },
            series: [{
                name: '~серия~',
                data: [~данные~]
            }]
        });
    });
//]] > 
</script >
</head >
<body scroll=no >
  <script src= "highcharts.js " ></script >
<script src= "exporting.js " ></script >
<div id= "container " style= "min-width: 310px; height: 400px; margin: 0 auto " ></div >
</body >
</html >


Здесь имеются ссылки на компоненты библиотеки, которые мы запишем в макеты типа двоичные данные и будем записывать в рабочий каталог при открытии: jquery-1.9.1.js, highcharts.js и exporting.js
Они уже есть в представленной обработке, но их также можно скачать в каталоге файлов или с сайта www.highcharts.com
 
На 1С код формы имеет следующий вид:
 

Процедура КнопкаВыполнитьНажатие(Кнопка)
    Попытка
        Данные="";
        Команда="Y="+МатФункция;
        Для X=0 по 10 Цикл
            Y=0;
            Выполнить(Команда);
            Данные=Данные+Формат(Y,"ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧРГ=")+",";
        КонецЦикла;
    Исключение
        Предупреждение("Ошибка в выражении");
        Возврат;
    КонецПопытки;
    Данные=Лев(Данные,СтрДлина(Данные)-1);
   
    Макет=ЭтотОбъект.ПолучитьМакет("htmlcode");
    текст = Макет.ПолучитьТекст();
    текст=СтрЗаменить(текст,"~данные~",Данные);
    текст=СтрЗаменить(текст,"~серия~",Команда);
     текст=СтрЗаменить(текст,"~заголовок~","Функция "+Команда);
    файл = Новый ТекстовыйДокумент;
    файл.УстановитьТекст(текст);
    имяФайлаОтчета = ПолучитьИмяВременногоФайла("html");
    файл.Записать(имяФайлаОтчета);
    ЭтаФорма.ЭлементыФормы.ПолеHTMLДокумента1.УстановитьТекст("");
    ЭтаФорма.ЭлементыФормы.ПолеHTMLДокумента1.Перейти(имяФайлаОтчета);
КонецПроцедуры
Процедура ПриОткрытии()
    МатФункция="X*X-X+10";
    Кат=КаталогВременныхФайлов();
    дд1=ЭтотОбъект.ПолучитьМакет("jquery");
    дд1.Записать(Кат+"jquery-1.9.1.js");
    дд2=ЭтотОбъект.ПолучитьМакет("highcharts");
    дд2.Записать(Кат+"highcharts.js");
    дд3=ЭтотОбъект.ПолучитьМакет("exporting");
    дд3.Записать(Кат+"exporting.js");
КонецПроцедуры
 
Код 1С добавлен на сайт при помощи оригинальной обработки. 
 
На основе данного примера вы можете создать аналогичные решения, применяя различные варианты дизайна и функционала. Файлы библиотеки можно скачать в каталоге файлов hc.zip, обработка также находится в каталоге файлов в разделе обработки График.epf
 
Просмотров: 3613 | Добавил: Programmer1C | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Календарь
«  Октябрь 2013  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031
Архив записей
Друзья сайта
  • Создать сайт
  • Современная Ароматерапия
  • Биодобавки из США
  • Заработок для web-мастера

  • Рейтинг@Mail.ru
    www.professional-1c.ru © 2017
    Бесплатный хостинг uCoz