2017-02-03 125 views
1

业务部门有一个审计请求,要求在一段时期内为NAV 2016中的所有新创建的供应商提供一份清单。我无法找到供应商表的条目创建日期或添加日期。这可能吗?我目前正在向[商家]提供[上次修改日期],其中包括何时添加或更新了供应商,但他们只希望新添加。有没有办法在Dynamics NAV 2016中提供供应商创建日期?

我当前的代码:

SELECT CAST([Last Date Modified] AS DATE) AS 'Last Date Modified' 
     ,[No_] 
     ,[Name] 
     ,[Search Name] 
     ,[Address] 
     ,[Address 2] 
     ,[City] 
     ,[Vendor Posting Group] 
     ,[Country_Region Code] 
     ,[Post Code] 
     ,[County] 
     ,[Vendor Type Code] 
    FROM [Company].[dbo].[Company$Vendor] 
    WHERE YEAR([Last Date Modified]) = '2016' 
    and MONTH([Last Date Modified]) IN ('10','11','12') 
ORDER BY [Last Date Modified] 
,[No_] 
+0

如果没有字段,那么显然没有。但是,您可能已为此表启用更改日志。在那里您可以找到关于供应商创建的条目。表是“更改日志条目”。 –

+0

除了在时间段之前恢复数据库的备份并查询两个表之间的差异之外,Mak建议,唯一能够在不涉及开发人员的情况下完成这项工作的另一种方式就是如此。启用供应商表的插入触发器的更改日志。当然,如果有信息他们可能想跟踪更改或删除,您可能需要考虑启用这些触发器。不幸的是,在当前情况下唯一可以确定的方法是恢复备份。 – user3289372

回答

1

如果您有更改日志活跃,以下是,将让你的所有插入到供应商表中的基本查询:

SELECT 
cle.[Primary Key]AS Vendor 
, cle.[New Value] 
, ven.Name 
, CAST(cle.[Date and Time] AS DATE) AS LogDate 
, CAST(cle.Time AS TIME(0)) AS LogTime 
, cle.[Field No_] 
, cle.[Type of Change] 
, cle.[User ID] 
FROM dbo.[YourCompany$Change Log Entry] cle 
    left outer JOIN dbo.YourCompany$Vendor ven 
    ON cle.[Primary Key] = ven.No_ 
    WHERE 
    cle.[Table No_] = 23 
    and cle.[Field No_] = 1 
AND cle.[Type of Change] = 0 
ORDER BY LogDate, LogTime, Vendor 

我米还准备在下周发布的更改日志的博客文章。

+0

是的,没错。唯一的办法是找到变更日志 – azatoth

0

如果没有更改日志有效,则选项

A.拉旧的备份和比较。

B.使用别的方法推断它。为每个供应商查找第一个供应商分类帐条目;如果您对他们的请求和交付“所有供应商在2016年10月首次使用”进行了重新说明,您会得到一些误报,但可能足以满足审计师的要求。
或使用您帐户部门的一些信息。 (他们必须在NAV之外有记录吗?)如果您使用连续编号系列,那么您只需确定日期范围中的第一个记录。

长期来说,您可以与您的Dynamics NAV合作伙伴交谈,并要求他们修改供应商表以标记创建日期/时间。尽管我通常会推荐在供应商表上运行变更日志,因为这是审计人员经常想看到的。出于同样的原因,我也总是包含银行账户表。