AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Администрирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.11.2011, 18:15   #1  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
csv и загрузка в поле с типом время
Как можно загрузить из csv поле со временем.
Формат 9:00 в поле с типом timeofday грузится как 0, хотя и на просмотре в настройках это 9. Минуты вообще не получается увидеть.
Старый 06.11.2011, 19:53   #2  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
В AX время - это целочисленные данные, число секунд от полуночи. От этого и отталкивайтесь.
Старый 07.11.2011, 14:45   #3  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Берем дробную чась даты, умножаем на 86400 (24*60*60), округляем до целого и пишем полученное значение в csv, а потом уже грузим в поле времени в Ax.
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 07.11.2011, 20:41   #4  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
По-моему, тот или иной импорт (коих может быть очень много) должен быть максимально абстрагирован от подобных заморочек с преобразованием типов - в данном случае из строки во время. Подобные заморочки должны быть вынесены в некий специализированный класс, и кое-что уже готовое даже есть: Класс для преобразования значений между различными значимыми типами
Старый 07.11.2011, 22:05   #5  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Практически любой импорт - индивидуальная вещь, а то и вещь для однократного использования. Редко бывает выгода от абстракций.
Старый 07.11.2011, 23:15   #6  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Не могу согласиться У меня как-то получилось так, что куча импортов из файлов работает в конечном счете с той или иной таблицей (пусть и временной), под такой случай получилось несколько базовых классов:
  • абстрактный импорт из файла на стороне клиента: по принципу работы RunBase.prompt() умеет переключаться на клиента для считывания данных в Map, который затем затягивается на сервер для дальнейшей обработки;
  • на базе него абстрактный импорт полей записи; класс-наследник должен определиться с тем, в какую таблицу какие поля из каких номеров "колонок" считывать, какие поля обязательны к заполнению (если они окажутся пустыми, импорт на стороне клиента завершится), а также (та-да!) переопределить метод, считывающий из указанной колонки значение указанного базового типа. Класс, в свою очередь, через Dict-классы определяет, как какое поле считывать, до скольки символов обрезать строки, выполняет все сопутствующие проверки, кэширует нужные метаданные для ускорения и т.п.
  • на базе него абстрактный класс импорта записей: тут добавляется кое-какая логика по пред- и постобработке записей, корректировке считанных значений полей (скажем, валютные суммы могут округляться с выводом соотв. предупреждений), сохранении считанных записей в RecordSortedList для выявления дубликатов и/или обработки в нужном порядке.
Плюс к этому еще есть класс-наследник, реализующий на базе этого всего импорт из файлов Excel. Так вот, обычно импорт в ту или иную конкретную таблицу либо реализует целиком всю остальную логику, т.е. фактически указывает, что в такую-то таблицу надо считать такие-то поля, а в остальном просто обрабатывает считанные табличные записи, либо разбивается на два класса: некий, опять же, абстрактный импорт для той или иной таблицы (обычно это строки журналов) и на базе него - уже некий обработчик, скажем, для того или иного типа журналов.
За счет этого:
  • оптимизируется клиент-серверное взаимодействие, вся основная работа, все "тяжелые" проверки производятся на сервере;
  • легко и просто ловится "конец файла" (скажем, в Excel-файлах пользователи любят протягивать значения ряда колонок до самого низа, хотя импортят 10-20 строк, а так нет значений обязательных полей - значит, пора закругляться);
  • в каждом новом импорте можно использовать кучу готового проверенного кода и абстрагироваться от того, откуда или как считываются данные. К примеру, импорт строк журналов ГК из Excel изначально работал через ADO, потом меня забодало бороться с "особенностями" последнего, и я его переписал на SysExcel, а того, в свою очередь, с COM на .NET - все остальные импорты, работающие со строками журналов ГК, при этом никак затронуты не были, но начали работать "на новых рельсах".
Но это все, конечно, - из разряда импортов, используемых каждый день; однако, даже в тупых джобах, лопатящих контейнеры, полученные из AsciiIo, хочется абстрагироваться от таких вот заморочек, хочется не придумывать в ндцатый раз, как корректно считать из файла значение типа enum и т.п.

Последний раз редактировалось gl00mie; 07.11.2011 в 23:20.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
DAX2009 зафиксировать дату и время сеанса Raven Melancholic DAX: Функционал 3 25.04.2011 16:26
Не могу добавить поле с типом RecId Prophetic DAX: Программирование 3 12.04.2010 14:15
сопоставление оплат клиента, переносов сальдо-поле накладная в общем журнале? Aquarius DAX: Функционал 3 28.01.2009 12:51
Время по графику и фактическое время работы в табеле nicko DAX: Функционал 0 09.02.2005 15:24
Поле с типом "Время" Кирилл DAX: Программирование 9 06.05.2004 10:53

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:35.