【正文】
AuxQty”,A1后面跟的就是改變的數(shù)據(jù)對(duì)應(yīng)的字段名。KFDate設(shè)置是否允許錄入生產(chǎn)/采購(gòu)日期KFPeriod設(shè)置是否允許錄入保質(zhì)期.A3如果用戶自定義的取數(shù)是核算項(xiàng)目的自定義字段或自定義核算項(xiàng)目的自定義字段。規(guī)則:.A3,主表ID的值,關(guān)聯(lián)表1,關(guān)聯(lián)表1的Key,關(guān)聯(lián)表1與關(guān)聯(lián)表2的連接字段,關(guān)聯(lián)表3,關(guān)聯(lián)表3的關(guān)鍵字。兩種情況分別是:固定核算項(xiàng)目的自定義屬性是取核算項(xiàng)目或輔助資料(從t_itempropdesc中可以查到他的取數(shù)的關(guān)聯(lián)表);自定義核算項(xiàng)目的自定義字段。三、舉例說(shuō)明: 1.表頭倉(cāng)庫(kù)發(fā)生改變:()順序Action說(shuō)明1B*檢查倉(cāng)庫(kù)和物料默認(rèn)倉(cāng)庫(kù)是否一致2.B,FEmpID,t_Emp將倉(cāng)庫(kù)的默認(rèn)保管等填充到表尾的“倉(cāng)管”3.A1,FDCStockID,FSPID,t_StockPlace,FSPID將倉(cāng)庫(kù)的默認(rèn)倉(cāng)位攜帶出4.A,FStockPlaceID,t_stockplace,fspid帶關(guān)聯(lián)附屬信息 2.物料發(fā)生改變 順序Action說(shuō)明1,FDCStockID,FItemID,FBatchNo,FAuxQty,FUnitID2. B*,FDCStockID3P*,FSupplyID,FCurrencyID,FExchangeRate,FItemID,FUnitID,FAuxQty,FAuxPrice,FTaxRate4.,Fname5.,Fmodel6.,FPlanPrice7!,FAmount,/,FAuxQty8=,Ftrack,809.,FUnitName,FUnitID10A1,FAuxQtyMust11A1,FAuxQty,FQty12P*,FSupplyID,FCurrencyID,FExchangeRate,FItemID,FUnitID,FAuxQty,FAuxPrice,FTaxRate13.,FPlanprice14(),FAuxQty,*,FAuxPlanPrice15KFDate16.,FKFDate17KFPeriod18.,FKFPeriod19.A1,FDCStockID,FSPID,t_StockPlace,FSPID設(shè)置倉(cāng)位信息20.A,FStockPlaceID,t_stockplace,fspid21MI22MI23.,FMapName24.,FIsSNManage25.,FSecUnitName,FSecUnitID26.,FSecCoefficient27五、 標(biāo)準(zhǔn)過(guò)程指南(1)需求分析1.標(biāo)準(zhǔn)2.范例(2)設(shè)計(jì)編碼1.標(biāo)準(zhǔn)2.范例(3)測(cè)試1.標(biāo)準(zhǔn)2.范例l 單據(jù)打印、連續(xù)打印、合并打印實(shí)現(xiàn)說(shuō)明一、 GUI上單據(jù)打印的實(shí)現(xiàn)方式: 標(biāo)準(zhǔn)打?。菏褂肔edger控件的Printer實(shí)現(xiàn)。 實(shí)現(xiàn)思路:設(shè)置Ledger控件的屬性,直接設(shè)置表頭的數(shù)據(jù)。 調(diào)用Ledger的預(yù)覽功能,使用Ledger的FillRow事件填充數(shù)據(jù)。 實(shí)現(xiàn):調(diào)用PrintBills函數(shù),該函數(shù)對(duì)當(dāng)前單據(jù)上的表頭數(shù)據(jù),區(qū)分頭數(shù)據(jù)(Header)和腳數(shù)據(jù)(Footer),按每一數(shù)據(jù)的Top,Left排序,同時(shí)設(shè)置分錄的數(shù)量(Ledger..)。,控件將觸發(fā)Ledger_FillRow事件,在該事件編寫代碼填充分錄數(shù)據(jù)。 套打: 使用Note控件實(shí)現(xiàn)。 實(shí)現(xiàn)思路: 使用套打文件。 在預(yù)覽或打印時(shí),使用Note的QueryData事件填充數(shù)據(jù)。 實(shí)現(xiàn): 在Form_Load事件中初始化Note控件,為其設(shè)置套打文件。預(yù)覽或打印時(shí),= = KN_PrintDirect動(dòng)作,顯示或打印套打文件。此時(shí)將觸發(fā)QueryData事件,根據(jù)該事件返回的參數(shù),填充套打數(shù)據(jù)。 連續(xù)打印 合并打印l 常見(jiàn)問(wèn)題分析 單據(jù)現(xiàn)有模板存在兩個(gè)比較大的問(wèn)題有待改進(jìn):一、 d The one or twodigit day. dd The twodigit day. Singledigit day values are preceded by a zero. ddd The threecharacter weekday abbreviation. dddd The full weekday name. h The one or twodigit hour in 12hour format. hh The twodigit hour in 12hour format. Singledigit values are preceded by a zero. H The one or twodigit hour in 24hour format. HH The twodigit hour in 24hour format. Singledigit values are preceded by a zero. m The one or twodigit minute. mm The twodigit minute. Singledigit values are preceded by a zero. M The one or twodigit month number. MM The twodigit month number. Singledigit values are preceded by a zero. MMM The threecharacter month abbreviation. MMMM The full month name. t The oneletter AM/PM abbreviation (that is, AM is displayed as A). tt The twoletter AM/PM abbreviation (that is, AM is displayed as AM). yy The last two digits of the year (that is, 1996 would be displayed as 96). yyyy The full year (that is, 1996 would be displayed as 1996). 二、 對(duì)于Spread控件的取值賦值 取值:Spread取值必須使用Variant變量進(jìn)行GetText讀取 Spread的賦值,必須格式化成對(duì)應(yīng)的數(shù)據(jù)類型,才能成功賦值 對(duì)于日期賦值,建議使用value,使用MMDDYYYY的格式進(jìn)行賦值,這樣就算系統(tǒng)改變了日期格式,Spread顯示的會(huì)和系統(tǒng)一致。如果使用Text進(jìn)行日期賦值,必須保證當(dāng)前單元格的日期格式設(shè)置要和Text所賦值的日期格式一致,否則會(huì)錯(cuò)誤。Date 10/29/2001 10292001When setting, provide date value as MMDDYYYY. 三、 模板數(shù)據(jù)冗余:當(dāng)前單據(jù)模板的模板數(shù)據(jù)是對(duì)應(yīng)每一張單存在的,所以有許多相同類型的單據(jù)的共有數(shù)據(jù)被重復(fù)使用,如:庫(kù)存單據(jù)的收料倉(cāng)庫(kù)、日期、審核、制單、驗(yàn)收、多級(jí)審核、記賬、保管等等。由此導(dǎo)致的另一問(wèn)題就是,用戶無(wú)法針對(duì)每一類型的單據(jù)自定義一個(gè)字段,例如:用戶要自定義一個(gè)A字段,應(yīng)用于所有庫(kù)存單據(jù),他必須在每一種庫(kù)存單據(jù)上進(jìn)行自定義才能實(shí)現(xiàn),這也造成的數(shù)據(jù)表在物理結(jié)構(gòu)上的冗余。四、 選單結(jié)構(gòu)不靈活:當(dāng)前單據(jù)的選單實(shí)現(xiàn),是一個(gè)字段對(duì)應(yīng)一種選單關(guān)系,也就是說(shuō):一張單如果可以由十張單關(guān)聯(lián)生成,則必須在該單據(jù)的物理表上增加十個(gè)記錄關(guān)聯(lián)關(guān)系的字段。無(wú)法實(shí)現(xiàn)靈活的控制,同時(shí)也導(dǎo)致自定義業(yè)務(wù)流程的無(wú)法實(shí)現(xiàn)。五、 ICTemplate表、ICTemplateEntry表的問(wèn)題FCtlIndex字段的用途:lFCtlIndex字段用來(lái)標(biāo)識(shí)模板各字段的內(nèi)部順序(如:?jiǎn)螕?jù)中Action的執(zhí)行順序)和控件索引,由于此關(guān)系存在,導(dǎo)致它的值在同一模板中必須唯一且連續(xù),由此造成維護(hù)復(fù)雜、繁瑣、易出錯(cuò)。Flookupcls字段的統(tǒng)一:lFlookupcls的來(lái)源為t_ItemClass、t_SubMessage、t_SubMesType,但存在一些沒(méi)有規(guī)范處理的FLookupCls,對(duì)程序的統(tǒng)一處理帶來(lái)問(wèn)題,也影響了自定義的規(guī)范處理FAction字段的使用:Action的定義和使用,是單據(jù)中的核心問(wèn)題之一,單據(jù)界面上的大部分信息處理,都要通過(guò)該功能實(shí)現(xiàn)。該功能現(xiàn)有的優(yōu)點(diǎn)是靈活、易維護(hù)。但同時(shí)也存在一些嚴(yán)重的缺陷:l、執(zhí)行順序不易控制,計(jì)算容易造成混亂(如:字段在不同情況下的計(jì)算問(wèn)題)。公式不夠靈活,每有一種處理(特別是計(jì)算公式),就要新增一種Action,造成Action過(guò)多,不易整理。而且對(duì)于同一字段在不同條件下的不同計(jì)算公式,必須在程序中作特殊處理,造成控制不統(tǒng)一。六、 單據(jù)選單的關(guān)聯(lián)關(guān)系:由于是通過(guò)程序解析生成,整個(gè)生成的SQL語(yǔ)句的執(zhí)行效率很低,并且有些還使用了非標(biāo)準(zhǔn)的語(yǔ)法(如:*=、=*)。216。 單據(jù)二次開(kāi)發(fā)手冊(cè)概述 單據(jù)二次開(kāi)發(fā)是針對(duì)現(xiàn)目前單據(jù)的一些功能無(wú)法滿足一些客戶的特殊要求,同時(shí)分公司又有能力進(jìn)行二次開(kāi)發(fā)而提出的,這樣既可以在現(xiàn)有的系統(tǒng)不做變動(dòng)的情況下面滿足用戶的需求,同時(shí)也增強(qiáng)了系統(tǒng)的穩(wěn)定性。 注意:本篇所介紹所用到的動(dòng)態(tài)連接庫(kù)名為: 通過(guò)該說(shuō)明文檔,你可以了解到 1. 如何通過(guò)K3BillTransfer組件在錄單過(guò)程中對(duì)單據(jù)上各項(xiàng)目加以控制。 2. 如何通過(guò)K3BillTransfer組件實(shí)現(xiàn)自定義功能菜單。 3. 如何通過(guò)K3BillTransfer組件控制數(shù)據(jù)的保存。 4. 應(yīng)用示例。 該文檔閱讀的適用對(duì)象 需要在K/3工業(yè)供需鏈系統(tǒng)單據(jù)上進(jìn)行二次開(kāi)發(fā)的開(kāi)發(fā)者。 l 屬性 1.Property Cnnstring As String 。 2.Property SystemName As String 當(dāng)前系統(tǒng)名稱。 3.Property LastInfo As String 最后一次系統(tǒng)返回的各種信息 4.Property BillForm As Object 整個(gè)單據(jù)窗體對(duì)象。可通過(guò)該對(duì)象訪問(wèn)單據(jù)上的任何一個(gè)對(duì)象,包括控件,菜單。 共有的方法有:InsertRow(),在Grid的當(dāng)前行追加一行,它沒(méi)有參數(shù)。 5.Property BillFunc as Object 代表單據(jù)對(duì)象。目前沒(méi)什么用途。 6.Property Head As Object 單據(jù)表頭控件,是一個(gè)KDText控件數(shù)組 7.Property Grid As Object 單據(jù)分錄控件,為FpSpread控件 8.Property SumGrid As Object 單據(jù)分錄合計(jì)控件, 為FpSpread控件 9.Property HeadCtl As Variant 對(duì)應(yīng)表頭控件數(shù)組,記錄每個(gè)表頭項(xiàng)目各屬性的數(shù)組 如果要改變HeadCtl中的某個(gè)屬性值,需先對(duì)HeadCtl做一個(gè)備份,然后修改此備份的相應(yīng)屬性值,再將此備份賦值給HeadCtl。 10.Property EntryCtl As Variant 對(duì)應(yīng)分錄各列,記錄每個(gè)分錄列各屬性的數(shù)組 如果要改變EntryCtl中的某個(gè)屬性值,需先對(duì)EntryCtl做一個(gè)備份,然后修改此備份的相應(yīng)屬性值,再將此備份賦值給EntryCtl。 11.Property SaveVect As 二次開(kāi)發(fā)外部數(shù)據(jù)存取接口。在錄單過(guò)程中,用戶可將某些數(shù)據(jù)保存在此Vector中,在單據(jù)保存時(shí),再通過(guò)二次開(kāi)發(fā)中間層組件,將此Vector中的數(shù)據(jù)保存到指定位置。 (1) 該對(duì)象包含以下四個(gè)系統(tǒng)數(shù)據(jù) (1).Value(FInterID):?jiǎn)螕?jù)內(nèi)碼 (1).Value(FTransType) :?jiǎn)螕?jù)事務(wù)類型 (1).Value(ISRedBill) :是否紅字單據(jù) (1).Value(BillChecked) :是否審核。 l 方法 1.Function AddUserMenuItem(ByVal Caption As String, [ByVal RootMenuCaption As String = ]) 說(shuō)明: 添加一個(gè)用戶自定義菜單項(xiàng),系統(tǒng)一共預(yù)設(shè)了五個(gè)菜單項(xiàng)供二次開(kāi)發(fā)使用 參數(shù): Caption:菜單名稱 RootMenuCaption:根菜單名稱。缺省為“自定義菜單” 2.Function GetGridText(B