|  05.05.2021, 20:25 | #1 | 
| Участник | D365 Query Range на Datasource с Outer join 
			
			D365 Создаю батч джоб (с помощью SysOperation - Сервис клас и дата контракт) c Query. Query создан в AOT - два datasource с Outer join. Range добавленный в AOT на второй datasource (child) не отображается при первом запуске. Точнее отображается в диалоге самого батча, но не отображается в настройках фильтров (кнопка Filter). В ручную пользователь может добавить этот range и оно вроде даже работает. В коде нашел что все range на Outer join datasource делаются невидимыми. Что это такое? Лучше вообще не использовать Outer join и просто добавить поля для фильтров в сам диалог? Не понимаю для чего сделано такое ограничение Class: SysQueryForm.getRangeVisible X++: dictTable = new DictTable(queryBuildDataSource.table()); if (dictTable && dictTable.isView() && SysQueryForm::isSFK(tableId, fieldId)) { isVisible = NoYes::No; } else if (joinMode == JoinMode::OuterJoin) { isVisible = NoYes::No; } else { | 
|  | 
|  05.05.2021, 20:30 | #2 | 
| Участник | 
			
			На outerjoin нужно фильтр добавлять (QueryBuildFilter) что пользователь и делаеть через интерфейс.
		 | 
|  | |
| За это сообщение автора поблагодарили: DAX (1). | |
|  05.05.2021, 20:34 | #3 | 
| Участник | 
			
			блин точно, жаль в AOT нет такой возможности. Придется код писать
		 | 
|  | 
|  05.05.2021, 23:10 | #4 | 
| Участник | 
			
			Может кому пригодится. Добавил в декларацию data contract X++: implements SysOperationInitializableX++: public void initialize() { Query q = new Query(SysOperationHelper::base64Decode(packedQuery)); q.addQueryFilter(q.dataSourceTable(tableNum(Table)), fieldStr(Table, Field)); packedQuery = SysOperationHelper::base64Encode(q.pack()); } | 
|  | 
|  | 
| 
 |