證核心考點(diǎn)解析:事件模型與單據(jù)類型設(shè)計(jì)邏輯)
簡(jiǎn)介《金蝶云蒼穹考試認(rèn)證理論考題匯總精華版.pdf》是一份面向金蝶云蒼穹及金蝶云星瀚認(rèn)證考生的理論備考資料。資源為單個(gè) PDF 文檔大小約 838KB內(nèi)容以單選題與多選題形式覆蓋平臺(tái)核心概念、開(kāi)發(fā)規(guī)范及業(yè)務(wù)應(yīng)用適合正在備考金蝶云蒼穹認(rèn)證的實(shí)施顧問(wèn)、開(kāi)發(fā)人員和企業(yè)數(shù)字化轉(zhuǎn)型從業(yè)者快速過(guò)一遍高頻考點(diǎn)。匯總針對(duì)事件監(jiān)聽(tīng)、單據(jù)列表界面規(guī)則、樹(shù)形單據(jù)體與普通單據(jù)體差異、表單與基礎(chǔ)資料模板選擇、擴(kuò)展機(jī)制、云定義、分組基礎(chǔ)資料、編碼規(guī)則、SQL 構(gòu)造優(yōu)化、表單打開(kāi)方式、蒼穹微服務(wù)顆粒度、流程節(jié)點(diǎn)類型、插件初始化、輕分析圖表、元數(shù)據(jù)引用、單據(jù)轉(zhuǎn)換與后臺(tái)任務(wù)等關(guān)鍵知識(shí)點(diǎn)逐一列出易混淆選項(xiàng)并給出解析能夠幫助考生建立清晰的答題框架。目前已有 1729 人瀏覽學(xué)習(xí)資源提煉了題庫(kù)中的關(guān)鍵理論與常見(jiàn)失分點(diǎn)可在考前做針對(duì)性鞏固也能用于日常查閱平臺(tái)功能的最佳實(shí)踐。1. 一份考題文檔里藏著平臺(tái)設(shè)計(jì)優(yōu)先級(jí)拋開(kāi)題目本身這份金蝶云蒼穹認(rèn)證題庫(kù)最有價(jià)值的地方在于它暴露了平臺(tái)在設(shè)計(jì)時(shí)真正在意什么事件分發(fā)的邊界、單據(jù)體類型的選擇成本、擴(kuò)展機(jī)制的約束、規(guī)則引擎的能力范圍。60% 的考點(diǎn)不是讓你背結(jié)論而是逼你理解「為什么這樣設(shè)計(jì)」。比如ItemClick和click為什么不能通用、BusinessDataServiceHelper.query()查出來(lái)的對(duì)象為什么不能直接save()這些結(jié)論都是在真實(shí)開(kāi)發(fā)中踩過(guò)坑才沉淀出來(lái)的。題目適合三類人正在備考金蝶云蒼穹/星瀚認(rèn)證的開(kāi)發(fā)者、從傳統(tǒng) ERP 二次開(kāi)發(fā)轉(zhuǎn)向低代碼平臺(tái)的技術(shù)人員、以及需要做蒼穹技術(shù)方案評(píng)審的架構(gòu)師。下面按平臺(tái)的核心機(jī)制逐層拆解盡量把選項(xiàng)背后的設(shè)計(jì)邏輯說(shuō)明白。2. 事件模型與插件回調(diào)鏈先從 ItemClick 與 click 的分工說(shuō)起2.1 兩類事件為什么不能混用Q1直接問(wèn)ItemClick(ItemClickEvent)和click(EventObject)的區(qū)別。A 說(shuō) ItemClick 主要監(jiān)聽(tīng)工具欄元素B 說(shuō) click 主要監(jiān)聽(tīng)表單元素C 說(shuō)二者可以通用不正確的選項(xiàng)D 說(shuō) click 通過(guò) key 判斷點(diǎn)擊元素。答案是 C。這題的考點(diǎn)在「事件源」不同。ItemClick是工具欄級(jí)別的事件事件上下文里攜帶的是工具欄項(xiàng)的信息比如按鈕標(biāo)識(shí)、按鈕狀態(tài)click是控件級(jí)別的事件通過(guò)key來(lái)區(qū)分是哪個(gè)控件被點(diǎn)擊。兩者各自綁定在不同的 UI 容器上如果混用最常見(jiàn)的坑是在工具欄按鈕上監(jiān)聽(tīng)click拿不到ItemClickEvent里的工具欄上下文在表單控件上監(jiān)聽(tīng)I(yíng)temClick事件根本不會(huì)觸發(fā)Q31對(duì)事件取消機(jī)制做了補(bǔ)充click里用setCancel(true)終止點(diǎn)擊beforeItemClick里用同一個(gè)方法終止工具欄點(diǎn)擊beforeDoOperation里終止后續(xù)操作beforeClosed里終止頁(yè)面關(guān)閉。這說(shuō)明平臺(tái)的事件體系是「可中斷的」而且中斷方法統(tǒng)一是setCancel(true)區(qū)別只在于事件類型不同事件的攔截階段不同。2.1.1 插件回調(diào)的觸發(fā)順序Q13問(wèn)哪個(gè)方法不在初始化時(shí)觸發(fā)正確選項(xiàng)是setPluginName。這里涉及表單插件生命周期public class DemoBillPlugin extends AbstractFormPlugin { Override public void setView(IFormView view) { super.setView(view); // 最早調(diào)用注入視圖模型此時(shí)控件尚未創(chuàng)建 } Override public void createNewData() { super.createNewData(); // 觸發(fā)時(shí)機(jī)新增單據(jù)時(shí)創(chuàng)建初始數(shù)據(jù) } Override public void afterCreateNewData() { super.afterCreateNewData(); // createNewData 之后觸發(fā)可以對(duì)新增數(shù)據(jù)做二次初始化 } Override public void afterBindData() { super.afterBindData(); // 數(shù)據(jù)綁定完成后觸發(fā)適合在這里做字段聯(lián)動(dòng)、可見(jiàn)性控制 } }調(diào)用順序是setView → createNewData → afterCreateNewData → loadData → afterBindData。setView是插件與視圖綁定的入口setPluginName是平臺(tái)內(nèi)部用來(lái)注冊(cè)插件名稱的不是業(yè)務(wù)回調(diào)。Q17進(jìn)一步問(wèn)關(guān)聯(lián)合法的場(chǎng)景從列表進(jìn)入編輯界面時(shí)preOpenForm、loadData、afterBindData都會(huì)觸發(fā)唯一不觸發(fā)的是afterCreateNewData因?yàn)檫M(jìn)入編輯界面走的是「加載已有數(shù)據(jù)」路徑不是「新建數(shù)據(jù)」路徑。2.2 插件中拼接 SQL 的性能陷阱Q8的表象是編碼規(guī)則分段問(wèn)題實(shí)際考的是平臺(tái)參數(shù)上限。Q9才有意思插件里構(gòu)造 SQL 時(shí)where 條件用占位符比直接拼接性能好原因是「不需要再次語(yǔ)法解析」。這不是代碼量長(zhǎng)短的問(wèn)題而是數(shù)據(jù)庫(kù)預(yù)編譯的機(jī)制問(wèn)題。// 不推薦每次執(zhí)行都需要數(shù)據(jù)庫(kù)重新解析 SQL 文本 String sql select fid from t_bd_material where fnumber number ; // 推薦參數(shù)化查詢SQL 結(jié)構(gòu)固定數(shù)據(jù)庫(kù)可復(fù)用執(zhí)行計(jì)劃 QFilter filter new QFilter(number, QFilter.OP_EQUALS, number); DynamicObject[] result QueryServiceHelper.query( bd_material, id, number, name, new QFilter[] { filter } );參數(shù)化查詢的核心收益是讓數(shù)據(jù)庫(kù)把「語(yǔ)法解析 生成執(zhí)行計(jì)劃」這兩個(gè)開(kāi)銷最大的步驟緩存下來(lái)后續(xù)執(zhí)行只傳參數(shù)值。直接拼接 SQL 還有個(gè)副作用如果參與拼接的值來(lái)自前端輸入會(huì)引入注入風(fēng)險(xiǎn)。即使你在插件里寫的不是拼字符串也要注意QFilter傳參時(shí)的類型匹配整型字段傳字符串某些數(shù)據(jù)庫(kù)方言下會(huì)出現(xiàn)隱式轉(zhuǎn)換導(dǎo)致索引失效。2.3 控件數(shù)據(jù)獲取的正確姿勢(shì)Q15給出四個(gè)獲取控件數(shù)據(jù)的語(yǔ)句正確的是this.getView().getControl(kdtest)。這道題的區(qū)分度在于「控件」和「數(shù)據(jù)」是兩層概念getControl(kdtest)返回控件實(shí)例你可以進(jìn)一步調(diào)用控件的getValue()拿值getModel().getData(kdtest)不是標(biāo)準(zhǔn) API數(shù)據(jù)模型里沒(méi)有這個(gè)方法getModel().getProperty(kdtest)是屬性訪問(wèn)不是值訪問(wèn)// 推薦用法先拿控件再取值 Control kdtest this.getView().getControl(kdtest); Object value kdtest.getData(); // 如果是基礎(chǔ)資料控件可以拿到選中的基礎(chǔ)資料對(duì)象 BaseDataControl material (BaseDataControl) this.getView().getControl(material); DynamicObject selected material.getValue();控件和數(shù)據(jù)分離是蒼穹表單模型的一個(gè)基本設(shè)計(jì)原則??丶?fù)責(zé)界面展示和交互模型負(fù)責(zé)數(shù)據(jù)存儲(chǔ)和狀態(tài)管理。插件里改數(shù)據(jù)要用getModel().setValue()改控件屬性要用getControl().setVisible()不要混用。3. 單據(jù)類型矩陣單據(jù)體、基礎(chǔ)資料、動(dòng)態(tài)表單的邊界在哪里3.1 四種類型的選擇框架Q26問(wèn)創(chuàng)建物料用哪種頁(yè)面最合適答案是基礎(chǔ)資料。這道題背后有一套系統(tǒng)的選擇邏輯類型核心特征適用場(chǎng)景典型控件單據(jù)有單據(jù)頭/單據(jù)體支持工作流、單據(jù)轉(zhuǎn)換、反寫業(yè)務(wù)交易記錄采購(gòu)單、付款單EntryGrid動(dòng)態(tài)表單不建物理表流程性表單數(shù)據(jù)不持久化向?qū)?、彈窗、一次性錄入Flex、字段布局面板基礎(chǔ)資料被其他單據(jù)引用F7 選擇有唯一性約束物料、客戶、供應(yīng)商、會(huì)計(jì)科目BaseData卡片單條數(shù)據(jù)展示無(wú)分錄詳情頁(yè)、個(gè)人配置卡片容器Q3區(qū)分樹(shù)形單據(jù)體和普通單據(jù)體功能差異在于「新增分錄」樹(shù)形支持新增分錄來(lái)創(chuàng)建子節(jié)點(diǎn)普通單據(jù)體也有新增但語(yǔ)義不同。Q16考察樹(shù)形單據(jù)體的特性上級(jí)主鍵、刪除分錄、新增分錄唯獨(dú)不是「插入分錄」——這題考的是樹(shù)形結(jié)構(gòu)的增刪語(yǔ)義樹(shù)形節(jié)點(diǎn)的新增必須在父子關(guān)系下進(jìn)行。Q4問(wèn)模板選擇有組織隔離的場(chǎng)景選帶組織的模板主業(yè)務(wù)組織不一定只能用模板自帶字段基礎(chǔ)資料存在上下級(jí)結(jié)構(gòu)時(shí)選分組基礎(chǔ)資料模板樹(shù)形基礎(chǔ)資料模板支持控制策略。前兩個(gè)選項(xiàng)都是「正確」的題干問(wèn)「正確的是」最準(zhǔn)確的其實(shí)是「有組織隔離選擇帶組織模板」——這個(gè)選項(xiàng)定義了最基本的選型原則。3.2 基礎(chǔ)資料的兩個(gè)容易混淆的變體Q7問(wèn)分組基礎(chǔ)資料哪些描述不正確分組屬性本身無(wú)具體意義、列表為左樹(shù)右表、繼承自基礎(chǔ)資料模板都是對(duì)的錯(cuò)的是「分組字段可被 F7 返回」。分組字段是組織維度F7 返回的是數(shù)據(jù)本身不是分組信息。Q33補(bǔ)充基礎(chǔ)資料公共模板的集合樹(shù)形基礎(chǔ)資料模板、基礎(chǔ)資料模板、分組基礎(chǔ)資料模板、彈性域模板——這四者覆蓋了主數(shù)據(jù)管理的全部常見(jiàn)形態(tài)。3.2.1 樹(shù)形基礎(chǔ)資料與分組基礎(chǔ)資料的本質(zhì)差異樹(shù)形基礎(chǔ)資料是數(shù)據(jù)本身有父子層級(jí)比如科目體系、BOM 結(jié)構(gòu)分組基礎(chǔ)資料是給數(shù)據(jù)打上一個(gè)分組標(biāo)簽數(shù)據(jù)之間沒(méi)有層級(jí)比如區(qū)域、品牌。設(shè)計(jì)時(shí)如果選錯(cuò)后續(xù)維護(hù)成本會(huì)非常高樹(shù)形結(jié)構(gòu)下刪除父節(jié)點(diǎn)要注意子節(jié)點(diǎn)的處理策略平臺(tái)默認(rèn)有級(jí)聯(lián)選項(xiàng)分組結(jié)構(gòu)下F7 列表是左樹(shù)右表樹(shù)的根節(jié)點(diǎn)是分組右邊表格才是數(shù)據(jù)樹(shù)形基礎(chǔ)資料的編碼、名稱、長(zhǎng)編碼、長(zhǎng)名稱都需要手動(dòng)維護(hù)不能自動(dòng)生成Q23判斷題提到「樹(shù)形基礎(chǔ)資料的名稱、編碼、長(zhǎng)名稱、長(zhǎng)編碼都需要手動(dòng)填寫」這個(gè)表述的正確答案是「對(duì)」。很多開(kāi)發(fā)者以為是系統(tǒng)自動(dòng)生成的實(shí)際上平臺(tái)只保證唯一性不保證語(yǔ)義正確所以長(zhǎng)名稱、長(zhǎng)編碼必須自己維護(hù)。3.3 單據(jù)體的表名與物理表關(guān)聯(lián)Q34講樹(shù)形單據(jù)體的特殊控制方法setCollapse、collapse、expand是樹(shù)形獨(dú)有的setChildVisible不在其中。Q51問(wèn)套打/打印正確選項(xiàng)是「需要安裝第三方插件」是錯(cuò)誤的描述——蒼穹的打印是基于實(shí)體模型的 Web 化模板設(shè)計(jì)器支持插件定制不需要第三方插件。Q38判斷題說(shuō)「控件設(shè)置為隱藏元素后插件無(wú)法訪問(wèn)」這是錯(cuò)的隱藏元素只是不在界面顯示控件實(shí)例和數(shù)據(jù)仍然存在插件里可以正常訪問(wèn)區(qū)別在于不可見(jiàn)。如果想在界面上讓用戶看不到、但插件能操作正確做法是設(shè)置控件可見(jiàn)性為false而不是設(shè)置隱藏元素屬性。// 動(dòng)態(tài)設(shè)置控件可見(jiàn)性比隱藏元素更可控 Control control this.getView().getControl(auditStatus); if (canEdit) { control.setVisible(true); } else { control.setVisible(false); control.setEnabled(false); }Q47判斷題說(shuō)「表單中基礎(chǔ)資料屬性控件支持編輯」答案是錯(cuò)的?;A(chǔ)資料屬性字段來(lái)源于基礎(chǔ)資料對(duì)象本身的數(shù)據(jù)是只讀的如果要修改應(yīng)該改源基礎(chǔ)資料而不是在單據(jù)上改。Q37判斷題說(shuō)「打開(kāi)單據(jù)的模板屬性即可將該單據(jù)設(shè)置為業(yè)務(wù)模板」這題的關(guān)鍵在于「打開(kāi)」這個(gè)動(dòng)作不對(duì)設(shè)置業(yè)務(wù)模板是在模板管理里指定不是通過(guò)單據(jù)的屬性面板完成。4. 業(yè)務(wù)規(guī)則與單據(jù)轉(zhuǎn)換平臺(tái)自動(dòng)化的三條關(guān)鍵鏈路4.1 業(yè)務(wù)規(guī)則和界面規(guī)則的分工邊界Q20問(wèn)到業(yè)務(wù)規(guī)則和界面規(guī)則的區(qū)別。答案是業(yè)務(wù)規(guī)則不需要在單據(jù)頭和單據(jù)體分開(kāi)配置——Q44判斷題明確說(shuō)明單據(jù)頭和單據(jù)體分錄的業(yè)務(wù)規(guī)則均可以在單據(jù)根節(jié)點(diǎn)的業(yè)務(wù)規(guī)則設(shè)置。界面規(guī)則則不同Q2說(shuō)界面規(guī)則不能設(shè)置字段可行性但可以設(shè)置樣式、可見(jiàn)性、鎖定性Q39判斷題說(shuō)「可以通過(guò)業(yè)務(wù)規(guī)則設(shè)置字段的可見(jiàn)性」這是錯(cuò)的字段可見(jiàn)性屬于界面規(guī)則的范疇業(yè)務(wù)規(guī)則處理的是數(shù)據(jù)邏輯不是界面狀態(tài)。規(guī)則類型控制維度配置位置適用場(chǎng)景業(yè)務(wù)規(guī)則數(shù)據(jù)計(jì)算、攜帶、賦值、校驗(yàn)單據(jù)根節(jié)點(diǎn)頭/體統(tǒng)一管理定義公式、攜帶基礎(chǔ)資料屬性、自動(dòng)賦值界面規(guī)則控件樣式、可見(jiàn)性、鎖定性單據(jù)頭或單據(jù)體分別配置動(dòng)態(tài)顯示隱藏字段、控制編輯權(quán)限數(shù)據(jù)權(quán)限行級(jí)數(shù)據(jù)范圍功能授權(quán)中配置控制用戶可查詢的數(shù)據(jù)行字段權(quán)限列級(jí)字段范圍功能授權(quán)中配置控制用戶可編輯/可見(jiàn)的字段Q61問(wèn)哪個(gè)不是業(yè)務(wù)規(guī)則的服務(wù)類型答案是「鎖定控件」。鎖定控件是界面規(guī)則的功能業(yè)務(wù)規(guī)則服務(wù)類型包括計(jì)算定義公式的值并填寫到指定列、攜帶基礎(chǔ)資料屬性到指定列、清除指定字段值、設(shè)置當(dāng)前編輯字段值。Q35問(wèn)分錄計(jì)量單位自動(dòng)獲取用「攜帶基礎(chǔ)資料屬性到指定列」服務(wù)可以實(shí)現(xiàn)——這也是項(xiàng)目里最常用的業(yè)務(wù)規(guī)則場(chǎng)景。4.1.1 一個(gè)完整的分錄字段攜帶配置示例假設(shè)你需要實(shí)現(xiàn)「選擇物料后自動(dòng)帶出計(jì)量單位、規(guī)格型號(hào)、默認(rèn)倉(cāng)庫(kù)」正確做法是配置兩條業(yè)務(wù)規(guī)則而不是寫插件businessRule name攜帶物料基礎(chǔ)數(shù)據(jù)/name targetFormentry/targetForm service typeCarryBaseDataField/type !-- 觸發(fā)時(shí)機(jī)物料字段值改變時(shí) -- triggerFieldmaterial/triggerField !-- 攜帶字段映射 -- carryField sourceunit targetunit / carryField sourcemodel targetmodel / carryField sourcedefaultWh targetwarehouse / /service /businessRule配置完成后運(yùn)行時(shí)效果是用戶 F7 選擇物料分錄行的計(jì)量單位、規(guī)格型號(hào)、默認(rèn)倉(cāng)庫(kù)自動(dòng)填充。如果字段來(lái)源不是基礎(chǔ)資料而是計(jì)算值用「計(jì)算定義公式的值并填寫到指定列」如果只是想清空某個(gè)字段用「清除指定字段值」。優(yōu)先用規(guī)則引擎插件敲在最后一步這是蒼穹開(kāi)發(fā)的原則也是考試反復(fù)強(qiáng)調(diào)的點(diǎn)。4.2 單據(jù)轉(zhuǎn)換規(guī)則的標(biāo)準(zhǔn)配置鏈路Q23問(wèn)源單據(jù)攜帶完畢后的數(shù)據(jù)加工靠什么實(shí)現(xiàn)答案是字段映射。完整的轉(zhuǎn)換規(guī)則鏈路是關(guān)聯(lián)實(shí)體 → 字段映射 → 分單合并 → 數(shù)據(jù)范圍 → 業(yè)務(wù)規(guī)則 → 插件 → 單據(jù)類型映射。Q42判斷題說(shuō)明「關(guān)聯(lián)實(shí)體」配置需要在目標(biāo)單據(jù)上完成——這是一級(jí)標(biāo)題配置在目標(biāo)單據(jù)的關(guān)聯(lián)配置里供反寫和追查使用。// 單據(jù)轉(zhuǎn)換插件對(duì)目標(biāo)單數(shù)據(jù)做二次加工 public class ConvertPlugin extends AbstractConvertPlugin { Override public void onBeforeSave(ConvertEventArgs e) { DynamicObject targetBill e.getTargetData(); // 根據(jù)源單數(shù)據(jù)計(jì)算目標(biāo)單的某些字段 String sourceType targetBill.getString(sourceType); if (special.equals(sourceType)) { targetBill.set(needApprove, true); targetBill.set(approveLevel, 3); } } }Q57問(wèn)配置轉(zhuǎn)換規(guī)則前必須先在哪項(xiàng)屬性中設(shè)置答案是「啟用單據(jù)轉(zhuǎn)換」。Q58問(wèn)轉(zhuǎn)換規(guī)則的細(xì)節(jié)兩個(gè)單據(jù)之間可以配置多個(gè)轉(zhuǎn)換規(guī)則按啟動(dòng)條件自動(dòng)選擇默認(rèn)規(guī)則在同時(shí)符合多個(gè)條件時(shí)優(yōu)先生效轉(zhuǎn)換規(guī)則支持?jǐn)U展但只能擴(kuò)展一次。這里有一個(gè)易混淆點(diǎn)Q5判斷題說(shuō)「擴(kuò)展后的單據(jù)需要重新配置編碼規(guī)則、工作流、單據(jù)轉(zhuǎn)換規(guī)則」這也是錯(cuò)的——擴(kuò)展會(huì)繼承父級(jí)的大部分配置不需要全部重配。4.3 反寫規(guī)則執(zhí)行時(shí)機(jī)與超額檢查Q26多選題部分問(wèn)反寫規(guī)則支持在哪些操作時(shí)執(zhí)行正確選項(xiàng)是保存、審核、提交、刪除。這意味著反寫規(guī)則可以綁定到單據(jù)的多個(gè)生命周期階段不只是審核完成時(shí)回寫。Q22判斷題給出反寫規(guī)則的主要配置項(xiàng)反寫公式、業(yè)務(wù)規(guī)則、關(guān)閉源單、超額檢查。超額檢查是反寫規(guī)則里最需要說(shuō)明的部分。Q19判斷題的表述是「超額檢查的檢查模式有 4 種方式不控制、允許超額嚴(yán)格控制不允許超額允許超額一次根據(jù)源單條件選擇控制模式」這個(gè)判斷的答案是「對(duì)」。四個(gè)檢查模式不控制不檢查超額直接反寫 嚴(yán)格控制不允許任何超額超出就報(bào)錯(cuò) 允許超額一次允許超出但有一個(gè)上限控制 根據(jù)源單條件通過(guò)源單字段值動(dòng)態(tài)決定檢查策略反寫規(guī)則容易出現(xiàn)的問(wèn)題反寫值類型不匹配、關(guān)聯(lián)實(shí)體配置錯(cuò)誤、重復(fù)反寫導(dǎo)致數(shù)據(jù)翻倍。Q1判斷題說(shuō)「單據(jù)轉(zhuǎn)換中關(guān)聯(lián)主實(shí)體配置失誤不會(huì)導(dǎo)致反寫、追查錯(cuò)誤」這是錯(cuò)的——關(guān)聯(lián)主實(shí)體配置失誤反寫和追查全都會(huì)錯(cuò)這是反向判斷題考察的是關(guān)聯(lián)實(shí)體的作用認(rèn)知。5. 對(duì)抗題目陷阱關(guān)鍵易錯(cuò)點(diǎn)與備考編排試卷里最有區(qū)分度的不是單選題是判斷題。單選題考單一知識(shí)點(diǎn)判斷題考「對(duì)概念的精確理解」錯(cuò)一個(gè)詞就全錯(cuò)。整理幾條容易翻車的口訣式結(jié)論適合做成 Anki 卡片5.1 高頻判斷題正誤對(duì)照題目核心正確答案解析copy方法任意使用對(duì)象自動(dòng)銷毀不占內(nèi)存錯(cuò)誤對(duì)象不會(huì)自動(dòng)銷毀大對(duì)象必須主動(dòng)釋放query結(jié)果可直接保存錯(cuò)誤不含快照信息所有記錄操作會(huì)變成 insertload查詢的結(jié)果不能 update錯(cuò)誤load出來(lái)的對(duì)象是標(biāo)準(zhǔn)實(shí)體可以修改并保存單據(jù)頭和單據(jù)體的業(yè)務(wù)規(guī)則需分開(kāi)配置錯(cuò)誤均可在單據(jù)根節(jié)點(diǎn)統(tǒng)一配置編碼規(guī)則配置為新增顯示時(shí)字段不可編輯正確編碼由規(guī)則生成用戶不可手動(dòng)改業(yè)務(wù)云可以設(shè)置分庫(kù)信息正確多個(gè)云可獨(dú)立部署數(shù)據(jù)庫(kù)新增單據(jù)體控件后必須填表名正確表名與物理表綁定流程掛起時(shí)申請(qǐng)人可自行重新激活錯(cuò)誤激活需要流程管理員權(quán)限單據(jù)關(guān)聯(lián)配置屬性用于控制是否參與單據(jù)轉(zhuǎn)換正確這是明確的設(shè)計(jì)用途租戶開(kāi)通后默認(rèn)有一個(gè)超級(jí)管理員只有系統(tǒng)云權(quán)限正確其他云權(quán)限需后續(xù)分配Q36判斷題關(guān)于DataSet.copy的表述答案是錯(cuò)誤。很多人會(huì)繞過(guò)這個(gè)題但DataSet在蒼穹里的定位是臨時(shí)數(shù)據(jù)集copy產(chǎn)生的對(duì)象必須手動(dòng)清理否則在批量循環(huán)里會(huì)產(chǎn)生大量?jī)?nèi)存占用嚴(yán)重時(shí)觸發(fā) GC 頻繁回收。Q41說(shuō)query出來(lái)的DynamicObject不可直接保存因?yàn)椴缓煺招畔ⅰ@是對(duì)的很多剛上手蒼穹的開(kāi)發(fā)者用query查數(shù)據(jù)后直接save結(jié)果發(fā)現(xiàn)全部變成了insert數(shù)據(jù)重復(fù)插入。Q56關(guān)于新建云的路徑正確入口是「開(kāi)發(fā)服務(wù)云-開(kāi)發(fā)平臺(tái)-云-新建」。Q63關(guān)于單據(jù)設(shè)計(jì)器視圖XML 視圖是不存在的角色。設(shè)計(jì)器包含表單視圖、列表視圖、編輯視圖超鏈接視圖也不是設(shè)計(jì)視圖。Q62關(guān)于單據(jù)頭與單據(jù)體的關(guān)聯(lián)默認(rèn)通過(guò)單據(jù)體主鍵ID關(guān)聯(lián)——不是表頭主鍵FID這是大多數(shù)人最容易選錯(cuò)的題。5.2 考前自測(cè)的小工具用腳本隨機(jī)抽題這份題量接近 200 題按順序刷一遍容易產(chǎn)生「位置記憶」——你記住的是第 17 題的答案在第 3 頁(yè)而不是知識(shí)本身。我用了一個(gè)隨機(jī)抽題的腳本把題目文本按編號(hào)切塊后隨機(jī)出題import re import random from pathlib import Path def load_questions(path: str) - list[dict]: text Path(path).read_text(encodingutf-8) # 按 Q\d 或單選題/判斷題標(biāo)記切分題目塊 pattern re.compile(r(?(?:Q\d|第\d題|單選題|判斷題))) blocks [b.strip() for b in pattern.split(text) if b.strip()] questions [] for block in blocks: lines block.splitlines() if not lines: continue q_text lines[0] # 取選項(xiàng)行A/B/C/D 開(kāi)頭作為正文 body [l for l in lines[1:] if re.match(r^[A-D][\.\:], l)] answer for l in reversed(lines): if re.search(r\[[A-D]\], l) or re.search(r[對(duì)錯(cuò)]$, l.strip()): answer l.strip() break questions.append({stem: q_text, body: body, answer: answer}) return questions def quiz(questions: list[dict], batch: int 10): selected random.sample(questions, min(batch, len(questions))) score 0 for i, q in enumerate(selected, 1): print(f\n--- {i}. {q[stem]}) for line in q[body]: print(line) user input(你的答案).strip().upper() if q[answer] and user in q[answer]: score 1 print(正確) else: print(f錯(cuò)誤正確答案{q[answer]}) print(f\n本輪得分{score}/{len(selected)}) if __name__ __main__: questions load_questions(kingdee_questions.txt) # 默認(rèn)每次隨機(jī) 15 題保證覆蓋各個(gè)章節(jié) quiz(questions, batch15)這個(gè)腳本的抽題邏輯是把連續(xù)閱讀變成「測(cè)試反饋」切塊正則匹配Q\d、第N題、單選題、判斷題等標(biāo)記選項(xiàng)行用[A-D][.:]匹配答案提取優(yōu)先找[A]或者行尾的「對(duì)/錯(cuò)」。batch參數(shù)控制每輪題量建議 15 題一輪控制在 10 分鐘以內(nèi)。腳本會(huì)把錯(cuò)誤題目的答案直接打印出來(lái)不需要手動(dòng)翻 PDF 對(duì)答案。把文檔轉(zhuǎn)成純文本時(shí)要注意保存為utf-8避免選項(xiàng)里的全角字符、被正則漏掉。如果你的題庫(kù)里有圖片題正則切分會(huì)失效需要先把圖片里的文字 OCR 出來(lái)再進(jìn)腳本。5.3 二刷時(shí)怎么讀考點(diǎn)后面的設(shè)計(jì)思想刷題通過(guò)只是第一步二刷時(shí)把每道題當(dāng)作一次小型架構(gòu)決策來(lái)讀。比如Q8問(wèn)編碼規(guī)則最多支持幾段答案是 4——這個(gè)數(shù)字不是拍腦袋定的而是 4 段已經(jīng)能覆蓋「公司 業(yè)務(wù)類型 年月 流水」這個(gè)最常用的編碼模式超過(guò) 4 段的場(chǎng)景大概率是編碼設(shè)計(jì)過(guò)度。再比如Q18問(wèn)輕分析支持的圖表類型答案是表格——輕分析定位是嵌入式快速分析表格是基礎(chǔ)輸出格式復(fù)雜的自助 BI 應(yīng)該用獨(dú)立分析工具。Q59關(guān)于門戶首頁(yè)三種方案加載順序正確答案是 B2 → 3 → 1。個(gè)性方案優(yōu)先級(jí)最高其次是共享方案最后才是默認(rèn)方案。這意味著共享方案是「組織級(jí)兜底」個(gè)性方案是「?jìng)€(gè)人覆蓋」理解了這個(gè)順序你去配置首頁(yè)權(quán)限時(shí)就知道該給用戶組授權(quán)還是給個(gè)人授權(quán)。Q45判斷題說(shuō)「單據(jù)設(shè)計(jì)器不存在標(biāo)識(shí)相同的字段但可存在標(biāo)識(shí)相同的容器控件」答案錯(cuò)誤——標(biāo)識(shí)在全局層面要求唯一性容器控件的標(biāo)識(shí)同樣不能重復(fù)。Q64關(guān)于新增開(kāi)放 API 服務(wù)路徑正確是「開(kāi)發(fā)服務(wù)云-開(kāi)放平臺(tái)-API 服務(wù)」——注意必須是開(kāi)放平臺(tái)開(kāi)發(fā)平臺(tái)是設(shè)計(jì)態(tài)開(kāi)放平臺(tái)是運(yùn)行態(tài)。Q55問(wèn)移動(dòng)表單的通用模板選項(xiàng)是通用錄入、差旅申請(qǐng)、個(gè)人信息、報(bào)銷申請(qǐng)這四個(gè)里「差旅申請(qǐng)」是業(yè)務(wù)模板不是通用模板。Q52問(wèn)通用字段控件有哪幾個(gè)正確組合是「文本、圖標(biāo)、附件、下拉列表、日期」——圖片不是字段控件基礎(chǔ)資料是引用控件數(shù)量雖然也是字段但「圖片、圖標(biāo)、附件」這組選項(xiàng)里只有一組四平八穩(wěn)。沖刺階段準(zhǔn)備一個(gè)錯(cuò)題本文件夾把每次抽題答錯(cuò)的題目追加到對(duì)應(yīng)的 Markdown 文件里文件名按章節(jié)來(lái)分03-單據(jù)體與基礎(chǔ)資料.md、07-流程節(jié)點(diǎn).md??记皟商熘豢村e(cuò)題本不再碰完整題庫(kù)。這套方法在多個(gè) PaaS 平臺(tái)認(rèn)證考試?yán)矧?yàn)證過(guò)效果比整卷重刷要好因?yàn)槟愕臅r(shí)間只花在真正的盲區(qū)上。本文還有配套的精品資源點(diǎn)擊獲取