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
Другие вопросы по тегам