helpf.pro
Регистрация
 0 
Распечатать

Вывод Диаграммы График Валют, Сохранение диаграммы, графиков и гистограмм в виде Картинки

Алгоритм обработки выполняет запрос к регистру сведений "курсы валют" за определенный пользователем период. Полученные данные выборки в цикле выводятся в элемент экранной формы "диаграмма" в режиме построения графика. Для элемента управления "Диаграмма" на этапе конфигурирования был задан тип - График, и имя - "График Курсов". Это наиболее наглядный и простой пример работы с графиками в 1С 8.1.
Внешний вид и органы управления показаны на рисунке:
title

Алгоритм процедуры рисования графика:
- Очистить старые данные графика;
- Сформировать текст запроса;
- Установить значения периода выборки;
- Выполнить запрос;
- Подготовить структуру соответствия серий и валют, которые будут изображены на графике;
- В цикле заполнить значения точек графика для всех используемых валют;
- В цикле, используя ранее установленные значения графика для валют, добавить серию графика бивалютной корзины;
- Обновить данные графика курсы валют экранной формы;

Использование элемента Диаграмма в 1С
Алгоритм обработки использует в качестве параметра элемент НастройкаПериода, значения которого используются в запросе к регистру сведений "Курсы валют".
Исходный код:
Код 1C v 8.х
 Процедура Нарисовать (Кнопка)
// Подготовить текст запроса для выборки данных из
// регистра сведений Курсы валют
SQL = Новый Запрос;
SQL.Текст = "ВЫБРАТЬ
|КурсыВалют.Валюта,
|КурсыВалют.Курс,
|ДЕНЬГОДА(КурсыВалют.Период) КАК Точки
|ИЗ
|РегистрСведений.КурсыВалют КАК КурсыВалют
|ГДЕ
|КурсыВалют.Период МЕЖДУ &НачПериода И &КонПериода
|И КурсыВалют.Валюта.Наименование <> &исключитьРуб
|УПОРЯДОЧИТЬ ПО
|КурсыВалют.Период";

// Установить период выборки данных
SQL.УстановитьПараметр("НачПериода",НачПериода);
SQL.УстановитьПараметр("КонПериода",КонПериода);
// Исключить курсы валюты рубли

SQL.УстановитьПараметр("исключитьРуб","Руб.");

Далее в процедуре "Нарисовать", осуществляющей вывод данных запроса в диаграмму экранной форме, обозначена структура для работы с валютами и ряд подготовительных действий. Переменная курсы будет использоваться для связи с элементом управления Диаграмма, расположенным на экранной форме. Перед работой будут очищены текущие данные диаграммы и отлючена перерисовка значений в момент нового формирования и насыщения данными. Структура "серии" потребуется для связи названия валюты (ключ) и серии (значение) диаграммы, как на моменте инициализации, так и при выводе данных. Так же при создании серий диаграммы производится отключение маркеров.
Код 1C v 8.х
 // Получить доступ к диаграмме, как элементу экранной формы
курсы = ЭлементыФормы.ГрафикКурсов;

// Подготовить элемент к формированию графика
// Сброить данные серий и точек
// Очистить старые значения графика
курсы.Очистить();
курсы.КоличествоСерий = 0;
курсы.КоличествоТочек = 0;
// Отключить обновление диаграммы на время вывода данных.
курсы.Обновление = Ложь;
// Задать заголовок диаграммы
курсы.ОбластьЗаголовка.Текст = "Анализатор курсов валют";

// Сформировать соответствие номеров серий и наименований валют
// Ключ - название валюты,
// Значение - номер серии
серии = Новый Структура;
серии.Вставить("БВЛ",0);
серии.Вставить("USD",1);
серии.Вставить("EUR",2);
серии.Вставить("GBP",3);

// Добавить в диаграмму серии графиков
Для каждого график из серии Цикл
серия = курсы.Серии.Добавить(Строка(график.Ключ));
серия.Маркер = ТипМаркераДиаграммы.Нет;
КонецЦикла;

Далее необходимо выполнить запрос и перейти к формированию диаграммы. Следующая часть процедуры заполняет значение точек для серий диаграммы, добавленных в цикле инициализации серий графика. Если точек диаграммы не было создано ранее, они создается. Алгоритм рассчитан для работы с курсами валют в течении года, если нужен больший период механизм создания точек следует переделать либо в запросе, либо в данном цикле. Номер серии, используемый при выводе значения точки диаграммы, находится при помощи структуры ключ и значение по названию валюты, полученному для текущей строки выборки запроса.
Код 1C v 8.х
 
// Выполнить запрос и начать выборку
Query = SQL.Выполнить().Выбрать();

