|  31.01.2013, 15:30 | #1 | 
| Участник |  Сложный Range с датами 
			
			Делаю сложный Range c текстовыми полями типа X++: queryBuildRange.value(strFmt('((ItemType == %1) || (ItemId == "%2"))', queryValue("ААА")), queryValue("ВВВ"))); А вот задача отобрать два разных поля ArrivalDateTime и DepartureDateTime (типа DateTime) Одно поле без проблем: X++:  gbr.value   (strFmt (   '%1..%2',
                                SysQuery::value(DateTimeUtil::newDateTime(fromDateShiftOnly, 32400)),
                                SysQuery::value(DateTimeUtil::newDateTime(fromDateShiftOnly+1, 32400-1))
                            )
                    );
				__________________ Dynamics AX 2009 SP1, Rollup 5, SQL Server 2008 Хороший ученик во всем найдет себе учителя... | 
|  | 
|  31.01.2013, 15:47 | #2 | 
| Участник | 
			
			Как вариант, можно попробовать  X++: addRange( FieldNum( Table, dataAreaId ) ).value('(ArrivalDateTime == 01\01\1990 )||( DepartureDateTime == 01\01\1990)'); Последний раз редактировалось sparco; 31.01.2013 в 16:05. | 
|  | 
|  31.01.2013, 16:25 | #3 | 
| Участник | 
			
			Нужен вариант функции Date2StrXpp, но только для utcDateTime.
		 | 
|  | 
|  31.01.2013, 16:33 | #4 | 
| Участник | Цитата: Не проходит. Пробовал. Когда смотрю в дебагере вижу WHERE ((ArrivalDateTime = '1900-01-01T00:00:00')) С текстовыми полями проходит. Да и суть вопроса в том, что мне нужен диапазон: ArrivalDateTime с ... по... ИЛИ DepartureDateTime с... по Спасибо за помощь   
				__________________ Dynamics AX 2009 SP1, Rollup 5, SQL Server 2008 Хороший ученик во всем найдет себе учителя... Последний раз редактировалось Отшельник; 31.01.2013 в 16:36. | 
|  | 
|  31.01.2013, 16:35 | #5 | 
| Участник | X++: gbr.value   (strFmt (   '%1..%2',
                                SysQuery::value(DateTimeUtil::newDateTime(fromDateShiftOnly, 32400)),
                                SysQuery::value(DateTimeUtil::newDateTime(fromDateShiftOnly+1, 32400-1))
                            )
                    );
				__________________ Dynamics AX 2009 SP1, Rollup 5, SQL Server 2008 Хороший ученик во всем найдет себе учителя... | 
|  | 
|  31.01.2013, 16:40 | #6 | 
| Участник | Цитата: | 
|  | |
| За это сообщение автора поблагодарили: Отшельник (1). | |
|  31.01.2013, 16:58 | #7 | 
| Участник | 
			
			Вы наверное все же правы: Цитата: 
		
			Сообщение от S.Kuskov
			   Не, не путайте обычный синтаксис QueryRange и расширенный http://www.axaptapedia.com/Expressions_in_query_ranges Вот этот пример я и брал за основу X++: queryBuildRange.value(strFmt('((%1 == %2) || ((%1 == %3) && (%4 == "%5")))', fieldStr(InventTable, ItemType), any2int(ItemType::Service), any2int(ItemType::Item), fieldStr(InventTable, ProjCategoryId), queryValue("Spares"))); X++: QueryBuildRange gbr; ; ... gbr = this.query().dataSourceTable(tablenum(CheckpointTable_KBK)).addRange(fieldnum(CheckpointTable_KBK, ArrivalDateTime));//Дата и время Прибытия X++: gbr.value (strFmt ( '((%1 > %2) && (%1 < %3))', fieldStr(CheckpointTable_KBK, ArrivalDateTime), SysQuery::value(DateTimeUtil::newDateTime(fromDateShiftOnly, 32400)), SysQuery::value(DateTimeUtil::newDateTime(fromDateShiftOnly+1, 32400-1)) ) ); NAME: gbr VALUE: ((ArrivalDateTime > "15.01.2013 09:00:00") && (ArrivalDateTime < "16.01.2013 08:59:59")) TYPE: QueryBuildRange Вроде как бы все как надо, но данных нет. X++: gbr.value   (strFmt (   '%1..%2',
                                SysQuery::value(DateTimeUtil::newDateTime(fromDateShiftOnly, 32400)),
                                SysQuery::value(DateTimeUtil::newDateTime(fromDateShiftOnly+1, 32400-1))
                            )
                    );ArrivalDateTime>='2013-01-15T09:00:00' AND ArrivalDateTime<='2013-01-16T08:59:59' Выборка есть. Явно разнятся форматы времени и даты. 
				__________________ Dynamics AX 2009 SP1, Rollup 5, SQL Server 2008 Хороший ученик во всем найдет себе учителя... | 
|  | 
|  31.01.2013, 17:53 | #8 | 
| Участник | 
			
			Спасибо всем за выручку! Особое спасибо S.Kuskov Все получилось вот так: X++: gbr = this.query().dataSourceTable(tablenum(CheckpointTable_KBK)).addRange(fieldnum(CheckpointTable_KBK, ArrivalDateTime));//Дата и время Прибытия gbr.value (strFmt ( '((%1 > %3) && (%1 < %4)) || ((%2 > %3) && (%2 < %4))', fieldStr(CheckpointTable_KBK, ArrivalDateTime), fieldStr(CheckpointTable_KBK, DepartureDateTime), DateTimeUtil::toStr(DateTimeUtil::newDateTime(fromDateShiftOnly, 32400)), DateTimeUtil::toStr(DateTimeUtil::newDateTime(fromDateShiftOnly+1, 32400-1)) ) ); 
				__________________ Dynamics AX 2009 SP1, Rollup 5, SQL Server 2008 Хороший ученик во всем найдет себе учителя... | 
|  | |
| За это сообщение автора поблагодарили: kia (1). | |