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

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

1с получение курса валют на каждый день с сайта цб Программирование системы 1с получение курса валют на каждый день с сайта цб25.08.2016 12:20 1с получение курса валют на каждый день с сайта цб11030

Одним из источников курсов валют, является сайт ЦБРФ (Центральный Банк Российской Федерации). Запросить данные с сайта можно с помощью объекта 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-ссылки, но использовать его не обязательно, к сервису можно обращаться динамически из кода. Я буду использовать первый вариант, а затем покажу, как можно использовать второй. В конфигурации создал обработку и назвал ее «ЗагрузкаКурсовВалютЦБР». Добавил форму (управляемую) и сделал ее основной. На форме я создал реквизиты и разместил элементы управления так, как показано на рисунке.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Не тратьте денег. На сайте ЦБ РФ даны примеры и кое-какие пояснения.
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 и найти справочник «Валюта», хранение данных валют и история изменения курса хранится именно там.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *