重写CopyTask函数添加备注字段时遇'Tasks不存在'编译错误
Acumatica重写CopyTask函数解决'Tasks'上下文不存在错误
问题描述
为给任务添加备注字段,重写CopyTask函数时编写了如下代码:
public delegate PMTask CopyTaskDelegate(PMTask task, Int32 ProjectID, DefaultFromTemplateSettings settings); [PXOverride] public PMTask CopyTask(PMTask task, Int32 ProjectID, DefaultFromTemplateSettings settings, CopyTaskDelegate baseMethod) { PMTask dst = Tasks.Insert(new PMTask { TaskCD = task.TaskCD, ProjectID = ProjectID }); dst.RateTableID = task.RateTableID ?? Project.Current.RateTableID; ... }
运行时触发编译错误:
\App_RuntimeCode\ProjectEntry.cs(80): error CS0103: The name 'Tasks' does not exist in the current context
解决方案
在Acumatica的ProjectEntry图中,任务对应的数据视图标准名称是**Task(单数形式)**,而非代码中写的Tasks(复数)。只需将代码中的Tasks替换为Task即可解决该错误。
修改后的完整代码示例(含备注字段复制逻辑):
public delegate PMTask CopyTaskDelegate(PMTask task, Int32 ProjectID, DefaultFromTemplateSettings settings); [PXOverride] public PMTask CopyTask(PMTask task, Int32 ProjectID, DefaultFromTemplateSettings settings, CopyTaskDelegate baseMethod) { PMTask dst = Task.Insert(new PMTask { TaskCD = task.TaskCD, ProjectID = ProjectID }); // 复制费率表ID dst.RateTableID = task.RateTableID ?? Project.Current.RateTableID; // 复制备注字段(根据实际字段名调整,示例用NoteText) dst.NoteText = task.NoteText; // 其他字段复制逻辑... return dst; }
额外注意事项:
- 重写函数必须返回创建的任务对象
dst,否则会导致数据不完整 - 备注字段的具体名称需根据你使用的Acumatica版本确认,部分版本可能使用
NoteID关联备注记录,需对应处理
内容的提问来源于stack exchange,提问作者Xavier LARTEM
相关产品推荐
相关产品推荐

