问题现象:近期有一个用友通T+3财务软件的客户在进行年度数据结转时卡在了建立新的会计年度这边,主要错误现象为:用友T+3创建年度帐时提示:对象名 T+AX_SB_NSSB_BJ_ZB 无效?如下图所示:

确定后可能还会有如下提示:未准备命令,而且一直退不出去,关不掉系统管理。

首先想到的办法就是把这个账套降级后再升级试一下看,因为不少的建立年度账的问题试用这个方法都可以解决,于是开始进数据库中操作:use ufdata_010_2016
update accinformation set cvalue='8.213' where cid ='99' and csysid = 'AA'可惜,降级后进系统管理升级SQLSERVER数据库时提示了更多的错误,发现不行。
后来想到之前发布过一款专门用于用友T+3升级问题之降级处理的工具,于是使用工具进行尝试,看是否可以成功。
1、打开工具后,可直接进行修复,如果是提示下面的报错,要考虑电脑上是否安装好了用友通T+3软件,另外解压后存在在C盘根目录下进行尝试。

2、连接数据库时,注意自己的SA口令别输入错误,如果不记得SA密码的话,可以参考教程进行修改:https://www.yyrjxz.com/xue/sa.html。
3、用友小助理比较喜欢研究工具,后来发现工具中的脚本并不仅仅是降级这么简单,大家可以一起看一下。update accinformation set cvalue='8.216',cdefault='8.216' where cname='versionflag'
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Rpt_FldDEF]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
select * into tempdb..yld1 from rpt_flddef
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Rpt_FldDEF]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Rpt_FldDEF]
GO
CREATE TABLE [dbo].[Rpt_FldDEF] (
[ID_Field] [int] IDENTITY (1, 1) NOT NULL ,
[ID] [int] NULL ,
[Name] [varchar] (32) COLLATE Chinese_PRC_CI_AS NULL ,
[Expression] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[Condition] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[ModeEx] [int] NULL ,
[OrderEx] [int] NULL ,
[TopEx] [int] NULL ,
[LeftEx] [int] NULL ,
[Width] [int] NULL ,
[Height] [int] NULL ,
[Visible] [int] NULL ,
[Note] [varchar] (32) COLLATE Chinese_PRC_CI_AS NULL ,
[nameForeign] [varchar] (32) COLLATE Chinese_PRC_CI_AS NULL ,
[iColSize] [int] NULL ,
[FormatEx] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[iAlignStyle] [int] NULL ,
[iSize] [int] NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Rpt_FldDEF] WITH NOCHECK ADD
CONSTRAINT [Rpt_FldDEF_PK] PRIMARY KEY CLUSTERED
(
[ID_Field]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Rpt_FldDEF] ADD
CONSTRAINT [DF__Rpt_FldDe__iColS__76B76416] DEFAULT (0) FOR [iColSize],
CONSTRAINT [DF__Rpt_FldDe__iAlig__77AB884F] DEFAULT (0) FOR [iAlignStyle],
CONSTRAINT [DF__Rpt_FldDe__iSize__789FAC88] DEFAULT (0) FOR [iSize]
GO
CREATE INDEX [ID] ON [dbo].[Rpt_FldDEF]([ID]) ON [PRIMARY]
GO
CREATE UNIQUE INDEX [ID_Field] ON [dbo].[Rpt_FldDEF]([ID_Field]) ON [PRIMARY]
GO
setuser
GO
EXEC sp_bindefault N'[dbo].[Rpt_FldDEF_Height_D]', N'[Rpt_FldDEF].[Height]'
GO
EXEC sp_bindefault N'[dbo].[Rpt_FldDEF_ID_D]', N'[Rpt_FldDEF].[ID]'
GO
EXEC sp_bindefault N'[dbo].[Rpt_FldDEF_LeftEx_D]', N'[Rpt_FldDEF].[LeftEx]'
GO
EXEC sp_bindefault N'[dbo].[Rpt_FldDEF_ModeEx_D]', N'[Rpt_FldDEF].[ModeEx]'
GO
EXEC sp_bindefault N'[dbo].[Rpt_FldDEF_OrderEx_D]', N'[Rpt_FldDEF].[OrderEx]'
GO
EXEC sp_bindefault N'[dbo].[Rpt_FldDEF_TopEx_D]', N'[Rpt_FldDEF].[TopEx]'
GO
EXEC sp_bindefault N'[dbo].[Rpt_FldDEF_Visible_D]', N'[Rpt_FldDEF].[Visible]'
GO
EXEC sp_bindefault N'[dbo].[Rpt_FldDEF_Width_D]', N'[Rpt_FldDEF].[Width]'
GO
setuser
GO
set identity_insert Rpt_FldDEF on
insert into dbo.Rpt_FldDEF(ID_Field, ID, Name, Expression, Condition, ModeEx, OrderEx, TopEx, LeftEx, Width, Height, Visible, Note, nameForeign, iColSize, FormatEx, iAlignStyle, iSize)
select iD_Field, ID, Name, Expression, Condition, ModeEx, OrderEx, TopEx, LeftEx, Width, Height, Visible, Note, nameForeign, iColSize, FormatEx, iAlignStyle, iSize
-- select *
from tempdb..yld1
set identity_insert Rpt_FldDEF off
go
if exists (select * from tempdb..sysobjects where name='yld1')
drop table tempdb..yld1
GO
通过上述SQL脚本可以看出来除了降级,还有操作是通过删除RPT开头的数据库表,再重建来解决此问题。