Printing 如何找到用户';SysLastValue中最后使用的打印机

Printing 如何找到用户';SysLastValue中最后使用的打印机,printing,axapta,microsoft-dynamics,dynamics-ax-2009,dynamics-ax-2012-r2,Printing,Axapta,Microsoft Dynamics,Dynamics Ax 2009,Dynamics Ax 2012 R2,我一直在尝试查找用户上次使用的打印机的存储位置,以便清除此使用数据(因为一些用户遇到问题,尽管我们安装了KB981681,但记忆中的打印机仍默认为XPS writer,打印机可用;只是在某些AX表单上未默认) 我知道这些数据在使用数据中的某个地方,我可以通过AX浏览这些数据: Microsoft Dynamics AX工具开发工具应用程序对象使用数据 AOT系统文档表格SysLastValue>(右键单击)>加载项表格浏览器 或通过SQL: use AXDB go select * from

我一直在尝试查找用户上次使用的打印机的存储位置,以便清除此使用数据(因为一些用户遇到问题,尽管我们安装了KB981681,但记忆中的打印机仍默认为XPS writer,打印机可用;只是在某些AX表单上未默认)

我知道这些数据在使用数据中的某个地方,我可以通过AX浏览这些数据:

Microsoft Dynamics AX
工具
开发工具
应用程序对象
使用数据

AOT
系统文档
表格
SysLastValue
>(右键单击)>
加载项
表格浏览器

或通过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
但是,到目前为止,我还无法猜测哪种设置保存了上次使用的打印机信息。由于
字段的类型为image(即blob),因此我也无法基于值进行搜索


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

不幸的是,实际上没有存储一个“上次使用的打印机”,而是每个进程都会打包并存储上次使用的打印设置。下面是一个示例,说明如何在从销售表单过账领料单后提取上次使用的打印设置

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()));
}

编辑:啊,我看到你有一个特别的问题。检查存在问题的任何对象的打包/解包和版本。这可能就是问题所在。或者,如果是在几个方面,请检查它们是否都是扩展类,您需要查看父类。

不幸的是,实际上没有存储一个“上次使用的打印机”,而是每个进程打包并存储上次使用的打印设置。下面是一个示例,说明如何在从销售表单过账领料单后提取上次使用的打印设置

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()));
}

编辑:啊,我看到你有一个特别的问题。检查存在问题的任何对象的打包/解包和版本。这可能就是问题所在。或者,如果是在几个方面,检查它们是否都是扩展类,您需要查看父类。

保存的值存储在系统表
SysLastValue
中。您可以在那里自由删除相关记录。在“工具\选项”对话框的“使用数据”中重置所有用户设置也会起作用;今天晚些时候我会玩这个/很快会反馈。保存的值存储在系统表
SysLastValue
中。您可以在那里自由删除相关记录。在“工具\选项”对话框的“使用数据”中重置所有用户设置也会起作用;今天晚些时候我会玩这个/很快会反馈。