如何在SysLastValue中找到用户上次使用的打印机

时间:2015-02-25 16:23:59

标签: printing axapta microsoft-dynamics dynamics-ax-2009 dynamics-ax-2012-r2

我一直试图找到用户上次使用过的打印机的位置,以便我可以清除这些使用数据(因为少数用户遇到记住的打印机默认默认为XPS编写器的问题,尽管我们安装了KB981681并且打印机可用;只是在某些AX表格上没有默认值。)

我知道这些数据位于使用数据的某个位置,我可以通过AX浏览:

Microsoft Dynamics AX> Tools> Development Tools> Application Objects> Usage Data

AOT> System Documentation> Tables> SysLastValue> (右键单击)> Add-Ins> Table Browser

或通过SQL:

use AXDB
go

select *
from SysLastValue 
where userid in 
(
    select id 
    from userinfo 
    where networkalias in ('userid1','userid2')
)
and elementname like '%print%'
and iskernel = 1

但到目前为止,我还无法猜测哪个设置包含上次使用的打印机信息。由于value字段属于图像类型(即blob),因此我也无法根据值进行搜索。

有关如何找到此设置的任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:4)

不幸的是,最近没有使用过的打印机"存储,每个进程打包并存储最后使用的打印设置。以下是从销售表单过帐拣配单后如何提取上次使用的打印设置的示例。

static void JobGetPrinterSettingsPickList(Args _args)
{
    container                       lastValues;
    SalesFormLetter_PickingList     pickList = new SalesFormLetter_PickingList();
    SRSPrintDestinationSettings     printSettings;

    lastValues = xSysLastValue::getValue(curext(), curUserId(), UtilElementType::Class, classStr(SalesFormLetter_PickingList), formStr(SalesTable));

    pickList.unpack(lastValues);

    printSettings = new SRSPrintDestinationSettings(pickList.printerSettingsFormletter());
    info(strFmt("%1", printSettings.printerName()));
    info(strFmt("%1", printSettings.printerType()));
}

编辑:啊,我发现您遇到了具体问题。检查打包/解压缩以及出现问题的任何对象的版本。这可能是问题所在。或者,如果它涉及多个方面,请检查它们是否都是扩展类,并且您需要查看父类。