Skip to main content

Notifications

Announcements

No record found.

Finance | Project Operations, Human Resources, ...
Suggested answer

To edit Field on form by the specific user

(1) ShareShare
ReportReport
Posted on by 1,457
 I have purchse id field in form which i want to make editable only by specific user but the form record is having edit code 
[Form]public class EHIGeneralPurchase extends FormRun{  void editRecord()    {        ;        if(EHIGeneralPurchase.WorkflowState == EHIWorkflowState::Draft            || EHIGeneralPurchase.WorkflowState == EHIWorkflowState::Rejected            || EHIGeneralPurchase.WorkflowState == EHIWorkflowState::ChangeRequested)        {            EHIGeneralPurchase_ds.allowEdit(true);        }        else        {            EHIGeneralPurchase_ds.allowEdit(false);        }     }   public void initValue()        {            super();            element.editRecord();        }        public void init()        {            super();            element.editRecord();        }        public void cursorNotify(int _event)        {            super(_event);            element.editRecord();        }    }
 I want to add my code here to edit my field on certian condition below is my code 
 WorkflowWorkItemTable           workflowWorkItemTable;                SysWorkflowTable                sysWorkflowTableHeader, sysWorkflowTableLine;                WorkflowCorrelationId           correlationId;                if(EHIGeneralPurchase.WorkflowState == EHIWorkflowState::InReview)                {                    select firstonly WorkflowCorrelationId from sysWorkflowTableHeader                        where sysWorkflowTableHeader.ContextTableId == tableNum(EHIGeneralPurchase)                            && sysWorkflowTableHeader.ContextRecId ==  EHIGeneralPurchase.RecId;                    correlationId = sysWorkflowTableHeader.WorkflowCorrelationId;                    if (!SysWorkflowTable::isRootWorkflow(correlationId) && !sysWorkflowTableHeader)                    {                        select firstonly WorkflowCorrelationId from sysWorkflowTableLine                            where sysWorkflowTableLine.ParentCorrelationId == correlationId;                        correlationId = sysWorkflowTableLine.WorkflowCorrelationId;                    }                    select firstonly RecId from workflowWorkItemTable                        where workflowWorkItemTable.CorrelationId == correlationId                            && workflowWorkItemTable.Status == WorkflowWorkItemStatus::Pending                            &&  workflowWorkItemTable.UserId == curUserId();                    if(workflowWorkItemTable.RecId)                    {                        EHIGeneralPurchase_DTPurchId1.allowEdit(true);                    }                    else                    {                        EHIGeneralPurchase_DTPurchId1.allowEdit(false);                    }                }                else                {                    EHIGeneralPurchase_DTPurchId1.allowEdit(false);                            }
 
how can i bypass the edit record code and make my field editable on my form  can any one guide me on this.
  • Mohit Rampal Profile Picture
    Mohit Rampal 12,550 Super User 2024 Season 1 on at
    To edit Field on form by the specific user
    We can't enable one field if Datasource is non editable. That's why I suggested to create Dialog. We had similar requirement where datasource record is non editable and create dialog to cater the functionality to update values in some fields.
  • Dineshkarlekar Profile Picture
    Dineshkarlekar 1,457 on at
    To edit Field on form by the specific user
    dialog is not he requirement , i need to do it like that , i have made changes the code is working but all the fields are getting enable in review state i want only one field enable in review state 
      void editRecord()
        {
            ;
            if(EHIGeneralPurchase.WorkflowState == EHIWorkflowState::Draft
                || EHIGeneralPurchase.WorkflowState == EHIWorkflowState::Rejected
                || EHIGeneralPurchase.WorkflowState == EHIWorkflowState::ChangeRequested
                || EHIGeneralPurchase.WorkflowState == EHIWorkflowState::InReview)
            {
                EHIGeneralPurchase_ds.allowEdit(true);
            }
            else
            {
                EHIGeneralPurchase_ds.allowEdit(false);
            }
                   
                    WorkflowWorkItemTable           workflowWorkItemTable;
                    SysWorkflowTable                sysWorkflowTableHeader, sysWorkflowTableLine;
                    WorkflowCorrelationId           correlationId;
    
                    if(EHIGeneralPurchase.WorkflowState == EHIWorkflowState::InReview)
                    {
                        select firstonly WorkflowCorrelationId from sysWorkflowTableHeader
                            where sysWorkflowTableHeader.ContextTableId == tableNum(EHIGeneralPurchase)
                                && sysWorkflowTableHeader.ContextRecId ==  EHIGeneralPurchase.RecId;
    
                        correlationId = sysWorkflowTableHeader.WorkflowCorrelationId;
    
                        if (!SysWorkflowTable::isRootWorkflow(correlationId) && !sysWorkflowTableHeader)
                        {
                            select firstonly WorkflowCorrelationId from sysWorkflowTableLine
                                where sysWorkflowTableLine.ParentCorrelationId == correlationId;
                            correlationId = sysWorkflowTableLine.WorkflowCorrelationId;
                        }
    
                        select firstonly RecId from workflowWorkItemTable
                            where workflowWorkItemTable.CorrelationId == correlationId
                                && workflowWorkItemTable.Status == WorkflowWorkItemStatus::Pending
                                &&  workflowWorkItemTable.UserId == curUserId();
    
                        if(workflowWorkItemTable.RecId)
                        {
                            EHIGeneralPurchase_DTPurchId1.allowEdit(true);
                           
                        }
                        else
                        {
                            EHIGeneralPurchase_DTPurchId1.allowEdit(false);
                        }
                    }
                    else
                    {
                        EHIGeneralPurchase_DTPurchId1.allowEdit(false);
                      
                    }
    
        }
     
  • Suggested answer
    Mohit Rampal Profile Picture
    Mohit Rampal 12,550 Super User 2024 Season 1 on at
    To edit Field on form by the specific user
    Hi, Instead of By passing standard code, in this case ,you can create Dialog with your field (editable). Create Menu Item and add in the form so user can click on menu item and enter value to update. You can assign security privilege to the users who need access.

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Congratulations 2024 Spotlight Honorees

Kudos to all of our 2024 community stars! 🎉

Meet the Top 10 leaders for December

Congratulations to our December super stars! 🥳

Start Your Super User Journey

Join the ranks of our community heros! 🦹

Leaderboard

#1
André Arnaud de Calavon Profile Picture

André Arnaud de Cal... 291,711 Super User 2024 Season 2

#2
Martin Dráb Profile Picture

Martin Dráb 230,458 Most Valuable Professional

#3
nmaenpaa Profile Picture

nmaenpaa 101,156

Leaderboard

Product updates

Dynamics 365 release plans