+7 495 008 8452 пн.-пт. 10:00 – 17:00
Загрузка...
Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


1С Интеграция: выполнение определённого действия по окончании выгрузки из 1С

Привет,

Очередной частый вопрос в ТП - "Как выполнить определённое действие после выгрузки из 1С?".
Естественно, задачу можно решить кастомизацией компонента bitrix:catalog.import.1c.

Топорный вариант со вставкой кода, который будет выполнять определённую задачу, прямо в  код компонента не подходит - это может увеличить время выгрузки товаров из 1С в разы, т.к. 1С будет ожидать ответа от сервера, а ответ не придёт пока будет выполняться ваш код. Примером может случить - выгрузка в Yandex.Market.

Выходом в данный момент является - агент.
Решение, в принципе, тривиальное - вставка дополнительного шага выгрузки и создание на этом шаге агента, который будет "дёргать" нужную функцию.

Вставку нового шага я уже описывал в тут - https://dev.1c-bitrix.ru/community/web...blog/2417/

Вставка шага создания агента выглядит примерно так:
   //<----start
      elseif($NS["STEP"] ==9)
      {
         $res=CAgent::AddAgent(
            $arParams['AGENT_FUNCTION'], 
            "catalog",                          
            "N",                                  
            $arParams['AGENT_INTERVAL'],                               
            false,                
            "Y",                                  
            ConvertTimeStamp(time()+$arParams['AGENT_INTERVAL'], "FULL", SITE_ID),                
            100
         );

         if ($res)
            $strMessage="Агент добавлен";
         else
            $strMessage="Агент не добавлен";
         $NS["STEP"] = 10;
      }//<----end
 
А код:
elseif($NS["STEP"] < 10)
      {
         echo "progress\n",$strMessage;
      } 
заменить на:
elseif($NS["STEP"] < 11)      {         echo "progress\n",$strMessage;      }
Это добавит нам один шаг.
Соответственно, в вызов компонента нужно добавить параметры
AGENT_FUNCTION - строка, функция которая должна вызываться на созданном агенте, например "СTest::Test()".
AGENT_INTERVAL - интервал и время, через которое должен отработать агент.



Основная тонкость в том, что агент будет  добавляться всегда, при отработке кода, а при импорте из 1С код минимум отрабатывает 2 раза - на import.xml и offers.xml. Т.е. под свою задачу нужно вставлять определённые условия на создание агента.

Пример файла сomponent.php

Назад в раздел

Подписаться на новые материалы раздела:
Загрузка...