nRet, strOBJInfo = mobox.objAttrToObjJson (‘PMS001’, strRetInfo )
沒有對執行做保護(原先理解是 絕對不會出錯的,實際上是錯了),執行后報錯
這個錯誤爆出,我們根本無法判斷問題所在。所以在任何情況下調用函數都需要做 出錯保護,加入
?if (nRet ~= 0) then
mobox.error(strLuaDEID, “PMS001數據庫沒有對應字段 “)
return
end
2、在Debug 函數里面不能包含表類型的變量
Debug( strLuaDEID, debug.getinfo(1), ‘keynode創建’,tbNote[1])
里面的 tbNote[1]是一個表類型的變量,debug 不支持這個格式
nRet, strOBJInfo = mobox.objAttrToObjJson (‘JS003’, strRetInfo )
]]>
mobox3的功能點擴展的MBC客戶端的配置實現方式
需要定義 3個應用 (應用名稱 不能變)
MOBOX3
OIOrgSAPI
OIMoboxSAPI
OIDataSAPI
其它2個服務類似
這個用戶部署了 Gungho系統 ,而這個系統需要使用微信小程序。所以系統就會用到 gunghoAPI服務。(這個服務不是系統默認安裝的服務,需要手工單獨部署過)
這個服務部署后,我們客戶端怎樣去調用這個服務,我們就可以通過定義一個自定義參數來描述 gunghoAPI的的 IP及端口,方便客戶端調用
配置過程如下
這樣,我們就定義了一個編號為 9001 的參數。 這個參數可以通過 lua腳本來獲取
nRet, strCanSu= mobox.getParameter(strLuaDEID, ‘9001’)
]]>
我們可以看到,excel第一行是分組行(項目基礎信息,P1,P2)
在P1 下面有 計劃日期;在P2下面也有 計劃日期 ,2個字段名稱是一樣的。我們做讀取數據的時候必須要依賴分組 P1、P2的定義才能區分
我們在做excel導入的時候,針對這類表格。我們需要如下處理
1、導入按鈕設置
2、在導入腳本的地方主要通過分組屬性來區分字段
nRet, strRetInfo = mobox.getCurEditDataObjAttr(strLuaDEID, “G_PRJ_ID”, “S_PRJ_CODE”, “S_PRJ_NAME”, “S_PM_NAME”, “S_PD_NAME”)
[{
“attr”: “G_PRJ_ID”,
“value”: “”
},
{
“attr”: “S_PRJ_CODE”,
“value”: “PM-0002”
},
{
“attr”: “S_PRJ_NAME”,
“value”: “pcy 0999 hard”
},
{
“attr”: “S_PM_NAME”,
“value”: “金振興”
},
{
“attr”: “S_PD_NAME”,
“value”: “”
}
]
nRet, strOBJInfo = mobox.objAttrToObjJson (‘JS001’, strRetInfo )
注意:strOBJInfo 得到其實還是一個Json字符串,但其是一個標準的Json表格式表達
具體 objAttrToObjJson 函數怎么用查看手冊
{“cls”: “JS001”,
“ver”: 1,
“G_PRJ_ID”: “”,
“S_PRJ_CODE”: “PM-0002”,
“S_PRJ_NAME”: “pcy 0999 hard”,
“S_PM_NAME”: “金振興”
}
注意:這個Json格式是標準表格式字符串表達。
local tbOBJ = json.decode (strOBJInfo)
注,只有變成表后,我們可以這樣來理解這個表:
字段名 | cls | ver | G_PRJ_ID | S_PRJ_CODE | S_PRJ_NAME | S_PM_NAME |
數值 | JS001 | 1 | PM-0002 | pcy 0999 hard | 金振興 |
取值方法:
local strPMName
strPMName = tbOBJ.S_PRJ_NAME
賦值方法:
tbOBJ.S_PRJ_NAME = ‘潘元元’
local strRetInfo , strOBJInfo
local tbOBJ ={}
— 得到當前窗體上指定字段的json字符串
nRet, strRetInfo = mobox.getCurEditDataObjAttr(strLuaDEID, “G_PRJ_ID”, “S_PRJ_CODE”, “S_PRJ_NAME”, “S_PM_NAME”, “S_PD_NAME”)— 將json字符串(mobox3)格式轉為 json標準表格式
nRet, strOBJInfo = mobox.objAttrToObjJson (‘JS001’, strRetInfo )–將json字符串轉變為表
tbOBJ = json.decode (strOBJInfo)
— 獲取表字段內容及設置表字段值
local strPMName
strPMName = tbOBJ.S_PM_NAME
tbOBJ.S_PM_NAME = ‘潘元元’
若需要將數據轉會mobox3數據格式
–將表轉變為json字符串(標準格式)
strOBJInfo = json.encode (tbOBJ)— 將json標準表格式格式轉為 json字符串(mobox3)
nRet, strRetInfo = mobox.objJsonToObjAttr (‘JS001’, strOBJInfo )
]]>
為了解決這個問題,我們可以編輯一個lua腳本,將這個數據做處理后再顯示(在顯示前事件里面定義這個lua腳本)
–[[? ? 功能說明:? ? ? ? 1) 顯示前做一些字段的處理? ? ? ? 2)前端導入,新增有換行符號 %%3Cbr%%3E ,替換成 <br> 前端html支持的換行內容? ? ? ? 3)內容中有&,替換成 & 前端解析 &不支持,最好在輸入時進行替換–]]json = require(“json”)mobox = require(“OILua_JavelinExt”)require(“oi_basestrfunc”)function BeforeGridShow(strLuaDEID)? ? local nRet, strRetInfo? ? local arobjs, attrs, success? ? — 獲取輸入的DataJson數據包? ? nRet, strRetInfo = mobox.getCurEditDataPacket(strLuaDEID)? ? if (nRet ~= 0) then? ? ? ? mobox.error(strLuaDEID, “無法獲取數據包!”)? ? ? ? return? ? end? ? if (strRetInfo == ” or strRetInfo == nil) then? ? ? ? return? ? end? ? — 解析數據包,數據包格式? ? — [{“id”:””,”attrs”:[{“attr”:””,”value”:””},..]},..]? ? local n, nCount? ? success, arobjs = pcall(json.decode, strRetInfo)? ? if (success == false) then? ? ? ? mobox.error(strLuaDEID, “非法的JSON格式!”)? ? ? ? return? ? end? ? nCount = #arobjs? ? if (nCount == 0) then? ? ? ? return? ? end? ? local obj, attrs? ? local nattr_count? ? local strRow, strAttr, strItem? ? local strDataJson? ? local id, strValue? ? local strAttrs? ? strDataJson = ‘[‘? ? local seg = {}? ? local nSegCount = 0? ? for n = 1, nCount do? ? ? ? obj = arobjs[n]? ? ? ? attrs = obj.attrs? ? ? ? nattr_count = #attrs? ? ? ? id = obj.id? ? ? ? strAttrs=”? ? ? ? — 開始過濾顯示數據對象屬性? ? ? ? for nIndex = 1, nattr_count do? ? ? ? ? ? strAttr = attrs[nIndex].attr? ? ? ? ? ? strValue = attrs[nIndex].value? ? ? ? ? ? strValue = strValue:gsub(“%%3Cbr%%3E”, “<br>”)? ? ? ? ? ? strValue = strValue:gsub(“&”, “&”)? ? ? ? ? ? strItem = ‘{“attr”:”‘ .. strAttr .. ‘”,”value”:”‘ .. strValue .. ‘”},’? ? ? ? ? ? strAttrs = strAttrs .. strItem? ? ? ? end? ? ? ? — 取消最后一個,號? ? ? ? strAttrs = trim_laster_char(strAttrs)? ? ? ? strRow = ‘{“id”:”‘ .. id .. ‘”,”attrs”:[‘ .. strAttrs .. ‘]},’? ? ? ? strDataJson = strDataJson .. strRow? ? end? ? — 取消最后一個,號? ? strDataJson = trim_laster_char(strDataJson)? ? strDataJson = strDataJson .. ‘]’? ? local strAction = ‘[{“action_type”:”reset_data_attr”,”value”:’ .. strDataJson .. ‘}]’? ? mobox.setAction(strLuaDEID, strAction)end
這個列子也可以用于別的一些非法字符串的處理
]]>
企業在實施項目管理系統的時候,不通類型的項目其屬性可能是不一樣的。而Gungho標準系統內對項目的屬性,主要包括(項目名稱、編號、開始結束日期等)。為了適應企業個性項目信息的輸入,我們需要通過Mobox平臺定義項目類型去適應這個需求
Sa 登錄mobox低代碼開發平臺
創建一個用于描述項目擴展屬性的數據對象
注意:業務類型必須是 項目
接下來需要做的內容,這里不具體展開
基礎:主要是綁定哪個數據對象及相關的界面
功能:主要是可以自定義該類型項目的自定義菜單 (參考下圖)
我們在gungho登錄后,新建項目
]]>
Gungho項目管理軟件在企業部署的時候因其業務的個性,很有可能需要對任務做各種各樣的二次開發,從而適應企業需求
舉例:
某檢測檢驗中心,在做叉車整車檢測的時候會分解出100多個的檢測任務,每一個任務除了要求員工按時間要求完成以外,還需將每個檢測任務所獲取的數據等級下來。這個數據可能是一個表,而且每一個任務所對應的填寫數據也都是不一樣的。
這樣一個需求,我們就必須對任務做二次開發
用sa 登錄Mobox平臺,進入系統管理模塊
定義的任務類型名稱,在后面會用到
開發一個腳本:任務點擊后 腳本 (目的是 任務點擊后能將 prj_id,task_id 等設置到全局變量)
這個任務點擊后(lua腳本)是標準的
|
這個腳本目的是生成 全局變量:prj_id , task_id 。 這2個變量描述了當前任務所屬項目唯一標識,及任務唯一標識。是Gungho系統向Mobox平臺傳遞核心參數,Mobox后期二次開發的時候都需要用到。
注意,這里定義的全局變量 名稱在后期調用的是要完全一樣
這個腳本,會在后面文章的:任務分類定義 –? 事件 (點擊后事件用到) 參考
按需分別定義數據模型,及模型里面的字段。這里不詳細展開(需要有mobox二次開經驗)
定義小窗口的時候需要注意,有一個窗口初始化腳本要執行(目的是個小窗口內設置prj_id, task_id)
因為是與Gungho集成,前面描述過gungho的全局變量,這里開發的時候已經可以使用這些變量(prj_id , task_id)
根據需求,圍繞數據模型做二次開發(可能有很多過個腳本,按需求開發)比如
1)查詢事件 (我們的擴展屬性,是與任務綁定的,所以需要查出與本任務有關的屬性 如 任務ID過濾 )
因為是與Gungho集成,前面描述過gungho的全局變量,這里開發的時候已經可以使用這些變量(prj_id , task_id)
2)初始化腳本 (因為需要與Gungho的任務集成,定義界面(小窗口的時候需要定義初始化腳本 如 設置項目及任務ID )
任務擴展屬性信息的grid展示(查詢事件)、小窗口數據的輸入保存(需要綁定task_id等)
任務分類定義,是gungho的任務與Mobox的功能點集合的一個過程
注意:數量限制 必須選擇 多數據, 顯示方式必須選擇 自定義頁面
注意:點擊任務后事件 是必須選擇( 來源: gungho領域 – TASK任務 – 某自定義事件)
自定義里面是將任務與Mobox的功能點集合在一起
按上圖,A2樣品技術參數,這類任務,綁定了2個功能點
綁定了2個功能點
? 1 個用于技術參數輸入 (可能是一個表)
1 個用于檢測結果輸入
]]>
共好合同管理軟件是基于 Mobox工業低代碼開發平臺結合企業個性需求定制開發而發布的
合同軟件包括:客戶維護、銷售跟蹤管理、客戶需求管理、(銷售與采購)合同管理、合同評審、合同檔案管理、企業即時通訊平臺等模塊組成
基礎服務:人員管理服務、消息服務、文件服務、數據服務、流程服務、腳本引擎
合同軟件涉及的企業員工角色:銷售、采購、管理員、主管、財務。以下是各個角色主要需要做的事情。
合同系統大體思路
一、合同系統基礎數據維護
管理員(admin),要維護(本公司的產品)信息
二、銷售合同完成過程
1、必須 先建立 客戶,及其 對應的 聯系人
2、有了客戶 (需要有稅號) ,才能新建銷售合同
3、合同 建立后 ,位這個 合同設置 銷售清單 (來源 本公司的產品)
4、合同完成后,需要找人審批 (審批人 xszg)
5、審批通過后 , 財務 (cw)可以輸入 財務信息比如 (匯款信息、開票信息等)
6、合同原件歸檔
合同管理可以幫助組織或個人提高合同交付的效率和準確性。合同管理軟件和工具可以簡化合同創建、審批、跟蹤和管理的過程,減少人為錯誤和遺漏。這有助于提高合同流程的效率。
能對合同全局進行查看(如 采購清單、收款記錄、開票記錄、收款計劃等)
能查看合同附件
合同草案擬定后,需要公司組織相關專業的人員及領導,對合同進行評審。共好合同管理系統,支持用戶自定義流程,可以根據不通的合同、不同的發起人啟動對應的流程來多合同進行評審,所有評審記錄都會記錄在系統中,便于以后追溯。
合同是業務和管理的雙向訴求,在企業的經營過程中,合同的歸口部門在不同的業務部門(當然,紙質文檔一般會由財務或者行政或者其他部門進行統一存檔),沒有一個統一的入口提供所有合同管理的情況下,會給合同的查詢、閱覽等帶來不便,合同管理系統可以將不同業務部門的不同類型的合同集中管理起來,提供統一的查詢入口,為合同的查詢、閱覽帶來便利。
合同本身是一個文檔,要么是在線文檔、要么是附件文檔,這些文檔本身是沒辦法進行直接提供支撐數據支撐的,在合同管理系統中,我們先要把合同的關鍵數據提取出來,放到合同管理系統中。當合同數據全面錄入合同管理系統以后,合同的各種數據都可以被進行統計,如合同金額、合同的收款、付款情況,收付款計劃等等,這些數據按照業務需要進行加工以后,就可以為業務提供全面的數據、決策支撐。
我們可以為合同設置收款計劃,系統會根據設置 自動進行,到期收款提醒,及收到匯款后提醒、開票后提醒等
合同系統是B/S架構的系統,企業需要找一臺服務器來部署,服務的要求如下
硬件 :
8G 內存或更高 、8CPU或更高、500G硬盤(根據自己需求而定)
操作系統:
操作系統:Windows 2012 r2 或更高(支持 32及64)
數據庫:甲方自己準備或我方協助
數據庫:SQLServer 2008 R2或更高
軟件環境:
IIS + .NET4.0 +.NET4.5(或更高版本)
備注:
1)若Windows 2012r2 ,那么SQL需要安裝 2008或更高版本 (否則 SQL管理器可能不能安裝)
2)若安裝 SQL 2008 or 2008R2 ,那么必須安裝過 .Net 3.5
3)Mobox網站必須有 .Net 4.5(或更高版本支持)
]]>
1)3000功能點
2)增加打印功能
3)配置打印時用的支撐文檔柜
需要定義word模版,必須存儲為 docx
主表變量:{S_KA_NAME}???? 對應的是:客戶名稱
這里的 {S_KA_NAME} 變量輸入(最好的方法)
1)在 notepad 中,將變量輸入后,復制;
2)到word 里面進行 粘貼
若不采用這個方法,直接在word里面輸入這個變量,有的時候word對這個變量會做特殊處理。從而在打印的時候造成,變量無法賦值
其中,購買產品是一個采購清單,屬于合同的關聯表,其變量定義解釋
舉例:產品名稱 字段 ,變量:
{TN_0012*S_PO_CODE*S_GDS_NAME*2}
關聯表變量解釋:
其中:所有這些表名、字段名等都需要系統管理 在后臺進行查看
帶來的問題:
設置正確后:
打印的word 顯示會正常:
]]>