Задать вопрос

Как получить ID товаров, после обновления из 1С?

После обмена остатками и ценами, нужно их передать в маркеты. Как получить данные (ID товаров) сразу после обновления из 1С?
Вот закидываю что бы в лог вывести, что идет после обмена
AddEventHandler('catalog', 'OnSuccessCatalogImport1C', 'OnBeforeAllPriceUpdateHandler');
function OnBeforeAllPriceUpdateHandler(&$arFields)
{
    Cmodule::IncludeModule("catalog");
    Cmodule::IncludeModule("iblock");
    Cmodule::IncludeModule("sale");

    AddMessage2Log("1с обновлен: arFields", print_r($arFields));
}


получаю

----------
Host: хххххххххх
Date: 2022-03-05 13:39:00
Module: 1
1C обновлен: arFields 
    OnBeforeAllPriceUpdateHandler < ExecuteModuleEventEx < include < CBitrixComponent::__includeComponent < CBitrixComponent::executeComponent
	/www/bitrix/modules/main/classes/general/module.php:475
	/www/local/components/realweb/catalog.import.1c/component.php:474
	/www/bitrix/modules/main/classes/general/component.php:594
	/www/bitrix/modules/main/classes/general/component.php:102
	www/bitrix/modules/main/classes/general/component.php:638
----------
  • Вопрос задан
  • 120 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Q_BASIC
Программист
В $arFields вы ничего нужного не получите в вашем случае. Смотрите документацию по событию OnSuccessCatalogImport1C.

Как можно поступить в вашем случае:
1. Добавляем обработчик на событие OnSuccessCatalogImport1C

Далее в обработчике:
1. Получаем из какого-то временного файла время последней передачи данных в маркет (в формате UNIX TIME). Если нет файла - значит не передавали еще.
2. В переменную сохраняем текущее время.
3. Получаем товары по фильтру TIMESTAMP_X товара больше времени из файла. Так мы получим товары, которые были обновлены после последней передачи данных в маркет.
4. Производим отправку товаров в маркет.
5 Сохраняем в файл время из нашей переменной (время начала интеграции). Если брать время текущее на этом шаге, то товары обновленные во время выполнения пунктов 4 и 5 не попадут ни в текущую выгрузку ни в следующую.

Так после интеграции с 1С все обновленные товары будут уходить в другую систему.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы