|
21.12.2009, 17:45 | #1 |
Moderator
|
Еще один импорт курсов валют
GMCS представляет бесплатный сервис для импорта курсов валют в Microsoft DAX для тех, у кого ограничен доступ в интернет.
Созданный с использованием этого сервиса файл содержит курсы всех валют, данные о которых предоставляет сайт Центробанка за выбранный пользователем период дат, и может быть импортирован в систему с помощью разработанного нами проекта, который прикреплен к данному сообщению. Установка Проект не перекрывает стандартные объекты системы, что позволяет безболезненно импортировать его практически на любое приложение. После импорта необходимо добавить два пункта меню (MunuItem), входящие в состав проекта, в меню системы. Проект тестировался на Axapta 4 SP2. Настройка Настройка решения заключается в установке соответствия между кодами валют с сайта Центробанка и кодами валют в системе: Перечень валют, курсы которых предоставляет сайт Центробанка можно скачать по ссылке и импортировать в систему, нажав клавишу "Взять из файла". При сохранении файла убедитесь, что он сохранился в формате XML. Использование 1. Создаем файл, содержащий курсы валют за выбранный диапазон дат и загружаем его. 2. Открываем форму "Импорт котировок ЦБ": 3. Выбираем загруженный файл. В случае указания определенного кода валюты будет импортирован только ее курс. Если же поле ввода оставили пустым будут обновлены курсы всех валют для которых настроено соответствие их кодов (см. пункт Настройка). При загрузке курсов импортируются данные только за те даты, курсы на которые отсутсвуют в системе. Если курс в системе отличается от курса в файле данных система просто выдаст предупреждение, но не будет перезаписывать уже существующие в системе данные. Все вопросы и замечания относительно проекта можно оставлять мне в этой ветке. Сервис предоставляется "как есть". Компания GMCS не несет ответственности за достоверность информации, содержащейся в файле, но готова оперативно обновлять сервис или исправлять ошибки, если они возникнут из-за изменения форматов предоставления данных официальными источниками. В случае обнаружения ошибки просто свяжитесь с нами. Последний раз редактировалось Андре; 21.12.2009 в 17:50. |
|
21.12.2009, 17:46 | #2 |
Moderator
|
Сам проект
Проект от 22 декабря (17:00).
Последний раз редактировалось Андре; 22.12.2009 в 17:05. |
|
21.12.2009, 22:22 | #3 |
Участник
|
В GMCS стало все настолько плохо, что вы готовы раздавать свои доработки бесплатно ?
|
|
21.12.2009, 22:39 | #4 |
Moderator
|
Скорее даже наоборот - мы чувствуем себя достаточно уверенно для того, чтобы пробовать для себя новые варианты взаимодействия с рынком.
|
|
22.12.2009, 10:43 | #5 |
Участник
|
Разрешите побрюзжать :
1 - на одной форме центробанк сокращен как "ЦБР", а на другой как "ЦБ" 2 - заголовок к форме настройки: по-русски правильно "соответствие кодов.. кодам", а не "соответствие кодов.. с кодами.." updated: формы выбора файлов для загрузки списка валют и для загрузки курсов по-разному обрабатывают кнопку "Отмена": загрузка курсов просто закрывает форму (что правильно), а загрузка валют ругается "Ошибка импорта" (что неверно). Такое ощущение, что список валют и их загрузку писал один программист, а загрузку курсов - другой. Последний раз редактировалось Zabr; 22.12.2009 в 11:02. |
|
|
За это сообщение автора поблагодарили: Андре (2). |
22.12.2009, 10:51 | #6 |
Moderator
|
Судя по заданным мне вопросам из описания не очень понятно - зачем, собственно, нужен этот сервис.
Дело в том, что у нас есть ряд клиентов, у которых интернет, в общем то, есть, но не в той сетке, где установлена Axapta. DMZ, например. Этим клиентам подошел бы вариант со скачиванием файла с данными и последующим импортом данных в систему, но мы не нашли сервиса центробанка, который бы выдавал курсы всех валют за запрошенный диапазон дат. Либо все валюты на дату, либо одна валюта на диапазон дат. Если у клиента в системе 20 валют, то скачивать и импортировать 20 файлов будет не очень удобно, поэтому наш сервис запрашивает 20 XML-файлов у центробанка, собирает из них один XML-файл и отдает его посетителям для последующего импорта в систему. |
|
22.12.2009, 11:22 | #7 |
Moderator
|
Цитата:
Разрешите побрюзжать
Чуть позже, когда наберется побольше замечаний выложим поправленную версию. |
|
22.12.2009, 14:12 | #8 |
Участник
|
Цитата:
Содержание кода не выдерживает критики ни в плане единого стиля в рамках проекта, ни в плане стиля стандартной аксапты. По факту получается, что, помимо бета-тестирования, вы невольно организовали также "бета-кодревьюинг", так как "ляпов" немало (отсутствие меток, форма не ресайзится, грамматические ошибки, префиксы новых объектов в разном регистре - GM_ и gm_ и т.д.) |
|
22.12.2009, 14:30 | #9 |
Участник
|
|
|
22.12.2009, 12:01 | #10 |
Axapta
|
Еще совсем мелкие замечание. У формы неплохо бы сделать column width и column height, у таблицы GM_AxCurCode2CBRCurCode поля CurrencyCode и CBRCurrencyCode по логике должны быть мандатори. В проекте в трех местах используются метки @GMC*, однако меточного файла не приложено, да и в других местах метки не используются. Надо бы однообразие. Или метки и меточный файл или везде текст.
Форма сейчас работает по совсем неочевидной для пользователя логике. Создаем записи, задав только CurremcyCode, но при следующем открытии формы она откроется пустой из-за ренджа в ините, но создавать новые записи уже не получится, так как в таблице они есть. Надо бы как-то иначе. Upd. Ой, не так с мандатори . CBRCurrencyCode == "" - это RUR? Тоже не очень прозрачно и хорошо. Последний раз редактировалось oip; 22.12.2009 в 12:16. Причина: Update. |
|
|
За это сообщение автора поблагодарили: Андре (2). |
22.12.2009, 12:10 | #11 |
Участник
|
|
|
22.12.2009, 12:14 | #12 |
Участник
|
|
|
22.12.2009, 12:37 | #13 |
Участник
|
Цитата:
А еще: и при импорте списка валют, и при импорте курсов - можно указать неправильное (несуществующее) имя файла, нажать ОК и получить вместо сообщения об ошибке сообщение "импорт завершен". Как будто все в порядке. Какая тут есть опасность: например, кто-то регулярно выгружает файл с курсами, а задание на загрузку в Аксапте стоит в пакете. Если изменится местоположение каталога для выгрузки или файл назовут неправильно, а пакет продолжает работать, то никто не узнает, что файл перестал загружаться. Последний раз редактировалось Zabr; 22.12.2009 в 12:49. |
|
22.12.2009, 12:15 | #14 |
Axapta
|
|
|
|
За это сообщение автора поблагодарили: Zabr (1). |
22.12.2009, 14:37 | #15 |
Axapta
|
Если уж совсем по мелочам, чтоб причесать, то есть два соседних метода...
X++: static GM_AxCurCode2ExtCurCode find(CurrencyCode _currencyCode) { gm_AxCurCode2ExtCurCode gm_AxCurCode2ExtCurCode; ; select gm_AxCurCode2ExtCurCode where gm_AxCurCode2ExtCurCode.CurrencyCode == _currencyCode; return gm_AxCurCode2ExtCurCode; } X++: static GM_CBRCurrencyCode FindCBRCurrencyCode(CurrencyCode _currencyCode) { GM_AxCurCode2ExtCurCode gm_AxCurCode2ExtCurCode; ; select gm_AxCurCode2ExtCurCode where gm_AxCurCode2ExtCurCode.CurrencyCode == _currencyCode; return gm_AxCurCode2ExtCurCode.CBRCurrencyCode; } |
|
|
За это сообщение автора поблагодарили: EAlex (1). |
22.12.2009, 15:01 | #16 |
Участник
|
Не, убирать может и не нужно, но переназвать и переписать используя find стоит
X++: static GM_CBRCurrencyCode CBRCurrencyCode(CurrencyCode _currencyCode) { return GM_AxCurCode2ExtCurCode::find(_currencyCode).CBRCurrencyCode; } P.S.: Ещё немного и к теме можно будет добывить тег: "законченный пример" |
|
|
За это сообщение автора поблагодарили: Андре (2). |
22.12.2009, 15:12 | #17 |
Axapta
|
А зачем он? Вызывается один раз и возвращает просто поле самой таблицы.
Ну, еще немного кодревью... Ну там подчеркивания в передаваемых параметрах в методах, импорт, вероятно, лучше делать в транзации, где-то там в паре мест при делении на переменную не проверяется, что у нее ненулевое значение, зачем-то объявляется переменная с начальным значение false, хотя оно и так false... Есть еще разные мелочи. |
|
22.12.2009, 15:40 | #18 |
Участник
|
Ну на сколько я понял весь смысл этой таблица - служить интерфейсом преобразования из одного формата кодирования валюты в другой. Так что с перспективой на возможное развитие проекта почему бы не предоставить глобальную функцию преобразования
X++: CBRCurrencyCode = GM_AxCurCode2ExtCurCode::CBRCurrencyCode(CurrencyCode) У такого подхода есть плюсы. Отсекается возможность случайно забытой инициализации и как следствие код лучше читается. Ну и потом пароноидальные мании... на компилятор надейся, а сам не плошай Я сам стараюсь не использовать не инициализарованные переменные. |
|
|
За это сообщение автора поблагодарили: belugin (0). |
22.12.2009, 15:45 | #19 |
Участник
|
Коллективный рефакторинг и новые варианты взаимодействия с рынком.
+5 копеек, по мелочи, ИМХО, вместо clicked на кнопке формы, начальный импорт кодов, теоретически, должен быть отдельным RunBase классом, а не вызывать "волшебный" статический метод fillCBRCurrencyCodeFromInternet, который к слову не "фром интернет", а "фром локал файл"
В объявлении класса gm_GetCurrencyFromFileCBR есть поля dialogDateFrom, dialogDateTo, которые нигде больше не используются, так же зачем-то там-же объявили саму переменную dialog. |
|
|
За это сообщение автора поблагодарили: Андре (2). |
22.12.2009, 17:20 | #20 |
Moderator
|
Цитата:
Честно говоря, на вашем месте (я имею ввиду GMCS) я бы уделил больше времени подготовке подобного проекта.
Цитата:
По факту получается, что, помимо бета-тестирования, вы невольно организовали также "бета-кодревьюинг", так как "ляпов" немало (отсутствие меток, форма не ресайзится, грамматические ошибки, префиксы новых объектов в разном регистре - GM_ и gm_ и т.д.)
Цитата:
Сколько программистов будет уволено из GMCS по результатам разбора примера ?
Цитата:
...еще одно доказательство что несколько разных программистов работало над проектом. Хотя, казалось бы, небольшая ведь разработка...
Согласен, что перед выкладыванием решения на форум я уделил недостаточно времени "чистке коду". На будущее постараюсь учесть. |
|
Теги |
скачать (download), курс |
|
Похожие темы | ||||
Тема | Ответов | |||
Импорт курса валют | 18 | |||
Загрузка курсов валют | 5 | |||
Кэширование курсов валют | 8 | |||
Закачка курсов валют с Интернета. | 1 | |||
Импорт из текстового файла - один их вариантов. | 5 |
|