如何通过Tally Connector获取指定分类账的日期范围凭证数据
解决Tally Connector获取指定分类账凭证无数据的问题
可能的问题与修复步骤
1. 确认请求参数的准确性
- 公司名称完全匹配:Tally对公司名称的大小写、空格、标点符号敏感,确保
Company属性值和Tally Prime中显示的公司名称完全一致。 - 日期范围有效性:检查
FromDate与ToDate的顺序是否正确,同时确认Tally中该分类账的凭证确实落在设定的日期区间内。
2. 修正异步调用写法
直接使用.Result可能引发线程死锁,建议改用await处理异步方法,避免线程阻塞影响数据返回:
// 在异步方法内执行 var voucherRequestOptions = new VoucherRequestOptions() { FromDate = new DateTime(2023,1,1), ToDate = new DateTime(2024, 1, 1), Company = "Company Name" }; var voucher = await tallyService.GetVoucherAsync(ledgerName, voucherRequestOptions); var vouchers = await tallyService.GetVouchersAsync(voucherRequestOptions); foreach (var v in vouchers) { Console.WriteLine($"Voucher Number: {v.VoucherNumber}, Date: {v.Date}"); }
3. 添加分类账筛选条件
如果GetVouchersAsync未自动过滤指定分类账的凭证,需在VoucherRequestOptions中添加筛选规则:
var voucherRequestOptions = new VoucherRequestOptions() { FromDate = new DateTime(2023,1,1), ToDate = new DateTime(2024, 1, 1), Company = "Company Name", Filter = $"LedgerName='{ledgerName}'" }; var vouchers = await tallyService.GetVouchersAsync(voucherRequestOptions);
4. 检查Tally Prime访问权限
确保Tally Prime已开启外部API访问权限,你的.NET应用IP在Tally允许列表中;同时确认Tally处于运行状态,当前登录用户有权限查看该分类账的凭证数据。
5. 获取期初/期末余额
要匹配Tally Prime的显示效果,需调用专门的余额查询方法:
var balanceOptions = new LedgerBalanceRequestOptions() { FromDate = new DateTime(2023,1,1), ToDate = new DateTime(2024,1,1), Company = "Company Name" }; var ledgerBalance = await tallyService.GetLedgerBalanceAsync(ledgerName, balanceOptions); Console.WriteLine($"期初余额: {ledgerBalance.OpeningBalance}, 期末余额: {ledgerBalance.ClosingBalance}");
内容的提问来源于stack exchange,提问作者Ajay Prajapati
相关产品推荐
相关产品推荐

