2015年12月18日星期五

一直在分享合作客戶的專案,今天來看看帆軟自己的!

FineReport應用到管理中例子非常多,之前給大家分享了很多專案,今天我把我們公司自己的簽到系統分享出來,很簡單的一個應用,讓大家看看我們是如何利用FineReport來實現管理目的的。
首先上圖:
功能介紹:
1、只能在南京、無錫的辦公室才可以簽到,其他地方簽到是無效的。【為避免假冒偽劣簽到哦】
2、若早上籤到時間在9:00以後,點擊早上籤到的時候,會直接彈出“遲到窗口” ,寫上遲到原因才算能完成簽到。【遲到了總要寫上原因】
3、簽到後的時間會實時刷新。【方便看出來簽到的時間,而且在具體數據資料表中也會顯示出來】
4、簽到情況,若遲到、出差、請假等,都有超鏈接,可以點擊進去查看原因。【很方便查看】
5、數據資料表中的部門順序,是按照簽到自身情況排列的,比如我是市場部員工,那麼展示在最前面的表格就是市場部;另外同事在研發部,那麼他看到的這個報表,出現在最前面的就是研發部。【人性化的設計,很方便】
6、簽到頁面最上方的時間會隨著時間自動更新,比如今天是第「xxx」周,就列出來本周的所有日期,到了下一周,又會自動切換過去。【方便查看】
7、當然做簽到的目的是想大家準時上班不早退不缺勤,所以這些數據的統計,在人事妹妹那裡能看到,周、月、季度的遲到次數、請假次數、出差次數這樣的匯總表,一目了然看到大家簽到情況。
……
當然,如果基於統計分析和運營管理的樂趣角度,還可以深入分析哪個部門、哪個人什麼時間遲到、遲到的時間臨界點、為什麼遲到等等。。。。。
當然,我們沒有這麼去做,大家很努力很上進,管理手段最終是為人來服務的,像google、Facebook等公司,管理制度是很少很少的,大家都認OKR,不限制你的自由,希望你能爆發能量創造更多價值,所以可以吃著火鍋唱著歌,就把工作給辦了。
今年,我們帆軟也用了OKR管理,當OKR真正深入每一個帆軟人骨髓的時候,今天我分享的這個簽到系統,可能就要退出歷史舞台了,即便不退出,到時候大家看的,可能是誰的遲到次數、缺勤次數最多了吧~~~
最後,作為本文的終結,再貼上兩個圖以表誠意。

2015年12月16日星期三

簡易出入庫系統分享

