需求:现有量窗体上新增物料组和物料名称,并且可以按照物料组筛选。
现有量窗体的数量是按照物料和维度合计出来的,所以向这个窗体添加字段需要对字段做Group by才能正常显示。纪录下相关代码,以便以后使用。
1. 新建View:
2. 将View添加到现有量窗体的Datasource里。
3. 扩展类InventDimCtrl_Frm_OnHand,COC 方法:modifyQueryBasedOnDatasourceName(注意:InventItemGroupItem和InventTable的关系是ItemId和ItemDataAreaId,所以需要添加ItemDataAreaId的GroupBy)
next modifyQueryBasedOnDatasourceName(_inventSum_DS_Query, _inventSum_DS_Name, _inventDim_DS);
Query query = _inventSum_DS_Query;
QueryBuildDataSource qbsSum = query.dataSourceName(_inventSum_DS_Name);
qbsSum.addGroupByField(fieldNum(InventSum,DataAreaId));
QueryBuildDataSource qbdsInventItemGroupItem = query.dataSourceName(identifierStr(InventItemGroupItemNameView));
SysQuery::findOrCreateGroupByField(query, qbdsInventItemGroupItem, fieldNum(InventItemGroupItemNameView, ItemGroupId));
SysQuery::findOrCreateGroupByField(query, qbdsInventItemGroupItem, fieldNum(InventItemGroupItemNameView, Name));
4. 扩展InventOnHandForm,COC init()。
FormDataSource inventItemGroupItem_ds = this.dataSource(formDataSourceStr(InventOnhandItem, InventItemGroupItemNameView));
QueryBuildDataSource inventItemGroupItem_qbds = inventItemGroupItem_ds.query().dataSourceName(inventItemGroupItem_ds.name());
SysQuery::findOrCreateRange(inventItemGroupItem_qbds, fieldNum(InventItemGroupItemNameView, ItemGroupId));
inventItemGroupItem_qbds.addSortField(fieldNum(InventItemGroupItemNameView, ItemGroupId));