сменаТочки = 0;
Пока Query.Следующий() Цикл
// Добавляем новую точку после заполнения всех серий
Если сменаТочки <> Query.Точки Тогда
курсы.Точки.Добавить(Query.Точки);
сменаТочки = Query.Точки;
КонецЕсли;

Попытка
// Установка значения графика в точке и серии
курсы.УстановитьЗначение(
Курсы.Точки.Количество()-1,
серии[Строка(Query.Валюта)], Query.Курс);
Исключение
КонецПопытки;
КонецЦикла;

Получение значения точки уже построенного графика в элементе диаграмма можно при помощи функции "ПолучитьЗначение". Для использования этой функции нужно знать серию и точку диаграммы. После вычисления значения графика бивалютной корзины диаграмму нужно обновить:
Код 1C v 8.х
 // Заполнение расчетных значений для точек и серий
график = 0;
Пока график < Курсы.Точки.Количество() Цикл
// Создание графика бивалютной корзины
Корзина = (курсы.ПолучитьЗначение(график,серии["USD"]).Значение*0.55 +
курсы.ПолучитьЗначение(график,серии["EUR"]).Значение*0.45);
курсы.УстановитьЗначение(график,серии["БВЛ"], Корзина);
график = график + 1;
КонецЦикла;

// Обновить диаграмму в экранной форме.
курсы.Обновление = Истина;
КонецПроцедуры


Данные курсов можно загрузить штатным загрузчиком 1С с сайта РБК, для этого можно воспользоваться справочником "Валюты" нажав пункт меню "Загрузить курсы":
title

При построении графика предполагается наличие в справочнике данных следующих валют: EUR, GBP, USD, Руб. После открытия формы для загрузки данных курсов валют нужно указать интервал требуемых данных - например с 2000 по 2010 год и нажать на кнопку "Заполнить", затем на кнопку "Загрузить". В данном примере курсы валют будут загружены с сайта РБК:
title

После добавления необходимого состава валют и загрузки их курсов по отношению к рублю за нужный период можно пользоваться построителем, текст которого приведен выше. Для ускорения вывода данных дополнительные проверки не вводились, по этому, если нет требуемых данных, внешняя обработка вызовет ошибку выполнения.

Сохранение диаграммы, графиков и гистограмм в виде картинки

Построенные в диаграмме графики можно сохранить средствами 1С в один из поддерживаемых форматов:
BMP
EMF
GIF
Icon
JPEG
PNG
TIFF
WMF


Пример процедуры для экспорта диаграммы в графический формат:
Код 1C v 8.х
 Процедура PNG(Кнопка)
// Получить картинку диаграммы
График = ЭлементыФормы.ГрафикКурсов.ПолучитьКартинку( 500, 300, ФорматКартинки.PNG );
// Записать картинку из 1С в PNG
График.Записать( "C:\TEMP\Диаграмма.png" );
КонецПроцедуры


Полученная картинка графика будет выглядеть так:
title

Скачать внешнюю обработку иллюстрирующую работу элемента формы "Диаграмма" для построения графика курсов валют в "1С Предприятие" Скачивать файлы может только зарегистрированный пользователь!
Источник
Разместил:   Версии: | 8.x |  Дата:   Прочитано: 14843
 0 
Распечатать
Возможно, вас также заинтересует
1С 7.x : Как получить курсы валют с сайта НБУ http://www.bank.gov.ua/ за любую дату ? 2
Функция ПолучитьТаблицуКурсовНБУ(ДатаКурса, Ежедневно = 1) // если в качестве второго параметра указать число отличное от 1 - получем валюты, которые котируются на ежемесячной основе Перем Reader, Url, Точки, HtmlTab, Строк, Р,...
COM-подключение к базе 7.7 из 8.2 1С 4
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе="...
Excel файл как Внешний источник данных 4
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . ...
Выбрать все движения регистра по датам 0
Рег1 = СоздатьОбъект(" Регистр.Взаиморасчеты" ); Если Режим = " Подробно" Тогда Рег1.УстановитьФильтр(Клиент); Рег1.ВыбратьДвижения(ДатаНачало, ); Пока Рег1.ПолучитьДвижение() 0 Цикл Док = Рег1.ТекущийДокумент(); ...
Выбрать все движения регистра по документу 0
Процедура Взаиморасчеты(ВыбКлиент, ДатаНачало, ДатаКонец) // Создание Таблицы для выходного отчета Заг = " Неизвестно." ; Таб = СоздатьОбъект(" Таблица" ); Клн = СоздатьОбъект(" Справочник.Клиенты" ); ...
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.