本文來自帆軟愛好者論壇一位番薯的分享,整理給大家參考!
一般用程序入門都做出入庫,進銷存之類的,一旦掌握了進出剩餘的做法,其他程序只需要在此基礎上擴展即可
一.描述:
希望在工作的時候,庫管可以通過FineReport能進行倉庫管理,因為管理簡單,邏輯上就不複雜,但裡面涉及很多的知識點和技巧,整套系統需要設計的是:出入庫人員,產品單,入庫單,出庫單,以及庫存明細報表
二:分類:報表應用>>報表典型應用>>簡易出入庫系統
三.實現步驟:
1.建立資料庫,本表涉及4個資料表,如下圖
用戶表,產品列表,入庫表,出庫表(出庫表和入庫表欄位一樣,圖一隻是展示出入庫表,需要再建一個出庫表)4個表
2.新建員工表和產品表,這個需要填報,兩個表比較簡單,具體步驟就不詳細介紹了,主要運用到模版–報表填報屬性,把欄位和單元格關聯即可,如下圖
產品表效果如下圖,產品表做了兩塊:一個是填報,一個是報表展示,當點擊提交按鈕後會刷新頁面出現產品列表!
這裡的知識點可以看之前寫的這篇教程:http://bbs.finereport.com/thread-69750-1-2.html
我們可以對添加的產品名做校驗,如果名稱重複彈窗警告,方法:右鍵點擊產品名稱下面的控制項單元格B3,控制項設置事件編輯,寫入js程式碼,如下圖
顯示效果如下圖
3:入庫單製作,如圖五
圖五
入庫單依然分兩塊,一個是入庫單填報,一塊是當提交入庫後可以及時產看到現在入庫明細表
如何設計表單填報和上面一樣,需要留意的知識點有以下幾個:
(1).入庫金額可以像excel一樣直接在單元格填入乘法公式
(2).產品名稱在入庫表中只是數字,引用的是產品表裡的id,如何讓他顯示產品名稱下拉列表,這裡需要一個技巧,我們需要右擊此單元格,選擇控制項設置-資料字典,如圖六設置
圖六
這樣我們點擊下拉列表時就會出現所有的產品名稱而不是產品編碼,當我們選定產品名稱後,發現在單元格中竟然還是產品編碼,這時我們需要做另一個設置,如圖七設置
圖七
設置完後,發現下拉選擇產品名稱後,單元格也是顯示的產品名稱,相關的技巧應用於入庫人欄位!通過以上的設置,入庫單就做好了
4:出庫單製作,效果如圖八
圖八
出庫單裡面也有產品名稱和出庫人兩個下拉列表,設置方法和入庫單中的產品名稱和入庫人的方法一樣
除此以外還有兩個知識點:
(1).當我們選擇產品名稱時如何實時顯示出現有庫存數量,我們需要如圖九設置
圖九
=if(len(A3) = 0, “”, sql(“glgg”, “select product_shu from glgg_product where id=” + A3, 1,1))
公式解釋:如果產品名稱長度為0的時候,現有庫存數量為空,否則查詢相應產品的數量把他的產品數量顯示在這個單元格中。
(2).如果填報人員填報失誤,填報的出庫數量大於現有庫存的數量,那整個系統就不好了,如何設定校驗呢?右擊單元格—控制項設置–事件編輯如圖十:
圖十
相關程式碼在圖十中有注釋,比較簡單
通過以上步驟出庫單就做好了
5:製作庫存產品明細報表
(1).建立入庫表資料集,建立出庫表資料集,建立產品表資料集,如圖11
圖11
(2).填充欄位,產品信息裡面填產品信息里的欄位,入庫填入庫表的欄位,出庫填出庫表的欄位,如圖12
圖12
(3).在K4單元格填入公式:=sum(G4) – sum(J4),計算出庫存數量
(4).以上只是普通的操作,接下來需要做定義,我們如何讓入庫和出庫列表顯示的和產品名稱一致呢,這些要做過濾,舉例:在入庫-時間,雙擊D4單元格,點擊過濾,如圖13,讓pid等於單元格A4,因為出入庫的pid就是引用的產品表中的id,出庫和入庫方法一致
圖13
(5).做到以上步驟,預覽看一下,發現報表凌亂,不像excel那樣可以按照自己想想的那樣讓相同的內容合并單元格,這就需要我們進一步的美化我們的報表,而且要有紮實的基本功能夠很好的理解分組,列表,擴展單元格這些基礎知識。
我們需要對B4,C4單元格設置擴展方向–不擴展,如圖14,這樣產品名稱和產品單位會自動合并單元格
圖14
之後對D4和H4單元格擴展方向–縱向,左父格自定義A4,如圖15
圖15
最後一個是K4單元格,需要設置單元格擴展方向-不擴展,左父格自定義A4。
最終的效果,如圖16,一張複雜的有美感的報表就生成了。
圖16
本來到此就結束了,但很遺憾,如果這麼簡單,那就不是系統了!
6.我們是需要有庫存數量的,通過報表我們計算出入庫總量和出庫總量,之後計算出現有的庫存總量,這個庫存總量是變化的,是需要實時寫入到資料庫中的,只有寫入資料庫中,當我們出庫的時候,庫存數才能正確顯示。如何實現呢?
我們需要給庫存數量K4單元格加一個數字控制項,之後選擇模版–報表填報屬性,添加欄位,id值一定選擇單元格組[A4],這樣填報的時候才會把屬於此單元格組的數量正確的更新資料庫里的值!如圖17
圖17
這樣設置後,我們打開這個報表時就可以提交,讓其庫存數量實時填入資料表的欄位,但我們不能每次都手動提交,這就需要打開決策系統–管理系統–定時調度,添加一個定時任務,讓系統每隔一段時間就自動提交,當然你要選擇需要定時填報的報表,如圖18,19設置
圖18
圖19
每隔時間可以自己設定,如果操作頻繁可以設定每1分鐘執行一次,這樣伺服器壓力大點!通過以上步驟,整個系統就完成了!中間過程並不簡單,需要細心並且對基礎掌握的很好才行!希望大家通過這個教程都能自己做出符合自己公司情況的出入庫管理系統!

2015年12月15日星期二

FineReport移動端又升級啦!掃碼輸入,獲取地理位置······

關注Android行動APP的小夥伴們注意了,Android行動端在12月7日更新,此次更新中,對大家比較關心的android終端操作性能體驗進行了改進優化,有大幅提升!
性能優化:
1、優化了表單報表滑動體驗
2、優化了下拉刷新體驗
3、優化了左右手勢翻頁體驗
4、優化了多處操作性能,例如目錄界面滑動、翻頁、按鈕靈敏度及點擊後反應效率
另外新增功能:
5、PC端和行動端首頁可以分開各自設置,很多小夥伴希望PC上有首頁,行動端不要首頁,現在就可以支持了,報表伺服器需要更新至8.0最新版本
6、行動端修改密碼功能,與PC端一致,只有在非同步資料集的內置認證下才可以進行修改
7、首頁位置調整
改進:
8、界面美觀與交互體驗
9、改進未提交資料界面
修復bug:
10、凍結縮放空白問題
11、表單報表塊激活後無法顯示全問題
12、閃退問題
在最新的FineReport行動端中,推出了4個新功能,給大家著重介紹:
1、掃碼輸入,支持二維碼輸入信息,支持條碼與二維碼。[忽然覺得,這個應用場景好多啊~]
2、支持獲取當前經緯度值,根據經緯度獲取最近地址。[有這個功能,簽到不再是問題了]
3、定時推送信息到行動客戶端[這個很實用]
結合排程設定功能您可以監測資料是否更新,監控資料是否異常,推送消息至行動終端
4、安全控制,行動端丟失及賬號猜測[哇,好安全]
開啟設備綁定之後,只有通過授權的設備才能連上伺服器查看報表,安全性大為提升。
如果發生手機丟失的情況,只要及時在伺服器上解除該設備的授權,該設備就無法連接伺服器查看報表了。

2015年12月14日星期一

淺談FR為ERP提供報表解決方案

這是來自帆軟愛好者論壇裡面一位番薯分享的案例,這裡整理給大家參考學習!
ERP——Enterprise Resource Planning 企業資源計劃系統,是指建立在信息技術基礎上,以系統化的管理思想,為企業決策層及員工提供決策運行手段的管理平台。ERP系統集中信息技術與先進的管理思想於一身,成為現代企業的運行模式,反映時代對企業合理調配資源,最大化地創造社會財富的要求,成為企業在信息時代生存、發展的基石。
截止到目前,使用ERP的用戶越來越多,對數據資料的探取需求也越來越大,但ERP報表對用戶個性化的需求支持的力度並不大,最多支持SQL語句查詢,而對報表的樣式就無能為力了,從今天開始,我將列舉幾個報表的應用,看如何解決ERP報表使用中的難題的。
一、銷售訂單執行情況明細表
1、ERP過濾界面圖
2、ERP查詢效果圖
相信大家從ERP效果圖中可以看出,報表提供了兩種單據資料,即銷售訂單和銷售出庫單,並且這兩種單據資料還不是在同一行上,都是隔行顯示,用戶體驗並不好,並且這些資料比較單一,如果我還想知道訂單的入庫情況、訂單完工率、訂單按期交貨率呢?那只能對資料進行二次加工,比較常見的方法是把資料導出EXCEL表使用公式來做,粗略估計,沒有個把鐘頭無法做出像樣的報表來。
3、使用FR報表做出來的報表效果圖
用FR做報表,必須要明白點SQL,而且對ERP資料庫也要有一定的了解,清楚每個欄位的含義,否則多表關聯你也是搞不定的,下面是模板資料集語句:
SELECT * FROM (SELECT t1.FBillNo,u1.FName AS FCustID,case when u1.FName=’零售戶’ then ‘預測訂單’ else ‘銷售訂單’ end as FCustID1,t1.FDate,
u2.FName AS FEmpID,
case when t1.FMultiCheckLevel1=16403 or t1.FMultiCheckLevel1=16507 then ‘昆嵛路工廠’
else ‘四產路工廠’ end
AS fparentid,t2.FEntryID,t100.FNumber,t100.FName,t100.FModel,
CASE WHEN t2.FUnitID=0 THEN ” ELSE u4.FName END AS FUnitID,
t2.FAuxQty As FQty,t2.FDate AS FOutStockDate,t2.FAdviceConsignDate,u5.FBOMNumber,t1.FInterID
,t2.FAuxStockQty as FStockQty,t51.FName as FCUUnitID,t2.FQty/t51.FCoefficient as FCUQty,
t2.FStockQty/t51.FCoefficient as FCUStockQty
,cast(t2.finterid as varchar)+cast(t2.fentryid as varchar) finteridfentryid,t800.fqty fstockqty1,t800.fcheckdate,t2.FHaveMrp,t1.FExchangeRate,t2.fauxpricediscount
FROM SEOrder t1 INNER JOIN SEOrderEntry t2 ON t1.FInterID = t2.FInterID and t1.fstatus in (1,2,3)
and t1.FChangeMark=0 AND Isnull(t1.FClassTypeID,0)<>1007100 and t2.FMrpAutoClosed in ${是否手工行關閉} left outer join icmo t900 on t900.FOrderInterID =t2.FInterID and t900.FSourceEntryID=t2.FEntryID and t900.fitemid=t2.fitemid
left outer join (select b.FICMOInterID,b.fitemid,b.fqty,a.fcheckdate from icstockbill a join icstockbillentry b
on a.finterid=b.finterid where a.ftrantype=2 and a.fstatus=1) t800 on t800.FICMOInterID=t900.finterid
LEFT OUTER JOIN t_Organization u1 ON t1.FCustID=u1.FItemID
LEFT OUTER JOIN t_Emp u2 ON t1.FEmpID=u2.FItemID
LEFT OUTER JOIN t_ICItem t100 ON t2.FItemID = t100.FItemID
LEFT OUTER JOIN t_MeasureUnit u4 ON t2.FUnitID = u4.FItemID
LEFT OUTER JOIN t_MeasureUnit t51 ON t100.FProductUnitID=t51.FItemID
LEFT OUTER JOIN ICBOM u5 ON t2.FBomInterID = u5.FInterID ) tt
WHERE 1=1 and tt.FOutStockDate>=’${開始日期}’ and tt.FOutStockDate<='${結束日期}' and tt.FCustID1='銷售訂單' and tt.FNumber>‘3.01’
${if(len(fparentid)==0,””,”and fparentid = ‘”+fparentid+”‘”)}
order by ${cname} ${orderby}
(看起來有點複雜,這些是以需求為導向的,看需求的複雜程度而定啦)
4、做好的模板圖
5、報表設計過程中遇到這樣一個問題:如何計算按期交貨率?公式=按期交貨筆數/總筆數。我們對筆數是這麼規定的,在一張訂單上,交貨日期相同的為一筆,交貨日期相同且全部未延期交貨的為一筆按期交貨筆數,這麼說是不是有點拗口,但只要你做過類似的計算,相信你會理解的。當然,各公司的規定可能不大一樣,但演算法差不多。
這個問題看似簡單,實則不然。銷售訂單號和交貨日期這兩個欄位是往下擴展的,到底有幾行是未知數,如何設置公式呢?第一步利用分組求出總筆數,用序號來代表:
注意看序號18和19,這是一張訂單,但因為兩條分錄的交貨日期不同,我們認為這是兩筆訂單,用序號來代表還有一個好處是看著直觀,設計報表一定要站在用戶的角度,因為他們是最終使用者。FR的父格很有作用,把序號的父格指向交貨日期單元格就可以了。
EXCEL表功能最強大,用它也不好做,即使做了方法也不會比FR更簡單。
做報表關鍵是思路和想法,當時在設計這個報表時,苦苦思索了一整天,也沒有想到解決方案,無奈之下上論壇發貼求助,在jane版主的幫助下順利解決,再次表示感謝!
如何判斷是否按期交貨呢?增加一個輔助列,做好以後列隱藏,公式=if(and(min(Q5)>=0,P5>=1),1,0),只需要判斷交貨日期這一組中最小的數字是否大於等於0就可以了,如果條件符合返回1,否則返回0,做好這個之後求這一列的和就可以了,這個匯總就是按期交貨的筆數,問題迎刃而解。寫到這裡不由的一陣感慨:FR真是太靈活了!可能有人會說:「你是不是FR的托呀,在這直打廣告」,那麼好,現在讓你不論用哪個軟體,按照這個需求能做出來,方法有更簡單的,請在後面跟帖。
現在把ERP報表和FR報表效果圖放在一起比較,是不是高低立判呀,樣式效果還不是關鍵,關鍵是按照各個企業的管理特點開發出了非常有針對性的報表,充分挖掘已有數據資料,不怕做不到,就怕想不到呀。

