Установка значения поля 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
(если не помечено как таковое).
Есть два варианта:
- Пропустите строку , если код, запускаемый триггером OnValidate, в данном случае не имеет значения.
- Заменить строку
recItem.Validate(Type);
со своим собственным клоном кода изOnValidate
спусковой крючок, а затем удалите ненужные части.