1. это логируем событие OnSuccessCatalogImport1C, что бы понять, на сколько много файликов к нам прилетело
|
AddEventHandler('catalog', 'OnSuccessCatalogImport1C', 'customCatalogImportStep'); function customCatalogImportStep($arParams, $arFields) { file_put_contents($_SERVER["DOCUMENT_ROOT"]."/1c_log.log", date("d-m-Y")."; SESSION=".print_r($_SESSION,1)."; request ".print_r($_REQUEST,1)." pararm".print_r($arParams,1)." arFields ".print_r($arFields,1).";\n", FILE_APPEND); } |
2. Добавлем в bitrix/php_interface/dbconn.php — константу, что бы файлики, которые из выгрузки пришли, сохранились в папке Upload. После тестовой выгрузки отключаем сразу . т.к нам не нужно захламлять сервер лишними xml.
|
//define("BX_CATALOG_IMPORT_1C_PRESERVE", true); |
3. Создаем тестовый файлик и в нем запускаем обработчик выгрузки. В него подсовываем путь к файлу на сервере.
Используемые свойства у меня ANALOGI_TEMP , ANALOGI, ANALOGI_FLAG
ANALOGI_FLAG- Это флаг, что товар пришел с 1с и его надо потом обновить в событии успеха выгрузки.
|
Provider::loadXml1c('путь к файлу с товаром/import___5edefae3-b2ec-4f6e-a524-b03fb56f9166 (1).xml'); |
Этим вы сможете обойтись без постоянного гоняния 1с. т.к обрабатываемый файлик лежит на сервере.
4. Пишем внутрянку для OnCompleteCatalogImport1C. Т.к у нас бывают в взаимосвязи между товарами- то мы обрабатываем их в последнюю очередь.
5. Тестируем в 1 с на полной выгрузке.
Ниже приведен полный код взаимодействия. С получением данных из xml.
Этот код вылавливает вот такую структуру их xml от 1с.
|
<Аналоги> <Аналог> <Ид>d5cae0f9-c568-11e0-aab1-90fba63445ee</Ид> <НомерВерсии>AAAAAAA6Kdg=50539</НомерВерсии> </Аналог> <Аналог> <Ид>1d9e4c8d-ebbe-11df-b3fd-90fba63445ee</Ид> <НомерВерсии>AAAAAABWOrY=50539</НомерВерсии> </Аналог> <Аналог> <Ид>177a58e2-40c1-11e1-9cef-90fba63445ee</Ид> <НомерВерсии>AAAAAAA5/UI=50539</НомерВерсии> </Аналог> </Аналоги> |
Подробнее
Цены
1500 р/чБолее подробно тут: https://ftask.ru/цены