【FineReport每周更新公告】第49周 11月29日——12月05日


【本週統計情況】
修復bug:35
新功能(已完成):4
新功能(未完成):2
其他:4
改良:3
PC端:
bug——6個
(83115:模板單元格中如果帶了非法字元, 會導致整個xml解析失敗.
83118:BI-BI3.7:報表管理>>報表封面修改目錄和模板圖片,保存後在首頁查看沒起效果
對話框拖動的bug 等等)
改良——匯出並發大時會出現空白,優化
其他——給市場單獨打一個特定激活鏈接的exe
其他——將功能點記錄和文本控制項增強校驗的插件內置
新功能——上報可集成(完成了部分,還剩下改bug)
新功能——finedb可提供備份還原(完成了部分)
新功能——集群(一期完成)
移動端IOS:
bug——14個(一輪冒煙的bug修改+bi的bug)
其他——航天財務兩個介面(目錄、首頁、報表不全屏展示的)
新功能——BI明細表
新功能——BI交叉表的行凍結
移動端Android:
bug——15個(客戶bug+二輪冒煙bug)
新功能——資料分析自動處理成__bypagesize__=false
改良——控制項事件改進
改良——報表展現不需要從右邊進入的動畫
其他——816發布
【第50周計劃】12月06日——12月12日
PC端:集群做成插件、集群二期(批量導入、上報)、中石油導出介面、功能記錄、平台樹慢的性能改良、finedb、sapbw、上報集成的bug、插件伺服器遷移和授權相關等
移動端IOS:冒煙bug、蒲公英跑出來的bug、性能、H5報表展示、wechat排程任務的url拼接
移動端Android:填報插入刪除行(可行性研究+開發)、支持https(研究+開發)、vpn介面

2015年12月10日星期四

線上培訓——圖表專題

本期線上培訓的主題是圖表,內容提要:
1、圖表簡介
2、分類和對應值的設置
3、系列和對應值的設置
4、特殊資料設置
5、圖表動態特效設置
6、內置和自定義地圖使用
7、GIS地圖使用
8、圖表風格和配色全局化
9、多維度坐標軸
10、圖表探取(熱點鏈接)
11、地圖探取
12、圖表聯動
13、圖表實例分享
附培訓視頻、ppt下載:

2015年12月9日星期三

FineReport新版面積圖發布!多軸/反向/範圍/負值輕鬆實現啦

緊接著折線圖,我們開發的新版面積圖又和大家見面了!
為了讓大家能儘快體驗已開發完畢的新圖表,這次更新我們特意在exe里內置了各種圖表類型的demo模板哦~
下載最新的exe,打開doc\Advanced\Chart目錄,會發現多了好幾個newchart子目錄。下面特性介紹中大部分模板,在其中都能找到。
面積圖含義與折線圖類似,可用來展示持續性數據,可很好地表示趨勢、累積、減少以及變化。與折線圖略有不同的是,面積圖更擅於展示部分和整體之間的關係。
這次更新的新面積圖一如既往的貫徹了FR新圖表的特性:美觀,動畫以及強大的自定義功能。
新特性簡介:

一.視覺和動畫

二.非連續性的面積圖+自定義圖例

三.負值面積圖

四.範圍面積圖

五.多軸反向面積圖

六.曲線面積圖和垂直面積圖

七.百分比堆積面積圖

八.自定義數據點提示+自定義間隔背景

九.面積圖縮放

手勢縮放:
控制項縮放:

十.動態刷新

與折線圖類似的特性就不過多介紹了,各位下載官網最新的exe即可體驗最新版的圖表。
目前已經發布的新特性圖表有:餅圖,柱形圖,條形圖,折線圖和面積圖。
下期我們將發布最新的儀錶盤~ 會同時發布五種,提前觀看視覺圖:
如果你對即將發布的圖表有任何建議,或者對FR的圖表研發計劃興趣,亦或是對資料可視化感興趣的話,歡迎聯繫圖表團隊產品經理:
wangjun@finereport.com