ਡਾਇਨਾਮਿਕਸ AX 2012 ਵਿੱਚ ਇੱਕ SysOperation ਡੇਟਾ ਕੰਟਰੈਕਟ ਕਲਾਸ ਵਿੱਚ ਇੱਕ ਪੁੱਛਗਿੱਛ ਦੀ ਵਰਤੋਂ ਕਰਨਾ
ਪ੍ਰਕਾਸ਼ਿਤ: 19 ਮਾਰਚ 2025 9:33:33 ਬਾ.ਦੁ. UTC
ਇਹ ਲੇਖ ਡਾਇਨਾਮਿਕਸ AX 2012 (ਅਤੇ ਓਪਰੇਸ਼ਨਾਂ ਲਈ ਡਾਇਨਾਮਿਕਸ 365) ਵਿੱਚ ਇੱਕ SysOperation ਡੇਟਾ ਕੰਟਰੈਕਟ ਕਲਾਸ ਵਿੱਚ ਇੱਕ ਉਪਭੋਗਤਾ-ਸੰਰਚਨਾਯੋਗ ਅਤੇ ਫਿਲਟਰਯੋਗ ਪੁੱਛਗਿੱਛ ਨੂੰ ਕਿਵੇਂ ਜੋੜਨਾ ਹੈ, ਇਸ ਬਾਰੇ ਵੇਰਵਿਆਂ 'ਤੇ ਜਾਂਦਾ ਹੈ।
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
ਇਸ ਪੋਸਟ ਵਿਚ ਦਿੱਤੀ ਗਈ ਜਾਣਕਾਰੀ Dynamics AX 2012 R3 'ਤੇ ਆਧਾਰਿਤ ਹੈ। ਇਹ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਇਹ ਹੋਰ ਵਰਜਨਾਂ ਲਈ ਸਹੀ ਨਾ ਹੋਵੇ। (ਅਪਡੇਟ: ਮੈਂ ਪੁਸ਼ਟੀ ਕਰ ਸਕਦਾ ਹਾਂ ਕਿ ਇਹ Dynamics 365 for Operations 'ਤੇ ਵੀ ਕੰਮ ਕਰਦਾ ਹੈ)
ਮੈਨੂੰ ਹਮੇਸ਼ਾਂ ਇਹ ਭੁੱਲ ਜਾਂਦਾ ਹੈ ਕਿ SysOperation ਫਰੇਮਵਰਕ ਵਿੱਚ ਕਿਵੇਂ ਇੱਕ ਕੁਏਰੀ ਨੂੰ ਵਿਸ਼ੇਸ਼ਿਤ ਅਤੇ ਸ਼ੁਰੂ ਕਰਨਾ ਹੈ। ਮੇਰਾ ਅਨੁਮਾਨ ਹੈ ਕਿ ਜਿਆਦਾਤਰ ਬੈਚ ਜੌਬਸ ਜੋ ਮੈਂ ਬਣਾ ਰਿਹਾ ਹਾਂ ਉਹ ਉਪਭੋਗਤਾ-ਕਨਫਿਗਰੇਬਲ ਕੁਏਰੀਜ਼ 'ਤੇ ਆਧਾਰਿਤ ਨਹੀਂ ਹਨ, ਪਰ ਕਦਾਚਿਤ ਮੈਂ ਅਜਿਹੀ ਬੈਚ ਜੌਬ ਬਣਾਉਣ ਦੀ ਲੋੜ ਪੈਂਦੀ ਹੈ, ਇਸ ਲਈ ਇਹ ਪੋਸਟ ਮੇਰੇ ਆਪਣੇ ਹਵਾਲੇ ਲਈ ਵੀ ਹੈ।
ਸਭ ਤੋਂ ਪਹਿਲਾਂ, ਡੇਟਾ ਕਾਂਟ੍ਰੈਕਟ ਕਲਾਸ ਵਿੱਚ, ਕੁਏਰੀ ਇੱਕ ਸਟ੍ਰਿੰਗ ਵਿੱਚ ਪੈਕ ਕੀਤੀ ਜਾਵੇਗੀ। ਇਸਦੀ ਪਾਰਮ ਮੈਥਡ ਨੂੰ AifQueryTypeAttribute ਐਟ੍ਰਿਬਿਊਟ ਨਾਲ ਸਜਾਇਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ, ਇਸ ਤਰ੍ਹਾਂ (ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ ਮੈਂ SalesUpdate ਕੁਏਰੀ ਦਾ ਉਪਯੋਗ ਕੀਤਾ ਹੈ, ਪਰ ਤੁਸੀਂ ਇਸਨੂੰ ਕਿਸੇ ਵੀ AOT ਕੁਏਰੀ ਨਾਲ ਬਦਲ ਸਕਦੇ ਹੋ):
DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
;
packedQuery = _packedQuery;
return packedQuery;
}
ਜੇ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਕੁਏਰੀ ਨੂੰ ਕੰਟਰੋਲਰ ਕਲਾਸ ਦੁਆਰਾ ਤਯਾਰ ਕੀਤਾ ਜਾਵੇ, ਤਾਂ ਤੁਸੀਂ ਇੱਕ ਖਾਲੀ ਸਟ੍ਰਿੰਗ ਵੀ ਉਪਯੋਗ ਕਰ ਸਕਦੇ ਹੋ। ਇਸ ਹਾਲਤ ਵਿੱਚ, ਤੁਹਾਨੂੰ ਕੁਝ ਸਹਾਇਕ ਮੈਥਡਸ ਨੂੰ ਵੀ ਲਾਗੂ ਕਰਨ ਦੀ ਲੋੜ ਪਵੇਗੀ (ਜੋ ਤੁਸੀਂ ਆਪਣੇ ਸਵਾਲਾਂ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਸਮੇਂ ਆਪਣੀ ਸੁਵਿਧਾ ਲਈ ਲਾਗੂ ਕਰਨ ਚਾਹੀਦੇ ਹੋ):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
ਜੇ ਤੁਸੀਂ ਕੁਏਰੀ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ (ਉਦਾਹਰਣ ਵਜੋਂ, ਰੇਂਜਸ ਜੋੜਨਾ), ਤਾਂ ਤੁਹਾਨੂੰ ਇੱਕ initQuery ਮੈਥਡ ਲਾਗੂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
ਤੁਹਾਨੂੰ ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਇਸ ਮੈਥਡ ਨੂੰ ਕੰਟਰੋਲਰ ਕਲਾਸ ਤੋਂ ਕਾਲ ਕੀਤਾ ਜਾਵੇ।