Рассматривали ли вы использование AIF?
Простой способ, если вы настаиваете на прямом вызове AX:
Создайте статические методы X ++ и вызовите их:
- для создания журнала
- для создания строки журнала, поля в качестве параметров
- для публикации журнала, верните
infolog
(в виде строки)
Пусть методы AX выполняют сантехнику с классами проводки в бухгалтерской книге.
Публикация - «все или ничего» (с возможным переносом строк ошибок в новый журнал).
Номера ваучеров используются повторно в случае ошибки. Я полагаю, это подразумевает, что при публикации публикуются номера ваучеров, которые можно указать в имени журнала.
Возвращаемое значение infolog
может быть преобразовано в строку для упрощения стороны C #.
X ++ код для преобразования в строку:
client server static str infoCon2List(container c)
{
TextBuffer t = new TextBuffer();
str info;
int i;
int n;
for (i = 1; i <= conlen(c); i += 2)
{
info = conpeek(c,i+1);
n = strFind(info,'\t',strLen(info),-99999);
t.appendText(strFmt('%1\t%2\t%3\n', conpeek(c,i), n > 1 ? strReplace(subStr(info,2,n-2), '\t', '\\') : '', substr(info,n+1,9999)));
}
return t.getText();
}
Как это назвать:
int e = infolog.num();
try
{
doThePosting(...);
}
catch //anything
{
exceptionTextFallThrough();
}
return Info::infoCon2List(infolog.copy(e+1,infolog.num()));