Как мне отредактировать расширение BLC, которое является частью готового Acumatica, в частности SM_CRCaseMaint.cs? - PullRequest
0 голосов
/ 23 октября 2018

Мне нужно добавить логику в действие CreateServiceOrder, которое отображается на экране CRCaseMaint.Я обнаружил, что логика действительно существует в файле с именем SM_CRCaseMaint.cs в классе, который является расширением CRCaseMaint.Этот файл является частью базовой Acumatica, поэтому он уже является расширением, но его нельзя редактировать напрямую, не рискуя потерять изменения при обновлении экземпляра.Когда я пытаюсь создать расширение графика:

enter image description here

я получаю сообщение об ошибке:

enter image description here

Можно ли как-нибудь отредактировать эту страницу?

1 Ответ

0 голосов
/ 23 октября 2018

Согласно ответу Брендана здесь , начиная с Acumatica версии 2018R1 с обновлением 4 (18.104.0023), вы можете переопределить или переопределить содержимое расширения графика, поставляемого с продуктом.

Iсделал тест с действием CreateServiceOrder в версии 2018R2, и это сработало.Отладчик перешел к переопределенному действию, когда я вызвал действие Создать заказ на обслуживание из дела:

using PX.Data;
using PX.Objects.FS;

namespace PX.Objects.CR
{
    public class CRCaseMaint_Extension : PXGraphExtension<CRCaseMaint>
    {
        [PXCopyPasteHiddenView]
        public PXFilter<FSCreateServiceOrderOnCaseFilter> CreateServiceOrderFilter;

        public PXAction<CRCase> CreateServiceOrder;
        [PXButton]
        [PXUIField(DisplayName = "Create Service Order", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)]
        public virtual void createServiceOrder()
        {
            CRCase crCaseRow = Base.Case.Current;
            FSxCRCase fsxCRCaseRow = Base.Case.Cache.GetExtension<FSxCRCase>(crCaseRow);

            if (CreateServiceOrderFilter.AskExt() == WebDialogResult.OK)
            {
                Base.Case.SetValueExt<FSxCRCase.sDEnabled>(crCaseRow, true);
                Base.Case.SetValueExt<FSxCRCase.branchLocationID>(crCaseRow, CreateServiceOrderFilter.Current.BranchLocationID);
                Base.Case.SetValueExt<FSxCRCase.srvOrdType>(crCaseRow, CreateServiceOrderFilter.Current.SrvOrdType);
                Base.Case.SetValueExt<FSxCRCase.assignedEmpID>(crCaseRow, CreateServiceOrderFilter.Current.AssignedEmpID);
                Base.Case.SetValueExt<FSxCRCase.problemID>(crCaseRow, CreateServiceOrderFilter.Current.ProblemID);
                Base.Case.Cache.SetStatus(crCaseRow, PXEntryStatus.Updated);
                Base.Save.Press();
            }
        }
    }
}
...