|  25.05.2004, 13:59 | #1 | 
| Участник |  addRange; AND vs OR 
			
			... qbr = qbds.addRange(FieldNum(InventTrans, StatusReceipt)); qbr.value(enum2str(StatusReceipt::Purchased)); qbr = qbds.addRange(FieldNum(InventTrans, StatusIssue)); qbr.value(enum2str(StatusIssue::Sold)); Аксапта формирует запрос так ...((StatusReceipt = Закуплено) AND (StatusIssue = Продано)) А мне надо сделать не AND, а OR! Неужели это невозможно? | 
|  | 
|  25.05.2004, 14:09 | #2 | 
| Модератор | 
			
			Developer's Guide -> Creating queries -> Query basics -> Organization of queries -> Ranges
		 | 
|  | 
|  25.05.2004, 14:22 | #3 | 
| Участник | 
			
			Посмотрел в Developer's Guide -> Creating queries -> Query basics -> Organization of queries -> Ranges, там ответа на мой вопрос нет. Так значит невозможно? | 
|  | 
|  25.05.2004, 14:22 | #4 | 
| Участник | |
|  | 
|  25.05.2004, 14:29 | #5 | 
| Участник | 
			
			Насколько я понимаю на http://axapta.mazzy.ru/hints/search/ рассматривается случай когда добавляется несколько Range на одно поле в таблице. А в моем вопросе добавляются два Range на разные поля. | 
|  | 
|  25.05.2004, 14:46 | #6 | 
| Модератор | Цитата: 
		
			Изначально опубликовано diviza  А в моем вопросе добавляются два Range на разные поля. Тогда Best Practices -> Shared standards -> X++ standards -> Query programming -> Advanced query range value expressions   | 
|  | 
|  25.05.2004, 15:25 | #7 | 
| Участник | Цитата: 
		
			Изначально опубликовано diviza  А в моем вопросе добавляются два Range на разные поля. | 
|  | 
|  26.05.2004, 08:04 | #8 | 
| Участник | Цитата: 
		
			Изначально опубликовано mazzy  А вы попробуйте ... qbr = qbds.addRange(FieldNum(InventTrans, StatusReceipt)); qbr.value(strfmt("%1 || %2 = %3", enum2str(StatusReceipt::Purchased), FieldStr(InventTrans, StatusIssue), enum2str(StatusIssue::Sold))); ... // вместо || ставил и OR В отладчике получаю: ... ((StatusReceipt = Закуплено || StatusIssue = Продано)) ... При мониторинге запросов SQL получаю в лог файле: ... AND (B.STATUSRECEIPT=255) ... Естественно, это не тот результат который я хотел получить. Где же ошибка? | 
|  | 
|  26.05.2004, 10:18 | #9 | 
| Участник | 
			
			Внимательнее читаем Best Practice (в совете Сергея, это также процитировано). Цитата: 
		
			In x++ you can use for example int2str to convert an enumerated value to the suitable numeric format.
		
	 PHP код: 
			PHP код: 
			 | 
|  | 
|  26.05.2004, 10:42 | #10 | 
| Участник | Цитата: 
		
			Изначально опубликовано dn  ... вместо enum2str(StatusReceipt::Purchased) нужно использовать int2str(StatusReceipt::Purchased) PHP код: 
			... ((StatusReceipt = 1 || StatusIssue = 1)) ... При мониторинге запросов SQL опять получаю в лог файле: ... AND (B.STATUSRECEIPT=255) ... С тем же результатом   | 
|  | 
|  26.05.2004, 10:54 | #11 | 
| ---------------- | 
			
			Чувствую, пора вмешаться PHP код: 
			 | 
|  | 
|  26.05.2004, 11:05 | #12 | 
| Участник | 
			
			Откройте всё-таки на досуге Best Practice. Там много чего полезного. И даже примеры есть... PHP код: 
			 | 
|  | 
|  26.05.2004, 11:28 | #13 | 
| Участник | 
			
			Всем спасибо! Получилось.   p.s. Что интересно, что верно как "=" (см. ответ Wamr), так и "==" (см. ответ dn). Ранее я пробовал такой вариант "(%1 == %2)||(%3 == %4)", но почему-то не догадался поставить внешнюю пару скобок.   | 
|  | 
|  26.05.2004, 13:03 | #14 | 
| Участник | 
			
			А как быть если требуется like? вариант "((%1 like %2)||(%3 like %4))" как и сказано в http://axapta.mazzy.ru/hints/search/ не работает | 
|  |