Алгоритм обработки выполняет запрос к регистру сведений "курсы валют" за определенный пользователем период. Полученные данные выборки в цикле выводятся в элемент экранной формы "диаграмма" в режиме построения графика. Для элемента управления "Диаграмма" на этапе конфигурирования был задан тип - График, и имя - "График Курсов". Это наиболее наглядный и простой пример работы с графиками в 1С 8.1.
Внешний вид и органы управления показаны на рисунке:
Алгоритм процедуры рисования графика:
- Очистить старые данные графика;
- Сформировать текст запроса;
- Установить значения периода выборки;
- Выполнить запрос;
- Подготовить структуру соответствия серий и валют, которые будут изображены на графике;
- В цикле заполнить значения точек графика для всех используемых валют;
- В цикле, используя ранее установленные значения графика для валют, добавить серию графика бивалютной корзины;
- Обновить данные графика курсы валют экранной формы;
Использование элемента Диаграмма в 1С
Алгоритм обработки использует в качестве параметра элемент НастройкаПериода, значения которого используются в запросе к регистру сведений "Курсы валют".
Исходный код:
Далее в процедуре "Нарисовать", осуществляющей вывод данных запроса в диаграмму экранной форме, обозначена структура для работы с валютами и ряд подготовительных действий. Переменная курсы будет использоваться для связи с элементом управления Диаграмма, расположенным на экранной форме. Перед работой будут очищены текущие данные диаграммы и отлючена перерисовка значений в момент нового формирования и насыщения данными. Структура "серии" потребуется для связи названия валюты (ключ) и серии (значение) диаграммы, как на моменте инициализации, так и при выводе данных. Так же при создании серий диаграммы производится отключение маркеров.
Далее необходимо выполнить запрос и перейти к формированию диаграммы. Следующая часть процедуры заполняет значение точек для серий диаграммы, добавленных в цикле инициализации серий графика. Если точек диаграммы не было создано ранее, они создается. Алгоритм рассчитан для работы с курсами валют в течении года, если нужен больший период механизм создания точек следует переделать либо в запросе, либо в данном цикле. Номер серии, используемый при выводе значения точки диаграммы, находится при помощи структуры ключ и значение по названию валюты, полученному для текущей строки выборки запроса.
Получение значения точки уже построенного графика в элементе диаграмма можно при помощи функции "ПолучитьЗначение". Для использования этой функции нужно знать серию и точку диаграммы. После вычисления значения графика бивалютной корзины диаграмму нужно обновить:
Данные курсов можно загрузить штатным загрузчиком 1С с сайта РБК, для этого можно воспользоваться справочником "Валюты" нажав пункт меню "Загрузить курсы":
При построении графика предполагается наличие в справочнике данных следующих валют: EUR, GBP, USD, Руб. После открытия формы для загрузки данных курсов валют нужно указать интервал требуемых данных - например с 2000 по 2010 год и нажать на кнопку "Заполнить", затем на кнопку "Загрузить". В данном примере курсы валют будут загружены с сайта РБК:
После добавления необходимого состава валют и загрузки их курсов по отношению к рублю за нужный период можно пользоваться построителем, текст которого приведен выше. Для ускорения вывода данных дополнительные проверки не вводились, по этому, если нет требуемых данных, внешняя обработка вызовет ошибку выполнения.
Сохранение диаграммы, графиков и гистограмм в виде картинки
Построенные в диаграмме графики можно сохранить средствами 1С в один из поддерживаемых форматов: BMP
EMF
GIF
Icon
JPEG
PNG
TIFF
WMF
Пример процедуры для экспорта диаграммы в графический формат:
Программа rundll32.exe входит в стандартную поставку всех операционных систем семейства Windows и позволяет выполнять различные функции, описанные в библиотеках, драйверах или ActiveX-объектах, как будто они выполняются из программы. Также эта программа входит в состав новой операционной системы Windows Vista, поэтому обзор новой операционной системы, предназначенный для опытных пользователей, никак нельзя назвать законченным, если он не будет содержать описание команд rundll32.exe, доступных в Windows Vista.
Синтаксис использования программы rundll32.exe следующий: rundll32.exe «библиотека», «функция» «параметры». При этом очень важно понимать, что название функции, хранящейся в библиотеке, зависит от регистра, которым вы ее написали. То есть, например, функции MessageBox и messageBox, в понимании программы rundll32.exe, являются различными функциями, поэтому если в названии функции вы напишете вместо прописной буквы строчную, программа rundll32.exe выдаст ошибку. Название же самой программы rundll32.exe и название библиотеки можно указывать как строчными, так и прописными символами.
Пример:
Приведу список наиболее значимых команд (в котором найдете ОЧЕНЬ интересные команды, ну а как их использовать, думайте сами!):
* rundll32 shell32.dll,Control_RunDLL hotplug.dll - диалоговое окно Отключение или извлечение аппаратного устройства
* rundll32 diskcopy,DiskCopyRunDll - вызов диалога "Копирование диска".
* rundll32 keyboard,disable - отключение клавиатуры, действует до следующей перезагрузки.
* rundll32 mouse,disable - отключение мыши вплоть до перезагрузки.
* rundll32 krnl386.exe,exitkernel - выгрузить ядро системы, выход из Windows.
* rundll32 mshtml.dll,PrintHTML "HtmlFileNameAndPath" - распечатать документ HTML, где "HtmlFileNameAndPath" - путь к файлу и его имя.
* rundll32 мсprint2.dll,RUNDLL_PrintTestPage - распечатать тестовую страницу на принтере.
* rundll32 netplwiz.dll,AddNetPlaceRunDll - вызов мастера подключения нового сетевого ресурса "Добавление в сетевое окружение".
* rundll32 rnaui.dll,RnaWizard - вызов мастера "Удаленный доступ к сети".
* rundll32 rnaui.dll,RnaWizard /1 - вызов мастера "Удаленный доступ к сети" без отображения начального окна.
* rundll32 shell,ShellExecute - открыть Проводник (папка "Рабочий стол").
* rundll32 shell32,Control_RunDLL - открыть в Проводнике папку "Панель управления".
* rundll32 shell32,Control_RunDLL appwiz.cpl,,n - вызов диалогового окна "Установка и удаление программ", в котором будет открыта вкладка с номером "n" (от 1 до 3).
* rundll32 shell32,Control_RunDLL main.cpl @0 - открыть диалог "Свойства мыши".
* rundll32 shell32,Control_RunDLL main.cpl @1 - открыть диалог "Свойства клавиатуры".
* rundll32 shell32,Control_RunDLL main.cpl @2 - открыть папку "Принтеры".
* rundll32 SHELL32,SHHelpShortcuts_RunDLL PrintersFolder - открыть папку "Принтеры" (другой способ).
* rundll32 shell32,Control_RunDLL main.cpl @3 - открыть папку "Шрифты".
* rundll32 SHELL32,SHHelpShortcuts_RunDLL FontsFolder - открыть папку "Шрифты" (другой способ).
* rundll32 SHELL32,Control_RunDLL modem.cpl, add - открыть диалог "Свойства модема".
* rundll32 shell32,Control_RunDLL timedate.cpl - открыть диалог "Дата и время".
* rundll32 shell32,OpenAs_RunDLL - вызвать диалог "Открыть с помощью...".
* rundll32 shell32,ShellAboutA WINHOWTO.RU - информация о версии Windows.
* rundll32 shell32,SHExitWindowsEx 0 - закрыть все программы, перегрузить оболочку.
* rundll32 shell32, SHExitWindowsEx 1 - выключить ПК.
* rundll32 SHELL32, SHExitWindowsEx -1 - перегрузить оболочку Windows.
* rundll32 shell32, SHExitWindowsEx 2 - перегрузить ПК.
* rundll32 shell32,SHExitWindowsEx 4 - принудительно закрыть все программы.
* rundll32 shell32,SHExitWindowsEx 8 - выход из Windows и выключение ATX-совместимого ПК.
* rundll32 shell32,SHFormatDrive - вызов диалога форматирования диска А:.
* rundll32 SHELL32,SHHelpShortcuts_RunDLL AddPrinter - запуск "Мастера установки принтера".
* rundll32 shell32,SHHelpShortcuts_RunDLL Connect - запуск мастера подключения сетевого диска.
* rundll32 SHELL32,SHHelpShortcuts_RunDLL PrintTestPage - распечатать тестовую страницу.
* rundll32 sysdm.cpl,InstallDevice_Rundll - вызов мастера установки оборудования.
* rundll32 url.dll,FileProtocolHandler %1 - открыть веб-страницу, где %1 - URL сайта (включая http://).
* rundll32 url.dll,MailToProtocolHandler %1 - создать новое письмо, где %1 - e-mail адресата.
* rundll32 user,CASCADECHILDWINDOWS - расположить все окна каскадом.
* rundll32 user,TILECHILDWINDOWS - расположить все окна по экрану.
* rundll32 user,disableoemlayer - сбой системы (!) - выключить все функции ввода-вывода
(клавиатура, дисплей, мышь). В результате будет черный экран с курсором и ни на что не реагирующая система, однако Windows продолжает работать.
* rundll32 user,ExitWindowsExec - быстрая перезагрузка Windows.
* rundll32 user,RepaintScreen - выполнить команду "Обновить".
* rundll32 user,SetCaretBlinkTime n - задать частоту мигания курсора, соответствующую значению параметра n.
* rundll32 user,SetCursorPos - переместить курсор мыши в верхний левый угол экрана.
* rundll32 user,SetDoubleClickTime n - задать скорость двойного нажатия левой кнопки мыши (Double Click), соответствующую параметру n.
* rundll32 user,SwapMouseButton - поменять местами клавиши мыши (обратная смена невозможна).
* rundll32 user,WNetConnectDialog - вызов диалога "Подключение сетевого диска".
* rundll32 user,WNetDisconnectDialog - вызов диалога "Отключение сетевого диска".
* rundll32 AppWiz.Cpl,NewLinkHere %1 - запуск мастера создания нового ярлыка, где %1 - путь к исходному файлу.
* rundll32.exe shell32.dll, SHHelpShortcuts_RunDLL Connect. Вызвать мастер подключения сетевых дисков.
* rundll32.exe shell32.dll, ShellAboutA. Вызвать диалог, отображающий версию операционной системы Windows. Также данный диалог можно отобразить, выполнив команду winver.exe.
* rundll32.exe IEAKENG.dll, BrowseForFileA. Отображает дерево файловой системы жесткого диска компьютера.
* rundll32.exe ndfapi.dll, NdfRunDllHelpTopic «html-страница». Вызвать диалог HELP AND SUPPORT на указанной странице. Например, в качестве html-страницы можно использовать вызов mshelp://Windows/?id=33307acf-0698-41ba-b014-ea0a2eb8d0a8.
* rundll32.exe shell32.dll, OpenAs_RunDLL "путь и имя файла". Вызвать диалог OPEN AS… для открытия данного файла.
* rundll32.exe shell32.dll, Control_RunDLL Cliconfg.dll. Отображает диалог SQL Server Client Network Utility.
* rundll32.exe shell32.dll, Control_RunDLL Hotplug.dll. Отображает диалог удаления съемного устройства.
* rundll32.exe admparse.dll, CheckDuplicateKeysA "путь и имя файла". Переписывает содержимое данного файла.
* rundll32.exe IEAKENG.dll, BToolbar_SaveA "путь к папке". Создает папку. Если данная папка уже существует, тогда все ее содержимое будет удалено.
* rundll32.exe appwiz.cpl, GetProgramsOnline. Запускает браузер Internet Explorer и загружает страницу http://g.msn.com/WMHFUSEN/101724.
* rundll32.exe shell32.dll, ShellExec_RunDLL "команда". Выполняет команду.
* rundll32.exe url.dll, FileProtocolHandler "каталог". Открыть папку. Если вы не укажете папки, тогда будет открыта папка вашего профиля.
* rundll32.exe WININET.dll, RunOnceUrlCache "путь к папке". Удаляет все файлы указанной папки, имеющие атрибут FILEATTRIBUTETAGINFORMATION.
* rundll32.exe xwizards.dll, ProcessXMLFile "путь и имя xml-файла". Выполнить xml-файл.
* rundll32.exe user32.dll, mouse_event. Выполнить нажатие правой клавиши мыши.
* rundll32.exe user32.dll, SetCursorPos. Установить курсор в правый нижний угол экрана.
* rundll32.exe dfshim.dll, KillService. Остановить работу службы фонового обновления dfsvc.exe
* rundll32.exe IERNONCE.dll, RunOnceExProcess. Выполняет команды, описанные в ветви реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx (или в ветви корневого раздела HKCU).