ããã«ã¡ã¯HabravchanamïŒ
ãã®èšäºã§ã¯ãç§ã®çµç¹ã®1Cãã©ãããã©ãŒã ãšã®çµ±åãã©ã®ããã«ç¢ºç«ãããŠãããã«ã€ããŠã話ããããšæããŸãã ãã®ãããã¯ã«é¢ããæè¡æ
å ±ãã»ãŒå®å
šã«äžè¶³ããããã«ãªããŸããã 1Cãšä»»æã®æ
å ±ã·ã¹ãã ãšã®æ¥ç¶ã«é¢ããããŸããŸãªèšäºãã¬ããŒããèªãããšã§ããããã¯ãã¹ãŠããŒã±ãã£ã³ã°ããã¢ã®æ§è³ªã§ãããæè¡ã®åé¡ã§ã¯ãªããåé¡ã®è§£æ±ºçã®æ¬è³ªãåæ ããŠããããšãç¹°ãè¿ã確信ããŸãã
ãã®æ¹æ³ãæ®éçã§ãããšäž»åŒµãããã®ã§ã¯ãªãããšãèŠåããŸãã 1Cæ§æèªäœãå€ããããã«å€ãã®æ
å ±ã·ã¹ãã ãèšèªããã©ãããã©ãŒã ããããããå¯èœãªçµã¿åããã®æ°ã¯èšå€§ã§ãã ç§ã®ç®æšã¯ãå¯èœãªè§£æ±ºçã®1ã€ã瀺ãããšã§ãã
1Cãšçµ±åããèšèªãšããŠãPythonãéžæããŸããã ããã»ã¹èªååã«éåžžã«é©ããŠããŸãã ããã¯ãæå°éã®æ§æïŒã³ãŒããéåžžã«ãã°ããå
¥åããïŒãè±å¯ãªæšæºã©ã€ãã©ãªïŒãµãŒãããŒãã£ã¢ãžã¥ãŒã«ã®å¿
èŠæ§ãäœãïŒãã¯ãã¹ãã©ãããã©ãŒã ã«ãã£ãŠä¿é²ãããŸã-é«ã確çã§ãLinix OSã§èšè¿°ãããã³ãŒãã¯Windowsã§æ£åžžã«åäœããŸãã
ãŸããäœæ¥ã«äœ¿çšããããŒã¿ã®æŠèŠã説æããŸãã ãã®çµç¹ã¯ã極æ±å°åã®ãšãã«ã®ãŒè²©å£²äŒç€Ÿã§ãããçŽ40äžäººã®å å
¥è
ã«ãµãŒãã¹ãæäŸããŠããŸãã å å
¥è
ããšã«ã圌ã®æ¯æããè«æ±ãæ¶è²»ããããµãŒãã¹ãšèšç®ã¹ããŒã ãèšæž¬ããã€ã¹ã枬å®å€ããã®ä»å€ãã®ããŒã¿ãä¿åãããŸãã
ãã®çµç¹ã«ã¯ãDelphiã§èšè¿°ãããããã°ã©ã ããããMSSQL / FirebirdãããŒã¿ããŒã¹ãšããŠäœ¿çšããŠããŸããã ãããã®æ å
ã®æ代ã«ã¯ãä»»æã®èšèªã䜿çšããŠããŒã¿ããŒã¹ã«æ¥ç¶ããå€ãã®ã¢ã¯ã·ã§ã³ãå®è¡ããããšãå¯èœã§ãã-åµåè
ã®å å
¥è
ãéžæããåãåã£ãæ¯æããåé
ããæ©åšã®æž¬å®å€ãèšé²ããŸãã åœç¶ã®ããšãªãããã«ãŒãã³ãèªååããã¹ã¯ãªããã®ã³ã¬ã¯ã·ã§ã³ã¯åžžã«å¢ãç¶ããŠããŸãã ããã°ã©ãã¯ãããã°ã©ã èªäœãéããã«ä»»æã®ã¢ã¯ã·ã§ã³ãå®è¡ã§ããŸãã
æ²ããããªã1Cãžã®ç§»è¡ã§æ¯åã¯çµäºããŸãã-ããŒã¹ã«çŽæ¥æ¥ç¶ããæ¹æ³ã¯ãããŸããã§ããã äžè¬ã«ã1Cãã©ãããã©ãŒã èªäœã¯åå²äžå¯èœã§ãããä»ã®ã·ã¹ãã ãšã®çµ±åãäžååã§ãã 圌女ã¯ã圌ããèšãããã«ã圌女èªèº«ã®ãã®ã§ãã 1Cã«ããŒã¿ãããŒãããå ŽåãããããããŒã¿ãæœåºããã®ã¯ããã»ã©ç°¡åã§ã¯ãªãããšã«æ³šæããŠãã ããã ããããçµç¹ãæ¯æãã·ã¹ãã ãšå人ã¢ã«ãŠã³ããå°å
¥ããå¿
èŠããããšããäºå®ãèæ
®ããŠãäœããã®è§£æ±ºçãèŠã€ããå¿
èŠããããŸããã
ç§ãçŽé¢ããäž»ãªã¿ã¹ã¯ã¯ãç¹å®ã®å人ã¢ã«ãŠã³ãã®ããŒã¿ãè¿
éã«åä¿¡ã§ããããšã§ãã-ååãäœæãèšæž¬ããã€ã¹ãèšæž¬å€ãæ¯æããè«æ±ã ããã«ãææžã®äœæ-調æŽãæ¯æãé åæžã®è¡çºã ãã®ãããããŒã¿ããŒã¹ã«çŽæ¥æ¥ç¶ããå¯èœæ§ã¯ãããŸãããSQLãµãŒããŒã§1CããŒã¿ããŒã¹ã衚瀺ãããã¹ãŠã®äººã¯ãaaa1ãaaa2ã®åœ¢åŒã®ããŒãã«ã®è³ªéãææ¡ããããšã¯å°é£ã§ããããšã«æ°ä»ããŸããã ãããŠããã®ãããªããŒãã«ãšãã£ãŒã«ãåã䜿çšããŠã¯ãšãªãæ§ç¯ããããšã¯ãåã«éçŸå®çã§ãã ããã«ãå€ãã®ããŒãã«1CïŒç¹ã«åŸè
ã®ã¹ã©ã€ã¹ãæ®åºãã¿ãŒã³ãªã©ã®æãéèŠãªããŒãã«ïŒã¯ä»®æ³ã§ãããè€æ°ã®çµåãåéããç°ãªãç©çããŒãã«ã«æ£ãã°ã£ãŠããŸãã ãã®æ¹æ³ã¯é©åã§ã¯ãããŸããã
Platform 1Cã¯ãCOMæ¥ç¶ãä»ããŠæ¥ç¶ããæ©èœãæäŸããŸãã å€ãã®Windowsããã°ã©ã ãšåæ§ã«ã1Cã®ã€ã³ã¹ããŒã«äžã«ã2ã€ã®COMãªããžã§ã¯ãïŒãªãŒãã¡ãŒã·ã§ã³ãµãŒããŒãšCOMã³ãã¯ã¿ïŒãã·ã¹ãã ã«ç»é²ãããŸãã COMãã¯ãããžãŒã®ãµããŒããæäŸãããŠããèšèªã䜿çšããŠãäž¡æ¹ã®ãªããžã§ã¯ããæäœã§ããŸãã
Automation Serverãªããžã§ã¯ãã¯ãéåžžã®ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ãšã»ãšãã©å€ãããªã1Cã¢ããªã±ãŒã·ã§ã³ã§ãã éãã¯ãããã«ãã¢ããªã±ãŒã·ã§ã³ã€ã³ã¹ã¿ã³ã¹ãããã°ã©ã ã§ç®¡çããå¯èœæ§ãããããšã§ãã COMã³ãã¯ã¿ãªããžã§ã¯ãã䜿çšãããšã1Cã¢ããªã±ãŒã·ã§ã³ã®è»œéããŒãžã§ã³ãèµ·åããŸãããã®ããŒãžã§ã³ã§ã¯ããã©ãŒã ãšãã€ã³ã¿ãŒãã§ã€ã¹ããã³èŠèŠå¹æã«é¢é£ããé¢æ°ãšã¡ãœããã¯äœ¿çšã§ããŸããã ã¢ããªã±ãŒã·ã§ã³èªäœã¯å€éšæ¥ç¶ã¢ãŒãã§èµ·åããŸãã ã°ããŒãã«å€æ°ã®åæåïŒããšãã°ãçŸåšã®ãŠãŒã¶ãŒãšãã®èšå®ã®æ±ºå®ïŒã¯ãå€éšæ¥ç¶ã¢ãžã¥ãŒã«1Cã§å®è¡ããå¿
èŠããããŸãã ãã®ã¢ãŒãã§äœ¿çšã§ããªãé¢æ°ãå€éšæ¥ç¶ã¢ãŒãã®ã³ãŒãã§åŒã³åºããããšãäŸå€ãçºçããŸãïŒããã¯Pythonã¹ã¯ãªããã«æž¡ãããŸãïŒã å®å
šã§ãªãé¢æ°ã®åŒã³åºãã¯ããã©ãŒã ã®æ§é ã«ãã£ãŠãã¬ãŒã åãããå¿
èŠããããŸã
# ("!"); #
COMãªããžã§ã¯ãã®æäœã¯Windowså°çšã®æè¡ã§ãããããæšæºã®Pythonããã±ãŒãžã«å«ãŸããŠããªãããšã¯é©ãããšã§ã¯ãããŸããã Pythonã®Windowsã§ã®ããã°ã©ãã³ã°ã«å¿
èŠãªãã¹ãŠã®æ©èœãæäŸããã¢ãžã¥ãŒã«ã®ã»ããã§ãã
Win32æ¡åŒµæ©èœãã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã æ¢ã«ã¢ã»ã³ãã«ãããexe-installerãšããŠããŠã³ããŒãã§ããŸãã æ¡åŒµæ©èœèªäœã¯ãã¬ãžã¹ããªããµãŒãã¹ãODBCãCOMãªããžã§ã¯ããªã©ãžã®ã¢ã¯ã»ã¹ãæäŸããŸãã å¥ã®æ¹æ³ãšããŠã
ActiveState Pythonãã£ã¹ããªãã¥ãŒã·ã§ã³ãããã«ã€ã³ã¹ããŒã«ã§ããŸãããã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ã¯ãWin32æ¡åŒµæ©èœãããã«äœ¿çšã§ããŸãã
ãã°ããã®éãWebã¢ããªã±ãŒã·ã§ã³ãç¹ã«å人ã¢ã«ãŠã³ãã®éçºã«ãããŠãCOMæ¥ç¶ãè©ŠããŸããã 次ã®æ¬ ç¹ã確èªãããŸããã
-COMæ¥ç¶ãé
ãã ããã©ãŒãã³ã¹ã®äœäžã¯ãCOMãã¯ãããžãŒã®ãã€ãã¹é¢ãšããŠç¥ãããŠããŸãã
-1Cãšã®æ¥ç¶ã確ç«ããããã»ã¹ã¯ãæ§æã«ãã£ãŠç°ãªããŸããã1ã8ç§ïŒç§ã®å Žåã¯6ç§ïŒããããŸãã èšããŸã§ããªããåãªã¯ãšã¹ãã«æ¥ç¶ãèšå®ãããšãåããŒãžã8ç§éèªã¿èŸŒãŸããŸãã
-Pythonäžã®Webã¢ããªã±ãŒã·ã§ã³ã¯ç¬ç«ãããµãŒããŒãšããŠæ©èœããããã以åã®ãã€ã³ãã¯æ¥ç¶ãã°ããŒãã«å€æ°ã«ä¿åãããšã©ãŒãçºçããå Žåã«ããã埩å
ããããšã§è£ãããšãã§ããŸãã æ£çŽãªãšãããPHPã§æ¥ç¶ãç¶æããæ¹æ³ã«ã€ããŠã¯ããŸã èããŠããŸããã
-ã¯ãã¹ãã©ãããã©ãŒã Webã¢ããªã±ãŒã·ã§ã³ã倱ãããŸããã
äžèšã®ç¹ã«åºã¥ããŠãçžäºäœçšã®åçãå€æŽããæåã®ãã©ãããã©ãŒã äŸåïŒWindowsïŒã1CããŒã¿ãäœããã®äŸ¿å©ãªåœ¢åŒã«ã¢ããããŒããã2çªç®ã®éšåãããã³äœãçããã«ããŒã¿ãæäœã§ãã2çªç®ã®ãã©ãããã©ãŒã éäŸåã®2ã€ã®éšåã«åããããšã«ããŸããååãšããŠçŽ1Cã
ã¢ã¯ã·ã§ã³æŠç¥ã¯æ¬¡ã®ãšããã§ããPythonã¹ã¯ãªããã¯1Cã«æ¥ç¶ããå¿
èŠãªã¯ãšãªãå®è¡ããŠãSQLiteããŒã¿ããŒã¹ã«ããŒã¿ãã¢ããããŒãããŸãã PythonãPHPãJavaãããã®ããŒã¿ããŒã¹ã«æ¥ç¶ã§ããŸãã ç§ãã¡ã®ãããžã§ã¯ãã®ã»ãšãã©ã¯pythonã§åäœããçã®SQLã¯ãšãªãèªåã®æã§æžãã®ã«ææ
¢ã§ããªãã®ã§ãSQLiteããŒã¿ããŒã¹ã§ã®ãã¹ãŠã®åäœã¯SQLAlchemy ORMãä»ããŠè¡ãããŸãã å¿
èŠãªã®ã¯ãããŒã¿ããŒã¹æ§é ã宣èšåã§èšè¿°ããããšã ãã§ãã
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, Numeric, DateTime, Unicode, Boolean, LargeBinary, ForeignKey Base = declarative_base() class Abonent(Base): __tablename__ = "abonents" id = Column(Integer, primary_key=True) account = Column(Unicode(32), index=True) code = Column(Unicode(32)) address = Column(Unicode(512)) fio = Column(Unicode(256)) source = Column(Unicode(16)) psu = Column(Unicode(256)) tso = Column(Unicode(256)) np = Column(Unicode(256)) street = Column(Unicode(256)) house = Column(Integer) flat = Column(Integer) mro = Column(Unicode(256)) class Payment(Base): __tablename__ = "payments"
ããã§ããã®ã¢ãžã¥ãŒã«ãä»»æã®pythonãããžã§ã¯ãã«ã€ã³ããŒãããã ãã§ååã«ãªããããŒã¿ãæäœã§ããŸãã
ç§ã¯ããªãã®è³ªåãäºèŠããŸã-ããªãSQLiteãïŒ äž»ãªçç±ã¯ãããŒã¿ããŒã¹ãèªã¿åãå°çšã§ãããããSQLiteãžã®æžã蟌ã¿ã«é¢ããåé¡ãå¿é
ããå¿
èŠããªãããã§ãã 第äºã«ããã®DBMSã®åœ¢åŒã¯äŸ¿å©ã§ã-衚瀺ããæ¹ã䟿å©ã§ãïŒFireFoxã®ã¹ãŒããŒæ¡åŒµæ©èœãå«ãå€ãã®ç¡æãŠãŒãã£ãªãã£ããããŸãïŒã 第äžã«ãå Žåã«ãã£ãŠã¯ãMySQLãµãŒããŒã«æ¥ç¶ãããŠããªããã·ã³ãããµãã¹ã¯ã©ã€ããŒã«ã¢ã¯ã»ã¹ããå¿
èŠããããŸããã ãã®å ŽåãSQLiteããŒã¿ããŒã¹ãã¡ã€ã«ãã³ããŒããã ãã§ååã§ããããã®ãã·ã³ã¯ãã¹ãŠã®æ
å ±ã«ã¢ã¯ã»ã¹ã§ããŸãã
è·éããã¯å€ã«1æ¥ã«1åè¡ãããŸãã 1Cã§ã®ããŒã¿å
¥åãåãæ¹æ³ã§èªååã§ããŸãã ããšãã°ãå人ã¢ã«ãŠã³ãã®Webãµã€ãã«å å
¥è
ãæ®ãã蚌èšãèšé²ãããšããŸãã ãã®å Žåãåã³1Cã«æ¥ç¶ãããœãããŠã§ã¢ã¡ãœããã䜿çšããŠãã枬å®å€ã®ååŸããšããããã¥ã¡ã³ããäœæããã³å®è¡ããŸãã 以äžã«ã³ãŒãã瀺ããŸãã
Pythonã§COMãªããžã§ã¯ããæäœããããšã¯å°ãçããã§ãã ãŸããã³ãŒãã®ãpythonicityãã倱ãããŸã-1Cã§å€æ°ãšé¢æ°ãåœåããèŠåã¯ãæ§ããã«èšã£ãŠããZen of Pythonã«å¯Ÿå¿ããŠããŸããã 第äºã«ã1Cãªããžã§ã¯ãã¯ãã°ãã°ããªã«æåãšåŒã°ããããšã誰ããç¥ã£ãŠããŸããããªã«æåã¯Pythonã§éçºãããšãã«åé¡ãåŒãèµ·ãããŸããã解決å¯èœã§ãã ã³ãŒããç解ããããšããå§ãããŸãã
import pythoncom import win32com.client V82_CONN_STRING = "Srvr=v8_server;Ref=v8_db;Usr=username;Pwd=megapass;" pythoncom.CoInitialize() V82 = win32com.client.Dispatch("V82.COMConnector").Connect(V82_CONN_STRING)
ã³ãŒããããããããã«ãã¯ã©ã€ã¢ã³ãã¯1Cã§åäœããããã«åæåãããŠããŸãã COMãªããžã§ã¯ãã®å®çŸ©ã¯ããV82.COMConnectorããšããååã§çºçããŸãã ãã®ååã¯V8.2ãã©ãããã©ãŒã ã§æå¹ã§ãããããŒãžã§ã³8.1ã䜿çšããŠããå Žåãååã¯ãV81.COMConnectorãã«ãªãããšã«æ³šæããŠãã ããã
åæåãããã¯ã©ã€ã¢ã³ãã§ãConnectïŒïŒã¡ãœãããåŒã³åºããæ¥ç¶æååãæž¡ããŸãã æååã¯ããµãŒããŒåãããŒã¿ããŒã¹ããŠãŒã¶ãŒãããã³ãã¹ã¯ãŒãã§æ§æãããŸãã çµæã®V82ãªããžã§ã¯ãã¯ã1Cã¢ããªã±ãŒã·ã§ã³ãžã®æ¥ç¶ãä¿åããŸãã DisconnectïŒïŒã¡ãœãããªã©ã¯ãããŸããã ããŒã¿ããŒã¹ããåæããã«ã¯ãdelïŒïŒé¢æ°ã䜿çšããŠãªããžã§ã¯ããã¡ã¢ãªããåé€ããããNoneã«å²ãåœãŠãŸãã
ãªããžã§ã¯ããååŸãããšã1Cã°ããŒãã«ã³ã³ããã¹ãã®ä»»æã®ãã£ãŒã«ããšã¡ãœããã«ã¢ã¯ã»ã¹ããTableDocumentãValueValueãªã©ã®ã¿ã€ãã®ãŠãããŒãµã«ãªããžã§ã¯ããæäœã§ããŸãã COMæ¥ç¶ãä»ããŠäœæ¥ããå Žåã1Cã¯ãå€éšæ¥ç¶ãã¢ãŒãã§åäœããããšãèæ
®ããããšãéèŠã§ãã ãããã¢ãããã€ã¢ãã°ãéç¥ããããŠæãéèŠãªãã©ãŒã ãªã©ãã€ã³ã¿ã©ã¯ãã£ããªäœæ¥ã®ããã®æ©èœã¯ãããŸããã ããã¥ã¡ã³ããã©ãŒã ã¢ãžã¥ãŒã«ã®Button1PressïŒïŒããã·ãŒãžã£ã§æãéèŠãªæ©èœãå²ãæ§æéçºè
ãåªãããšããããããšç¢ºä¿¡ããŠããŸãã
ããªã«æåå±æ§ãªã©ã®éèŠãªããšã«ã€ããŠè©±ããŸãããã 1Cã¯ãã€ãªã³ã¬ã«ã¡ãã£ã¢ã§ããããã·ã¢èªã®åã¡ãœããã«è±èªã®é¡äŒŒç©ããããšããäºå®ã«ãããããããé
ããæ©ãããããªã«æåã®å±æ§ã«ç®ãåããå¿
èŠããããŸãã PHPãŸãã¯VBSCriptã§åé¡ãçºçããªãå Žåã
Set Con = CreateObject("v81.COMConnector") Set v8 =Con.Connect("") Set = v8.. .... Set = .() . = .... .... .()
ãã®åŸãPythonã³ãŒãã¯æ§æãšã©ãŒã§ã¯ã©ãã·ã¥ããŸãã ã©ãããïŒ æ§æãç·šéããŸããïŒ ããããgetattrã¡ãœãããšsetattrã¡ãœããã䜿çšããã ãã§ãã COMãªããžã§ã¯ããšããªã«æåã®å±æ§åããããã®é¢æ°ã«æž¡ããšãããã«å¿ããŠå€ãååŸããã³èšå®ã§ããŸãã
以äžãéèŠã§ãã詳现ã®ååãããã³é¢æ°ãšã¡ãœããã®ãã©ã¡ãŒã¿ãŒã¯ãcp1251ãšã³ã³ãŒãã§éä¿¡ããå¿
èŠããããŸãã ãããã£ãŠãäºåã«ãšã³ã³ãŒãããããã¹ãåé¿ããããã«ããã¡ã€ã«ã®å
é ã§å®£èšããããšã¯çã«ããªã£ãŠããŸãïŒïŒcoding = cp1251ã ãã®åŸããšã³ã³ãŒããæ°ã«ããã«æååã転éã§ããŸãã ãããïŒ 1CããååŸãããã¹ãŠã®æååïŒé¢æ°ãã¯ãšãªã®åŒã³åºãã®çµæïŒã¯UTF-8ãšã³ã³ãŒãã«ãªããŸãã
1Cç°å¢ã§ã¯ãšãªãå®è¡ããçµæãå埩åŠçããŠããŒã¿ããŒã¹ãSQLiteã«ä¿åããã³ãŒãäŸïŒ
ããã§ãCONNã¯SQLite-baseã«æ¥ç¶ããã»ãã·ã§ã³ã§ãã ã¯ãšãªã¯ãšãªãªããžã§ã¯ããäœæããããã®ããã¹ããå
¥åãããŸãã äžèšã®ããã«ãèŠæ±ããã¹ãã¯cp1251ã«ããå¿
èŠããããŸãããã®ããã«ããšã³ã³ãŒããæåã«å®£èšãããŸãã èŠæ±ãå®äºãããšãéè€ãè¿œå ããªãããã«ããŒã¿ããŒã¹å
ã®ãã¹ãŠã®ãµãã¹ã¯ã©ã€ããŒãåé€ãããã«ãŒãã«è¿œå ãããŠæçµçãªã³ããããå®è¡ãããŸãã
ã¯ãšãªãæäœãããšãã次ã®ã«ãŒã«ãç¹å®ããŸããã
-ãã£ãŒã«ããéžæãããšããã©ãã³æåã§ååãå²ãåœãŠãŸããgetattrïŒïŒã§ã¯ãªããã»ã¬ã¯ã¿ãŒïŒãããïŒã䜿çšããŠã¢ã¯ã»ã¹ããæ¹ãã¯ããã«äŸ¿å©ã§ãã
-ããªããã£ãããŒã¿ã¿ã€ãïŒæååãæ°å€ãæ¥ä»ãããŒã«å€ïŒã®ã¿ãéžæããŸãã ãªããžã§ã¯ãïŒããã¥ã¡ã³ããåç
§ïŒãžã®ãªã³ã¯ãéžæããªãã§ãã ããïŒ ãã®ã³ã³ããã¹ãã§ã¯ãå±æ§ãŸãã¯ãªã³ã¯ã¡ãœãããåŒã³åºããšãCOMæ¥ç¶ãä»ããŠèŠæ±ãçºçããããããªã³ã¯ã¯çµ¶å¯Ÿã«å¿
èŠã§ã¯ãªããæ害ã§ãããããŸãã ã«ãŒãå
ã§ãªã³ã¯å±æ§ã«ã¢ã¯ã»ã¹ãããšãéåžžã«é
ããªããŸãã
-æ¥ä»åã®ãã£ãŒã«ããéžæãããšãPyTimeãªããžã§ã¯ããšããŠè¿ãããŸãã ããã¯ãCOMæ¥ç¶ã§æ¥æãéä¿¡ããããã®ç¹å¥ãªããŒã¿åã§ãã éåžžã®æ¥æã®ããã«äœæ¥ããã®ã¯äŸ¿å©ã§ã¯ãããŸããã ãã®ãªããžã§ã¯ããintïŒïŒã«æž¡ããšãã¿ã€ã ã¹ã¿ã³ããè¿ãããããããfromtimestampïŒïŒã¡ãœããã䜿çšããŠæ¥æãååŸã§ããŸãã
次ã«ãçŽã®ææžãã©ã®ããã«åœ¢æãããããæ€èšããŸãã å®éã«ã¯ãæ¶è²»è
ã«ã¯ãäºåã«æºåãããããã¥ã¡ã³ãïŒæ¯æãé åæžãå解è¡çºãªã©ïŒãããŠã³ããŒãããæ©äŒãäžããå¿
èŠããããŸãã ãããã®ããã¥ã¡ã³ãã¯ã確ç«ãããèŠä»¶ã«åŸã£ãŠ1Cã§çæãããPythonã§ã®å®è£
ã«ã¯å€ãã®æéãããããŸãã ãããã£ãŠã1Cã§ããã¥ã¡ã³ããçæããExcel圢åŒã§ä¿åããããšããå§ãããŸãã
ãã®ãããç¹å¥ãªå€éšåŠçã«ãã£ãŠèª¿æŽã¬ããŒãããã¥ã¡ã³ããçæãããŸãã 1Cã®çšèªã«è©³ãããªãå ŽåïŒåŠçã¯ã1Cç°å¢ã§å®è¡ããããã«èšèšãããç¬èªã®ã¢ãžã¥ãŒã«ããã©ãŒã ããã³ãã¬ãŒããåããèªåŸåããã°ã©ã ã§ãã åŠçãåæåãã詳现ãå
¥åããé¢æ°ãåŒã³åºãå¿
èŠããããŸããããã«ããã1Cã§ã®è¡šç€ºãç®çãšããããŒãã«ããã¥ã¡ã³ããè¿ãããŸãã ãã®ããã¥ã¡ã³ãã¯ãExcel圢åŒã§ä¿åãããµãŒããŒã«ã³ããŒããããããŒã¿ããŒã¹ã«æžã蟌ãå¿
èŠããããŸãã
link = getattr(V82.Catalogs, "").FindByDescription(" ") nav_url = V82.GetURL(link, "") name = V82.ExternalReports.Connect(nav_url) ExternalReport = V82.ExternalReports.Create(name) setattr(ExternalReport, "", reference) table_doc = ExternalReport.GetDoc() path = V82.GetTempFileName("xls") table_doc.Write(path, V82 .SpreadsheetDocumentFileType.XLS) report = models.Report() report.account = reference.Code.strip() report.type = u"act" report.document = open(path, "rb").read() CONN.add(report)
æå®ããããã©ã°ã¡ã³ãã§ã¯ã以äžãå®è¡ãããŸãã ããã¥ã¡ã³ãã圢æããåŠçã¯æ¥ç¶ãããŠããŸãã åŠçãæ§æã«çµã¿èŸŒã¿ããã£ã¹ã¯ãŸãã¯1CããŒã¿ããŒã¹ïŒäžéšã®ãã£ã¬ã¯ããªïŒã«ä¿åã§ããŸãã æ¯åæ§æãæŽæ°ãããªãããã«åŠçãé »ç¹ã«å€æŽããããããæãé »ç¹ã«å€æŽãããåŠçã¯ãã¬ããŒããšããååã®ãå€ã¹ãã¬ãŒãžãã¿ã€ãã®å±æ§ã®ãã·ã¹ãã ã¬ããŒãããã£ã¬ã¯ããªã«ä¿åãããŸãã ããŒã¿ããŒã¹ãããã£ã¹ã¯ã«ã¢ã³ããŒãããŠããŒãããããGetURLïŒïŒã¡ãœããã䜿çšããŠåŠçãåæåã§ããŸããGetURLïŒïŒã¡ãœããã§ã¯ããã£ã¬ã¯ããªé
ç®ãšå±æ§ã®ååãžã®ãªã³ã¯ã転éããå¿
èŠããããŸãã çµæã®åŠçãªããžã§ã¯ãã«è©³çŽ°ãå²ãåœãŠããšã¯ã¹ããŒããããGetDocïŒïŒé¢æ°ãåŒã³åºããäžæçãªExcelãã¡ã€ã«ã«ä¿åãããŠããããŒãã«ããã¥ã¡ã³ããååŸããŸãã ãã®ãã¡ã€ã«ã®å
容ã¯ãSQliteããŒã¿ããŒã¹ã«æžã蟌ãŸããŸãã
èæ
®ãã¹ãæåŸã®ããšã¯ã1Cã§ã®ãœãããŠã§ã¢ããŒã¿å
¥åã§ãã ãµãã¹ã¯ã©ã€ããŒããã®èªã¿åãå€ãèšé²ãããšããŸãã ãããè¡ãã«ã¯ãã蚌èšãè¡ãè¡çºããšããææžãäœæããŠå®æœããã ãã§ååã§ãã
ããŒã¿å
¥åãèªååãããŸããã
ãã®ãããCOMæ¥ç¶ã䜿çšããŠããŒã¿ãã¢ããããŒãããã³ããŠã³ããŒããããœãããŠã§ã¢ã«åºã¥ãæ¹æ³ã®æŠèŠã説æããŸããã ãã®æ¹æ³ã¯ãç§ã®çµç¹ã§ã»ãŒ1幎éæ£åžžã«æ©èœããŠããŸãã 1Cã§åœ¢æãããããŒã¹ã¯ã3ã€ã®æ¯æãã·ã¹ãã ãã€ã³ã¿ãŒãããååŸïŒã€ã³ã¿ãŒãããçµç±ã®ã«ãŒãã«ããæ¯æãïŒãããã³å人ã¢ã«ãŠã³ãã«å¯Ÿå¿ããŠããŸãã ããã«ãããŸããŸãªã¹ã¯ãªãããããŒã¿ããŒã¹ã«æ¥ç¶ãããã«ãŒãã³ãèªååããŸãã
ãã®æ¹æ³ã®çæïŒCOMæ¥ç¶é床ãé
ãïŒã«ãããããããäžè¬ã«ãå®å®ããŠæ©èœããŸãã ãã©ãããã©ãŒã ã«äŸåããªã圢åŒïŒSQLiteïŒã®ããŒã¿ããããä»»æã®èšèªã§äœæ¥ã§ããŸãã ãŸããã³ãŒãã®äž»èŠéšåã¯Pythonã§èšè¿°ãããŠããŸããã€ãŸãã1Cã§ã¯å€¢ã«ãæããªãå€ãã®ããŒã«ããã¯ããã¯ãå©çšå¯èœã§ãã
ããã¯ã1Cãšå¯Ÿè©±ããå¯èœãªæ¹æ³ã®1ã€ã§ãã ããã¯æ°ãããã®ã§ã¯ãªããããããæ¢ã«ãã¹ãããã誰ãã«ãã£ãŠæé©åãããŠãããšç¢ºä¿¡ããŠããŸãã ããããç§èªèº«ãèžã¿èŸŒãã§ããèœãšãç©Žããããªããå®ãããã«ãããã»ã¹ã®è©³çŽ°ãæ倧éã«èšå®ããããšããŸããã
幞éããç¥ãããŸãã1Cã¯å¡è£
ã»ã©æããªãããšãå¿ããªãã§ãã ããã