SysDaQueryObject is also used instead of query class

 SysDaQueryObject   is used instead of Query and used for heavy operations

Example of  using SysDaQueryObject.

public void updateEmployeePosition(Common _table, str _mappingFieldStr, str _joinFieldStr)

    {

        Common              updateTable;

        DirPerson           person;

        HcmWorker           worker;

        HcmPosition         position;

        HcmPositionDetail   positionDetail;

        HcmJobDetail        jobDetail;

        str                 mappingField;

        str                 joinField;

        HcmPositionWorkerAssignment positionWorkerAssignment;

        ;



        updateTable     = _table;

        mappingField    = _mappingFieldStr;

        joinField       = _joinFieldStr;


        worker.skipDataMethods(true);

        person.skipDataMethods(true);

        position.skipDataMethods(true);

        updateTable.skipDataMethods(true);

        positionDetail.skipDataMethods(true);


        var updateTableUpdateObject     = new SysDaUpdateObject(updateTable);

        var workerQueryObject           = new SysDaQueryObject(worker);

        var positionQueryObject         = new SysDaQueryObject(position);

        var positionWorkerAssignmentQueryObject = new SysDaQueryObject(positionWorkerAssignment);


        

        /// Field Mapping Target and source

        updateTableUpdateObject.settingClause().add(mappingField, new SysDaFieldExpression(position, fieldStr(HcmPosition, PositionId)));


        // Join b/w tables

        updateTableUpdateObject.joinClause(SysDaJoinKind::ExistsJoin, workerQueryObject);

        workerQueryObject.joinClause(SysDaJoinKind::ExistsJoin, positionWorkerAssignmentQueryObject);

        positionWorkerAssignmentQueryObject.joinClause(SysDaJoinKind::ExistsJoin, positionQueryObject);


        updateTableUpdateObject.whereClause(

            new SysDaEqualsExpression(new SysDaFieldExpression(updateTable, joinField),

            new SysDaFieldExpression(worker, fieldStr(HcmWorker, PersonnelNumber))));


        workerQueryObject.whereClause(

            new SysDaEqualsExpression(new SysDaFieldExpression(worker, fieldStr(HcmWorker, RecId)),

            new SysDaFieldExpression(positionWorkerAssignment, fieldStr(HcmPositionWorkerAssignment, Worker))));


        positionWorkerAssignmentQueryObject.whereClause(

            new SysDaEqualsExpression(new SysDaFieldExpression(positionWorkerAssignment, fieldStr(HcmPositionWorkerAssignment, Position)),

            new SysDaFieldExpression(position, fieldStr(HcmPosition, RecId))));


        //SysDaValidTimeStateDateTimeRange    sysDaValidDateTime = new SysDaValidTimeStateDateTimeRange(currentDateTime, currentDateTime);

        //updateTableUpdateObject.validTimeState(sysDaValidDateTime);

                

        ttsbegin;

        new SysDaUpdateStatement().update(updateTableUpdateObject);

        ttscommit;

    }




Comments

Popular posts from this blog

How to Bypass Next in COC in D365 X++

create movement journal through code in d365 FO x++