06.02.2008, 16:56 | #1 |
Участник
|
непонятный результат str2date
Ax 3.0 SP4
непонятный результат выдает код: X++: static void Job(Args _args) {; info(strFmt("%1", str2date("CL1", 123))); } какие будут соображения по этому поводу? |
|
06.02.2008, 17:20 | #2 |
Участник
|
У меня на 5.0.452.0 не воспроизводится.
Видимо, баг. Смешной, но баг. Видимо уже починили. |
|
06.02.2008, 17:25 | #3 |
Axapta
|
DAX 4 SP1 не воспроизводится.
|
|
06.02.2008, 22:56 | #4 |
Участник
|
трудно объяснить, но в 3.0 SP5 такой код работает, и видимо, CL в распознается как последний день месяца %)
X++: static void test_CL(Args _args) { Date d = str2date("CL-2-2008",123); ; print date2str(d,123,1,1,3,1,4); print dayOfMth( d ); pause; } |
|
07.02.2008, 10:18 | #5 |
Участник
|
ax3kr2 - воспроизводится. Интересно, почему с другими буквами не работает. Или это римскими цыфрами?
|
|
07.02.2008, 10:28 | #6 |
Участник
|
|
|
07.02.2008, 10:34 | #7 |
Axapta
|
Ну и что, что последний. Или я чего не понял? Почему именно CL, какие есть еще комбинации букв?
|
|
07.02.2008, 10:45 | #8 |
Участник
|
мне кажется, это спецзначение.
Ведет себя как последний день месяца, но с ним не сравнивается: X++: str2date("29.02.2008", 123)==str2date("CL", 123) false str2date("29.02.2008", 123)==str2date("CL", 123)+1-1 true |
|
07.02.2008, 11:18 | #9 |
Участник
|
"OP" себя похоже ведет
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: belugin (1). |
07.02.2008, 11:53 | #10 |
Axapta
|
Угу, и других комбинаций больше нет.
X++: static void Jobeee(Args _args) { container c = ['a','b','c','d','e','f','j','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']; int length = conlen (c); int i = 1; int j; str s; ; while (i <= length) { j = 1; while (j <= length) { s = strFmt("%1", str2date(conpeek(c,i)+(conpeek(c,j)), 123)); if (s) info(s); j++; } i++; } } |
|
07.02.2008, 12:33 | #11 |
Участник
|
|
|
07.02.2008, 12:42 | #12 |
Axapta
|
Э?
info(strFmt("%1", str2date("d", 123))); => ' ' И трехбуквенных комбинаций уже нет таких. X++: static void Jobeee(Args _args) { container c = ['a','b','c','d','e','f','j','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']; int length = conlen (c); int i = 1; int j; int k; str s; void checkAndInfo (str _s) { if (s) info(s); } ; while (i <= length) { j = 1; s = strFmt("%1", str2date(conpeek(c,i), 123)); // Однобуквенные строки checkAndInfo (s); while (j <= length) { k = 1; s = strFmt("%1", str2date(conpeek(c,i)+conpeek(c,j), 123)); // Двухбуквенные строки checkAndInfo (s); while (k <= length) { s = strFmt("%1", str2date(conpeek(c,i)+conpeek(c,j)+conpeek(c,k), 123)); // Трехбуквенные строки checkAndInfo (s); k++; } j++; } i++; } } |
|
07.02.2008, 13:22 | #13 |
Участник
|
Это не спецсимволы.
Просто, так хитро отображается переполнение даты (точнее дней). Причем, до 64 дня включительно так и отображается - 64 февраля (или любой другой месяц) . А дальше выводится либо CL, либо OP. Для четверки это все так же верно, за исключением того, что этот вызов str2date("CL-2-2008",123) возвращает пустую дату (подозреваю, что и в пятерке так же). А вот небольшой демонстрационнй тестик X++: static void Job01Args _args) { Date d; int i; ; for (i=0;i<=0xff;i++) { [d] = ContainerClass::blob2Container( BinData::stringToData(strfmt("07036c01%1ff", int2hex(i, 2))) ); info(strfmt("%1 - %2 - %3", int2hex(i, 2), date2str(d,123,1,1,3,1,4), dayOfMth( d ))); } }
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: oip (2). |
07.02.2008, 13:31 | #14 |
Участник
|
Вынес вот сюда База знаний ERP : Axapta / Tip / date
|
|
07.02.2008, 14:16 | #15 |
Участник
|
Может, это ошметки старой функциональности, связанной с закрывающими периодами?
В Навижине можно записывать выражение для вычисления даты. Цитата:
Entering Dates and Times. There are many ways to enter a date in Navision Attain. Entering digits and letters are translated in the following ways:
Цитата:
The first entry MUST be posted on the last day of the current month and the Recurring Frequency should be either 1D+1M-1D or 1M+CM.
Но может это рудимент совсем старых версий для указания закрывающего (CLosing) периода? Сейчас для этих целей служат периоды совместно с интервалами дат. http://axapta.mazzy.ru/lib/ledgerperiodcode/ Т.е. d обрабатывается ядром на уровне GUI? Хм... Спасибо. |
|
07.02.2008, 14:31 | #16 |
Участник
|
Тогда OP - Operation Period?
Вполне возможно. В любом случае, не думаю, что эта фигня достойна исправления, если это вообще считать багом P.S. Хотя скорее даже OPening |
|
07.02.2008, 14:43 | #17 |
Участник
|
по документации неправильный формат даты должен возвращать пустую строку. OP не перечислен в форматах даты
|
|
07.02.2008, 14:46 | #18 |
Axapta
|
|
|
09.02.2008, 10:24 | #19 |
Участник
|
|
|
09.02.2008, 12:36 | #20 |
Участник
|
Job, приведенный AndyD выводит у меня и CL даты, и OP даты.
Но в обратную сторону уже это все не работает. |
|