SAP BUSINESS ONE SBO SDK

转载自 https://blog.csdn.net/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">&gt;</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">&amp;&amp;</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">&lt;</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">&lt;</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">&amp;&amp;</span> AVA_FCA1<span class="token punctuation">.</span>Size<span class="token operator">&gt;</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">&amp;&amp;</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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值