分类 Dynamics 365 下的文章
template runbaseBatch
class TestRunbase extends RunBaseBatch
{
QueryRun queryrun;
#define.CurrentVersion(1)
#localmacro.CurrentList
transDate,
custAccount
#endmacro
public container pack()
{
return [#CurrentVersion, #CurrentList, queryrun.pack()];
}
public boolean unpack(container packedClass)
{
container conQrPacked;
Version version = RunBase::getVersion(packedClass);
switch (version)
{
case #CurrentVersion:
[version, #CurrentList, conQrPacked] = packedClass;
if(SysQuery::isPackedOk(conQrPacked))
{
queryrun = new QueryRun(conQrPacked);
}
break;
default:
return false;
}
return true;
}
public QueryRun queryRun()
{
if(queryrun == null)
{
Query query;
QueryBuildDataSource qbds;
QueryBuildRange qbr;
query = new Query();
qbds = query.addDataSource(tableNum(TrvExpTable));
qbr = qbds.addRange(fieldNum(TrvExpTable, ApprovalStatus));
qbr.value( SysQuery::value(TrvAppStatus::Create));
qbr.status(RangeStatus::Locked);
queryrun = New QueryRun(query);
queryRun.saveUserSetup(false);
}
return queryrun;
}
public void initParmDefault()
{
super();
this.queryrun();
}
public boolean showQueryValues()
{
return true;
}
public boolean allowSaveLast()
{
return false;
}
public boolean canRunInNewSession()
{
return true;
}
static TestRunbase construct()
{
return new TestRunbase();
}
static ClassDescription description()
{
return "Runbase";
}
static void main(Args args)
{
TestRunbase runbase;
runbase = new TestRunbase();
if (runbase.prompt())
{
runbase.runOperation();
}
}
public Object dialog()
{
DialogRunbase ret;
ret = super();
dfLastDays = ret.addField(extendedTypeStr(Days),"");
return ret;
}
public boolean getFromDialog()
{
custAccount = fieldAccount.value();
return super();
}
public void run()
{
TrvExpTable tb;
try
{
ttsbegin;
while(queryrun.next())
{
tb = queryrun.get(tableNum(TrvExpTable));
}
ttscommit;
}
catch
{
}
}
}
Report 生成文件流
private Stream buildPdf(str Id)
{
System.IO.MemoryStream stream;
Contract contract = new Contract ();
Controller controller = new Controller ();
SRSPrintDestinationSettings settings;
SRSReportRunService srsReportRunService = new SrsReportRunService();
Microsoft.Dynamics.AX.Framework.Reporting.Shared.ReportingService.ParameterValue[] parameterValueArray;
SRSReportExecutionInfo executionInfo = new SRSReportExecutionInfo();
Map reportParametersMap;
SRSProxy srsProxy;
System.Byte[] reportBytes = new System.Byte[0]();
contract.parmId("Id");
controller.parmReportName(ssrsReportStr(Report, Report));
//controller.parmDialogCaption('@IWS:IWS02036');
//controller.parmShowDialog(false);
//controller.parmLoadFromSysLastValue(false);
controller.parmReportContract().parmRdpContract(contract);
settings = controller.parmReportContract().parmPrintSettings();
settings.printMediumType(SRSPrintMediumType::File);
settings.fileFormat(SRSReportFileFormat::PDF);
controller.parmReportContract().parmReportServerConfig(SRSConfiguration::getDefaultServerConfiguration());
controller.parmReportContract().parmReportExecutionInfo(executionInfo);
srsReportRunService.getReportDataContract(controller.parmreportcontract().parmReportName());
srsReportRunService.preRunReport(controller.parmreportcontract());
reportParametersMap = srsReportRunService.createParamMapFromContract(controller.parmReportContract());
parameterValueArray = SrsReportRunUtil::getParameterValueArray(reportParametersMap);
srsProxy = SRSProxy::constructWithConfiguration(controller.parmReportContract().parmReportServerConfig());
reportBytes = srsproxy.renderReportToByteArray(
controller.parmreportcontract().parmreportpath(),
parameterValueArray,
settings.fileFormat(),
settings.deviceinfo());
if (reportBytes)
{
stream = new System.IO.MemoryStream(reportBytes);
stream.Position = 0;
}
return stream;
}
xpp中 Http 请求 Header修改
public static str SendPostWithHeader(str url, str param, System.Net.WebHeaderCollection _headers, str contentType = "application/json", str encoding = "utf-8")
{
System.Net.HttpWebRequest request = null;
System.IO.Stream requestStream;
str dataString;
if (strStartsWith(url, "https"))
{
request = System.Net.WebRequest::Create(url)as System.Net.HttpWebRequest;
}
else
{
request = System.Net.WebRequest::CreateHttp(url)as System.Net.HttpWebRequest;
}
request.Method = "POST";
request.Headers = _headers;
request.ContentType = contentType;
System.Byte[] postData = System.Text.Encoding::GetEncoding( encoding ).GetBytes(param);
request.ContentLength = postData.Length;
try
{
System.IO.Stream outputStream = request.GetRequestStream();
outputStream.Write(postData,0,postData.Length);
outputStream.Close();
System.Net.HttpWebResponse response = request.GetResponse() as System.Net.HttpWebResponse;
System.IO.Stream responseStream = response.GetResponseStream();
System.IO.StreamReader reader=new System.IO.StreamReader(responseStream,System.Text.Encoding::GetEncoding("GBK"));
dataString = reader.ReadToEnd();
reader.Close();
if(!dataString)
throw error("接口数据返回异常");
}
catch (Exception::CLRError)
{
System.Exception ex;
ex = ClrInterop::getLastException();
if (ex != null)
{
ex = ex.get_InnerException();
if (ex != null)
{
dataString = ex.ToString();
}
}
}
catch
{
SysInfoLogEnumerator infoLogEnum;
infoLogEnum = SysInfoLogEnumerator::newData(infolog.copy(1, infologLine()));
while(infoLogEnum.moveNext())
{
dataString += infoLogEnum.currentMessage();
}
}
return dataString;
}
附件相关
container fileCon = DocumentManagement::getAttachmentAsContainer(_docuRef);
System.IO.Stream stream = Binary::constructFromContainer(fileCon).getMemoryStream();
DocumentManagement::attachFile(tableNum(IWS_DeliveryForecastTable), recId, DataAreaId, '文件', stream, name, '', name);