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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.09.2010, 15:23   #1  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,449 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от lev Посмотреть сообщение
Вот конкретный пример:
Период1 = с 01.10.2010 00 : 00 по 01.10.2010 00 : 00 (понятно, что имеются ввиду одни сутки. Конечно можно сказать, что пользователь должен конечное время в периоде1 указать как 23 : 59, но пользователей много, за каждым не уследишь. Да и интуитивно, как мне кажется, человек считает сутками с 00 : 00 до 00 : 00, поэтому скорее всего рано или поздно так и поставит.)
Если я правильно вас понял то для правой границы периода необходимо сделать следуюшее допущение:
если время нулевое 00:00, то считаем время равным 59:59.
Так? Уточняющий вопрос. Такое допущение должно быть справедливо всегда или только если дата оконьчания совпадает с датой начала периода?
т.е. как рассматривать период [01.10.2010 00:00 - 02.10.2010 00:00]
как [01.10.2010 00:00 - 02.10.2010 00:01) или
как [01.10.2010 00:00 - 02.10.2010 59:59] или
как [01.10.2010 00:00 - 01.10.2010 59:59] ?

При такой формулировке задачи, в любом случае, я бы не стал сохранять и использовать в условии те даты, которые ввёл пользователь. Что вам мешает перед обработкой/сохранением данных скорректировать их в правильный формат?

Последний раз редактировалось S.Kuskov; 30.09.2010 в 15:26.
Старый 30.09.2010, 15:34   #2  
Atar is offline
Atar
Консультант
 
287 / 101 (4) +++++
Регистрация: 10.03.2006
Адрес: Москва
Цитата:
Сообщение от lev Посмотреть сообщение
Период1 = с 01.10.2010 00 : 00 по 01.10.2010 00 : 00 (понятно, что имеются ввиду одни сутки.
Далеко не всем это понятно, по крайней мере без контекста . Да и ваши пользователи вряд ли имеют проблемы при вводе границ диапазонов "с 1 января года1 по 31 декабря года1", а не "с 1 января года1 до 1 января года2"...
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Если я правильно вас понял то для правой границы периода необходимо сделать следуюшее допущение: если время нулевое 00:00, то считаем время равным 59:59.
Так? Уточняющий вопрос. Такое допущение должно быть справедливо всегда ...?
Подозреваю что да. Это чтобы сохранить преемственность с порядком назначения диапазонов исключительно датами (с 01.10.2010 по 01.10.2010). Но это приведет к неадекватному для "нормальных" пользователей поведению системы, когда диапазон
с 01.10.2010 10:00 по 02.10.2010 00:00
достаточно неожиданно оказывается больше, чем
с 01.10.2010 10:00 по 02.10.2010 11:11
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
При такой формулировке задачи, в любом случае, я бы не стал сохранять и использовать в условии те даты, которые ввёл пользователь. Что вам мешает перед обработкой/сохранением данных скорректировать их в правильный формат?
Действительно, если нерадивый пользователь введет "нулевой" диапазон, то ему сразу можно показать, что система этот диапазон воспринимает по-своему.

Более того, можно, конечно пытаться ещё и интервалы с 10:00 до 10:00 (рабочая суточная смена) пытаться автоматически воспринимать как с 10:00 по 09:59. Тоже на мой взгляд, неправильно зашивать это в глубине системы.

Ведь в случае таких вмешательств может получиться, что один отчет/запрос будет работать по явно введёному пользователем диапазону, а другой - по хитро обработанному. Не есть гуд.
Извините за флуд, не удержался.

Последний раз редактировалось Atar; 30.09.2010 в 15:46. Причина: Извините за флуд, не удержался.
Старый 30.09.2010, 15:51   #3  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Такое допущение должно быть справедливо всегда или только если дата оконьчания совпадает с датой начала периода?
всегда

Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
т.е. как рассматривать период [01.10.2010 00:00 - 02.10.2010 00:00]
в этом случае отработает условие:
X++:
2.FromDate   <  1.ToDate
и дальше по или не пойдет, т.е. такой случай тоже отработает корректно.
02.10.2010 00:00 - это 02.10.2010 00:00
когда пользователь устанавливает конечную дату больше чем начальную, то с указанием времени у него проблем не возникает (не спрашивайте почему, сам не знаю, но практика показывает что так оно и есть)
а вот в случае периода в рамках одних суток, случается ситуация которую описал я выше.

Про авто подстановку правильного формата тоже думал, но тогда встает вопрос, а если пользователю действительно надо будет указать "00 : 00", тогда что?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Теги
ax2009, ax4.0, utcdatetime, время, дата

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axaptabuilder: How to build Axapta application from XPO files stored in Visual Source Safe. Blog bot DAX Blogs 0 22.11.2006 15:20
Говорят вышел SP2 для Axapta 3. Кто нибуть что знает на эту тему? soin DAX: Прочие вопросы 10 13.10.2003 10:43
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

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

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

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