Important Update: Some Community URL Redirects are Under Maintenance. Learn More. .

cancel
Showing results for 
Search instead for 
Did you mean: 

Custom Object for Record Permission set value

AkshayDaniel
Contributor III

Hi All,

 

This query is regarding the solution provided in post Custom object for setting value list of type people and group .

 

Our requirement is that we need to empty the values in manual record permission field in Archer 6.4 

 

The code written for it based on the solution available in the post mentioned earlier is 

 

<script type="text/javascript">
     var setUser = {
          fldId: '39845',
          usersName: 'Daniel, Akshay',
          usersId: '2528',
          itemtype: 'user'};
 
     function setRecordPermission() {
          var RPFieldRootId = ArcherTech.UI.ClientContentManager.GetInstance().getFieldById(setUser.fldId), UsrArray = [];
          console.log(RPFieldRootId);
         
          UsrArray.push({
               name: setUser.usersName,
               value: setUser.usersId
          });  
          var serialized = Sys.Serialization.JavaScriptSerializer.serialize(UsrArray);

          $('div[id*="'+ RPFieldRootId +'_"] div:first-child').text(setUser.usersName);
          $('input[id*="'+ RPFieldRootId +'_"]').val(serialized);
          if(setUser.itemType == 'user'){
               $('#SelectedUsers'+setUser.fldId).val(setUser.usersId);
          }
     }

     Sys.Application.add_load(function() {
          alert('script loaded');
          setRecordPermission();    
     });

</script>

 

Here initially I tried to set a value just to check if the code is working in our environment but unfortunately it does not.

 

While doing some troubleshooting I figured that the selectors  mentioned below do not point to anything could be the reason for not updating the value.

$('div[id*="'+ RPFieldRootId +'_"] div:first-child')
$('input[id*="'+ RPFieldRootId +'_"]')

 

I tried to add some additional information so that the selectors are able to pick up the required elements

 

$('div[id*="'+ RPFieldRootId.clientId +'_"] div:first-child')

 

The above code does select something although not sure if that is the correct element value and does not even update the field properly.

 

Kindly advise what corrections are required in my code and also please let me know if I need to empty the values from this manual record permission field can I just pass "".

3 REPLIES 3

Ilya_Khen
Champion III

I run that code pretty well in many environments.

1. Do you run Custom Object in Edit mode?

2. Try to change your RP to ValuesPopup type.

 

Try this:

<script type="text/javascript">
     var setUser = {
          fldId: '39845',
          usersName: 'Daniel, Akshay',
          usersId: '2528'
            };
 
    function setUser(userFldId, userName, userId) {
          var RPFieldRoot = ArcherTech.UI.ClientContentManager.GetInstance().getFieldById(userFldId), UsrArray = []; 
          var RPFieldRootId = RPFieldRoot.clientId; 

          UsrArray.push({ 
               name: userName, 
               value: userId + ':1' 
          }); 
         
          var serialized = Sys.Serialization.JavaScriptSerializer.serialize(UsrArray); 
         
          $('div[id*="'+ RPFieldRootId +'_"] div:first-child').text(userName); 
          $('input[id*="'+ RPFieldRootId +'_"]').val(serialized); 

          $('#SelectedUsers'+userFldId).val(userId);
     } 

     Sys.Application.add_load(function() {
          alert('script loaded');
          setUser(setUser.fldId, setUser.usersName, setUser.usersId);    
     });

</script>‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

DavidPetty
Archer Employee
Archer Employee

Akshay, in order to clear a record permission field you'd have to modify the setUser variable and just set the usersName and usersId to nothing, ''.

 

Like so:

var setUser = {
     fldId: '39845',
     usersName: '',
     usersId: '',
     itemtype: 'user'
};

 Advisory Consultant

Swapnali_Shinde
Contributor III

Hi @DavidPetty ,

I am trying to update one RP with users from other 5 RPs, code is as below in custom object. I am able to see users in target RP field on save but when i reload record user vanishes from field. Please suggest what is wrong.

 

 
<script type="text/javascript">
 
Sys.Application.add_load(function() {
$('#master_btnSave1').clone().attr('id', 'master_newbtnSaveandclose').insertBefore('#master_btnSave1');
$('#master_btnSave1').hide();
$('#master_newbtnSaveandclose').unbind('click').prop('onclick', null).click(function() {
Getsignatories(1);
 
});
 
$('#master_btnApply1').clone().attr('id', 'master_newbtnSave').insertBefore('#master_btnApply1');
$('#master_btnApply1').hide();
$('#master_newbtnSave').unbind('click').prop('onclick', null).click(function() {
Getsignatories(2);
 
});
}
);
 
function lookupFieldId(fldName){
     var goFindId = null;
 
     try { goFindId = $('.FieldLabel:contains("' + fldName + '") > span')[0].id;} catch (err) {}
     try {if (!goFindId) goFindId = $('.SectionLabel:contains("' + fldName + '")')[0].id;} catch (err) {}
     try {if (!goFindId) goFindId = $('.SubSectionLabel:contains("' + fldName + '")')[0].id;} catch (err) {}
 
     return goFindId ? $LM._layoutItems[goFindId.replace( /^\D+/g, '')].fieldId : 0;
}
 
function Getsignatories(n )
{
var Signatory1_id=lookupFieldId("Signatory 1");
var Signatory2_id=lookupFieldId("Signatory 2");
var Signatory3_id=lookupFieldId("Signatory 3");
var Signatory4_id=lookupFieldId("Signatory 4");
var Signatory5_id=lookupFieldId("Signatory 5");
var Allsignatories_id=lookupFieldId("All Signatories");
 
Signatory1_userid=$CM.getFieldValue(Signatory1_id);
Signatory2_userid=$CM.getFieldValue(Signatory2_id);
Signatory3_userid=$CM.getFieldValue(Signatory3_id);
Signatory4_userid=$CM.getFieldValue(Signatory4_id);
Signatory5_userid=$CM.getFieldValue(Signatory5_id);
 
Signatory1_UserName=$('div[id$="'+ Signatory1_id +'c_s"]').text().trim();
Signatory2_UserName=$('div[id$="'+ Signatory2_id +'c_s"]').text().trim();
Signatory3_UserName=$('div[id$="'+ Signatory3_id +'c_s"]').text().trim();
Signatory4_UserName=$('div[id$="'+ Signatory4_id +'c_s"]').text().trim();
Signatory5_UserName=$('div[id$="'+ Signatory5_id +'c_s"]').text().trim();
 
NewUserNameArray=[];
 
UserNameArray=[Signatory1_UserName,Signatory2_UserName,Signatory3_UserName,Signatory4_UserName,Signatory5_UserName];
 
for(var i=0; i<=UserNameArray.length; i++)
{
if(UserNameArray[i] !== "" && UserNameArray[i] !=undefined )
{
NewUserNameArray.push(UserNameArray[i] );
}
}
alert(NewUserNameArray);
 
UseridArray=[Signatory1_userid,Signatory2_userid,Signatory3_userid,Signatory4_userid,Signatory5_userid];
 
NewUserIdArray=[];
for(var i=0; i<=UseridArray.length; i++)
{
if(UseridArray[i] !=undefined){
if(UseridArray[i] !== "" && UseridArray[i].length > 0  )
{
NewUserIdArray.push(UseridArray[i] );
}
}
}
alert(NewUserIdArray);
 
setUser(Allsignatories_id, NewUserNameArray, NewUserIdArray,n);
 
}
 
 
function setUser(userFldId, userName, userId,n) {   
 
  var setUser = { fldId: userFldId,       
  userName: userName,        
  userId: userId,
  itemType: 'user'     }  
 
 
  var RPFieldRoot = ArcherTech.UI.ClientContentManager.GetInstance().getFieldById(userFldId), 
  UsrArray = [];  
  var RPFieldRootId = RPFieldRoot.clientId; 
 
 
for(var i=0; i<=setUser.userName.length; i++){
 
if(setUser.userName[i] !=undefined && setUser.userName[i] !== ""  ){
 
UsrArray.push({     
  name: setUser.userName[i],    
  value: setUser.userId[i].join(" "),
  });  
}
 
 
  }
}
 
  $('div[id*="'+ RPFieldRootId +'_"] div:first-child').text(setUser.userName);  
 
  if(setUser.itemType == 'user') {  
 
  $('#SelectedUsers'+setUser.userFldId).val(setUser.userId);    
 
 var serialized = Sys.Serialization.JavaScriptSerializer.serialize(UsrArray);  
 
 
  $('input[id*="'+ RPFieldRootId +'_"]').val(serialized);
   
 
 
 if (n==1) {
$('#master_btnSave1').click();
}
else{
 
$('#master_btnApply1').click();
}
 
}
</script>