При добавлении функции загрузки Excel в запись табеля сотрудника поле ProjectTask не отображается - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть настройка экрана ввода данных о сотрудниках (EP305000), которая включает функцию загрузки в Excel в сетку вкладок Сведения.Я сделал это, добавив атрибут [PXImport (typeof (EPTimeCard))] к повторному объявлению представления «Деятельности» в расширении TimeCardMaint BLC следующим образом:

    [PXImport(typeof(EPTimeCard))]
    [PXViewName(PX.Objects.EP.Messages.TimeCardDetail)]
    public  PXSelectJoin<EPTimecardDetail,
            InnerJoin<CREmployee,
                On<CREmployee.userID, Equal<EPTimecardDetail.ownerID>>,
            LeftJoin<CRActivityLink,
                On<CRActivityLink.noteID, Equal<EPTimecardDetail.refNoteID>>,
            LeftJoin<CRCase,
                On<CRCase.noteID, Equal<CRActivityLink.refNoteID>>,
            LeftJoin<PX.Objects.AR.Customer,
                On<PX.Objects.AR.Customer.bAccountID, Equal<CRCase.customerID>>,
            LeftJoin<PX.Objects.EP.TimeCardMaint.ContractEx,
                On<PX.Objects.EP.TimeCardMaint.ContractEx.contractID, Equal<CRCase.contractID>>,
            LeftJoin<PMProject,
                On<PMProject.contractID, Equal<EPTimecardDetail.projectID>>>>>>>>,
            Where<CREmployee.bAccountID, Equal<Current<EPTimeCard.employeeID>>,
                And<EPTimecardDetail.weekID, Equal<Current<EPTimeCard.weekId>>,
                And<EPTimecardDetail.trackTime, Equal<True>,
                And<EPTimecardDetail.approvalStatus, NotEqual<ActivityStatusListAttribute.canceled>,
                And<Where<EPTimecardDetail.timeCardCD, IsNull, Or<EPTimecardDetail.timeCardCD, Equal<Current<EPTimeCard.timeCardCD>>>>>>>>>,
            OrderBy<Asc<EPTimecardDetail.date>>> Activities;

Я также установил свойство «AllowImport»сетки на «True».Кажется, это работает нормально, за исключением того, что поле «ProjectTask» загрузки не позволяет отображать - то есть, если вы проходите процесс импорта, когда вы попадаете в часть отображения полей, вы не можете отобразить поле Excel для ProjectTask.в ProjectTask сетки.Это просто не отображается.

Может ли это быть из-за того, что у исходного BLC есть метод делегата для «действий», которые я не воспроизводил в своем расширении?

В чем может быть причина запрета сопоставления с полем ProjectTask?

1 Ответ

0 голосов
/ 09 января 2019

Поскольку поле ProjectTask по умолчанию отключено, это было решено добавлением параметра в атрибут [ProjectTask], который называется «AlwaysEnabled», через событие CacheAttached, как показано ниже:

public class TimeCardMaint_Extension : PXGraphExtension<TimeCardMaint>
{
    [PXDefault(typeof(Search<PMTask.taskID, Where<PMTask.projectID, Equal<Current<TimeCardMaint.EPTimecardDetail.projectID>>, And<PMTask.isDefault, Equal<True>>>>), PersistingCheck = PXPersistingCheck.Nothing)]
    [ProjectTask(typeof(TimeCardMaint.EPTimecardDetail.projectID), 
        BatchModule.TA, 
        DisplayName = "Project Task", 
        BqlField = typeof(PMTimeActivity.projectTaskID),
        AlwaysEnabled = true)]
    protected virtual void EPTimecardDetail_ProjectTaskID_CacheAttached(PXCache cache)
    {
    }
...