转载自 https://blog.youkuaiyun.com/qq_35844400/article/details/110520249
一、Form
1.ChooseFormList选择清单
点击输入框后面的选择按钮,弹出指定清单列表窗口,并可以选择回调数据
srf 代码
<item backcolor="-1" font_size="-1" forecolor="-1" tab_order="0" text_style="0" top="206" left="241" width="120" height="14" AffectsFormMode="1" description="" disp_desc="0" enabled="1" from_pane="0" to_pane="0" linkto="" right_just="0" type="16" visible="1" uid="26" IsAutoGenerated="0">
<specific ChooseFromListAlias="ItemCode" ChooseFromListIsAutoFill="0" ChooseFromListUID="CFL_4" IsPassword="0" supp_zeros="0">
<databind databound="1" table="" alias="ItemCode" />
</specific>
</item>
<item backcolor="-1" font_size="-1" forecolor="-1" tab_order="0" text_style="0" top="206" left="368" width="160" height="14" AffectsFormMode="1" description="" disp_desc="0" enabled="1" from_pane="0" to_pane="0" linkto="" right_just="0" type="16" visible="1" uid="27" IsAutoGenerated="0">
<specific ChooseFromListAlias="" ChooseFromListIsAutoFill="0" ChooseFromListUID="" IsPassword="0" supp_zeros="0">
<databind databound="1" table="" alias="ItemName" />
</specific>
</item>
其中ChooseFromListAlias=" ItemCode"
对应的是清单弹窗里的字段名称,alias="ItemCode"
指代的是系统控件的别名,为了存储输入框的值,ChooseFromListUID="CFL_4"
是清单弹窗的对象指向,详细用法看下文
<ChooseFromListCollection>
<action type="add">
<ChooseFromList UniqueID="CFL_4" ObjectType="4" MultiSelection="0" IsSystem="0" />
</action>
</ChooseFromListCollection>
为UniqueID="CFL_4"
绑定显示清单的ObjectTpye,ObjectType通过查询数据库字段ObjType可得,如下图
cs 代码
void B1Form_CostInit_frm_ChooseFormListEvent(SAPBoAddon.B1AddonBase.B1ChooseFormList pVal, ref bool BubbleEvent)
{
if (pVal.BeforeAction)
{
}
else
{
switch (pVal.ChooseFromListUID)
{
case "CFL_4":
//根据当前窗体未存储在数据库中的项数据的容器名称为其赋值
this.CurrentForm.DataSources.UserDataSources.Item("ItemCode").Value = pVal.SelectedObjects.GetValue("ItemCode", 0).ToString().Trim();
this.CurrentForm.DataSources.UserDataSources.Item("ItemName").Value = pVal.SelectedObjects.GetValue("ItemName", 0).ToString().Trim();
break;
}
}
}
如果弹出框绑定的字段为未存储在数据库中的字段时,类似于
<databind databound="1" table="" alias="ItemCode" />
那么千万不要忘记在Form.srf文件中为其UserDataSources进行绑定操作
<userdatasources>
<action type="add">
<datasource type="9" size="50" uid="ItemCode" />
<datasource type="9" size="254" uid="ItemName" />
</action>
</userdatasources>
- 1
- 2
- 3
- 4
- 5
- 6
注意!!!只有将
type
设置为9
(Short text 短文本)时才可以正常弹出清单列表,否则不显示弹出清单按钮,查看枚举类型请前往附件—BoDataType Enum(用户数据源的数据类型)
2.TabControl选项卡控件切换选项操作
srf 代码
工具箱中选择TabControl控件,拖拽至窗体中,右键选项卡可以进行添加、移除标签页
然后将表格控件调整成一致的大小,然后重叠堆放在一起
第一个标签上绑定的matrix控件的属性设置from_pane="0"
和 to_pane="1"
第二个标签上绑定的matrix控件的属性设置from_pane="2"
和 to_pane="2"
第三个标签上绑定的matrix控件的属性设置from_pane="3"
和 to_pane="3"
以此类推…
cs 代码
void B1Form_CostInit_frm_ItemEvent(SAPBoAddon.B1AddonBase.B1ItemEvent pVal, ref bool BubbleEvent)
{
if (pVal.BeforeAction)
{
}
else
{
if (pVal.ActionSuccess)
{
//Tab_0
if (pVal.EventType == SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED && pVal.ItemUID == "Tab_0")
{
SBOApp.Forms.ActiveForm.Freeze(true);
SBOApp.Forms.ActiveForm.PaneLevel = 1;
SBOApp.Forms.ActiveForm.Freeze(false);
}
//Tab_1
if (pVal.EventType == SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED && pVal.ItemUID == "Tab_1")
{
SBOApp.Forms.ActiveForm.Freeze(true);
SBOApp.Forms.ActiveForm.PaneLevel = 2;
SBOApp.Forms.ActiveForm.Freeze(false);
}
//Tab_2
if (pVal.EventType == SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED && pVal.ItemUID == "Tab_2")
{
SBOApp.Forms.ActiveForm.Freeze(true);
SBOApp.Forms.ActiveForm.PaneLevel = 3;
SBOApp.Forms.ActiveForm.Freeze(false);
}
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
3.单选按钮
srf 代码
<item top="123" left="269" width="70" height="14" AffectsFormMode="1" description="" disp_desc="0" enabled="1" from_pane="0" to_pane="0" linkto="" right_just="0" type="122" visible="1" uid="Item_18" IsAutoGenerated="0">
<specific caption="平均分摊">
<databind databound="1" table="@COST_BASIC_SETUP" alias="U_ShareWay" />
</specific>
</item>
- 1
- 2
- 3
- 4
- 5
cs 代码
//打开页面时初始化控件
protected override void InitializeForm(B1FormInitializePar InitPar)
{
SAPbouiCOM.OptionBtn proTerminated = this.CurrentForm.Items.Item("Item_17").Specific;
proTerminated.GroupWith("Item_13");
SAPbouiCOM.OptionBtn costCenter = this.CurrentForm.Items.Item("Item_18").Specific;
costCenter.GroupWith("Item_28");
SAPbouiCOM.OptionBtn priceList = this.CurrentForm.Items.Item("Item_23").Specific;
priceList.GroupWith("Item_22");
SAPbouiCOM.OptionBtn material = this.CurrentForm.Items.Item("Item_24").Specific;
material.GroupWith("Item_21");
//将传入的单选按钮循环设置控制显示状态
ControlsVisibleStatus(new String[] { "Item_13", "Item_17", "Item_22", "Item_23", "Item_30" }, false);
}
//控制控件显示隐藏
private void ControlsVisibleStatus(String[] items,Boolean status)
{
for (int i = 0; i < items.Length; i++)
{
this.CurrentForm.Items.Item(items[i]).Visible = status;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
4.LinkedButton按钮绑定
//LinkedButton linkedObject的值是查询表中的Object或者ObjType字段的值
<item top="96" left="60" width="12" height="10" AffectsFormMode="1" description="" disp_desc="0" enabled="1" from_pane="0" to_pane="0" linkto="Item_10" right_just="0" type="116" visible="1" uid="Item_13" IsAutoGenerated="0">
<specific linkedObject="52" LinkedObjectType="52" />
</item>
- 1
- 2
- 3
- 4
5.动态绑定ComboBox
srf 代码
//ComboBox:Form中的ComboBox控件
<item tab_order="0" top="94" left="76" width="80" height="14" AffectsFormMode="1" description="" disp_desc="0" enabled="1" from_pane="0" to_pane="0" linkto="" right_just="0" type="113" visible="1" uid="Item_10" IsAutoGenerated="0"></item>
- 1
- 2
cs代码
CommonUse.ComboBox_InitialForItem(this.CurrentForm.Items.Item("Item_1"), "AbsEntry", "PeriodCat", "OACP", @"""AbsEntry"" desc");
//调用动态绑定方法
public static void ComboBox_InitialForItem(SAPbouiCOM.Item oItem, string value, string description, string table, string order = null, string where = null, bool add_empty = true)
{
SAPbobsCOM.Recordset oRs = null;
try
{
oRs = SAPBoAddon.B1Addon.B1Addon.SBOCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);
string select = String.Format(@"select ""{0}"",""{1}"" from ""{2}""", value, description, table);
if (!String.IsNullOrEmpty(where))
{
select += String.Format(" {0} ", where);
}
if (!String.IsNullOrEmpty(order))
{
select += String.Format(@" order by {0}", order);
}
if (oItem.Type == SAPbouiCOM.BoFormItemTypes.it_COMBO_BOX)
{
string Value = string.Empty;
string Description = string.Empty;
oRs.DoQuery(select);
SAPbouiCOM.ComboBox cbo = oItem.Specific as SAPbouiCOM.ComboBox;
if (add_empty)
{
cbo.ValidValues.Add("", "");
}
for (int i = 0; i < oRs.RecordCount; i++)
{
Value = Convert.ToString(oRs.Fields.Item(value).Value);
Description = oRs.Fields.Item(description).Value;
cbo.ValidValues.Add(Value, Description);
oRs.MoveNext();
}
}
}
catch (Exception ex)
{
throw ex;
}
finally {
if (oRs != null) System.Runtime.InteropServices.Marshal.FinalReleaseComObject(oRs);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
6.增加菜单项并绑定点击事件
cs代码
//初始化菜单项 public static void creatMenu(SAPbouiCOM.Form CurrentForm) { try { SAPbouiCOM.MenuItem oMenuItem; SAPbouiCOM.Menus oMenus; //创建菜单参数对象 SAPbouiCOM.MenuCreationParams oCreationPackage;
oCreationPackage <span class="token operator">=</span> SAPBoAddon<span class="token punctuation">.</span>B1Addon<span class="token punctuation">.</span>B1Addon<span class="token punctuation">.</span>SBOApp<span class="token punctuation">.</span><span class="token function">CreateObject</span><span class="token punctuation">(</span>SAPbouiCOM<span class="token punctuation">.</span>BoCreatableObjectType<span class="token punctuation">.</span>cot_MenuCreationParams<span class="token punctuation">)</span><span class="token punctuation">;</span> oCreationPackage<span class="token punctuation">.</span>Checked <span class="token operator">=</span> false<span class="token punctuation">;</span> oCreationPackage<span class="token punctuation">.</span>Enabled <span class="token operator">=</span> true<span class="token punctuation">;</span> <span class="token comment">//菜单项的类型</span> oCreationPackage<span class="token punctuation">.</span>Type <span class="token operator">=</span> SAPbouiCOM<span class="token punctuation">.</span>BoMenuType<span class="token punctuation">.</span>mt_STRING<span class="token punctuation">;</span> oCreationPackage<span class="token punctuation">.</span>UniqueID <span class="token operator">=</span> <span class="token string">"journal"</span><span class="token punctuation">;</span> oCreationPackage<span class="token punctuation">.</span>String <span class="token operator">=</span> <span class="token string">"(AVA)日记账"</span><span class="token punctuation">;</span> CurrentForm<span class="token punctuation">.</span>Menu<span class="token punctuation">.</span><span class="token function">AddEx</span><span class="token punctuation">(</span>oCreationPackage<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> catch <span class="token punctuation">(</span>Exception<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> throw<span class="token punctuation">;</span> <span class="token punctuation">}</span>
}
void B1Form_sys_AP_Credit_Memo_frm_ItemEvent(SAPBoAddon.B1AddonBase.B1ItemEvent pVal, ref bool BubbleEvent)
{
if (!pVal.BeforeAction)
{
//生成右击菜单
if (pVal.EventType == SAPbouiCOM.BoEventTypes.et_FORM_LOAD)
{
BoAddonBiz_CostAccounting.AddonCs.AddMenu.creatMenu(this.CurrentForm);
}
}
}
//右键菜单的点击事件
public static void clickMenu(SAPbouiCOM.Form CurrentForm, String TableName)
{
SAPbouiCOM.DBDataSource oDb = CurrentForm.DataSources.DBDataSources.Item(TableName);
String journalId = oDb.GetValue(“U_JournalEntry”, 0).ToString();
String journalType = oDb.GetValue(“U_JournalType”, 0).ToString();
if (CurrentForm.Mode != SAPbouiCOM.BoFormMode.fm_OK_MODE && CurrentForm.Mode != SAPbouiCOM.BoFormMode.fm_VIEW_MODE)
{
SAPBoAddon.B1Addon.B1Addon.SBOApp.StatusBar.SetText(“请先保存单据”, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Warning);
return;
}
if (!String.IsNullOrWhiteSpace(journalId) && !String.IsNullOrWhiteSpace(journalType))
{
SAPBoAddon.B1Addon.B1Addon.SBOApp.OpenForm(journalType.Equals(“日记账分录”) ? SAPbouiCOM.BoFormObjectEnum.fo_JournalPosting : SAPbouiCOM.BoFormObjectEnum.fo_JournalVoucher, “”, journalId);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
SAPbouiCOM.BoMenuType.mt_STRING
含义是该菜单项没有子项,相反mt_POPUP
的含义则是带有子项的菜单项
//方法调用
void B1Form_sys_AP_Credit_Memo_frm_MenuEvent(SAPBoAddon.B1AddonBase.B1MenuEvent pVal, ref bool BubbleEvent)
{
try
{
if (pVal.BeforeAction)
{
switch (pVal.MenuUID)
{
//右击菜单点击事件
case "journal":
BoAddonBiz_CostAccounting.AddonCs.AddMenu.clickMenu(this.CurrentForm, "ORPC");
break;
}
}
}
catch (Exception ex)
{
SBOApp.StatusBar.SetText(ex.Message, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
二、Matrix
1.动态绑定ComboBox
srf 代码
<item cellHeight="16" tab_order="0" titleHeight="20" top="50" left="13" width="695" height="317" AffectsFormMode="1" description="" disp_desc="0" enabled="1" from_pane="0" to_pane="0" linkto="" right_just="0" type="127" visible="1" uid="mtx_0" IsAutoGenerated="0">
<specific layout="0" SelectionMode="2">
<columns>
<action type="add">
//ComboBox
<column disp_desc="1" visible="1" AffectsFormMode="1" val_on="Y" IsAutoGenerated="0" val_off="N" title="业务伙伴组" width="50" editable="1" type="113" right_just="0" uid="Col_4" sortable="0">
<databind databound="1" table="@LEDGER_SUB_LINE" alias="U_BPGrpCod" />
<ValidValues>
<action type="add" />
</ValidValues>
</column>
</action>
</columns>
</specific>
</item>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
cs 代码
//Field1--值对应数据库字段 Field2--描述对应数据库字段 TableName--查询表名 MtxName--表单唯一值 //ColumnIndex--字段在Matrix中的下标,下标从0开始 add_empty--可不填,默认加入一行空值 public void initComboBox(String Field1, String Field2, String TableName, String MtxName, int ColumnIndex, bool add_empty = true) { string SQL_GetItemGroupCode = "select " + Field1 + "," + Field2 + " from " + TableName + ""; SAPbobsCOM.Recordset oRs_GetItemGroupCode = SBOCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset); oRs_GetItemGroupCode.DoQuery(SQL_GetItemGroupCode);
SAPbouiCOM<span class="token punctuation">.</span>Matrix mtx <span class="token operator">=</span> this<span class="token punctuation">.</span>CurrentForm<span class="token punctuation">.</span>Items<span class="token punctuation">.</span><span class="token function">Item</span><span class="token punctuation">(</span>MtxName<span class="token punctuation">)</span><span class="token punctuation">.</span>Specific<span class="token punctuation">;</span> SAPbouiCOM<span class="token punctuation">.</span>Column comboBox <span class="token operator">=</span> mtx<span class="token punctuation">.</span>Columns<span class="token punctuation">.</span><span class="token function">Item</span><span class="token punctuation">(</span>ColumnIndex<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">int</span> count <span class="token operator">=</span> oRs_GetItemGroupCode<span class="token punctuation">.</span>RecordCount<span class="token punctuation">;</span> <span class="token keyword">int</span> num <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>add_empty<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> comboBox<span class="token punctuation">.</span>ValidValues<span class="token punctuation">.</span><span class="token function">Add</span><span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">,</span> <span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token number">1</span> <span class="token operator">==</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> Object Value <span class="token operator">=</span> oRs_GetItemGroupCode<span class="token punctuation">.</span>Fields<span class="token punctuation">.</span><span class="token function">Item</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">.</span>Value<span class="token punctuation">;</span> String Description <span class="token operator">=</span> oRs_GetItemGroupCode<span class="token punctuation">.</span>Fields<span class="token punctuation">.</span><span class="token function">Item</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">.</span>Value<span class="token punctuation">;</span> comboBox<span class="token punctuation">.</span>ValidValues<span class="token punctuation">.</span><span class="token function">Add</span><span class="token punctuation">(</span>Value<span class="token punctuation">.</span><span class="token function">ToString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> Description<span class="token punctuation">)</span><span class="token punctuation">;</span> num<span class="token operator">++</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>num <span class="token operator">!=</span> count<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> oRs_GetItemGroupCode<span class="token punctuation">.</span><span class="token function">MoveNext</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">continue</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">break</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> comboBox<span class="token punctuation">.</span>ExpandType <span class="token operator">=</span> SAPbouiCOM<span class="token punctuation">.</span>BoExpandType<span class="token punctuation">.</span>et_DescriptionOnly<span class="token punctuation">;</span>
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
comboBox.ExpandType
是下拉框控件的展开类型的设置,查看枚举类型请前往附件—BoExpandType Enum(下拉框控件的展开类型)
2.绑定LinkedButton控件
srf 代码
<item cellHeight="16" tab_order="0" titleHeight="20" top="50" left="13" width="695" height="317" AffectsFormMode="1" description="" disp_desc="0" enabled="1" from_pane="0" to_pane="0" linkto="" right_just="0" type="127" visible="1" uid="mtx_0" IsAutoGenerated="0">
<specific layout="0" SelectionMode="2">
<columns>
<action type="add">
<column backcolor="-1" ChooseFromListAlias="AcctCode" ChooseFromListIsAutoFill="0" ChooseFromListUID="OACT5" font_size="-1" forecolor="-1" text_style="0" disp_desc="0" visible="1" AffectsFormMode="1" val_on="Y" IsAutoGenerated="0" val_off="N" title="收入科目" width="50" editable="1" type="116" right_just="0" uid="Col_19" sortable="0">
<databind databound="1" table="@LEDGER_SUB_LINE" alias="U_DfltIncom" />
<ExtendedObject linkedObject="1" LinkedObjectType="1" />
</column>
</action>
</columns>
</specific>
</item>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
LinkedButton:此时这个单元格内无数据时不显示LinkedButton按钮,有数据时才显示按钮,并且此单元格同时绑定了ChooseFormList选择事件要实现LinkedButton的重中之重是column标签内的的type类型,必须是116,详见,附件—BoFormItemTypes Enum(表单项类型)
3.Matrix的增加删除行按钮绑定
srf 代码
添加两个button,命名add和del
cs 代码
//首次加载
protected override void FormInfoSetting(B1FormSetting FormSetting)
{
FormSetting.FormType = B1FormTypes.ado_LedgerSub;
FormSetting.FormFileName = "AVA_LedgerSubForm.srf";
//设置Matrix属性
FormSetting.MaxOpenCount = -1;
FormSetting.AutoGetObjectNextNumber = true;
FormSetting.MatrixSetting.addButtonUID = "add";
FormSetting.MatrixSetting.delButtonUID = "del";
FormSetting.MatrixSetting.MtxUID = "mtx_0";
FormSetting.MatrixSetting.TableName = "@LEDGER_SUB_LINE";
FormSetting.MatrixSetting.TableKeyField = "LineId";
FormSetting.MatrixSetting.PrimaryLineCol = "col_f";
FormSetting.MatrixSetting.AutoLineKeyCol = "col_f";
FormSetting.MatrixSetting.AutoAddNewLine = true;
FormSetting.MatrixSetting.NotAllowNoLineSave = false;
FormSetting.MatrixSetting.Add();
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
4.设置Matrix的行字段值(ChooseFormList事件)
private void SetDBDS(String TableName, String MtxName,String KeyColumn, String SetField, String GetField, SAPBoAddon.B1AddonBase.B1ChooseFormList pVal)
{
SAPbouiCOM.DBDataSource dbds = this.CurrentForm.DataSources.DBDataSources.Item(TableName);
SAPbouiCOM.Matrix mtx = this.CurrentForm.Items.Item(MtxName).Specific;
pVal.AffectsFormMode = false;
//这里用到了获取Matrix的当前行offset(用于对行数据进行操作)的方法
dbds.Offset = Matrix.GetdbDsOffset(mtx, pVal.Row, KeyColumn, dbds);
mtx.GetLineData(pVal.Row);
dbds.SetValue(SetField, dbds.Offset, pVal.SelectedObjects.GetValue(GetField, 0).ToString());
mtx.SetLineData(pVal.Row);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
三、Events
1.复制从
点击 选择项目
按钮,弹出指定清单列表,可以根据条件查询数据,并复制到制造费结转
单据数据表格中
srf 代码
首先,创建一个按钮控件
<item top="9" left="825" width="70" height="27" AffectsFormMode="1" description="" disp_desc="0" enabled="1" from_pane="0" to_pane="0" linkto="" right_just="0" type="4" visible="1" uid="8" IsAutoGenerated="0">
<specific caption="选择科目" />
</item>
- 1
- 2
- 3
然后,创建一个数据表格,并为其绑定数据库和唯一 uid (mtx_0)
<item cellHeight="16" tab_order="0" titleHeight="20" top="60" left="6" width="905" height="390" AffectsFormMode="1" description="" disp_desc="0" enabled="1" from_pane="0" to_pane="0" linkto="" right_just="0" type="127" visible="1" uid="mtx_0" IsAutoGenerated="0">
<specific layout="0" SelectionMode="2">
<columns>
<action type="add">
<column backcolor="-1" ChooseFromListIsAutoFill="0" font_size="-1" forecolor="-1" text_style="0" disp_desc="0" visible="1" AffectsFormMode="1" val_on="Y" IsAutoGenerated="0" val_off="N" title="" width="20" editable="0" type="16" right_just="0" uid="V_-1" sortable="1">
<databind databound="1" table="@AVA_FCA1" alias="LineId" />
</column>
<column backcolor="-1" ChooseFromListIsAutoFill="0" font_size="-1" forecolor="-1" text_style="0" disp_desc="0" visible="1" AffectsFormMode="1" val_on="Y" IsAutoGenerated="0" val_off="N" title="科目编号" width="80" editable="1" type="16" right_just="0" uid="V_0" sortable="1">
<databind databound="1" table="@AVA_FCA1" alias="U_AcctCode" />
</column>
<column backcolor="-1" ChooseFromListIsAutoFill="0" font_size="-1" forecolor="-1" text_style="0" disp_desc="0" visible="1" AffectsFormMode="1" val_on="Y" IsAutoGenerated="0" val_off="N" title="科目名称" width="160" editable="1" type="16" right_just="0" uid="V_1" sortable="1">
<databind databound="1" table="@AVA_FCA1" alias="U_AcctName" />
</column>
<column backcolor="-1" ChooseFromListIsAutoFill="0" font_size="-1" forecolor="-1" text_style="0" disp_desc="0" visible="1" AffectsFormMode="1" val_on="Y" IsAutoGenerated="0" val_off="N" title="发生额" width="80" editable="1" type="16" right_just="0" uid="V_2" sortable="1">
<databind databound="1" table="@AVA_FCA1" alias="U_FS" />
</column>
</action>
</columns>
</specific>
</item>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
接着,我们创建一个跳转清单的窗体
窗体包括了查询条件
<item backcolor="-1" font_size="-1" forecolor="-1" tab_order="0" text_style="0" top="7" left="97" width="120" height="14" AffectsFormMode="1" description="" disp_desc="0" enabled="1" from_pane="0" to_pane="0" linkto="" right_just="0" type="16" visible="1" uid="12" IsAutoGenerated="0">
<specific ChooseFromListAlias="" ChooseFromListIsAutoFill="0" ChooseFromListUID="" IsPassword="0" supp_zeros="0">
<databind databound="1" table="" alias="startdate" />
</specific>
</item>
<item backcolor="-1" font_size="-1" forecolor="-1" tab_order="0" text_style="0" top="28" left="97" width="120" height="14" AffectsFormMode="1" description="" disp_desc="0" enabled="1" from_pane="0" to_pane="0" linkto="" right_just="0" type="16" visible="1" uid="13" IsAutoGenerated="0">
<specific ChooseFromListAlias="" ChooseFromListIsAutoFill="0" ChooseFromListUID="" IsPassword="0" supp_zeros="0">
<databind databound="1" table="" alias="enddate" />
</specific>
</item>
<item backcolor="-1" font_size="-1" forecolor="-1" tab_order="0" text_style="0" top="50" left="97" width="120" height="14" AffectsFormMode="1" description="" disp_desc="0" enabled="1" from_pane="0" to_pane="0" linkto="" right_just="0" type="16" visible="1" uid="14" IsAutoGenerated="0">
<specific ChooseFromListAlias="AcctCode" ChooseFromListIsAutoFill="0" ChooseFromListUID="CFL_OACT" IsPassword="0" supp_zeros="0">
<databind databound="1" table="" alias="AcctF" />
</specific>
</item>
<item backcolor="-1" font_size="-1" forecolor="-1" tab_order="0" text_style="0" top="70" left="97" width="120" height="14" AffectsFormMode="1" description="" disp_desc="0" enabled="1" from_pane="0" to_pane="0" linkto="" right_just="0" type="16" visible="1" uid="15" IsAutoGenerated="0">
<specific ChooseFromListAlias="AcctCode" ChooseFromListIsAutoFill="0" ChooseFromListUID="CFL_OACT1" IsPassword="0" supp_zeros="0">
<databind databound="1" table="" alias="AcctT" />
</specific>
</item>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
查询按钮
<item top="36" left="384" width="90" height="43" AffectsFormMode="1" description="" disp_desc="0" enabled="1" from_pane="0" to_pane="0" linkto="" right_just="0" type="4" visible="1" uid="16" IsAutoGenerated="0">
<specific caption="查询" />
</item>
- 1
- 2
- 3
数据表格
<item top="94" left="8" width="512" height="253" AffectsFormMode="1" description="" disp_desc="0" enabled="1" from_pane="0" to_pane="0" linkto="" right_just="0" type="128" visible="1" uid="4" IsAutoGenerated="0">
<specific CollapseLevel="0" DataTable="DT_List" SelectionMode="1">
<RowHeaders Width="20" />
</specific>
</item>
- 1
- 2
- 3
- 4
- 5
选择回调按钮
<item top="355" left="8" width="65" height="19" AffectsFormMode="1" description="" disp_desc="0" enabled="1" from_pane="0" to_pane="0" linkto="" right_just="0" type="4" visible="1" uid="3" IsAutoGenerated="0">
<specific caption="选择" />
</item>
- 1
- 2
- 3
cs 代码
首先,添加选择科目
按钮的加载窗体事件
void B1Form_CostRollOut_frm_ItemEvent(SAPBoAddon.B1AddonBase.B1ItemEvent pVal, ref bool BubbleEvent)
{
if (pVal.BeforeAction)
{
}
else
{
if (pVal.ActionSuccess)
{
if (pVal.EventType == SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED && pVal.ItemUID == "8")
{
SAPbouiCOM.DBDataSource AVA_OFCA = this.CurrentForm.DataSources.DBDataSources.Item("@AVA_OFCA");
string Endtime = AVA_OFCA.GetValue("U_enddate", 0).Trim();
string Starttime = AVA_OFCA.GetValue("U_startdate", 0).Trim();
//加载窗体前的验证判断(为空则跳出程序不执行后续代码)
if (Starttime.ToString() == "")
{
SBOApp.StatusBar.SetText("开始时间为空", SAPbouiCOM.BoMessageTime.bmt_Long, SAPbouiCOM.BoStatusBarMessageType.smt_Warning);
return;
}
if (Endtime.ToString() == "")
{
SBOApp.StatusBar.SetText("结束时间为空", SAPbouiCOM.BoMessageTime.bmt_Long, SAPbouiCOM.BoStatusBarMessageType.smt_Warning);
return;
}
//生成窗体文件名称
string FormFileName = string.Format("{0}\\{1}Form.srf", SAPBoAddon.B1Addon.B1Addon.FolderForm, B1FormTypes.ado_FI_AccountList);
//加载窗体文件到SBO
SAPbouiCOM.Form oLinkForm = SAPBoAddon.B1Assistant.Form.LoadToSBOApplciation(FormFileName, "");
//为加载窗体的用户自定义字段进行赋值
oLinkForm.DataSources.UserDataSources.Item("FormUid").Value = this.CurrentForm.UniqueID;
oLinkForm.DataSources.UserDataSources.Item("enddate").Value = AVA_OFCA.GetValue("U_enddate", 0);
oLinkForm.DataSources.UserDataSources.Item("startdate").Value = AVA_OFCA.GetValue("U_startdate", 0);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
然后,为清单窗体的查询
和选择
按钮绑定事件
void B1Form_AccountList_frm_ItemEvent(SAPBoAddon.B1AddonBase.B1ItemEvent pVal, ref bool BubbleEvent) { if (pVal.BeforeAction) { } else { if (pVal.ActionSuccess) { //查找科目 if (pVal.EventType == SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED && pVal.ItemUID == "16") { //根据uid获取控件的值 SAPbouiCOM.EditText edtStartacct= this.CurrentForm.Items.Item("14").Specific; SAPbouiCOM.EditText edtEndacct= this.CurrentForm.Items.Item("15").Specific; string Startacct=edtStartacct.Value ; string Endacct= edtEndacct.Value ; //根据用户自定义数据源名称获取其值 string et = this.CurrentForm.DataSources.UserDataSources.Item("enddate").Value; string st = this.CurrentForm.DataSources.UserDataSources.Item("startdate").Value; string formuid = this.CurrentForm.DataSources.UserDataSources.Item("FormUid").Value; //获取父窗体的携带参数信息 SAPbouiCOM.Form orgForm = SBOApp.Forms.Item(formuid);
string SQL <span class="token operator">=</span> <span class="token string">""</span><span class="token punctuation">;</span> <span class="token comment">//根据跳转父窗体的不同执行不同的SQL语句</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>orgForm<span class="token punctuation">.</span>TypeEx <span class="token operator">==</span> <span class="token string">"AVA_CostRollOut"</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> SQL <span class="token operator">=</span> <span class="token string">"call AVA_GetAccountList ('"</span> <span class="token operator">+</span> Startacct <span class="token operator">+</span> <span class="token string">"','"</span> <span class="token operator">+</span> Endacct <span class="token operator">+</span> <span class="token string">"','"</span> <span class="token operator">+</span> st<span class="token punctuation">.</span><span class="token function">Replace</span><span class="token punctuation">(</span><span class="token string">"."</span><span class="token punctuation">,</span> <span class="token string">"-"</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">"','"</span> <span class="token operator">+</span> et<span class="token punctuation">.</span><span class="token function">Replace</span><span class="token punctuation">(</span><span class="token string">"."</span><span class="token punctuation">,</span> <span class="token string">"-"</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">"','F')"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>orgForm<span class="token punctuation">.</span>TypeEx <span class="token operator">==</span> <span class="token string">"AVA_CostAllocation"</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> SQL <span class="token operator">=</span> <span class="token string">"call AVA_GetAccountList ('"</span> <span class="token operator">+</span> Startacct <span class="token operator">+</span> <span class="token string">"','"</span> <span class="token operator">+</span> Endacct <span class="token operator">+</span> <span class="token string">"','"</span> <span class="token operator">+</span> st<span class="token punctuation">.</span><span class="token function">Replace</span><span class="token punctuation">(</span><span class="token string">"."</span><span class="token punctuation">,</span> <span class="token string">"-"</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">"','"</span> <span class="token operator">+</span> et<span class="token punctuation">.</span><span class="token function">Replace</span><span class="token punctuation">(</span><span class="token string">"."</span><span class="token punctuation">,</span> <span class="token string">"-"</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">"','C')"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>orgForm<span class="token punctuation">.</span>TypeEx <span class="token operator">==</span> <span class="token string">"AVA_CostAssignment"</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> SQL <span class="token operator">=</span> <span class="token string">"call AVA_GetAccountList ('"</span> <span class="token operator">+</span> Startacct <span class="token operator">+</span> <span class="token string">"','"</span> <span class="token operator">+</span> Endacct <span class="token operator">+</span> <span class="token string">"','"</span> <span class="token operator">+</span> st<span class="token punctuation">.</span><span class="token function">Replace</span><span class="token punctuation">(</span><span class="token string">"."</span><span class="token punctuation">,</span> <span class="token string">"-"</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">"','"</span> <span class="token operator">+</span> et<span class="token punctuation">.</span><span class="token function">Replace</span><span class="token punctuation">(</span><span class="token string">"."</span><span class="token punctuation">,</span> <span class="token string">"-"</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">"','M')"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>orgForm<span class="token punctuation">.</span>TypeEx <span class="token operator">==</span> <span class="token string">"AVA_CostLost"</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> SQL <span class="token operator">=</span> <span class="token string">"call AVA_GetAccountList ('"</span> <span class="token operator">+</span> Startacct <span class="token operator">+</span> <span class="token string">"','"</span> <span class="token operator">+</span> Endacct <span class="token operator">+</span> <span class="token string">"','"</span> <span class="token operator">+</span> st<span class="token punctuation">.</span><span class="token function">Replace</span><span class="token punctuation">(</span><span class="token string">"."</span><span class="token punctuation">,</span> <span class="token string">"-"</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">"','"</span> <span class="token operator">+</span> et<span class="token punctuation">.</span><span class="token function">Replace</span><span class="token punctuation">(</span><span class="token string">"."</span><span class="token punctuation">,</span> <span class="token string">"-"</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">"','X')"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> SAPbouiCOM<span class="token punctuation">.</span>Grid Grid_0 <span class="token operator">=</span> <span class="token punctuation">(</span>SAPbouiCOM<span class="token punctuation">.</span>Grid<span class="token punctuation">)</span>this<span class="token punctuation">.</span>CurrentForm<span class="token punctuation">.</span>Items<span class="token punctuation">.</span><span class="token function">Item</span><span class="token punctuation">(</span><span class="token string">"4"</span><span class="token punctuation">)</span><span class="token punctuation">.</span>Specific<span class="token punctuation">;</span> Grid_0<span class="token punctuation">.</span>DataTable<span class="token punctuation">.</span><span class="token function">ExecuteQuery</span><span class="token punctuation">(</span>SQL<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//查询到数据就将第一列设置成复选框</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>Grid_0<span class="token punctuation">.</span>DataTable<span class="token punctuation">.</span>Rows<span class="token punctuation">.</span>Count <span class="token operator">></span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> Grid_0<span class="token punctuation">.</span>Columns<span class="token punctuation">.</span><span class="token function">Item</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">.</span>Type <span class="token operator">=</span> SAPbouiCOM<span class="token punctuation">.</span>BoGridColumnType<span class="token punctuation">.</span>gct_CheckBox<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token comment">//选择科目</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>pVal<span class="token punctuation">.</span>EventType <span class="token operator">==</span> SAPbouiCOM<span class="token punctuation">.</span>BoEventTypes<span class="token punctuation">.</span>et_ITEM_PRESSED <span class="token operator">&&</span> pVal<span class="token punctuation">.</span>ItemUID <span class="token operator">==</span> <span class="token string">"3"</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> string formuid <span class="token operator">=</span> this<span class="token punctuation">.</span>CurrentForm<span class="token punctuation">.</span>DataSources<span class="token punctuation">.</span>UserDataSources<span class="token punctuation">.</span><span class="token function">Item</span><span class="token punctuation">(</span><span class="token string">"FormUid"</span><span class="token punctuation">)</span><span class="token punctuation">.</span>Value<span class="token punctuation">;</span> <span class="token comment">//判断行数据是否为空</span> SAPbouiCOM<span class="token punctuation">.</span>Grid Grid_0 <span class="token operator">=</span> <span class="token punctuation">(</span>SAPbouiCOM<span class="token punctuation">.</span>Grid<span class="token punctuation">)</span>this<span class="token punctuation">.</span>CurrentForm<span class="token punctuation">.</span>Items<span class="token punctuation">.</span><span class="token function">Item</span><span class="token punctuation">(</span><span class="token string">"4"</span><span class="token punctuation">)</span><span class="token punctuation">.</span>Specific<span class="token punctuation">;</span> SAPbouiCOM<span class="token punctuation">.</span>DataTable dt_0 <span class="token operator">=</span> Grid_0<span class="token punctuation">.</span>DataTable<span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> GridRowCount <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> GridRowCount <span class="token operator"><</span> Grid_0<span class="token punctuation">.</span>Rows<span class="token punctuation">.</span>Count<span class="token punctuation">;</span> GridRowCount<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> <span class="token keyword">if</span> <span class="token punctuation">(</span>dt_0<span class="token punctuation">.</span><span class="token function">GetValue</span><span class="token punctuation">(</span><span class="token string">"chose"</span><span class="token punctuation">,</span> GridRowCount<span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token string">"Y"</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> <span class="token keyword">if</span> <span class="token punctuation">(</span>dt_0<span class="token punctuation">.</span><span class="token function">GetValue</span><span class="token punctuation">(</span><span class="token string">"FDate"</span><span class="token punctuation">,</span> GridRowCount<span class="token punctuation">)</span><span class="token operator">==</span>null<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> SBOApp<span class="token punctuation">.</span>StatusBar<span class="token punctuation">.</span><span class="token function">SetText</span><span class="token punctuation">(</span><span class="token string">"时间条件必须输入!"</span><span class="token punctuation">,</span> SAPbouiCOM<span class="token punctuation">.</span>BoMessageTime<span class="token punctuation">.</span>bmt_Long<span class="token punctuation">,</span> SAPbouiCOM<span class="token punctuation">.</span>BoStatusBarMessageType<span class="token punctuation">.</span>smt_Warning<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> false<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>dt_0<span class="token punctuation">.</span><span class="token function">GetValue</span><span class="token punctuation">(</span><span class="token string">"TDate"</span><span class="token punctuation">,</span> GridRowCount<span class="token punctuation">)</span> <span class="token operator">==</span> null<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> SBOApp<span class="token punctuation">.</span>StatusBar<span class="token punctuation">.</span><span class="token function">SetText</span><span class="token punctuation">(</span><span class="token string">"时间条件必须输入!"</span><span class="token punctuation">,</span> SAPbouiCOM<span class="token punctuation">.</span>BoMessageTime<span class="token punctuation">.</span>bmt_Long<span class="token punctuation">,</span> SAPbouiCOM<span class="token punctuation">.</span>BoStatusBarMessageType<span class="token punctuation">.</span>smt_Warning<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> false<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token comment">//根据formuid获取父窗体的数据表格对象和数据表对象</span> SAPbouiCOM<span class="token punctuation">.</span>Form orgForm <span class="token operator">=</span> SBOApp<span class="token punctuation">.</span>Forms<span class="token punctuation">.</span><span class="token function">Item</span><span class="token punctuation">(</span>formuid<span class="token punctuation">)</span><span class="token punctuation">;</span> SAPbouiCOM<span class="token punctuation">.</span>Matrix mtx0 <span class="token operator">=</span> orgForm<span class="token punctuation">.</span>Items<span class="token punctuation">.</span><span class="token function">Item</span><span class="token punctuation">(</span><span class="token string">"mtx_0"</span><span class="token punctuation">)</span><span class="token punctuation">.</span>Specific<span class="token punctuation">;</span> SAPbouiCOM<span class="token punctuation">.</span>DBDataSource AVA_FCA1 <span class="token operator">=</span> orgForm<span class="token punctuation">.</span>DataSources<span class="token punctuation">.</span>DBDataSources<span class="token punctuation">.</span><span class="token function">Item</span><span class="token punctuation">(</span><span class="token string">"@AVA_FCA1"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">int</span> re<span class="token operator">=</span>SBOApp<span class="token punctuation">.</span><span class="token function">MessageBox</span><span class="token punctuation">(</span><span class="token string">"是否清除当前数据?"</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span><span class="token string">"是"</span><span class="token punctuation">,</span> <span class="token string">"否"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>re <span class="token operator">==</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> AVA_FCA1<span class="token punctuation">.</span><span class="token function">Clear</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//刷新数据表格数据</span> mtx0<span class="token punctuation">.</span><span class="token function">LoadFromDataSource</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>orgForm<span class="token punctuation">.</span>TypeEx <span class="token operator">==</span> <span class="token string">"AVA_CostAllocation"</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> SAPbouiCOM<span class="token punctuation">.</span>Matrix mtx1 <span class="token operator">=</span> orgForm<span class="token punctuation">.</span>Items<span class="token punctuation">.</span><span class="token function">Item</span><span class="token punctuation">(</span><span class="token string">"mtx_1"</span><span class="token punctuation">)</span><span class="token punctuation">.</span>Specific<span class="token punctuation">;</span> SAPbouiCOM<span class="token punctuation">.</span>DBDataSource AVA_FCA2 <span class="token operator">=</span> orgForm<span class="token punctuation">.</span>DataSources<span class="token punctuation">.</span>DBDataSources<span class="token punctuation">.</span><span class="token function">Item</span><span class="token punctuation">(</span><span class="token string">"@AVA_FCA2"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> AVA_FCA2<span class="token punctuation">.</span><span class="token function">Clear</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> mtx1<span class="token punctuation">.</span><span class="token function">LoadFromDataSource</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>orgForm<span class="token punctuation">.</span>TypeEx <span class="token operator">==</span> <span class="token string">"AVA_CostAssignment"</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> SAPbouiCOM<span class="token punctuation">.</span>Matrix mtx2 <span class="token operator">=</span> orgForm<span class="token punctuation">.</span>Items<span class="token punctuation">.</span><span class="token function">Item</span><span class="token punctuation">(</span><span class="token string">"mtx_2"</span><span class="token punctuation">)</span><span class="token punctuation">.</span>Specific<span class="token punctuation">;</span> SAPbouiCOM<span class="token punctuation">.</span>DBDataSource AVA_FCA3 <span class="token operator">=</span> orgForm<span class="token punctuation">.</span>DataSources<span class="token punctuation">.</span>DBDataSources<span class="token punctuation">.</span><span class="token function">Item</span><span class="token punctuation">(</span><span class="token string">"@AVA_FCA3"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> AVA_FCA3<span class="token punctuation">.</span><span class="token function">Clear</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> mtx2<span class="token punctuation">.</span><span class="token function">LoadFromDataSource</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>orgForm<span class="token punctuation">.</span>TypeEx <span class="token operator">==</span> <span class="token string">"AVA_CostLost"</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> SAPbouiCOM<span class="token punctuation">.</span>Matrix mtx3 <span class="token operator">=</span> orgForm<span class="token punctuation">.</span>Items<span class="token punctuation">.</span><span class="token function">Item</span><span class="token punctuation">(</span><span class="token string">"mtx_3"</span><span class="token punctuation">)</span><span class="token punctuation">.</span>Specific<span class="token punctuation">;</span> SAPbouiCOM<span class="token punctuation">.</span>DBDataSource AVA_FCA4 <span class="token operator">=</span> orgForm<span class="token punctuation">.</span>DataSources<span class="token punctuation">.</span>DBDataSources<span class="token punctuation">.</span><span class="token function">Item</span><span class="token punctuation">(</span><span class="token string">"@AVA_FCA4"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> AVA_FCA4<span class="token punctuation">.</span><span class="token function">Clear</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> mtx3<span class="token punctuation">.</span><span class="token function">LoadFromDataSource</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> SAPbouiCOM<span class="token punctuation">.</span>Grid Grid_0 <span class="token operator">=</span> <span class="token punctuation">(</span>SAPbouiCOM<span class="token punctuation">.</span>Grid<span class="token punctuation">)</span>this<span class="token punctuation">.</span>CurrentForm<span class="token punctuation">.</span>Items<span class="token punctuation">.</span><span class="token function">Item</span><span class="token punctuation">(</span><span class="token string">"4"</span><span class="token punctuation">)</span><span class="token punctuation">.</span>Specific<span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> GridRowCount <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> GridRowCount <span class="token operator"><</span> Grid_0<span class="token punctuation">.</span>Rows<span class="token punctuation">.</span>Count<span class="token punctuation">;</span> GridRowCount<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> SBOApp<span class="token punctuation">.</span><span class="token function">SetStatusBarMessage</span><span class="token punctuation">(</span><span class="token string">"正在复制,"</span> <span class="token operator">+</span> GridRowCount<span class="token punctuation">.</span><span class="token function">ToString</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">"/"</span> <span class="token operator">+</span> Grid_0<span class="token punctuation">.</span>Rows<span class="token punctuation">.</span>Count<span class="token punctuation">.</span><span class="token function">ToString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> SAPbouiCOM<span class="token punctuation">.</span>BoMessageTime<span class="token punctuation">.</span>bmt_Short<span class="token punctuation">,</span> false<span class="token punctuation">)</span><span class="token punctuation">;</span> SAPbouiCOM<span class="token punctuation">.</span>DataTable dt_0 <span class="token operator">=</span> Grid_0<span class="token punctuation">.</span>DataTable<span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>dt_0<span class="token punctuation">.</span><span class="token function">GetValue</span><span class="token punctuation">(</span><span class="token string">"chose"</span><span class="token punctuation">,</span> GridRowCount<span class="token punctuation">)</span><span class="token operator">==</span><span class="token string">"Y"</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> dt_0<span class="token punctuation">.</span>Rows<span class="token punctuation">.</span>Offset <span class="token operator">=</span> GridRowCount<span class="token punctuation">;</span> string AcctCode <span class="token operator">=</span> Convert<span class="token punctuation">.</span><span class="token function">ToString</span><span class="token punctuation">(</span>dt_0<span class="token punctuation">.</span><span class="token function">GetValue</span><span class="token punctuation">(</span><span class="token string">"AcctCode"</span><span class="token punctuation">,</span> GridRowCount<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> string AcctName <span class="token operator">=</span> Convert<span class="token punctuation">.</span><span class="token function">ToString</span><span class="token punctuation">(</span>dt_0<span class="token punctuation">.</span><span class="token function">GetValue</span><span class="token punctuation">(</span><span class="token string">"AcctName"</span><span class="token punctuation">,</span> GridRowCount<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> string DAcctCode <span class="token operator">=</span> Convert<span class="token punctuation">.</span><span class="token function">ToString</span><span class="token punctuation">(</span>dt_0<span class="token punctuation">.</span><span class="token function">GetValue</span><span class="token punctuation">(</span><span class="token string">"DAcctCode"</span><span class="token punctuation">,</span> GridRowCount<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> string DAcctName <span class="token operator">=</span> Convert<span class="token punctuation">.</span><span class="token function">ToString</span><span class="token punctuation">(</span>dt_0<span class="token punctuation">.</span><span class="token function">GetValue</span><span class="token punctuation">(</span><span class="token string">"DAcctName"</span><span class="token punctuation">,</span> GridRowCount<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> DateTime FDate <span class="token operator">=</span>DateTime<span class="token punctuation">.</span><span class="token function">Parse</span><span class="token punctuation">(</span> Convert<span class="token punctuation">.</span><span class="token function">ToString</span><span class="token punctuation">(</span>dt_0<span class="token punctuation">.</span><span class="token function">GetValue</span><span class="token punctuation">(</span><span class="token string">"FDate"</span><span class="token punctuation">,</span> GridRowCount<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> DateTime TDate <span class="token operator">=</span>DateTime<span class="token punctuation">.</span><span class="token function">Parse</span><span class="token punctuation">(</span> Convert<span class="token punctuation">.</span><span class="token function">ToString</span><span class="token punctuation">(</span>dt_0<span class="token punctuation">.</span><span class="token function">GetValue</span><span class="token punctuation">(</span><span class="token string">"TDate"</span><span class="token punctuation">,</span> GridRowCount<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> string fs <span class="token operator">=</span> Convert<span class="token punctuation">.</span><span class="token function">ToString</span><span class="token punctuation">(</span>dt_0<span class="token punctuation">.</span><span class="token function">GetValue</span><span class="token punctuation">(</span><span class="token string">"fs"</span><span class="token punctuation">,</span> GridRowCount<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> string U_WipAcctCode <span class="token operator">=</span> Convert<span class="token punctuation">.</span><span class="token function">ToString</span><span class="token punctuation">(</span>dt_0<span class="token punctuation">.</span><span class="token function">GetValue</span><span class="token punctuation">(</span><span class="token string">"U_WipAcctCode"</span><span class="token punctuation">,</span> GridRowCount<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> string U_WipAcctName <span class="token operator">=</span> Convert<span class="token punctuation">.</span><span class="token function">ToString</span><span class="token punctuation">(</span>dt_0<span class="token punctuation">.</span><span class="token function">GetValue</span><span class="token punctuation">(</span><span class="token string">"U_WipAcctName"</span><span class="token punctuation">,</span> GridRowCount<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> string U_WaAcctCode <span class="token operator">=</span> Convert<span class="token punctuation">.</span><span class="token function">ToString</span><span class="token punctuation">(</span>dt_0<span class="token punctuation">.</span><span class="token function">GetValue</span><span class="token punctuation">(</span><span class="token string">"U_WaAcctCode"</span><span class="token punctuation">,</span> GridRowCount<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> string U_WaAcctName <span class="token operator">=</span> Convert<span class="token punctuation">.</span><span class="token function">ToString</span><span class="token punctuation">(</span>dt_0<span class="token punctuation">.</span><span class="token function">GetValue</span><span class="token punctuation">(</span><span class="token string">"U_WaAcctName"</span><span class="token punctuation">,</span> GridRowCount<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//空行判断</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>mtx0<span class="token punctuation">.</span>VisualRowCount <span class="token operator">==</span> <span class="token number">0</span> <span class="token operator">&&</span> AVA_FCA1<span class="token punctuation">.</span>Size<span class="token operator">></span><span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>mtx0<span class="token punctuation">.</span>VisualRowCount <span class="token operator">==</span> <span class="token number">0</span> <span class="token operator">&&</span> AVA_FCA1<span class="token punctuation">.</span>Size <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> AVA_FCA1<span class="token punctuation">.</span><span class="token function">InsertRecord</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</spa