В принципе, есть другой метод (без создания SecurityKey), хотя он, возможно, и менее надежен.
Есть такие таблички - SysSecurityFormTable и SysSecurityFormControlTable. Обычно они используются для настройки доступа к контролам, привязанным к display- или edit- методам, но на самом деле их можно использовать для настройки доступа к любому произвольному контролу формы. Не буду вдаваться в подробности, кому интересно - смотрите класс SysSecurityFormSetup, просто опишу, как настроить доступ так, как написано в первом сообщении.
Во-первых, создайте запись в форме SysSecurityFormTable (можно использовать обычный Table browser). В поле FormName напишите InventTable, DomainId - домен, в котором Вы настраиваете доступ, UserGroupId - соответственно, группа, для которой этот доступ настраивается.
Далее, создайте запись в таблице SysSecurityFormControlTable. В поле SysSecurityFormId выберите ссылку на запись, созданную в SysSecurityFormTable (это RecId, так что имеет смысл воспользоваться lookup'ом). В FormControlName укажите PriceDiscPurch. Это имя контрола из формы InventTable (та самая группа полей Закупка на закладке Цена/Скидка). FormControlType - Group. Далее, важный момент, нужно указать FormControlId. Если у вас есть доступ к разработке, то самое простое - зайти в форму InventTable и после super() в методе init() написать что-нибудь вроде:
X++:
info(int2str(control::PriceDiscPurch));
. Если доступа нет, этот id все равно можно узнать, исправив пользовательские настройки формы InventTable и посмотрев в форму Использование данных. Как бы то ни было, у меня контролу PriceDiscPurch соответствует id 12347. Его и указываем. Наконец, в поле AccessType выставьте желаемый уровень доступа (View или NoAccess).
В свое время я, помнится, писал интерфейс для этих действий. Сделано это было в рамках одного из проектов, так что, думаю, теперь этот интерфейс можно считать собственностью mazzy