|  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. | 
|  |