1с получить число валюты
Напоминаю, что мы сегодня продолжаем доделывать обработку, которая будет получать данные по валютам с сайта (Анимация 1).
В данной статье мы рассмотрим программный код, который будет получать данные с сайта.
Чтобы продолжить выполнять это задание, необходимо понять что и как точно делать?! У нас сейчас задача такова, что нужно прописать программный код, который будет выполняться и получать данные о валютах с центрального банка.
Программный код всегда прописывается в модуле, но если его просто прописать в модуле, то толку от этого никакого не будет!
Потому что каждый программный код должен быть к чему-то привязан, например, в данном случае он привязан к кнопке, которая будет нажиматься и мы будем получать данные.
Выбираем кнопку на форме в правом окне и выбираем свойство "Действие" (Рисунок 1).
После нажатия кнопки "Ок" произойдет переход в модуль обработки и выглядит он следующим образом (Рисунок 2).
В данный момент, если ы запустите пользователя и проверите, то ничего не будет происходить, так как мы внутри процедуры ничего не прописывали.
В прошлом занятии мы создавали реквизит "ДатаЗагрузки" - этот реквизит является обязательным для заполнения и платформа должна предупреждать пользователя, что поле не заполнено и не давать возможность выполнения всей процедуры, пока не будет заполнено это поле.
Делается это следующим образом:
Прописываем условие, в котором говорится, что если поле не заполнено, то необходимо сообщить об этом. Вставим этот код и проверим в режиме пользователя (Рисунок 3).
Дальше мы пропишем еще две строки программного кода:
1. ТаблицаКурсовВалют.Очистить(); - Говорим, что табличную часть необходимо очистить.
2. ЗагрузитьКурсыВалют(ДатаЗагрузки); - Обращение к еще одной процедуре, которая называется "ЗагрузитьКурсыВалют(ДатаЗагрузки)". Эта процедура появится ниже, она будет отдельной и независимой. Эта процедура как раз и будет выполнять все действия по получению данных с сайта.
Весь код процедуры будет выглядеть так (Рисунок 4).
Запустите пользовательский режим и получите уведомление (Рисунок 5).
Данная ошибка означает о том, что он не может найти такую процедуру, к которой мы обращаемся. А не может найти лишь потому, что такую процедуру мы еще не создавали и создадим ее немного позже.
Закомментированный код - он всегда зеленого цвета и перед ним обязательно две косые палочки - слеш. Программа такой код не будет учитывать. Запустите пользователя и увидите, что никакого оповещения не будет.
Запустите эту обработку, добавьте в табличку строку и нажмите кнопку загрузки валют (Рисунок 7).
Сразу после нажатия вы увидите, что поле автоматически очистится - значит программный код работает.
Давайте теперь уберем комментарий со строки и создадим процедуру, которую система не могла найти (Рисунок 8).
Нажмите на кнопку проверки и никаких ошибок не будет.
Теперь необходимо прописать весь программный код в этой процедуре и будет он следующим (Рисунок 9).
Нажмите на кнопку проверки на синтаксические ошибки и увидите, что никаких ошибок в коде нет.
На следующем занятии мы закончим эту тему до конца и рассмотрим весь программный код, а так же познакомимся с новым понятием "WS-ссылки" - посмотрите на первую строку второй процедуры, там переменной присваивается WSссылки, как раз это мы немного и изучим.
Если зайдете в режим пользователя и попробуете загрузить валюты, у вас появится ошибка о том, что нет никакой WSссылки - это логично, так как мы ее не создавали и создадим только на следующем занятии.
На этом статья урока подходит к концу. Попробуйте выполнить все действия, которые описаны в этом уроке. Если что-то не получается, то вы всегда сможете написать вопрос о том, что вам непонятно или вернуться к предыдущим урокам и посмотреть их - ссылки внизу!
Ссылка для вступления телеграм-канал - t.me.Apiscourses
Подписаться в группу ВКонтакте
Прошлые уроки:
На этом все. Жду Вас на следующем занятии.
P.S. Подписывайтесь на мой канал :-)
программирование программирование 1с 1с предприятие обучение онлайн обучение 1с
Вывод Диаграммы График Валют, Сохранение диаграммы, графиков и гистограмм в виде Картинки 0
Алгоритм обработки выполняет запрос к регистру сведений " курсы валют" за определенный пользователем период. Полученные данные выборки в цикле выводятся в элемент экранной формы " диаграмма" в режиме построения графика. Для элемента управления " Ди Документ "Корректировка записей регистров" - Как программно создать и заполнить? 8
Документ «Корректировка записей регистров» в типовых конфигурациях 1С предназначен для ручной корректировки записей регистров накопления, зависимых регистров сведений и регистров бухгалтерии. Типичные ситуации, в которых может понадобиться документ « Загрузка данных в 1С из PDF 4
В данной статье описан пример реализации загрузки данных накладных из PDF файлов для одного крупного Ритейла. И так у Нас есть несколько файлов в формате pdf, которые нам необходимо загрузить в 1С. Чтение PDF файлов из 1С Первым дело я стал Запись в регистр сведений (Установить курс и кратность валюты) 1
// Запись в регистр сведений (Установить курс и кратность валюты) // Параметры: // Валюта - ссылка на элемент справочника Валют // Процедура ЗаписатьКурс(Валюта) Экспорт РегистрКурсыВалют = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи() Использование предложения ДЛЯ ИЗМЕНЕНИЯ 0
Предложение ДЛЯ ИЗМЕНЕНИЯ позволяет заблаговременно заблокировать некоторые данные (которые могут читаться транзакцией другого соединения) уже при считывании, чтобы исключить взаимные блокировки при записи. ДЛЯ ИЗМЕНЕНИЯ дает возможность указать в Посмотреть все результаты поиска похожих
Еще в этой же категории
Полезные возможности редактора кода 1С 28
Мне частенько приходится взаимодействовать с 1С-разработчиками, и во время совместной работы над проектами замечаю, что далеко не все из них хорошо знают свой главный инструмент – «Конфигуратор». Причем это не относится к степени крутости девелопера Работа с буфером обмена средствами 1С 19
Копировать из 1С в буфер обмена( без ВК): ЭлементыФормы.Добавить(Тип(" ПолеHTMLДокумента" ), " Поле_HTML_Документа_acb123" , Ложь); Окно = ЭлементыФормы.Поле_HTML_Документа_acb123.Документ.ParentWindow; Окно.ClipboardData.SetData(" Text" , Текст Структура и название таблиц использыемых для хранения данных в БД 1С 8.х 17
Данные, которые определяют логику функционирования системы на базе 1С:Предприятия, относятся к информационной базе. Хранение информационной базы осуществляется в базе данных с виде набора таблиц, для чего 1С:Предприятие 8.1 может использовать одну из Программно получить список активных пользователей 12
Процедура ПолучениеСпискаАктивныхПользователей() ИтогСписокСоединений.Очистить(); СоединенияИнформационнойБазы = ПолучитьСоединенияИнформационнойБазы(); Для Каждого Соединение Из СоединенияИнформационнойБазы Цикл ТЗ=ИтогСпи Как получить ссылку на объект из навигационной ссылки? 7
Процедура ПолучитьСсылкуИзНавигационной(НС) ПерваяТочка = Найти(НС, " e1cib/data/" ); ВтораяТочка = Найти(НС, " ?ref icon-exclamation-sign"> Посмотреть все в категории Полезные, Универсальные Функции
Эта статья будет о том, как получить представление числа или суммы прописью, используя стандартную функцию ЧислоПрописью().
Пишу это в качестве шпаргалки, в том числе и для себя, ибо требуется достаточно часто, а запоминать все эти конструкции нет никакого желания (синтаксис помощник, как-то не сильно помогает).
В этой статье я не буду приводить описание функции ЧислоПрописью() и ее параметров — это есть в синтаксис-помощнике.
Число прописью
Начнем с простой записи числа прописью:
Результат правда будет немного не таким, каким хотелось бы — дробная часть будет записана цифрами.
Можно попробовать сделать так:
Но это все равно не то, так как нельзя понять где заканчивается целая часть и начинается дробная.
Для решения этой проблемы можно задействовать третий параметр:
Результат выгляди уже более или менее приемлемо, но такой способ совершенно не подходит, если количество знаков после запятой неизвестно заранее.
Стандартного и универсального решения этой проблемы, к сожалению, не существует (поправьте меня, если я ошибаюсь).
Сумма прописью
Теперь перейдем к представлению сумм прописью (по суммой подразумевается пара — число+валюта). Здесь все гораздо лучше — знаков после запятой практически всегда два.
Сумма в российских рублях на разных языках:
Сообщить(ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина", "рубль,рубля,рублей,м,копейка,копейки,копеек,ж,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=uk_UA;ДП=Истина", "карбованець,карбованцi,карбованцiв,м,копiйка,копiйки,копiйок,м,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=lv_LV;ДП=Истина", "rublis,rubli,rublu,v,kapeika,kapeiki,kapeiku,s,2"));
Сумма в долларах США на разных языках:
Сообщить(ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина", "доллар,доллара,долларов,м,цент,цента,центов,м,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=uk_UA;ДП=Истина", "долар,долара,доларiв,м,цент,цента,центiв,м,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=lv_LV;ДП=Истина", "dolars,dolari,dolaru,v,cent,centi,centu,v,2"));
Сумма в евро на разных языках:
Сообщить(ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина", "евро,евро,евро,м,евроцент,евроцента,евроцентов,м,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=uk_UA;ДП=Истина", "євро,євро,євро,м,євроцент,євроцента,євроцентів,м,2"));
Сумма в украинских гривнах на разных языках:
Сообщить(ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина", "гривна,гривны,гривен,ж,копейка,копейки,копеек,ж,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=uk_UA;ДП=Истина", "гривня,гривнi,гривень,ж,копiйка,копiйки,копiйок,ж,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=lv_LV;ДП=Истина", "grivna,grivni,grivnu,s,kapeika,kapeiki,kapeiku,s,2"));
Сумма в латвийских латах на разных языках:
Сообщить(ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина", "лат,лата,латов,м,сантим,сантима,сантимов,м,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=uk_UA;ДП=Истина", "лат,лата,латiв,м,сантим,сантима,сантимiв,м,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=lv_LV;ДП=Истина", "lats,lati,latu,v,santims,santimi,santimu,v,2"));
Сумма в румынских леях на разных языках:
Сумма в болгарских львах на разных языках:
Сообщить(ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина", "лев,лева,левов,м,стотинка,стотинки,стотинок,ж,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=uk_UA;ДП=Истина", "лев,лева,левів,м,стотинка,стотинки,стотинок,ж,2"));
Сообщить(ЧислоПрописью(1234.56, "Л=lv_LV;ДП=Истина", "leva,levas,levas,s,stotinka,stotinki,stotinki,s,2"));
Казахский язык и валюту я пропустил из-за сложностей с отображением символов.
На этом все, надеюсь данная статья вам помогла.
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
(оценок: 13, средняя оценка: 4,38 из 5)
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования (Linus Torvalds).
среда, 12 марта 2014 г.
Типовая функция для пересчета из валюты в валюту
Для пересчета из валюты в валюту в типовых конфигурациях используется функция ПересчитатьИзВалютыВВалюту, расположенная в общем модуле - МодульВалютногоУчета.
Текст функции такой:
// Эта функция пересчитывает сумму из валюты ВалютаНач по курсу ПоКурсуНач
// в валюту ВалютаКон по курсу ПоКурсуКон
//
// Параметры:
// Сумма - сумма, которую следует пересчитать;
// ВалютаНач - ссылка на элемент справочника Валют;
// определяет валюты из которой надо пересчитвать;
// ВалютаКон - ссылка на элемент справочника Валют;
// определяет валюты в которую надо пересчитвать;
// ПоКурсуНач - курс из которого надо пересчитать;
// ПоКурсуКон - курс в который надо пересчитать;
// ПоКратностьНач - кратность из которого надо пересчитать (по умолчанию = 1);
// ПоКратностьКон - кратность в который надо пересчитать (по умолчанию = 1);
//
// Возвращаемое значение:
// Сумма, пересчитанная в другую валюту
//
Функция ПересчитатьИзВалютыВВалюту ( Сумма , ВалютаНач , ВалютаКон , ПоКурсуНач , ПоКурсуКон ,
ПоКратностьНач = 1 , ПоКратностьКон = 1 , Погрешность = 0 ,
СоответствиеПогрешностей = Неопределено, Ключ = Неопределено) Экспорт
Если ( ВалютаНач = ВалютаКон ) Тогда
// Считаем, что пересчет не нужен.
Возврат Сумма ;
КонецЕсли;
Если ( ПоКурсуНач = ПоКурсуКон )
и ( ПоКратностьНач = ПоКратностьКон ) Тогда
// пересчет суммы не требуется
Возврат Сумма ;
КонецЕсли;
Если ПоКурсуНач = 0
или ПоКурсуКон = 0
или ПоКратностьНач = 0
или ПоКратностьКон = 0 Тогда
ОбщегоНазначения . СообщитьОбОшибке ( "При пересчете из валюты '" + ВалютаНач + "' в валюту '" + ВалютаКон + "' обнаружен нулевой курс. Пересчет не произведен!" );
Возврат 0 ;
КонецЕсли;
НоваяСумма = ( Сумма * ПоКурсуНач * ПоКратностьКон ) / ( ПоКурсуКон * ПоКратностьНач );
Возврат ОбщегоНазначения . ОкруглитьСУчетомПогрешности ( НоваяСумма , 2 , Погрешность , СоответствиеПогрешностей , Ключ );
В УПП также существует функция ПересчитатьВСуммуРегл, которая предназначена для пересчета суммы управленческого учета в сумму регламентированного учета.
// Функция производит пересчет суммы в валюте упр. учета в валюту регл. учета.
//
Функция ПересчитатьВСуммуРегл ( СуммаУпр , ВалютаРегламентированногоУчета , ВалютаУправленческогоУчета , Дата ) Экспорт
ВалютаРегл = ВалютаРегламентированногоУчета ;
ВалютаУпр = ВалютаУправленческогоУчета ;
КурсВал = ПолучитьКурсВалюты ( ВалютаРегл , Дата );
КурсРегл = КурсВал . Курс ;
КратРегл = КурсВал . Кратность ;
КурсВал = ПолучитьКурсВалюты ( ВалютаУпр , Дата );
КурсУпр = КурсВал . Курс ;
КратУпр = КурсВал . Кратность ;
СуммаРегл = ПересчитатьИзВалютыВВалюту ( СуммаУпр , ВалютаУпр , ВалютаРегл , КурсУпр , КурсРегл , КратУпр , КратРегл );
Примеры вызова функций:
СуммаВзаиморасчетов = МодульВалютногоУчета . ПересчитатьИзВалютыВВалюту ( СуммаДокумента , ВалютаДокумента ,
СтруктураШапкиДокумента . ВалютаВзаиморасчетов , СтруктураШапкиДокумента . КурсДокумента , КурсВзаиморасчетов ,
СтруктураШапкиДокумента . КратностьДокумента , КратностьВзаиморасчетов );
СтрокаТабличнойЧасти . СтоимостьРегл = МодульВалютногоУчета . ПересчитатьВСуммуРегл ( СтрокаТабличнойЧасти . Стоимость , мВалютаРегламентированногоУчета , мВалютаУправленческогоУчета , Дата );
Всем привет, с вами канал по изучению платформы 1С : предприятие 8.3.
Продолжаем разбирать тему обработки, которая получает с сайта данные о валютах.
На первом уроке ( это нажать сюда ) мы подготовили обработку и все реквизиты.
На втором уроке ( это тут ) мы прописали код, который подключается к сайту и получает данные.
На данный момент нам осталось доделать обработку до конца, а чтобы ее доделать, нужно познакомиться с новым понятием "WSссылки".
WSссылки - это способ описания стороннего веб-сервиса, а если быть точнее, то его реквизитов и типов, которые потом интегрируются в платформу 1С: Предприятие 8.3.
Если сказать простым языком, то эта ссылка нужна для того, чтобы подключаться к сайтам и получать с них какие-то данные.
Пока мы не будем с ней близко знакомиться, но обязательно в скором времени познакомимся, а пока что сделаем все по образцу.
Нужно открыть на дереве конфигурации ветвь "Общие" и найти строку "WSссылки" (Рисунок 1).
Теперь необходимо правой кнопкой мыши добавить ссылку и откроется новое окно (Рисунок 2).
Вставляем эту строку в поле (Рисунок 3).
И нажмите "Ок" и ссылка появится (Рисунок 4).
Теперь ее необходимо переименовать (Рисунок 5).
Почему называется именно так, мы увидим позже, когда начнем разбирать программный код в модуле обработки.
Откройте эту ссылку и там вы увидите все данные, которые платформа создала сама (Рисунок 6).
На этом создание ссылки закончено и необходимо перейти в модуль обработки и разобрать программный код.
Код в модуле такой (Рисунок 7).
Давайте начнем разбираться со второй процедурой, так как с первой мы разобрались на прошлом занятии.
Пропустим начало и конец процедуры - это и так понятно, что начинается тут процедура и там она заканчивается, поставим в начале и в конце многоточие.
1. Прокси = WSСсылки.DailyInfo.СоздатьWSПрокси(
"http://web.cbr.ru/", "DailyInfo", "DailyInfoSoap"); - Переменной присваивается ссылка, которая называется "DailyInfo" и говорит, что нужно обращаться на сайт центрального банка по ссылке, которая находится в скобках.
2. ТипWSПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить(
"http://web.cbr.ru/").Получить("GetCursOnDate"); - Переменной присваивается операция по получению данных.
3. WSПараметр = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра); - Переменной присваивается операция по обработке данных.
4. WSПараметр.On_Date = ДатаЗагрузки; - Присваивание дате реквизита.
5. КурсыВалют = Прокси.GetCursOnDate(WSПараметр); - Переменной присваивается получение запроса.
6. Для Каждого Элемент Из - В этой строке будет подготавливаться цикл для табличной части.
КурсыВалют.GetCursOnDateResult.diffgram.ValuteData.ValuteCursOnDate Цикл - Начало цикла
НоваяСтрокаТЗ = ТаблицаКурсовВалют.Добавить(); - Добавление в табличную часть данных.
НоваяСтрокаТЗ.НазваниеВалюты = Элемент.Vname; - Добавление в столбец "НазваниеВалюты" элемента с сайта Vname (Для других строк точно так же, только другие данные).
НоваяСтрокаТЗ.Номинал = Элемент.Vnom; - Смотри выше.
НоваяСтрокаТЗ.ЦифровойКодВалюты = Элемент.Vcode;- Смотри выше.
НоваяСтрокаТЗ.СимвольныйКодВалюты = Элемент.VChCode;- Смотри выше.
НоваяСтрокаТЗ.КурсВалюты = Элемент.Vcurs;- Смотри выше.
С программным кодом немного разобрались, теперь нужно увидеть важный момент, который связывает программный код и созданную ранее ссылку.
Откройте и содержимое ссылки и содержимое кода. И там и там есть данные одни и те же, по которым происходит связь (Рисунок 8).
Обратите внимание на рисунок 8, там стрелками указаны данные, по которым происходит связь. Если данные будут отличаться, то платформа будет выдавать ошибку и ничего не будет работать.
Осталось теперь проверить работоспособность и выглядит она так (Анимация 1).
Таким образом, мы создали обработку, которая автоматически получает данные с центрального банка о курсе валют, но стоит только нажать кнопку для начала работы.
На этом статья урока подходит к концу. Попробуйте выполнить все действия, которые описаны в этом уроке. Если что-то не получается, то вы всегда сможете написать вопрос о том, что вам непонятно или вернуться к предыдущим урокам и посмотреть их - ссылки внизу!
Ссылка для вступления телеграм-канал - t.me.Apiscourses
Подписаться в группу ВКонтакте
Прошлые уроки:
На этом все. Жду Вас на следующем занятии.
P.S. Подписывайтесь на мой канал :-)
программирование программирование 1с 1с предприятие обучение онлайн обучение 1с
Читайте также: