Установка значения поля Enum во временной записи

Полный новичок в AL здесь; Я экспериментирую с автоматическим тестированием в Dynamics BC для нового развертывания. В качестве очень простого теста я хотел бы просто создать новую запись Item в тестовой базе данных Cronus и проверить каждое поле. У меня возникают проблемы, когда я пытаюсь выбрать значение для поля перечисления. Вот код, который я использую:

      Procedure AddGoodItem()
// [Given] Good item data
var
    recItem: Record Item Temporary; 
Begin
    recItem."Description" := 'zzzz';
    recItem.validate("Description");
    recItem.Type := recItem.Type::Inventory;
    recItem.Validate(Type);
    recItem."Base Unit of Measure" := 'EA';
    recItem.Validate("Base Unit of Measure");
    recItem."Item Category Code" := 'FURNITURE';
    recItem.validate("Item Category Code");
End;

Когда я запускаю это в Cronus, я получаю сообщение об ошибке:

      You cannot change the Type field on Item  because at least one Item Journal Line exists for this item.

Если я прокомментирую строки Type, процесс будет успешно выполнен.

Учитывая, что это временная запись, в ней не должно быть строк журнала предметов, не так ли? Что мне не хватает?

1 ответ

Код в триггере по-прежнему выполняется, даже если вы пометили переменную как . Кроме того, не наследуется от базовых переменных, означающих любые Recordпеременные, используемые в триггере, не temporary(если не помечено как таковое).

Есть два варианта:

  1. Пропустите строку , если код, запускаемый триггером OnValidate, в данном случае не имеет значения.
  2. Заменить строку recItem.Validate(Type);со своим собственным клоном кода из OnValidateспусковой крючок, а затем удалите ненужные части.
Другие вопросы по тегам