07.03.2007, 09:17 | #21 |
Участник
|
Цитата:
Интересно, а этот код сделан умозрительно или человек сторлкнулся с проблемой? |
|
07.03.2007, 12:54 | #22 |
Иван Захаров
|
|
|
07.03.2007, 14:08 | #23 |
Участник
|
Ну если полночь произойдет после whilt при выполнении return, то изврат не поможет.
проще так return [today(), timenow()]; |
|
07.03.2007, 14:11 | #24 |
Участник
|
Может когда время = полночь минус 1 минута, запускать sleep на 2 минуты?
А уже на второй минуте след. дня начинать то, чего там планировалось Последний раз редактировалось kashperuk; 07.03.2007 в 14:32. Причина: упс. очепятка |
|
07.03.2007, 14:30 | #25 |
Участник
|
Цитата:
Тут не главное, чтобы дата сопадала с чем-то - а главное, чтобы время дата относилась к тому времени которое обозначено. Чтобы не было 02.01.07 23:59 вместо 01.01.07 23:59 пусть лучше будет 02.01.07 00:01 |
|
07.03.2007, 14:44 | #26 |
Member
|
Да... программистский подход был у автора.
Я бы запомнил дату до и после запроса времени, если бы они отличались, то вывел бы полночь для второй даты, а если нет, то время и вторую дату. Вообще по БестПрактису код лучше писать наглядно (ну типа он без комментариев д.б. понятен). С очень высокой вероятностью если автору показать этот кусок кода через год после его написания и без предварительной подготовки (т.е. внезапно), он далеко не сразу сообразит, чего он им хотел добиться.
__________________
С уважением, glibs® |
|
07.03.2007, 15:05 | #27 |
Иван Захаров
|
Цитата:
// Получение текущей даты и времени с проверкой // на случай, что между вызовами today() и timenow() наступит новый день Их я опустил намеренно - чтобы всеобщий разум пошевелил извилинами. Вон EVGL "выдал" совершенно понятный код. |
|
07.03.2007, 15:09 | #28 |
Участник
|
лично мне исходный вариант нравится больше всего. По-моему всё понятно.
|
|
07.03.2007, 15:52 | #29 |
Member
|
Цитата:
Сообщение от ziva
...
А на этот случай перед методом имеются комментарии: ... Вообще по БестПрактису код лучше писать наглядно (ну типа он без комментариев д.б. понятен). ..." Для тех, кто перед праздником утратил бдительность, обращаю внимание, что я не против комментариев, а наоборот — за их использование. Но одно второму не мешает, и друг друга не исключает.
__________________
С уважением, glibs® |
|
07.03.2007, 16:13 | #30 |
Участник
|
любой вариант постребует комментариев на тему "зачем". Хотя мне и так было, в-общем, понятно. Достаточно просто задать себе вопрос при каких условиях условие в вайле будет тру.
|
|
07.03.2007, 16:24 | #31 |
Участник
|
Надо было labels сразу использовать, не пришлось бы менять )
__________________
_databaseTransDelete ... bl@$ ! |
|
07.03.2007, 16:27 | #32 |
Участник
|
Мне еще нравится подобная практика использования комментариев:
X++: info('@NEO258'); //DocuView
__________________
_databaseTransDelete ... bl@$ ! |
|
07.03.2007, 16:27 | #33 |
Banned
|
|
|
07.03.2007, 16:33 | #34 |
Участник
|
Если речь o vendors, inventory .. то это стандартные labels, в en-gb они соответственно suppliers, stock ..
__________________
_databaseTransDelete ... bl@$ ! |
|
|
За это сообщение автора поблагодарили: EVGL (-1). |
19.04.2007, 16:47 | #35 |
Banned
|
Как сделать 4 ошибки в слове "еще"?
Из Reports\JmgAbsenceColumn\fetch в 3.0:
X++: while select sum(seconds) from jmgStampTrans group by JobIDAbs where jmgStampTrans.emplId == _jmgEmployee.emplId && jmgStampTrans.startDate >= jmgReport_AbsenceColumn.parmDateFrom() && jmgStampTrans.startDate <= jmgReport_AbsenceColumn.parmDateTo() && jmgStampTrans.stampType == JmgStampTypeEnum::Absence { wrkIndex = str2Int(jmgStampTrans.jobIdAbs); if (! wrkIndex) wrkIndex = str2Int(jmgStampTrans.jobId); if ((wrkIndex) && (arrayIndex[wrkIndex])) sumSeconds[arrayIndex[wrkIndex]] += jmgStampTrans.seconds; } |
|
28.04.2007, 13:09 | #36 |
Участник
|
X++: void loadParam(container _param = conNull()) { int i; if (conLen(_param) > 0) { param = conNull(); for (i = 1; i <= conlen(_param); i++) { param = conIns(param, i, conPeek(_param, i)); } } } |
|
|
За это сообщение автора поблагодарили: kashperuk (1). |
28.04.2007, 13:14 | #37 |
Участник
|
Прикольная тема.
И особо мне нравится, как мне приходят уведомления о новых сообщениях в ней на почту. Название темы там отображается не так "The Daily Axapta WTF" а так |
|
28.04.2007, 13:36 | #38 |
Участник
|
Цитата:
Сообщение от EVGL
Из Reports\JmgAbsenceColumn\fetch в 3.0:
X++: while select sum(seconds) from jmgStampTrans group by JobIDAbs where jmgStampTrans.emplId == _jmgEmployee.emplId && jmgStampTrans.startDate >= jmgReport_AbsenceColumn.parmDateFrom() && jmgStampTrans.startDate <= jmgReport_AbsenceColumn.parmDateTo() && jmgStampTrans.stampType == JmgStampTypeEnum::Absence { wrkIndex = str2Int(jmgStampTrans.jobIdAbs); if (! wrkIndex) wrkIndex = str2Int(jmgStampTrans.jobId); if ((wrkIndex) && (arrayIndex[wrkIndex])) sumSeconds[arrayIndex[wrkIndex]] += jmgStampTrans.seconds; } Первая ошибка - простая. Не выбирается JobId А в чем вторая ошибка-то? Я же так понимаю ошибка должна быть именно в этой строке? И это ведь не вызов str2Int без проверки, что это таки число? И не длина строки? И не номерная серия? Просвети Последний раз редактировалось kashperuk; 28.04.2007 в 13:43. |
|
28.04.2007, 21:01 | #39 |
Banned
|
Вторая ошибка: JobId типа ProdJobId - это строка с обычной номерной серией, у которой вполне может быть буквенный префикс или суффикс, а они преобразуют его в индекс массива.
А в примере Белугина программист, похоже, был уверен, что контейнеры передаются по ссылке. Тяжелый случай. |
|
29.04.2007, 00:25 | #40 |
Участник
|
Цитата:
PS В четверке, кстати, у меня тоже так. Только что проверил. Последний раз редактировалось kashperuk; 29.04.2007 в 02:20. |
|