Меню

1с получение курса валют на каждый день с сайта цб

Загрузка курсов валют из ЦБ РФ в 1С

category Программирование системы clock25.08.2016 12:20 eye11030

Одним из источников курсов валют, является сайт ЦБРФ (Центральный Банк Российской Федерации). Запросить данные с сайта можно с помощью объекта HTTPСоединение. В Интернете можно найти множество источников для загрузки курсоров валют. Широко применяется загрузка курсов валют с сайта РБК.

Строка запроса данных с сайта ЦБРФ

Запрос для получения курсов всех валют на последнюю дату
Запрос: www.cbr.ru/scripts/XML_daily.asp

Запрос для получения курсов всех валют на 24.08.2016
Шаблон: www.cbr.ru/scripts/XML_daily.asp?date_req=День/Месяц/Год
Запрос: www.cbr.ru/scripts/XML_daily.asp?date_req=24/08/2016

Запрос для получения курсов Евро за период с 20/08/2016 по 24/08/2016
Шаблон: www.cbr.ru/scripts/XML_dynamic.asp?date_req1=День/Месяц/Год&date_req2=День/Месяц/Год&VAL_NM_RQ=КодВалюты
Запрос: www.cbr.ru/scripts/XML_dynamic.asp?date_req1=20/08/2016&date_req2=24/08/2016&VAL_NM_RQ=R01239

Загрузить курсы валют

При запросе с сайта ЦБРФ возвращается xml-файл. При запросе курсов на определенную дату или за период структура xml-файла отличается.

Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться

Источник

Использование внешних веб­сервисов в 1С на примере загрузки курсов валют

Веб-сервис

Конфигурирование

Для разработки я взял 1С 8.2 (8.2.15.317 в моем случае) и создал пустую конфигурацию. Для использования внешних веб-сервисов предусмотрен объект WS-ссылки, но использовать его не обязательно, к сервису можно обращаться динамически из кода. Я буду использовать первый вариант, а затем покажу, как можно использовать второй. В конфигурации создал обработку и назвал ее «ЗагрузкаКурсовВалютЦБР». Добавил форму (управляемую) и сделал ее основной. На форме я создал реквизиты и разместил элементы управления так, как показано на рисунке.

b2627ac1a19364ca4309e75e2c7fd91a

9ccc3bdc32ce9a378ec00fb1c2397373

1С на основании полученного описания автоматически создаст визуальную карту веб-сервиса. Можно увидеть название веб-сервиса, посмотреть какие у него доступны операции а так же используемые типы данных.

f63fb74b4db70f31f0d6b3c541e1d25b

Конфигурирование на этом почти закончено, осталось сделать пару штрихов для того, чтобы наше приложение выглядело более эстетично. Кликнем правой кнопкой мыши по корню конфигурации и вызовем меню «Открыть командный интерфейс рабочего стола». В появившемся окне необходимо снять флаг «Видимость» напротив обработки «Загрузка курсов валют ЦБР». Нажмем кнопку Ок. Далее еще правый клик по корню конфигурации и вызовем меню «Открыть рабочую область рабочего стола», там сделаем настройку как на рисунке:

f16f4757cb826e9defb2a4a7d334a25c

Эти настройки позволят нам отобразить форму обработки прямо на рабочем столе (имеется ввиду рабочий стол программы 1С) в режиме 1С Предприятие.

Программирование

Теперь осталось наполнить смыслом нашу обработку: заставить ее получать курсы валют и отображать в таблице на форме. В режиме редактирования формы необходимо добавить новую команду формы, назовем ее ЗагрузитьВалюты. Эту команду необходимо связать с кнопкой, расположенной на форме. Действие для команды заполним следующим кодом (прим. автора: ничего себе, на хабре есть подсветка кода 1С, правда она работает не корректно):

Если НЕ ЗначениеЗаполнено(ДатаЗагрузки) Тогда

Сообщить(«Не выбрана дата загрузки!», СтатусСообщения.Важное);

