皆さんこんにちは~
業務ハックLabのよ~よんです。
今回の記事はMicrosoft Power Apps Advent Calendar 2020の12/20担当として書かせていただいています!!
今日はPower Appsで棚卸アプリを作ってみたのでそちらについて紹介したいと思います。
物を取り扱う仕事をした方なら一度はしたことがある「棚卸し」。
すべてバーコード管理されているものでも作業は大変ですがバーコードが付けられないものの棚卸しなんて正直考えたく有りません・・・
でもそんな環境もあるわけで・・・
ということでロケーション管理だけはできている前提になりますがバーコードを使わない形で簡易的に棚卸しをするアプリを作ってみました。
各種構成
SharePointリストの構成
まずはデータの格納場所が必要です。
今回はSharePointのリストを使用していきます。
※SharePointの委任問題についてはここで語ると長くなってしまうので割愛します。
委任問題についてはじゅんじゅんさんの記事が非常にわかりやすいのでおすすめです。
リストの構成はこんな感じです。
列名 | 1行テキスト種類 | 説明 |
タイトル | 1行テキスト | 連番の数字 |
Product_code | 1行テキスト | 社内管理コード |
Maker_Name | 1行テキスト | メーカー名 |
Product_Name | 1行テキスト | 商品名 |
Maker_Num | 1行テキスト | メーカー商品コード |
Location_No | 1行テキスト | ロケーションナンバー |
WH | 1行テキスト | 倉庫名 |
Col | 1行テキスト | 列 |
Gr | 1行テキスト | 連 |
St | 1行テキスト | 段 |
Num | 1行テキスト | 番 |
Inventory_amount | 1行テキスト | 在庫数 |
Inventory_Count_Flag | 1行テキスト | カウントフラグ |
次はアプリの構成です。
アプリの構成
棚卸アプリは下記のようなスクリーンの構成になっています。
- AreaNoInputScreen
このスクリーンでは棚卸しをするエリアと列を指定します。
実はこのスクリーンで条件を指定する事で無理やり委任問題を回避しています。 - EditScreen
実際に棚卸し結果を入力スクリーンです。
在庫数量を入力して「確定」ボタンをタップすると一覧から表示が消えるように設定してあります。
- EditFixScreen
棚卸し済みのデータの個数修正を行うスクリーンです。
Inventory_Count_Flagが「1」になっているデータのみが表示されます。
スクリーン構成としてはたった3つです。
アプリの作成
各種データとの接続との接続
接続するデータは先程作成した「Sharepointリスト」と「Office365ユーザー」です。
SharePointのリストへの接続は検索欄で「SharePoint」と検索すると表示される「SharePoint」コネクタを選択し、接続先を選択します。
そうすると画面右側にSharePointサイトが表示されるのでリストが格納されているサイトを選択して該当のリストにチェックを入れてから接続をクリックします。
次にOffice365ユーザーコネクタに接続します。
Office365ユーザーコネクタへの接続は検索欄で「Office365ユーザー」と検索すると表示される「Office365ユーザー」コネクタをクリックし、該当するコネクタをクリックします。
これでデータの接続は完了!!
アプリを開いた時の変数の設定
アプリを開いた際に自動的に変数を設定するようコードを入力します。
ここをクリックしてから「OnStart」を選択して入力バーに下記コードを入力して下さい。
// Get the logged in user.
Set(varUser,Office365ユーザー.MyProfileV2());
// Set varInventoryFlag.
Set(varInventoryFlag,"0")
AreaNoInputScreenの作成
このスクリーンではEditスクリーンとEditFixスクリーンで表示する商品を絞るための役割を担います。
オブジェクトツリーはこんな感じです。
GoEditButtonを押下時にAreaNoText、ColumnNoTextの値を変数に入れるような挙動になっています。
- GoEditButton
Onselectを選択し入力バーに下記のコードを入力します。Set(VarArea,AreaNoText.Text);
Set(VarColumn,ColumnNoText.Text);
Navigate(EditScreen, ScreenTransition.None) - GoEditFixButton
Onselectを選択し入力バーに下記のコードを入力します。
Set(VarArea,AreaNoText.Text);
Set(VarColumn,ColumnNoText.Text);
Navigate(EditFixScreen, ScreenTransition.None) - LoginInfoName
Textを選択し入力バーに下記のコードを入力します。
"氏 名:"&varUser.displayName
- LoginInfoOffice
Textを選択し入力バーに下記のコードを入力します。
"所属支社:"&varUser.officeLocation
- LogininfoDep
Textを選択し入力バーに下記のコードを入力します。
"所属部署:"&varUser.department
入力欄など位置はお好みで配置して下さい。
EditScreenの作成
このスクリーンでは実際に棚卸しでカウントした数を入力するスクリーンになっています。
オブジェクトツリーはこんな感じです。
Gallaeryを使用しています。
- Gallery1
Itemを選択し入力バーに下記のコードを入力します。
Filter( [@本社棚卸リスト], WH = VarArea, Col = VarColumn, Inventory_Count_Flag = varInventoryFlag )
- Location_Tx
Textを選択し入力バーに下記のコードを入力します。
ThisItem.Location_No
- MakerName_Tx
Textを選択し入力バーに下記のコードを入力します。
ThisItem.Maker_Name
- MakerNum_Tx
Textを選択し入力バーに下記のコードを入力します。
ThisItem.Maker_Num
-
Textを選択し入力バーに下記のコードを入力します。
ThisItem.Product_Name
- Button2
Onselectを選択し入力バーに下記のコードを入力します。
//本社入出庫管理リストの棚卸数量の値を更新 Patch(本社棚卸リスト,First(Filter(本社棚卸リスト,ID=ThisItem.ID)), {Inventory_amount:Value(TextInput2.Text)},{Inventory_Count_Flag:"1"})
EditFixScreenの作成
このスクリーンでは実際に棚卸カウント済みのデータで数の修正をしたい場合に使用するスクリーンになっています。
オブジェクトツリーはこんな感じです。
基本的にはEditスクリーンをコピーした形になっています。
- Gallery2
Itemを選択し入力バーに下記のコードを入力します。
Filter( [@本社棚卸リスト], WH = VarArea, Col = VarColumn, StartsWith(Gr , GrNum_Tx.Text), StartsWith(St , StNum_Tx.Text), StartsWith(Num , Num_Tx.Text), Inventory_Count_Flag = "1" )
- Location_Tx_1
Textを選択し入力バーに下記のコードを入力します。
ThisItem.Location_No
- MakerName_Tx_1
Textを選択し入力バーに下記のコードを入力します。
ThisItem.Location_No
- MakerNum_Tx_1
Textを選択し入力バーに下記のコードを入力します。
ThisItem.Location_No
- ProductName_Tx_1
Textを選択し入力バーに下記のコードを入力します。
ThisItem.Location_No
- Button2_1
Onselectを選択し入力バーに下記のコードを入力します。
//本社入出庫管理リストの棚卸数量の値を更新 Patch(本社棚卸リスト,First(Filter(本社棚卸リスト,ID=ThisItem.ID)), {Inventory_amount:Value(TextInput2_1.Text)},{Inventory_Count_Flag:1})
以上で設定は完了です。
実際の動作はこんな感じになっています。
よしっ 棚卸アプリ、個数修整もできるように機能追加したぜぃ。
— よ~よん (@Yo_Yon21) December 2, 2020
ちなみに1万件弱のリスト使ってるけどそこまでレスポンスの遅さも気にならない。
遅いと使いにくいしね。#PowerApps pic.twitter.com/jRJseUu2ws
1万件以上のデータでも割合サクサク動いてます。
ロケーション管理さえしっかりしていればバーコードを振らずに管理が可能になっています。(とはいえバーコード管理するのが一番ではありますが・・・)
そこまで難しい処理はしていないので是非試してみて下さい。
それでは皆さん良い業務ハックライフを~