プログラマーがサイト統合と1Cについて知っておくべきこと

サイトを1Cに統合するだけでは不十分です。(c)民芸。





この投稿の目的は、トピックに関するすべての情報を人間の言語で提示することです。





1Cでのサイト統合-Bitrix:サイト管理と1Cは、質問と問題の無尽蔵の情報源です。Bitrixのアイデアのサイトには対応するセクションに16ページあり、フォーラムには23,000を超えるメッセージがあります。Bitrixテクニカルサポートに連絡するという形で、「Exchangewith1C」という別のタイプのリクエストもあります。





1CとBitrix上のサイトの統合は、箱から出してすぐに機能するはずだと考えられています。最も単純な機能は、実際には1〜2時間で起動できます。ただし、交換の完了に10時間または100時間を費やすことができます。 





サイト交換と1Cの改良は、すでに「エキスパート」レベルの魔法であり、ひげを生やした経験豊富な開発者でさえ恐ろしいものです。この記事では、これら2つのモンスター間のデータ交換がどのように行われるか、そしてこの交換の可能性をどのように拡大できるかについて説明します。この記事には、交換に関する多くの技術的な詳細が含まれており、主に主題を理解したいプログラマーに役立ちます。





この記事では、2つのITシステム間の交換の一般的な理論と、1Cと1C-Bitrix上のサイト間の2つの標準的な交換、つまり商品の交換と参考書の交換について検討します。





少し理論

— IT-. . , () ,





= (, XML, YML, JSON, CSV).





= (, HTTP, SIP, SMTP, FTP). 





= . - UML Activity.





:





  1. ( FTP, CSV);





  2. ( HTTP, XML);





  3. . ( HTTP, YML).





3 :













  1. .





«» («») «» («»). , , . , 1 , . , .





. «1» — , - « 1», «1:» (, «1: » «1:ERP ») .  - . . 1-: — «».





— .





— .





— . 





1 — .





— .





— . 





1

« » ( ) 4 :





  1. 1 ( «catalog»);





  2. 1 ( «reference»);





  3. / 1 ( «sale»);





  4. ( «sale»):





    1. 1 ;





    2. 1.





1 HTTP, . .. 1 , «» , ( POST GET) . 1 ( ). « 1 1-».





1 — , — . 1. 1 , 1 .





. 1 ( ).









— 1. «success», , «progress», «error» «failure», . ( ).





— CommerceML 2 . XML, , , , , (+ ).





, — HTTP. ( ) . ,









GET-:





type=< >





mode=checkauth





Basic access :





1





Basic access :





1









:





success





< Cookie >





< Cookie >





sessid=<ID >





<1>=<1>





<2>=<2>





...





:





failure





< >





1 Basic access. «success»,  Cookie ( ), id ( type — ).

















. .









. .









.





1 php- :





COption::SetOptionString("catalog", "DEFAULT_SKIP_SOURCE_CHECK", "Y");





COption::SetOptionString("sale", "secure_1c_exchange", "N");





.





iblock .





. , BX_SESSION_ID_CHANGE: define('BX_SESSION_ID_CHANGE', false);









- , 10 . . .





-









GET-:





type=< >





mode=init





sessid=<ID >





Cookie:





< Cookie >=< Cookie >









:





zip=<yes|no>





file_limit=<>





1 . « 1» .

















zip





zip-. yes — 1 , .





yes





no





file_limit





HTTP-. 1 , .





>= 0





, 1 . «zip=yes», zip-. . .





















. . /upload/1c_catalog/.





(1 -> )

(type=catalog) :





  • ;





  • UF- ;





  • ;





  • SKU;





  • ;





  • ;





  • ;





  • ();





  • ;





  • .





1 XML-, . 1 4 :





import_ — , , .





offers_ — SKU.





prices_ — .





rests_ — .





timestamp ( ). 1 timestamp . 





1. ()





GET-:





type=catalog





mode=file





sessid=<ID >





filename=< >





POST:









Cookie:





< Cookie>=< Cookie>









:





success





:





failure





< >





. file_limit (. ) POST-. , . GET- filename . , 1 . 

















HTTP





1.





< >





apache, .





< >





apache, .





2.





GET-:





type=< >





mode=import





sessid=<ID >





filename=< >





Cookie:





< Cookie>=< Cookie>









:





success





:





progress





< >





:





failure





< >





— . . 11 , 1 . GET mode=import ( !), . $_SESSION[BX_CML2_IMPORT][NS]. , STEP .





2.1 (, )









:





progress









:





progress









:





failure





< >





, 1 ZIP. , ( — /upload/1c_catalog/). ( STEP ).





















PHP zip_open Zip . — .





2.2









:





progress









($_SESSION[BX_CML2_IMPORT][NS])





STEP





0





XML ( , ) . b_xml_tree. b_xml_tree, , .





2.3









:





progress









($_SESSION[BX_CML2_IMPORT][NS])





STEP





1





b_xml_tree . PHP BX_XML_CREATE_INDEXES_IMMEDIATELY, . OnBeforeCatalogImport1C .





















.





2.4 ()









:





progress





<>%





:





progress









:





failure





< >





($_SESSION[BX_CML2_IMPORT][NS])





STEP





2





1 , b_xml_tree. , . « 1» .

























2.5









:





progress









:





failure





< >





($_SESSION[BX_CML2_IMPORT][NS])





STEP





3





b_xml_tree .





















: , .





2.6









:





progress









:





failure









< >





($_SESSION[BX_CML2_IMPORT][NS])





