通过ODBC从Tally提取含分类账上级的日记账/交易数据
解决方案:扩展TDL集合与查询以提取额外凭证数据
1. 更新TDL集合定义
修改原有的RTSAllVouchers集合,在Fetch中添加关联字段,确保Ledger层级信息、库存项名称及单位数据被加载:
[Collection: RTSAllVouchers] Type: Voucher IsODBCTable: Yes Fetch : *, AllLedgerEntries.*, LedgerEntries.*, LedgerEntries.Ledger.Parent, LedgerEntries.Ledger.Group, LedgerEntries.Ledger.SubGroup, LedgerEntries.StockItem.Name, LedgerEntries.StockItem.Units
新增字段说明
LedgerEntries.Ledger.Parent:获取ledger的上级父节点名称LedgerEntries.Ledger.Group:获取ledger的主分组(Primary Group)LedgerEntries.Ledger.SubGroup:获取ledger的子分组(Subgroup)LedgerEntries.StockItem.Name:获取库存项名称LedgerEntries.StockItem.Units:获取库存项对应的单位对象
2. 修改SELECT查询语句
在原查询中加入新增字段,添加别名提升结果可读性:
Select $Date, $Reference, $VouchertypeName, $PartyLedgerName, $$CollectionField:$Amount:1:LedgerEntries, $LedgerEntries.Ledger.Parent as 'Ledger Parent', $LedgerEntries.Ledger.Group as 'Primary Group', $LedgerEntries.Ledger.SubGroup as 'Subgroup', $LedgerEntries.StockItem.Name as 'Stock Item Name', $LedgerEntries.StockItem.Units as 'Units' from RTSAllVouchers where $$IsSales:$VoucherTypeName
额外说明
如果Units对象包含多个属性(如单位名称、符号),可根据需求提取具体属性,例如$LedgerEntries.StockItem.Units.Name获取单位名称。
内容的提问来源于stack exchange,提问作者E-realm Services
相关产品推荐
相关产品推荐

