MinValue/MaxValue на основе глобальной переменной
В Business Central можно сделать что-то вроде этого:
}
field(5; "From"; Integer)
{
Caption = 'From';
DataClassification = SystemMetadata;
Editable = FromEditbale
}
}
var
FromEditable: Boolean
Итак, мой вопрос в том, может ли что-то подобное сработать. Потому что я пробовал это несколько раз, но похоже, что он отвергает глобальную целочисленную переменную. Есть идеи, почему или знаете ли вы, что я делаю неправильно?
}
field(5; "From"; Integer)
{
Caption = 'From';
DataClassification = SystemMetadata;
MaxValue = ToValue
}
}
var
ToValue: Integer
2 ответа
Это действительно зависит от области. Для «редактируемого» вы можете использовать переменную, для «максимального значения» — нет.
Свойства таблицы должны быть заданы как литералы, что означает, что вы не можете использовать переменные в качестве исходного выражения (т.е. оба ваших примера невозможны).
Доступное вам решение действительно зависит от сценария.
Вы можете справиться с этим, используяOnValidate
курок:
field(5; "From"; Integer)
{
Caption = 'From';
DataClassification = SystemMetadata;
trigger OnValidate()
begin
if Rec.From > MyMaxValue then
Rec.FieldError(Type, ...);
end;
}
var
MyMaxValue: Decimal
Или вы можете обработать это на уровне страницы, где переменные можно использовать в качестве исходного выражения:
field(From; From)
{
MaxValue = MyMaxValue;
}
var
MyMaxValue: Decimal
Имейте в виду, что независимо от того, какое решение вы выберете, все равно можно будет присвоить значение, превышающее определенный вами максимум, посредством присваивания:
Rec.From := 999999; // Would not generate an error if MaxValue was e.g. 10000