K3云星空一则导入数据的“血案”
这次在做云星空两个账套间数据进行基础数据同步的时候产生了N多的问题,这些问题多种多样,有的没有WebAPI,有的则是数据库字段有问题,但是最让我痛苦的是同步仓位信息。
这次就着重说一下这个,仓位信息首先在云星空中与其他的基础资料不同,它被设计成了单独的弹性域,所以不属于一类基础信息,又没有提供WebAPI的接口,所以在本次的开发中就遇到了极大的问题,同步过后,仓位值集显示正常,仓库选择仓位值集也正常,但是物料选择仓库、仓位的时候就会选择不到,弹出的信息框中没有任何信息显示,包括Column名称等,而且导入单据后对应的仓位也显示不正确,这就非常苦恼了。说说怎么解决的:
1、找到了所有的后台表,包括:下面这些,一点点对比了每一个字段,最后都正确,无解!这里花费了大量的时间。
select * from T_BD_STOCK where FSTOCKID=328625
select * from T_BD_STOCKFLEXITEM where FSTOCKID=328625
select * from T_BD_STOCKFLEXDETAIL where fentryid=100011
select * from T_BAS_FLEXVALUESDETAIL where ff100006>0
select * from t_BAS_FlexValuesEntry where fid=100006
select * from T_BAS_FLEXVALUES
select * from T_BD_STOCKALERT
exec ..sp_tablecollations_100 N'.[t_BD_Stock]'
select * from T_BD_FLEXVALUESCOM where fstockid in (125415,211687,211688)
2、在新增仓位值集的时候发现报错:创建唯一PK索引的时候报错:这种情况没有找到原因,但是找到了解决办法,就是每次手动执行一段脚本:
CREATE UNIQUE NONCLUSTERED INDEX [IDX_BAS_FLEXVALUESDETAIL_U] ON [dbo].[T_BAS_FLEXVALUESDETAIL]
(
[FF100004] ASC,
[FF100005] ASC,
[FF100006] ASC,
[FF100007] ASC,
[FF100008] ASC,
[FF100009] ASC,
[FF100010] ASC,
[FF100014] ASC,
[FF100015] ASC,
[FF100016] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
3、通过SQLProfile追踪了大量的脚本(各种操作的组合等等)并进行分析,没有发现任何更新后台的脚本,至今这都是个迷??甚至对系统框架表进行了分析,并想要更新,结果杯具了,没有更新成功,此路不通。
4、查看到 线上一个帖子:https://vip.kingdee.com/article/24803?channel_level=kdclub,通过这个帖子找到了仓位值集属于元数据中的增量XML:

通过SQL语句找到该项XML:select FKERNELXML,* from T_META_OBJECTTYPE where FID = 'BD_FLEXVALUESDETAIL_EXTEND'

找到这个XML后发现,确实这个XML中缺少了原有部分只从数据库中同步过来的数据,所以从原A中找到这部分的增量XML,与现有XML进行了合并,修改(此步很重要),并通过语句进行了更新:
declare @xmldd xml
set @xmldd='<FormMetadata>
<BusinessInfo>
<BusinessInfo>
<Elements>
<Form action="edit" oid="BD_FLEXDATAMODEL" ElementType="800" ElementStyle="0">
<Id>BD_FLEXVALUESDETAIL_EXTEND</Id>
</Form>
<BaseDataField ElementType="13" ElementStyle="0">
<ConditionType>0</ConditionType>
<LookUpObjectID>6d89f6af-fdcf-48bd-a8c5-a0739218044e</LookUpObjectID>
<SrcFindFieldName>FNUMBER</SrcFindFieldName>
<SrcDisplayFieldName>FNAME</SrcDisplayFieldName>
<PropertyName>F100004</PropertyName>
<FieldName>FF100004</FieldName>
<FieldType>127</FieldType>
<Name>公司库仓位</Name>
<Id>4bf6527bc8534c0d96550d9b604bccd3</Id>
<Key>FF100004</Key>
</BaseDataField>
<BaseDataField ElementType="13" ElementStyle="0">
<ConditionType>0</ConditionType>
<LookUpObjectID>6d89f6af-fdcf-48bd-a8c5-a0739218044e</LookUpObjectID>
<SrcFindFieldName>FNUMBER</SrcFindFieldName>
<SrcDisplayFieldName>FNAME</SrcDisplayFieldName>
<PropertyName>F100005</PropertyName>
<FieldName>FF100005</FieldName>
<FieldType>127</FieldType>
<Name>样机库仓位</Name>
<Id>7fcb06e52603484894eca7678de46d2c</Id>
<Key>FF100005</Key>
</BaseDataField>
<BaseDataField ElementType="13" ElementStyle="0">
<ConditionType>0</ConditionType>
<LookUpObjectID>6d89f6af-fdcf-48bd-a8c5-a0739218044e</LookUpObjectID>
<SrcFindFieldName>FNUMBER</SrcFindFieldName>
<SrcDisplayFieldName>FNAME</SrcDisplayFieldName>
<PropertyName>F100006</PropertyName>
<FieldName>FF100006</FieldName>
<FieldType>127</FieldType>
<Name>维修库仓位</Name>
<Id>5b366c6c5d644ffe952e6aa6ae797230</Id>
<Key>FF100006</Key>
</BaseDataField>
<BaseDataField ElementType="13" ElementStyle="0">
<ConditionType>0</ConditionType>
<LookUpObjectID>6d89f6af-fdcf-48bd-a8c5-a0739218044e</LookUpObjectID>
<SrcFindFieldName>FNUMBER</SrcFindFieldName>
<SrcDisplayFieldName>FNAME</SrcDisplayFieldName>
<PropertyName>F100007</PropertyName>
<FieldName>FF100007</FieldName>
<FieldType>127</FieldType>
<Name>实验室仓位</Name>
<Id>88f2442b6f7045d9b82f5b22b742fcc5</Id>
<Key>FF100007</Key>
</BaseDataField>
<BaseDataField ElementType="13" ElementStyle="0">
<ConditionType>0</ConditionType>
<LookUpObjectID>6d89f6af-fdcf-48bd-a8c5-a0739218044e</LookUpObjectID>
<SrcFindFieldName>FNUMBER</SrcFindFieldName>
<SrcDisplayFieldName>FNAME</SrcDisplayFieldName>
<PropertyName>F100008</PropertyName>
<FieldName>FF100008</FieldName>
<FieldType>127</FieldType>
<Name>集智-公司库仓位</Name>
<Id>6ea2746f673f410dab6e8ac8d49acd7f</Id>
<Key>FF100008</Key>
</BaseDataField>
<BaseDataField ElementType="13" ElementStyle="0">
<ConditionType>0</ConditionType>
<LookUpObjectID>6d89f6af-fdcf-48bd-a8c5-a0739218044e</LookUpObjectID>
<SrcFindFieldName>FNUMBER</SrcFindFieldName>
<SrcDisplayFieldName>FNAME</SrcDisplayFieldName>
<PropertyName>F100009</PropertyName>
<FieldName>FF100009</FieldName>
<FieldType>127</FieldType>
<Name>智领公司库仓位</Name>
<Id>1d54e358d41e44bf85e287fb8c901bf3</Id>
<Key>FF100009</Key>
</BaseDataField>
<BaseDataField ElementType="13" ElementStyle="0">
<ConditionType>0</ConditionType>
<LookUpObjectID>6d89f6af-fdcf-48bd-a8c5-a0739218044e</LookUpObjectID>
<SrcFindFieldName>FNUMBER</SrcFindFieldName>
<SrcDisplayFieldName>FNAME</SrcDisplayFieldName>
<PropertyName>F100010</PropertyName>
<FieldName>FF100010</FieldName>
<FieldType>127</FieldType>
<Name>龙川公司库仓位</Name>
<Id>b028de59bc844c5799d842a1ca40e9b3</Id>
<Key>FF100010</Key>
</BaseDataField>
<BaseDataField ElementType="13" ElementStyle="0">
<ConditionType>0</ConditionType>
<LookUpObjectID>6d89f6af-fdcf-48bd-a8c5-a0739218044e</LookUpObjectID>
<SrcFindFieldName>FNUMBER</SrcFindFieldName>
<SrcDisplayFieldName>FNAME</SrcDisplayFieldName>
<PropertyName>F100015</PropertyName>
<FieldName>FF100015</FieldName>
<FieldType>127</FieldType>
<Name>902</Name>
<Id>a4b4c01666b0428cac960a919be0539b</Id>
<Key>FF100015</Key>
</BaseDataField>
<BaseDataField ElementType="13" ElementStyle="0">
<ConditionType>0</ConditionType>
<LookUpObjectID>6d89f6af-fdcf-48bd-a8c5-a0739218044e</LookUpObjectID>
<SrcFindFieldName>FNUMBER</SrcFindFieldName>
<SrcDisplayFieldName>FNAME</SrcDisplayFieldName>
<PropertyName>F100014</PropertyName>
<FieldName>FF100014</FieldName>
<FieldType>127</FieldType>
<Name>ZJ901</Name>
<Id>11a3cfa34a0d47898c5148273920f39d</Id>
<Key>FF100014</Key>
</BaseDataField>
</Elements>
</BusinessInfo>
</BusinessInfo>
<LayoutInfos>
<LayoutInfo action="edit" oid="c91bd53d-c5a8-4202-b618-360f72865118">
<Appearances>
<TextFieldAppearance action="edit" oid="f5fa4f20-825b-42db-bafd-d7784f68a899" ElementType="1" ElementStyle="1">
<Tabindex>10</Tabindex>
</TextFieldAppearance>
<BaseDataFieldAppearance ElementType="13" ElementStyle="1">
<EmptyText action="setnull" />
<Key>FF100004</Key>
<ListDefaultWidth>100</ListDefaultWidth>
<Tabindex>1</Tabindex>
<Left>25</Left>
<Top>41</Top>
<LabelWidth>80</LabelWidth>
<Width>60</Width>
<Caption>公司库仓位</Caption>
<Id>8a04d3bffa0842449d71535d7a38c272</Id>
</BaseDataFieldAppearance>
<BaseDataFieldAppearance ElementType="13" ElementStyle="1">
<EmptyText action="setnull" />
<Key>FF100005</Key>
<ListDefaultWidth>100</ListDefaultWidth>
<Tabindex>2</Tabindex>
<Left>25</Left>
<Top>66</Top>
<LabelWidth>80</LabelWidth>
<Width>60</Width>
<Caption>样机库仓位</Caption>
<Id>baafdc4a407e49339317c56b7fee2a02</Id>
</BaseDataFieldAppearance>
<BaseDataFieldAppearance ElementType="13" ElementStyle="1">
<EmptyText action="setnull" />
<Key>FF100006</Key>
<ListDefaultWidth>100</ListDefaultWidth>
<Tabindex>3</Tabindex>
<Left>25</Left>
<Top>41</Top>
<LabelWidth>80</LabelWidth>
<Width>60</Width>
<Caption>维修库仓位</Caption>
<Id>8c342aaf68ad46e1abeb8a7879789c35</Id>
</BaseDataFieldAppearance>
<BaseDataFieldAppearance ElementType="13" ElementStyle="1">
<EmptyText action="setnull" />
<Key>FF100007</Key>
<ListDefaultWidth>100</ListDefaultWidth>
<Tabindex>4</Tabindex>
<Left>25</Left>
<Top>41</Top>
<LabelWidth>80</LabelWidth>
<Width>60</Width>
<Caption>实验室仓位</Caption>
<Id>e66dbb77bcc642cca8880c570bb9f62f</Id>
</BaseDataFieldAppearance>
<BaseDataFieldAppearance ElementType="13" ElementStyle="1">
<EmptyText action="setnull" />
<Key>FF100008</Key>
<ListDefaultWidth>100</ListDefaultWidth>
<Tabindex>5</Tabindex>
<Left>25</Left>
<Top>66</Top>
<LabelWidth>80</LabelWidth>
<Width>60</Width>
<Caption>集智-公司库仓位</Caption>
<Id>98d95336fd5346469836729e4a169423</Id>
</BaseDataFieldAppearance>
<BaseDataFieldAppearance ElementType="13" ElementStyle="1">
<EmptyText action="setnull" />
<Key>FF100009</Key>
<ListDefaultWidth>100</ListDefaultWidth>
<Tabindex>6</Tabindex>
<Left>25</Left>
<Top>91</Top>
<LabelWidth>80</LabelWidth>
<Width>60</Width>
<Caption>智领公司库仓位</Caption>
<Id>ea56e12f06294e10a9d84657d25185a0</Id>
</BaseDataFieldAppearance>
<BaseDataFieldAppearance ElementType="13" ElementStyle="1">
<EmptyText action="setnull" />
<Key>FF100010</Key>
<ListDefaultWidth>100</ListDefaultWidth>
<Tabindex>7</Tabindex>
<Left>25</Left>
<Top>116</Top>
<LabelWidth>80</LabelWidth>
<Width>60</Width>
<Caption>龙川公司库仓位</Caption>
<Id>4509668c2ccf454ea532d90449bdacfa</Id>
</BaseDataFieldAppearance>
<BaseDataFieldAppearance ElementType="13" ElementStyle="1">
<EmptyText action="setnull" />
<Key>FF100014</Key>
<ListDefaultWidth>100</ListDefaultWidth>
<Tabindex>8</Tabindex>
<Left>25</Left>
<Top>91</Top>
<LabelWidth>80</LabelWidth>
<Width>60</Width>
<Caption>ZJ901</Caption>
<Id>3efce7a4edb543858e81eec9e459eab1</Id>
</BaseDataFieldAppearance>
<BaseDataFieldAppearance ElementType="13" ElementStyle="1">
<EmptyText action="setnull" />
<Key>FF100015</Key>
<ListDefaultWidth>100</ListDefaultWidth>
<Tabindex>9</Tabindex>
<Left>25</Left>
<Top>66</Top>
<LabelWidth>80</LabelWidth>
<Width>60</Width>
<Caption>902</Caption>
<Id>e3be4b941db145e583a93f8c414fc961</Id>
</BaseDataFieldAppearance>
</Appearances>
</LayoutInfo>
</LayoutInfos>
</FormMetadata>'
update T_META_OBJECTTYPE set FKERNELXML=@xmldd where FID = 'BD_FLEXVALUESDETAIL_EXTEND'
更新完成后,重新进入系统就可以了,之前的错误没有了
从这里可以总结:
了解云星空中每个对象的时候,首先要了解这个对象的本质是什么,是普通基础资料、单据,还是元数据等等,每个对象的控制不仅仅是后台的数据表,而且还需要元数据对象的基本控制,所以要首先了解这些基本特性;其次是要对每个对象涉及的数据表都要浏览到、查询到,清楚的了解每个字段的意义。
先总结这些吧!

浙公网安备 33010602011771号