:-) I have no exact module in my mind... you need some module... (there is no standard module)... Our company have such a module prepared (Navision 3.70>) - Insert, Modify, Delete permissions on fields...
You can buy a field level security add-on from Lanham. It works ok, but you have to know exactly how it works before you start using it in production. Also it doesn't allow you to easily take away security, so if you use it, start out with one table only, get the hang of it and incrementally add additional tables to it.
if the field level security is related to data procurement ; such that one person have the acess to certain kind of records and other do not then then i would suggest that using resposibility centre will be a good idea
Ah, you mean the global triggers? That goes table (recordref) level, not form level, and it means you can make a field noneditable, but cannot make it invisible.
Do It Yourself is they key. Standard code might work - your code surely works.
If a field is there, but the user gets error message for modification, then he will rightfully ask "If that field is not to edit for me, then why isn't it gray?" (uneditable) Don't forget the old usability rule: the computer must not ask questions it could figure out for itself.
And actually the important thing is field invisibility, for two reasons:
1) Users are really scared about how much fields Navision has. Psychologically they feel the software expects them to answers hundreds of questions f.e. all the fields and tabs on Sales Orders or Customer Cards, and a typical company uses 10% of them. And if they don't need it, why are those fields there? So what we would really need is configurable invisibility (and automatic change of field orders, and moving fields between tags).
I made a Perl script that codes configurable invisibility into forms exported in TXT, but auto-arranging fields to fill the gaps and auto-moving them between tabs if a too big challenge... so it seems we are stuck with those annoying Design Form, Save As, "Customer Card for Warehouse Employees" - implementation processes...
Do It Yourself is they key. Standard code might work - your code surely works.
But I am talking about "Field" level security. So no much about Insert / Delete (These two would be "Record" level security)
What I am looking for is, Field Level Security includes
-visible
-editable
Eg.
On Sales order, statisitc form, I would like to hide the "Profit %" for some users.
On Sales line, hide the "Cost Price"... etc
I know that we can modify the existing form to set Field.visible(). But I would like to know is there any better way to do it? I want to avoid changing so many forms for this Hidden fields task.
I also wrote field level security solution for a customer running NAV5.0
The security check runs perfectly. I modified GetGlobalTableTriggerMask() to ensure that for the appropriate table it execute the OnGlobalModify (they are only interested in modification of fields)
Then in OnGlobalModify I call my function to test if the user has permission to modify a field.
For a user not having permission to modify this field it displays the error correctly and rolls back the change.
But now on each read, write on anything, it displays the error message. Switch debugger on, but it doesn't stop on an error.
Comments
MVP - Dynamics NAV
My BLOG
NAVERTICA a.s.
Which module we need for field level security?
Best regards,
Ken
MVP - Dynamics NAV
My BLOG
NAVERTICA a.s.
RIS Plus, LLC
CurrForm."some field".EDITABLE(USERID IN );
MVP - Dynamics NAV
My BLOG
NAVERTICA a.s.
Do It Yourself is they key. Standard code might work - your code surely works.
It IS possible... \:D/ as nelson said... base is Change Log functionality... (but you do not need this granule)...
I know about what I am speaking, I developed such a module for 2 months... O:)
MVP - Dynamics NAV
My BLOG
NAVERTICA a.s.
Do It Yourself is they key. Standard code might work - your code surely works.
MVP - Dynamics NAV
My BLOG
NAVERTICA a.s.
If a field is there, but the user gets error message for modification, then he will rightfully ask "If that field is not to edit for me, then why isn't it gray?" (uneditable) Don't forget the old usability rule: the computer must not ask questions it could figure out for itself.
And actually the important thing is field invisibility, for two reasons:
1) Users are really scared about how much fields Navision has. Psychologically they feel the software expects them to answers hundreds of questions f.e. all the fields and tabs on Sales Orders or Customer Cards, and a typical company uses 10% of them. And if they don't need it, why are those fields there? So what we would really need is configurable invisibility (and automatic change of field orders, and moving fields between tags).
I made a Perl script that codes configurable invisibility into forms exported in TXT, but auto-arranging fields to fill the gaps and auto-moving them between tabs if a too big challenge... so it seems we are stuck with those annoying Design Form, Save As, "Customer Card for Warehouse Employees" - implementation processes...
Do It Yourself is they key. Standard code might work - your code surely works.
Thanks for all of your information.
But I am talking about "Field" level security. So no much about Insert / Delete (These two would be "Record" level security)
What I am looking for is, Field Level Security includes
-visible
-editable
Eg.
On Sales order, statisitc form, I would like to hide the "Profit %" for some users.
On Sales line, hide the "Cost Price"... etc
I know that we can modify the existing form to set Field.visible(). But I would like to know is there any better way to do it? I want to avoid changing so many forms for this Hidden fields task.
Thanks,
Ken
(without changing the forms)
MVP - Dynamics NAV
My BLOG
NAVERTICA a.s.
http://www.lanhamassoc.com/securitymgmt.htm
as an option mentioned earlier?
sometimes you have to pay the piper if you want to dance with the pretty girl
http://www.BiloBeauty.com
http://www.autismspeaks.org
I also wrote field level security solution for a customer running NAV5.0
The security check runs perfectly. I modified GetGlobalTableTriggerMask() to ensure that for the appropriate table it execute the OnGlobalModify (they are only interested in modification of fields)
Then in OnGlobalModify I call my function to test if the user has permission to modify a field.
For a user not having permission to modify this field it displays the error correctly and rolls back the change.
But now on each read, write on anything, it displays the error message. Switch debugger on, but it doesn't stop on an error.
Added before my function call in OnGlobalModify:
But still the issue persists.
Anybody have a suggestion please?
Regards
Ewald Venter
Ewald Venter
also instruction film on youtube.
You need a license for this, but the customer can set their restrictions as he pleases.