STEP





4





:





  1. SKU





  2. ( CML2_: CML2_BAR_CODE, CML2_ARTICLE, CML2_ATTRIBUTES…)













  3. UF-

















: . 1 , .

















« ».













API, .





( : <>)





, XML .













(xml_id: <>)









.









. .









. 1 .









2.7









:





progress









:





failure









< >





($_SESSION[BX_CML2_IMPORT][NS])





STEP





5





, XML . XML- XML_ID.





XML_ID , . , XML . , TIMESTAMP_X . — . .





( LEFT_MARGIN RIGHT_MARGIN).









, . .





  1. « 1» (nginx).





  2. 1, «progress».





  3. .





, . , XML- 20001 . 10000 .





№ /





..













1





0





10000









2





10000





10000









3





20000





1





progress









, . 10000 ( TIMESTAMP_X) 10000 , -. 3- 1 .





2.8









:





progress





/





:





failure









< >





($_SESSION[BX_CML2_IMPORT][NS])





STEP





6





:





  1. / ( 1)









1 : «» ="true", .





2019 1 . , ( , ) , ( ). « 1». , .





LEFT_MARGIN RIGHT_MARGIN .





2.9 ()









:





progress





<> <>





:





progress









:





failure





< >





($_SESSION[BX_CML2_IMPORT][NS])





STEP





7





DONE





,





, XML . XML_ID.





XML_ID , . , XML . 





, « », TIMESTAMP_X . .





TMP_ID. <>. — XML .





















1 1 . 4.9, 4.2.





2.10 / ()









:





progress





<> <>





:





progress





/





:





failure





< >





($_SESSION[BX_CML2_IMPORT][NS])





STEP





8





DONE





,





(   2.8 ) . “” XML ="true" ( ). , .





2019 .





2.11









:





success









:





failure





< >





($_SESSION[BX_CML2_IMPORT][NS])





STEP





9





. , OnSuccessCatalogImport1C .





3.





GET-:





type=< >





mode=deactivate





sessid=<ID >





timestamp=< >





Cookie:





< Cookie>=< Cookie>









:





success









:





failure









2019 , . timestamp, 1 — , .





, ( ):





, 1 . 1 .





4.





GET-:





type=< >





mode=complete





sessid=<ID >





Cookie:





< Cookie>=< Cookie>









:





success









:





failure





< >





. , catalog OnCompleteCatalogImport1C. OnSuccessCatalogImport1C , .





(1 -> )

(type=reference) HL-. .





— .





1. ()

. , ( mode, mode=reference).





2.





GET-:





type=reference





mode=import





sessid=<ID >





Cookie:





< Cookie>=< Cookie>





2.1 (, )





. .





2.2









:





progress





. : <ID>





:





failure





< >





HL- ( ) UF-. catalog OnBeforeCatalogImportHL. , XML-. .





:





  • 1 , ;





  • 1 : , , , ;





  • , 1 , , , ;





  • : UF_NAME, UF_XML_ID, UF_VERSION, UF_DESCRIPTION.

















< >





1





< >





1





XML. : < >





1





.













10





XML





20





XML





110





XML <>





120





XML <>





210





UF- higloadblock





220





XML <> <>





230





XML <> <>





240





<> <> ( : , , , )





250





UF- highload





310





higloadblock





320





XML <> <>





330





XML <> <> <>





2.3 ()









:





success









:





progress





: <>





:





failure





< >





 





HL-.





, HL-, UF_VERSION <ID > + «#»





catalog OnSuccessCatalogImportHL. — .









.





貼り付けた画像0(35).png
pasted image 0 (35).png

XML.





  • <>





    • ( ).





    • «b_» ( ).





  • <> . . , (sic!)





  • <> :





    • <>





      • XML ID





      • «UF_»





    • <>





      • UF-.





    • <>





      • 4 : , , ,





  • <> :





  • <>





    • UF_XML_ID





  • <>





    • C <ID > + «#» UF_VERSION





  • <>









      • UF_NAME









      • UF_DESCRIPTION

















      • «» YYYY-MM-DD HH:MI:SS.





      • «» true false ( ).





?

( ) 1 /bitrix/admin/1c_exchange.php. , « »  /bitrix/modules/sale/admin/1c_exchange.php. , ( /bitrix/admin/1c_exchange_custom.php) 1.





, GET- ( -) . .





. , GET-, . 









GET[type]

















,





sale





bitrix:sale.export.1c





\CSaleOrderLoader





/bitrix/modules/sale/general/order_loader.php





, , , ,





catalog





bitrix:catalog.import.1c





\CIBlockCMLImport





/bitrix/modules/iblock/classes/general/cml2.php









reference





bitrix:catalog.import.hl





\CBitrixCatalogImportHl









3 1:





  1. , .









  2. .





, .





:





  1. . /bitrix/admin/1c_exchange_custom.php.





  2. /bitrix/modules/sale/admin/1c_exchange.php.





  3. (, bitrix:catalog.import.1c intervolga:catalog.import.1c) .





  4. . (, \Intervolga\Custom\Exchange\Cml \CIBlockCMLImport ImportElements).





« » 1. , .





( ) , 1 - . highloadblock (, , ) . 





, 1, , .





— . . , . , 2 1 .





1Cとの統合は、多くの場合、開発プロセスで最も難しいタスクです。深刻なプロジェクトでは、Bitrixで行われているプロセスを明確に理解する必要があります。 





記事の著者:アナトリーエロフィーエフ。








All Articles