Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.
Очередной частый вопрос в ТП - "Как выполнить определённое действие после выгрузки из 1С?".
Естественно, задачу можно решить кастомизацией компонента bitrix:catalog.import.1c.
Топорный вариант со вставкой кода, который будет выполнять определённую задачу, прямо в код компонента не подходит - это может увеличить время выгрузки товаров из 1С в разы, т.к. 1С будет ожидать ответа от сервера, а ответ не придёт пока будет выполняться ваш код. Примером может случить - выгрузка в Yandex.Market.
Выходом в данный момент является - агент.
Решение, в принципе, тривиальное - вставка дополнительного шага выгрузки и создание на этом шаге агента, который будет "дёргать" нужную функцию.
Вставку нового шага я уже описывал в тут -
Вставка шага создания агента выглядит примерно так:
А код:
заменить на:
Это добавит нам один шаг.
Соответственно, в вызов компонента нужно добавить параметры
AGENT_FUNCTION - строка, функция которая должна вызываться на созданном агенте, например "СTest::Test()".
AGENT_INTERVAL - интервал и время, через которое должен отработать агент.
Основная тонкость в том, что агент будет добавляться всегда, при отработке кода, а при импорте из 1С код минимум отрабатывает 2 раза - на import.xml и offers.xml. Т.е. под свою задачу нужно вставлять определённые условия на создание агента.
Пример файла
Назад в раздел
Наверх
то ждем ваше обращение в нашей службе тех поддержки.
1С Интеграция: выполнение определённого действия по окончании выгрузки из 1С
Привет,Очередной частый вопрос в ТП - "Как выполнить определённое действие после выгрузки из 1С?".
Естественно, задачу можно решить кастомизацией компонента bitrix:catalog.import.1c.
Топорный вариант со вставкой кода, который будет выполнять определённую задачу, прямо в код компонента не подходит - это может увеличить время выгрузки товаров из 1С в разы, т.к. 1С будет ожидать ответа от сервера, а ответ не придёт пока будет выполняться ваш код. Примером может случить - выгрузка в Yandex.Market.
Выходом в данный момент является - агент.
Решение, в принципе, тривиальное - вставка дополнительного шага выгрузки и создание на этом шаге агента, который будет "дёргать" нужную функцию.
Вставку нового шага я уже описывал в тут -
Вставка шага создания агента выглядит примерно так:
//<----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. Т.е. под свою задачу нужно вставлять определённые условия на создание агента.
Пример файла
Назад в раздел
Подписаться на новые материалы раздела:
Загрузка...
Наверх