ããã«ã¡ã¯
FBA Toolkitãã¬ãŒã ã¯ãŒã¯ã®ç¥èãç¶ç¶ãã1Cçšã®Androidã¯ã©ã€ã¢ã³ããéçºããå¥ã®äŸãèããŠã¿ãŸãããã ã¢ããªã±ãŒã·ã§ã³ã販売åºã®ç£æ»ãã¯ã1Cãã蚪åã«ãŒããèªã¿èŸŒã¿ãå°å³ã«è¡šç€ºããŸãã ãªãã©ã€ã³ãããã¯ãOpenStreetMapãããã³ã°ãµãŒãã¹ã«åºã¥ããŠäœ¿çšãããŸãã
å¿
èŠãªãã¹ãŠã®éçºè
ããŒã«ãæ¢ã«ã€ã³ã¹ããŒã«ããã³æ§æãããŠããããšãåæãšããŠããŸãã ããã§ãªãå Žåã¯ã
åã®éšåãåç
§ããŠãã ããã FBA Toolkitãã¬ãŒã ã¯ãŒã¯ã¯å°ãªããšãããŒãžã§ã³1.03ã§ãªããã°ãªãã
ã1Cæ§æãšAndroidãããžã§ã¯ã
ru_profi1c_fbaãSVNãªããžããªããæŽæ°
ããå¿
èŠããããŸãã
ãµãŒããŒéšåïŒ1CããŒã¿ããŒã¹å
ïŒ
1.æ
å ±ããŒã¹1Cã§ãããšãã°ããŒã¿ãœãŒã¹ãšããŠæ©èœãã2ã€ã®ãã£ã¬ã¯ããªãäœæããŸãã

ãã£ã¬ã¯ããªã販売åºãã®è©³çްïŒ
- ã緯床ããšãçµåºŠãã«ã¯ããã®ç¹ã®åº§æšã10.6ã®æ°å€ãå«ãŸããŸã
- ãªãã¡ã¬ã³ã¹ããã¯ãè¿œå æ
å ±ã®ä¿åããžã®ãåçããªã³ã¯-ã¡ã€ã³ã€ã¡ãŒãžãžã®ãªã³ã¯ã
- æååã¿ã€ãã®ä»ã®ãã¹ãŠã®è©³çްã
ãã£ã¬ã¯ããªãè¿œå æ
å ±ã®å庫ãã®è©³çްïŒ
- ã¿ã€ããDirectoryReference.Trade Pointããå«ãè€åã¿ã€ãã®ããªããžã§ã¯ããã¯ãè¿œå æ
å ±ãå±ãããªããžã§ã¯ããå®çŸ©ããŸãã ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã§ã¯äœ¿çšãããŸããã
- ãã¹ãã¬ãŒãžããã¿ã€ããã¹ãã¬ãŒãžãã«ã¯ãã€ã¡ãŒãžèªäœãå«ãŸããŸãã
2.ãããã®2ã€ã®ãã£ã¬ã¯ããªã®ã¿ãå«ã亀æèšç»ãMobileAuditingPointsãã远å ããã倿Žã®èªåç»é²ãå«ãŸããŸãã
3.ãªãã¡ã¬ã³ã¹ããã¯ã«ããã€ãã®ãã¹ãæ
å ±ãå
¥åããŸãããã®äŸã§ã¯ãã¢ã¹ã¯ã¯ã®äžå¿éšã«ãããããã§ãªã¢ïŒãªãŒãã³ãœãŒã¹ããååŸããããŒã¿ïŒã§ãã

ããã€ãã®ãã€ã³ãã®ç»åãã¢ããããŒããããŠããŸãã ã¹ãã¬ãŒãžã«å€ãä¿åããããã®ã³ãŒãã¯1Cã®æšæºã§ãïŒ
= (); = (, (9));
ãã£ã¬ã¯ããªèŠçŽ ãAdditional Information StorageãããFileNameãã®åœ¢åŒã«ã¯ãããŒããããã€ã¡ãŒãžãžã®ãã¹ãå«ãŸããŸãã
4.ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãAudit of a POSããäœæããŸãã ãã£ã¬ã¯ããªãã¡ã¿ããŒã¿ããªãŒã«è¿œå ããŸãã

䟿å®äžãã©ãã³ã¢ã«ãã¡ãããã®è©³çްåãšãªããžã§ã¯ãã®ååã¯è±èªã«ç¿»èš³ãããŠããŸãã

亀æã¹ããŒã ã¯ã1Cã§å€æŽããããªããžã§ã¯ãã®ã¿ãã¢ããããŒãããããã«æ§æãããŸãã
- MobileAuditingPoints Exchangeã¢ããªã±ãŒã·ã§ã³ãã©ã³ã䜿çšããããã®ãã©ã°ãèšå®ãããŠãã
- 1Cã§ã販売æç¹æ
å ±ãã倿Žãããšãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã«è»¢éãããŸãã
- ãè¿œå æ
å ±ã®å庫ããã£ã¬ã¯ããªã«è¿œå ã®ãã£ã«ã¿ãªã³ã°ãé©çšãããŠããŸãã倿Žãããæ
å ±ãã¢ãŠãã¬ããã«ã®ã¿è»¢éããŸãã ããã¯ãªã¯ãšã¹ãã«ãã£ãŠè¡ãããŸãïŒ
. .. . = & .. .
ããã§ããExchange Nodeãã¯äºåå®çŸ©ããããã©ã¡ãŒã¿ãŒã§ããã亀ææã«ã¯ã¢ãã€ã«åŸæ¥å¡ã®ã€ã³ã¹ããŒã«æžã¿ããŒãã®å€ãå«ãŸããŸãïŒä»¥äžã«ã€ã³ã¹ããŒã«å
ã瀺ããŸãïŒã
5. Androidã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã®ãã³ãã¬ãŒããçæããŸãã ã©ã€ã»ã³ã¹ãååŸããããã®ã³ã¹ããšæé ã¯ã
ããã§èª¬æãããŠã
ãŸã ã åä¿¡ããã©ã€ã»ã³ã¹ããŒã¿ã1Cã«å
¥åããæ¹æ³ã¯ã
ããã«èšèŒãããŠã
ãŸã ã

ãã¹ãã©ã€ã»ã³ã¹ã䜿çšããããšãã§ããŸãã
client_idïŒTEST-CLIENT-000
client_nameïŒãã¹ãã¯ã©ã€ã¢ã³ãå
client_pwdïŒ31qX9OqZ_V
lisence_idïŒf7a42162-e27f-4246-a89b-b69c02387740
ãã®å Žåã«ã®ã¿ãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ããã±ãŒãžã®ååã倿Žããããšã¯ãå§ãããŸããïŒ
ru.profi1c.samples.audit.salespoint ã
6.ãã£ã¬ã¯ããªãã¢ãã€ã«åŸæ¥å¡ãã«ã亀æã®ãã¹ãã«äœ¿çšãããåŸæ¥å¡çšã®ã¢ããªã±ãŒã·ã§ã³ã远å ããŸãã ãExchangeããŒããåã«æ³šæããŠãã ãããããã¯äº€æèšç»ã®æ°ããèŠçŽ ã§ãã

