2012-06-06 6 views
1

을 통해 새로운 PurchId 얻기 :.NET BusinessConnector

PurchId = NumberSeq::newGetNum(SalesParameters::numRefSalesId()).num(); 

내가 수동으로 괜찮 구매 주문 테이블에 구매 주문 정보를 입력하고을, 그러나 구매 테이블을 연결하는 구매 ID (PURCHTABLE)와 개별 구매 주문 라인 (PURCHLINE)이 구매 주문을 저장할 때 자동으로 채워지지 않는 PURCHID 필드라는 사실에 문제가 있습니다.

은 현재 내가 :

ax.TTSBegin(); 
    axRecord.set_Field("ORDERACCOUNT", purchaseOrder.OrderAccount); 

(등)

axRecord.Insert(); 

그러나,이 데이터베이스에 레코드를 삽입 할 때, 그것은 생성되어야 더 purchID을주지 않습니다. 구매 항목을 연결하려면 purchaseID가 필요합니다. 위의 코드 (두 번째 줄)가 X ++에서 발견되었지만 누구나 대신 .NET BusinessConnector 호출을 사용할 수 있습니까?

도움을 주시면 감사하겠습니다.

감사합니다, 스티브

답변

2

나는 PurchTable 테이블의 insert() 방법의 변화를 갈 것입니다 :

if (!purchTable.PurchId) 
    purchTable.PurchId = NumberSeq::newGetNum(purchParameters::numRefPurchId()).num(); 

ttsbegin 후 배치.

복잡한 C# 코드를 피하기 위해. CallStaticClassMethod과 사촌을 사용하는 C# 코드만으로도이 작업을 수행 할 수 있지만 X ++ 측에 비즈니스 논리를 추가하는 것이 좋습니다.

How to: Call Business Logic Using .NET Business Connector을 참조하십시오.

+0

안녕하세요 1 월 B, 답장을 보내 주셔서 감사합니다. 링크가 훌륭했습니다. 나는 새로운 구매 ID를 얻고 그 외 모든 작업을 수행했지만 .NET 코드에서 구매 주문을 게시합니다. (우리가 .NET에 잠시 머물러 있기 때문에). PO 게시에 대한 아이디어는? – MrCraze

+0

구매 주문을 게시하면 무엇을 의미합니까? AX에서는 구매 주문서가 게시되지 않지만 포장 명세서와 청구서가 있습니다. –

+0

대답이 유용하다면 동의해야합니다. –

0

TTSBegin/TTSCommit 블록 내에서 실행해야합니다. 그렇지 않으면 오류 메시지 like this one이 표시됩니다.

// ax is a reference to an "Axapta" business connector object 
var numRef = ax.CallStaticRecordMethod("SalesParameters", "numRefSalesId"); 
var numSeq = (AxaptaObject)ax.CallStaticClassMethod("NumberSeq", "newGetNum", numRef); 
var purchId = numSeq.Call("num");