Здесь сначала проверяется, заполнена ли дата (если не заполнена, то сообщаем об этом пользователю и больше ничего не делаем). Затем очищается таблица, расположенная на форме и вызывается процедура ЗагрузитьКурсыВалют(), в которую передается дата.

Код процедуры ЗагрузитьКурсыВалют(), пояснения данны в комментариях к коду:

//Создаем прокси для обращения к внешнему веб-сервису,

// передаем в функцию URI пространства имен, имя сервиса, имя порта.

«http://web.cbr.ru/», «DailyInfo», «DailyInfoSoap»);

//Получаем тип параметра, который передается в метод GetCursOnDate.

//Создаем параметр на основе типа и заполняем значение параметра On_Date.

//Вызываем метод веб-сервиса, записываем результат в переменную КурсыВалют.

//Перебираем таблицу ValuteCursOnDate, каждое значение таблицы

// добавляем в таблицу на форме (колонки заполняем соответствующими значениями).

Для Каждого Элемент Из КурсыВалют.GetCursOnDateResult.diffgram.ValuteData.ValuteCursOnDate Цикл

Теперь можно обновлять конфигурацию БД (F7) и запускать 1С Предприятие (F5). Если все сделали верно, то должны увидеть окно как на рисунке ниже:

5c366bbb653c76ffb1705c1877503ed8

Чтобы проверить результат, нам нужно ввести дату, на которую хотим получить курсы валют и нажать на кнопку «Загрузить валюты». В случае успешного запроса, таблица на форме заполнится значениями курсов:

8d0ffca9669ce399a8249829d3f66eef

Напоследок хочу показать, как можно обратиться динамически к внешнему веб-сервису, то есть без добавления объекта WS-ссылка. Таким образом, мы можем использовать такие веб-сервисы из внешних обработок без привязки к конфигурации.

В процедуре ЗагрузитьКурсыВалют() строку

