К сожалению без программирования я не знаю способа. Но могу предложить как это сделать для всей системы.
Класс SysQueryForm, метод buildRange
1. Необходимо добавить следующую вложенную функцию
PHP код:
boolean CheckFixedField(QueryBuildRange _range)
{
FieldId fieldId;
DictRelation dictRelation;
int cnt;
;
if (!hasSecuritykeyAccess(securityKeyName2id(securitykeystr(AdminSetup)),AccessType::View) &&
_range && _range.dataSource() && _range.dataSource().joined())
{
fieldId = _range.field();
dictRelation = new DictRelation(_range.table());
dictRelation.loadTableRelation(_range.dataSource().parentDataSource().table());
if (dictRelation.validate())
{
for (cnt = 1; cnt <= dictRelation.lines(); cnt++)
{
if ((dictRelation.lineType(cnt) == TableRelation::ThisFixed) &&
(dictRelation.lineTableValue(cnt) == fieldId))
return True;
}
}
}
return False;
}
2. Изменить следующий код
PHP код:
if (dynalinkFieldSet &&
dynalinkFieldSet.in(queryBuildRange.field()))
{
rangeStatus = RangeStatus::Hidden;
}
else
{
rangeStatus = queryBuildRange.status();
}
на
PHP код:
if (dynalinkFieldSet &&
dynalinkFieldSet.in(queryBuildRange.field()))
{
rangeStatus = RangeStatus::Hidden;
}
else if (CheckFixedField(queryBuildRange))
{
rangeStatus = RangeStatus::Locked;
// или rangeStatus = RangeStatus::Hidden;
}
else
{
rangeStatus = queryBuildRange.status();
}