これを理解できたかどうかはわかりません。
これを知っているかどうかはわかりませんが、ビュー フォームでセールス オーダーを変更することはできません。少なくとも変更しようとするべきではありません。
Enter/Amend Sales Order フォームのいずれかを使用すると、これを行うことができます。潜在的に起こっていることは、コントロールがバインドされているプロパティが、コードの実行後に UI を更新していないことです。
次のコマンドを使用して、これを強制的に実行できます。
基礎となるバインドされたオブジェクトの取得
public Sage.Accounting.SOP.SOPOrderReturn SOPOrderReturn
{
get
{
//Loop over the boundobjects collection
//check if the bound object is of the type we want - e.g. SOPOrderReturn
//if correct type, return this object
Sage.Common.Collections.BoundObjectCollection boundObjects = this.form.BoundObjects;
if (boundObjects != null)
{
foreach (object boundObject in boundObjects)
{
if (boundObject is Sage.Accounting.SOP.SOPOrderReturn)
{
this._sopOrderReturn = boundObject as Sage.Accounting.SOP.SOPOrderReturn;
break;
}
}
}
return this._sopOrderReturn;
}
}
修正可能なフォームである正しい基になるフォーム タイプを取得し、データ バインディングを中断し、変更を実行し、データ バインディングを再開します。
Sage.MMS.SOP.MaintainOrderForm maintainOrderForm = this.form.UnderlyingControl as Sage.MMS.SOP.MaintainOrderForm;
maintainOrderForm.BindingContext[this.SOPOrderReturn].SuspendBinding();
this.SOPOrderReturn.PaymentWithOrder = true;
this.SOPOrderReturn.PaymentType = Sage.Accounting.SOP.SOPOrderPaymentTypeEnum.EnumSOPOrderPaymentTypeFull;
maintainOrderForm.BindingContext[this.SOPOrderReturn].ResumeBinding();
トリックを行う必要があります。