Прокси = WSСсылки.CBR_DailyInfoWebServ.СоздатьWSПрокси(«http://web.cbr.ru/», «DailyInfo», «DailyInfoSoap»);

необходимо заменить двумя следующими строками

Определения = Новый WSОпределения(«http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL»);

Прокси = Новый WSПрокси(Определения, «http://web.cbr.ru/», «DailyInfo», «DailyInfoSoap»);

Сначала мы создаем так называемые определения для веб-сервиса из его WSDL. Затем так же создаем прокси для обращения к нему.

Как видно, использовать внешние веб-сервисы из 1С в целом довольно просто (хотя и есть некоторая сложность в понимании определения типов, у меня в том числе).

Если данная публикация найдет здесь отклик, то есть еще несколько тем, о которых можно рассказать.

По ссылке можно скачать конфигурацию с примером (cf-файл).

Источник

Использование внешних веб-сервисов в 1С на примере загрузки курсов валют

Знаю, что на хабре не очень-то жалуют многострадальную 1С. Хотя, с выходом платформы 8.3 (с клиентами под Linux), ее стали любить несколько больше. Кстати, так же, совсем недавно интерфейс одной из основных разработок 1С – конфигурация Управление производственным предприятием – был полностью переведен на английский язык. Много раз я встречал вопросы о том, почему здесь не пишут об 1С. Ответ на них довольно очевиден – существует множество специализированных ресурсов, где можно оперативно обсудить все вопросы и что-то почитать.

Есть все основания полагать, что эта статья здесь не выживет, но я все же рискну, потому что в 1С есть некоторые интересные вещи, о которых стоит рассказать.

С некоторых пор в 1С 8.х появилась возможность использования веб-сервисов: 1С может выступать как поставщиком, так и потребителем. В этой статье я покажу, как использовать 1С в качестве потребителя на примере получения курсов валют с сервера ЦБР.

Веб-сервис

У Центробанка существует веб-сервис для получения ежедневных данных: курсы валют, новости, динамика курсов и т.д. Описание сервиса можно найти здесь http://www.cbr.ru/scripts/Root.asp?Prtid=DWS. Нас интересует один из методов этого сервиса: GetCursOnDate(On_date) – получение курсов валют на заданную дату. В метод передается один аргумент On_date – это дата, на которую требуется получить курсы. В результате возвращается XML, содержащий таблицу ValuteCursOnDate (сами курсы и сопутствующая информация).

Конфигурирование

Для разработки я взял 1С 8.2 (8.2.15.317 в моем случае) и создал пустую конфигурацию. Для использования внешних веб-сервисов предусмотрен объект WS-ссылки, но использовать его не обязательно, к сервису можно обращаться динамически из кода. Я буду использовать первый вариант, а затем покажу, как можно использовать второй. В конфигурации создал обработку и назвал ее «ЗагрузкаКурсовВалютЦБР». Добавил форму (управляемую) и сделал ее основной. На форме я создал реквизиты и разместил элементы управления так, как показано на рисунке.

image loader

Сейчас самое главное – создаем ссылку на описание веб-сервиса. В конфигурации добавляем новый объект типа WS-ссылка. В появившемся окне указываем ссылку на WSDL (описание данного формата выходит за рамки статьи, вы можете почитать о нем на Википедии): http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL.

image loader

1С на основании полученного описания автоматически создаст визуальную карту веб-сервиса. Можно увидеть название веб-сервиса, посмотреть какие у него доступны операции а так же используемые типы данных.

image loader

Конфигурирование на этом почти закончено, осталось сделать пару штрихов для того, чтобы наше приложение выглядело более эстетично. Кликнем правой кнопкой мыши по корню конфигурации и вызовем меню «Открыть командный интерфейс рабочего стола». В появившемся окне необходимо снять флаг «Видимость» напротив обработки «Загрузка курсов валют ЦБР». Нажмем кнопку Ок. Далее еще правый клик по корню конфигурации и вызовем меню «Открыть рабочую область рабочего стола», там сделаем настройку как на рисунке:

image loader

Эти настройки позволят нам отобразить форму обработки прямо на рабочем столе (имеется ввиду рабочий стол программы 1С) в режиме 1С Предприятие.

Программирование

Теперь осталось наполнить смыслом нашу обработку: заставить ее получать курсы валют и отображать в таблице на форме. В режиме редактирования формы необходимо добавить новую команду формы, назовем ее ЗагрузитьВалюты. Эту команду необходимо связать с кнопкой, расположенной на форме. Действие для команды заполним следующим кодом (прим. автора: ничего себе, на хабре есть подсветка кода 1С, правда она работает не корректно):

Здесь сначала проверяется, заполнена ли дата (если не заполнена, то сообщаем об этом пользователю и больше ничего не делаем). Затем очищается таблица, расположенная на форме и вызывается процедура ЗагрузитьКурсыВалют(), в которую передается дата.

Код процедуры ЗагрузитьКурсыВалют(), пояснения данны в комментариях к коду:

Теперь можно обновлять конфигурацию БД (F7) и запускать 1С Предприятие (F5). Если все сделали верно, то должны увидеть окно как на рисунке ниже:

image loader

Чтобы проверить результат, нам нужно ввести дату, на которую хотим получить курсы валют и нажать на кнопку «Загрузить валюты». В случае успешного запроса, таблица на форме заполнится значениями курсов:

image loader

Напоследок хочу показать, как можно обратиться динамически к внешнему веб-сервису, то есть без добавления объекта WS-ссылка. Таким образом, мы можем использовать такие веб-сервисы из внешних обработок без привязки к конфигурации.

В процедуре ЗагрузитьКурсыВалют() строку

необходимо заменить двумя следующими строками

Сначала мы создаем так называемые определения для веб-сервиса из его WSDL. Затем так же создаем прокси для обращения к нему.

Как видно, использовать внешние веб-сервисы из 1С в целом довольно просто (хотя и есть некоторая сложность в понимании определения типов, у меня в том числе).

Если данная публикация найдет здесь отклик, то есть еще несколько тем, о которых можно рассказать.

По ссылке можно скачать конфигурацию с примером (cf-файл).

Источник

Получение курсов валют через веб-сервисы Центробанка РФ

Обработка предназначена для демонстрации использования веб-сервисов на примере получения курсов валют напрямую через веб-сервисы Центрального банка РФ.

Платформа 8.2. Толстый клиент.

В архиве также находится WSDL-файл описания всех веб-сервисов Центрального банка РФ.

Скачать файлы

Специальные предложения

f71a8c4e70c0ff03708038e2b0210df8

9c2808762ec294cd4c55532520b9c521

895fb1e0f7afc3c0ed0d73bf5ee9d9d0

egais promo

b34b292ed32e9501f98cc31df406353e

789363929b9f37ddc5641a069a5fe52e

5b19cd6c4494a88b2abefce64a1b7565

199e2be4fd21dd8f4209d8ec34616c76

Не тратьте денег. На сайте ЦБ РФ даны примеры и кое-какие пояснения.
http://www.cbr.ru/scripts/Root.asp?Prtid=DWS
Я для примера взял загрузку курсов в Excel.
В 8.2.13 все получилось. Вот как-то так.

самая большая хитрость это в конфигураторе надо создать WS-ссылку из адреса http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL

Функция ПолучитьПоследнююДатуУстановкиКурса ()
ТипWSПарамера = СервисЕжедневнойИнформации.ФабрикаXDTO.Пакеты.Получить(«http://web.cbr.ru/»).Получить(«GetLatestDateTime»);
WSПараметр = СервисЕжедневнойИнформации.ФабрикаXDTO.Создать(ТипWSПарамера);

Функция ПолучитьСписокКотируемыхВалют ()
// Получаем список валют
ТипWSПараметра = СервисЕжедневнойИнформации.ФабрикаXDTO.Пакеты.Получить(«http://web.cbr.ru/»).Получить(«EnumValutes»);
WSПараметр = СервисЕжедневнойИнформации.ФабрикаXDTO.Создать(ТипWSПараметра);
WSПараметр.Seld = ложь ;
СписокВалют = СервисЕжедневнойИнформации.EnumValutes(WSПараметр);
КонецФункции

Если НЕ ЗначениеЗаполнено (ДатаКурса) Тогда
ДатаКурса = ПолучитьПоследнююДатуУстановкиКурса();
КонецЕсли;

// Получаем курсы
ТипWSПараметра = СервисЕжедневнойИнформации.ФабрикаXDTO.Пакеты.Получить(«http://web.cbr.ru/»).Получить(«GetCursOnDate»);
WSПараметр = СервисЕжедневнойИнформации.ФабрикаXDTO.Создать(ТипWSПараметра);
WSПараметр.On_Date = ДатаКурса ;
СписокКурсов = СервисЕжедневнойИнформации.GetCursOnDate(WSПараметр);

// Загрузить
КурсыВалют.Очистить();
Для Каждого Стр Из СписокКурсов.GetCursOnDateresult.diffgram.ValuteData.ValuteCursOnDate Цикл
Строка = КурсыВалют.Добавить() ;
Строка.Курс = Стр.Vcurs ;
Строка.Кратность = Стр.Vnom ;
Строка.ВалютаКодСимвольный = Стр.VchCode ;
Строка.ВалютаКодЧисловой = Прав («000″+Стр.VCode, 3);
Строка.ВалютаИмя = Стр.VName ;
КонецЦикла;

Процедура ПолучитьПоследнююДатуУстановкиКурсовНажатие(Элемент)
ДатаКурса = ПолучитьПоследнююДатуУстановкиКурса ();
КонецПроцедуры

Источник

Курсы валют в 1С 8.3: как загрузить их при помощи программы

Информация о том, какую курс валют на сегодня важен не только для того, чтобы оформлять различные операции купли-продажи с использованием иностранной валюты. Часто бывает, что в договоре, поставщик указывает цену за товар в валюте или в условных единицах, делая оговорку, что расчеты будут производиться в рублевом эквиваленте согласно официальному курсу в момент платежа. Это касается случаев, если другой курс или дата не были определены соглашением сторон или же законом.

Например, есть товар, который стоит 197,79 китайский юаней. Оплатить товар вам нужно в рублевом эквиваленте, согласно курсу центрального банка на момент оплаты и добавить сверху 2%.

Перед тем, как вы начнете оформлять документ поступления товара на склад, давайте проверим есть ли необходимая валюта в программе и насколько актуален ее курс. Для этого вам нужно будет зайти в программу 1С 8.3 и найти справочник «Валюта», хранение данных валют и история изменения курса хранится именно там.

zagruzka kursov1

zagruzka kursov2

Как вы смогли заметить, в справочнике нет нужной нам валюты, поэтому для начала нам надо ее создать. Для этого нужно нажать кнопочку «Создать» и выбрать пункт подменю, который называется «По классификатору».

zagruzka kursov3

Чтобы ускорить побор валюты, лучше всего воспользоваться поиском. Для этого нажмите кнопку «Найти».

zagruzka kursov4

Если вы видите зеленую галочку, это значит, что данная валюта может быть загружена из сети. Как только вы создали валюту, она появится в списке с курсом в 1 рубль. Для того, чтобы проверить ее актуальность и посмотреть всю историю изменений вам нужно зайти в «Курсы валют».

zagruzka kursov5

zagruzka kursov6

Загрузить курс валюты вы можете и руками и в автоматическом режиме. Причем использование сервиса для загрузки не вызовет у любого пользователя никаких сложностей. Проверьте подключение к интернет-поддержке для пользователей в разделе «Интернет поддержка и сервисы». Если все работает, то под «Настройки интернет поддержки» у вас будет кнопка «Отключить».

zagruzka kursov7 7

Если интернет-поддержка отключена и у вас нет возможности ее подключить, то используйте альтернативный способ загрузки. Для этого нужно перейти в раздел «Константы», затем «Все функции» и найти там альтернативный сервер. В открывшемся окне нужно установить флаг.

zagruzka kursov8

Как правило, ручной режим используют чтобы вводить и актуализировать данные на сегодняшний день, чтобы не дожидаться момента, когда программа автоматически загрузит курс согласно расписанию. Чтобы использовать ручную загрузку вам необходимо найти и нажать на кнопку «Загрузить». Теперь установите необходимые показатели и нажмите кнопку «Загрузить и закрыть».

zagruzka kursov9

Так как в нашем примере указана наценка, давайте добавим еще одну валюту. Нажмите «Создать», затем «Новую» и установите в появившемся окне необходимые параметры. Не забудьте указать наценку в 2%.

zagruzka kursov10

Теперь при оформлении любой операции или покупке в валюте и во время расчета в рублях, программа сформирует документы и проводки.

zagruzka kursov11

zagruzka kursov12

zagruzka kursov13

Как вы можете заметить, курсовая разница сформировалась и сверху была добавлена наценка 2%.

zagruzka kursov14

Вы можете настроить автоматическую загрузку курса валюты с нужным для себя периодом. Делается это в разделе «Обслуживание». Чтобы настроить или изменить имеющееся расписание вам нужно:

Затем нажмите на кнопку «Регламентные и фоновые задания».

zagruzka kursov15

Следом вам нужно выбрать задание загрузки, установить флаг на «Включено» и выбрать кнопку «Расписание». Тут вы можете настроить необходимую дату, время или периодичность обновления.

zagruzka kursov16

Если вы включите регламентное задание, но загрузка в автоматическом режиме по-прежнему не работает, то вам нужно обратиться к своему администратору, чтобы он проверил работу сервера.

Источник

Добавить комментарий