ååãšããŠã亀æããŒãã¯åŸæ¥å¡ããšã«äœæãããŸãã ãã®å Žåã1Cã§ã®ããŒã¿å€æŽã¯ãã¹ãŠã®ããŒãïŒãã¹ãŠã®ã¢ãã€ã«åŸæ¥å¡ïŒã«å¯ŸããŠèªåçã«èšé²ããã亀æäžã«åã¢ãã€ã«ã¯ã©ã€ã¢ã³ãã¯ãããŒã¿ã®äžéšãååŸãããŸãã
ãã®ãã©ã¡ãŒã¿ãŒã¯ããªãã¡ã¬ã³ã¹ããã¯ãè¿œå æ
å ±ã®ã¹ãã¬ãŒãžãã®å Žåã®ããã«ãããŒã¿ååŸãªã¯ãšã¹ãã§äœ¿çšã§ããŸãã
ãŸããæ··ä¹±ãæããªãããã«ãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ããšã«åå¥ã®äº€æèšç»ãäœæããããšããå§ãããŸãã
1Cã®æºåäœæ¥ãå®äºããŸããã亀æã«ãŒã«ããã¹ãããããã«ããã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã䜿çšãã亀æãã¹ããã®åŠçã䜿çšã§ã
ãŸã ã詳现ã¯
ãã¡ã ã 1Cã§ã¯ãä»ã«äœãããå¿
èŠã¯ãããŸãããFBAã®äº€æãçµç¹ãããã¹ãŠã®æ¥åžžæ¥åãåŒãåããããŸãã ããã°ã©ããŒã¯ãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã®éçºã«éäžã§ããŸãã
Androidã¢ãã€ã«ã¢ããª
1.çæããããã³ãã¬ãŒãã«åºã¥ããŠæ°ãããããžã§ã¯ããäœæããŸãã ãããè¡ãã«ã¯ãEclipseã«ã€ã³ããŒãããå¿
èŠããããŸãïŒè©³çްã¯
ãã¡ãïŒ ã
2.ããããåŠçããŸãããã FBAã«ã¯ãåå¿è
ããªãã©ã€ã³ã®
Mapsforgeããããç°¡åã«æäœã§ããããã«ããè£å©ã¯ã©ã¹ãå«ãŸããŠããŸãã ãããã®ã¯ã©ã¹ã®1ã€ã¯ããŠã§ã€ãã€ã³ãã衚瀺ããŠããã²ãŒãããããã«èšèšãããã¢ã¯ãã£ããã£ã§ããBaseRouteMapActivityã§ãã ããã䜿çšããŸãã
2.1 BaseRouteMapActivityããç¶æ¿ããç¬èªã®ã¯ã©ã¹ãäœæããŸãã
ã·ã§ãŒ public class MapsforgeRouteMap extends BaseRouteMapActivity { public static int DEF_LOCATION_MIN_DISTANCE = 500; public static long DEF_LOCATION_MIN_TIME = 5000 * 60;
ã¢ã¹ã¯ã¯ã®ãããã衚瀺ããŸããããã¯ããšãã¥ã¬ãŒã¿ãŒã®
mnt / sdcard / backup / <package name>ãã£ã¬ã¯ããªãŒã«é
眮ããå¿
èŠããããŸãã ãã®ãã£ã¬ã¯ããªã¯ãããã°ã©ã ãæåã«èµ·åãããšãã«èªåçã«äœæãããŸãã ããããã¡ã€ã«ã®å
¥æå
ãŸãã¯èªåã§äœæããæ¹æ³ã«ã€ããŠã¯ãèšäºã®æåŸãåç
§ããŠãã ããã
èµ·åæã«ãå°å³ã¯getMapCenterPointïŒïŒã¡ãœããã§æž¡ããã座æšãäžå¿ãšããŸãã çŸåšã®äœçœ®ã§ããŒã«ãŒã衚瀺ããå ŽåãshowCurrentPositionïŒïŒé¢æ°ã¯trueãè¿ãå¿
èŠããããŸãã
requestLocationUpdatesïŒïŒã¡ãœããã䜿çšããŠåº§æšè¿œè·¡ãæå¹ã«ãªã£ãŠããå ŽåãonLocationChangedã¯å€æŽæã«åŒã³åºãããŸãã åº§æšæŽæ°é »åºŠã®èšå®ã¯ãgetLocationMinDistanceïŒïŒããã³getLocationMinTimeïŒïŒãä»ããŠèšå®ãããŸãã ããã©ã«ãã§ã¯ãäž¡æ¹ã®ãããã€ããŒïŒGPSããã³NETWORKïŒã䜿çšããŠåº§æšãååŸããŸãããœãŒã¹ã³ãŒããéããŠãããããBaseMapActivityã§å€æŽã§ããŸãã
ã¬ã€ã¢ãŠãactivity_route_map.xmlã§ããããèŠçŽ ãé
眮ããŸãã
<org.mapsforge.android.maps.MapView android:id="@+id/mapView" android:layout_width="fill_parent" android:layout_height="fill_parent" > </org.mapsforge.android.maps.MapView>
åºæ¬çã«ãããã¯å°å³ã衚瀺ããã®ã«ååã§ãã ãŸããçŸåšäœçœ®ã®ããŒã«ãŒãå°å³äžã«è¡šç€ºããã座æšãå€åãããšãã«ã€ãã³ããåŠçããããšãã§ããŸãã
2.2ã«ãŒããã€ã³ããå«ãã¬ã€ã€ãŒã®è¿œå ã¯ãaddRouteOverlayã¡ãœããã䜿çšããŠå®è¡ãããŸãããã®ã¡ãœããã«ã¯ããªã¹ã<RouteOverlayItem>èŠçŽ ã®ãªã¹ããæž¡ãããŸãã Tã¯è¿œå ã®ã¿ã€ãã§ãã ã¢ã€ãã ãšãšãã«ä¿åãããããŒã¿ãããªãã®å Žåã¯CatalogSalesPointã§ãã ã¢ãŠãã¬ããã®ãªã¹ããäœæããŸãã
ã·ã§ãŒ private void initDummyRoute() throws SQLException {
ãããŠãinitïŒïŒã§ãã®ã¡ãœãããžã®åŒã³åºãã远å ããŸãã
ããã§ã¯ãããŒã«ã«ããŒã¿ããŒã¹ããããSales Pointsããã£ã¬ã¯ããªã®ãã¹ãŠã®èŠçŽ ãéžæããã衚瀺ãããèŠçŽ ã®ã³ã¬ã¯ã·ã§ã³ã«è¿œå ãããŸãã ããã«ã座æšã1Cã«èšå®ãããŠãããã€ã³ãã®å ŽåãããŒã«ãŒã¯ç·è²ã«ãªããŸãã 座æšã®ãªããã€ã³ãã¯ããããã®äžå¿ã«èµ€ãããŒã«ãŒã§é
眮ãããŸãã ãŠãŒã¶ãŒã¯ã座æšãæç¢ºã«ããããã«ããããäžã§ããããç§»åã§ããŸãã
2.3 onRouteItemSelectãã³ãã©ãŒå
ã®ããŒã«ãŒã®ã¯ãªãã¯ã«å¯Ÿããå¿çã远å ããŸãããã
CatalogSalesPoint salesPoint = (CatalogSalesPoint) item.getData(); inflatePopup(salesPoint);
ã¢ãŠãã¬ããã«é¢ããè¿œå æ
å ±ã衚瀺ããã¯ã©ã¹ãã£ãŒã«ããšã¡ãœããïŒ
ã·ã§ãŒ private ObjectView mSalesPointView, mFotoStorageView; private static String[] fields = new String[] { CatalogSalesPoint.FIELD_NAME_DESCRIPTION, CatalogSalesPoint.FIELD_NAME_ADRESS, CatalogSalesPoint.FIELD_NAME_PHONE, CatalogSalesPoint.FIELD_NAME_SITE }; private static int[] ids = new int[] { R.id.tvDescription, R.id.tvAdress, R.id.tvPhone, R.id.tvSite}; private void inflatePopup(CatalogSalesPoint salesPoint) throws SQLException { if (CatalogSalesPoint.isEmpty(salesPoint.foto)) { mFotoStorageView.setVisibility(View.GONE); } else {
ãããã¢ãããŠã£ã³ããŠã衚瀺ããã«ã¯ãmap_popup.xmlã¬ã€ã¢ãŠãã䜿çšããŸãïŒããŒã¯ã¢ããã¯éšåçã«è¡šç€ºãããŸãïŒã
<ru.profi1c.engine.widget.ObjectView android:id="@+id/ovSalesPoint"> <ru.profi1c.engine.widget.ObjectView android:id="@+id/ovFotoStorage" > <ImageView android:id="@+id/ivFoto"/> </ru.profi1c.engine.widget.ObjectView> <TextView android:id="@+id/tvDescription"/> <TextView android:id="@+id/tvAdress"/> <TextView android:id="@+id/tvSite" android:autoLink="web"/> <TextView android:id="@+id/tvPhone" android:autoLink="phone"/> </ru.profi1c.engine.widget.ObjectView>
ã¬ã€ã¢ãŠãã«ã¯1ã€ã®ã³ã³ã»ã³ãã«é¢ããæ
å ±ã衚瀺ããã詳现ãååãããäœæããããµã€ãããããã³ãé»è©±ãã
mSalesPointView.buildïŒ...ïŒã® TextViewèŠçŽ ã«èªåçã«æåœ±ãã
ãŸã ã
åçã衚瀺ããã«ã¯ãåImageViewãæã€ovFotoStorageåŸå±ãªããžã§ã¯ãã䜿çšãããŸãã åçã¯ããŒã¿ããŒã¹ããèªã¿åããã
mFotoStorageView.buildïŒ...ïŒã¡ãœããã§ImageViewã«æåœ±ãããŸãã
ãŸãããåçã屿§ã«ã¯ãè¿œå æ
å ±ã¹ãã¬ãŒãžããã£ã¬ã¯ããªãžã®ãªã³ã¯ã®ã¿ãæ ŒçŽããããããæåã«
ãªãã¬ãã·ã¥ã¡ãœããã§èªã¿åãå¿
èŠããããŸãã
åæåã¯initïŒïŒã®ã¡ãœããã«è¿œå ãããŸã
mSalesPointView = (ObjectView) findViewById(R.id.ovSalesPoint); mFotoStorageView = (ObjectView) findViewById(R.id.ovFotoStorage);
map_popup.xmlã¬ã€ã¢ãŠãã¯Toastã®ã«ã¹ã¿ã ãšããŠèšå®ã§ããŸããããã®äŸã§ã¯ã¡ã€ã³ã®activity_route_map.xmlã¬ã€ã¢ãŠãã«çµã¿èŸŒãŸããŠããŸãã
ã·ã§ãŒ <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <org.mapsforge.android.maps.MapView android:id="@+id/mapView" android:layout_width="fill_parent" android:layout_height="fill_parent" > </org.mapsforge.android.maps.MapView> <include android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_marginTop="10dp" layout="@layout/map_popup" android:visibility="gone" /> </FrameLayout>
次ã®ã¡ãœããã䜿çšããŠãå¯èŠæ§ãå¶åŸ¡ããŸãã
ã·ã§ãŒ private void closePopup(){ if(mSalesPointView.getVisibility() == View.VISIBLE){ mSalesPointView.setVisibility(View.GONE); } } private void showPopup(){ if(mSalesPointView.getVisibility() != View.VISIBLE){ mSalesPointView.setVisibility(View.VISIBLE); } }
ãããã¢ããã¡ãã»ãŒãžã¯ãã¯ãªãã¯ãããšé衚瀺ã«ãªãããã€ã³ãããŒã«ãŒãã¯ãªãã¯ãããšè¡šç€ºãããŸãã
ã¢ããªã±ãŒã·ã§ã³ã®æºåãã§ãããããšãã¥ã¬ãŒã¿ã§å®è¡ããèªèšŒãã©ã¡ãŒã¿ãŒãæ§æããŠïŒ1Cã®ããã«ïŒããŒã¿ããŒã¹ãšäº€æããŸãã é©çšäŸïŒ

é»è©±çªå·ãã¯ãªãã¯ãããšãæšæºã®ããã€ã€ã©ãŒããéãããªã³ã¯ãã¯ãªãã¯ãããšãã©ãŠã¶ãŒãèµ·åããŸãã ãã®åäœã¯ãTextViewã®
androidïŒautoLinkããããã£ãèšå®ããã ãã§å®çŸãããŸãã
å®å
šãªãµã³ãã«ã³ãŒãã¯SVN
ãªããžããªã«ãããŸã ã ããã«ãç§»åãããã€ã³ãã®åº§æšãä¿åããããŒã«ãŒãæŽæ°ããæ¹æ³ã瀺ããŸãã
ã«ãŒãã®å
¥æå
GoogleããããšFBAã¯ã©ã€ã¢ã³ãåãã«äœæããããããã®è©³çްãæããã«ãªã£ãŠããéœåžïŒå°åïŒãåªå
ããŠããŠã§ããµã€ãã«ããã€ãã®ããããé
眮ããäºå®ã§ãã ããããã¡ã€ã«ã®äœæã«é¢ããç°¡åãªæé ãèšèŒãããŠããŸãã
ããã ãã§ããä»ã®äŸã§ã¯ããµã€ã
http://profi1c.ruã§èŠã€ããããšãã§ããŸãã
ã¢ãã€ã«ããžãã¹ã¢ããªã±ãŒã·ã§ã³ã®éçºã¯ãé£ãããé«äŸ¡ã§ãé·ãããšããç¥è©±ãææã§ããããšãé¡ã£ãŠããŸãã