![]() |
#3 |
Moderator
|
Цитата:
Припоминаю похожее обсуждение на эту тему: dateNull() и endMth() P.S. Хм... интересно, что Аксапта, похоже, проверяет литерал даты на корректность не как единую дату, а по отдельности - день, месяц, год. При этом дни считаются корректными в диапазоне от 1 до 31 для ЛЮБОГО (!) месяца. Поэтому становится возможным ввести дату 31 февраля 2009 года. При этом функция date2num возвращает целое значение для ближайшего предыдущего реально существующего дня, т.е. для 28.02.2009. И лишь 32-е февраля наконец-таки вызывает ошибку компиляции: X++: static void Job192(Args _args) { ; info(strFmt('27 - %1', date2num(27\02\2009))); // 39869 info(strFmt('28 - %1', date2num(28\02\2009))); // 39870 info(strFmt('29 - %1', date2num(29\02\2009))); // 39870 -- несуществ. info(strFmt('30 - %1', date2num(30\02\2009))); // 39870 -- несуществ. info(strFmt('31 - %1', date2num(31\02\2009))); // 39870 -- несуществ. //info(strFmt('32 - %1', date2num(32\02\2009))); -- ошибка компиляции info(strFmt('01 - %1', date2num(01\03\2009))); // 39871 } Последний раз редактировалось Gustav; 09.07.2009 в 10:09. |
|