Ситуация следующая: [B]нужно поймать момент окончания полной выгрузки товаров из 1с[/B], чтобы можно было потом выцепить товары, которые были деактивированы и активировать их снова.
Я понимаю, что в настройках интеграции с 1С на стороне сайта есть возможность убрать деактивацию товаров, которых не было в файле выгрузки - это не устраивает. Специфика работы с 1С не дает мне это сделать. Нужно именно "вручную" активировать их снова.
Как активировать товары - я знаю. Нужно место и возможность запустить это.
Пробовала событием OnSuccessCatalogImport1C, но каждый раз в конце всей выгрузки он аккуратненько деактивирует товары.
Пробовала события OnAfterIBlockUpdate и OnBeforeIBlockUpdate, OnProductUpdate - бесполезно.
Запустить обработку в определенное время - не вариант, т.к выгрузка выключается вручную и в разное время.
Вот и вопрос: [B]КАК В КОНЦЕ ПОЛНОЙ ВЫГРУЗКИ ЗАПУСТИТЬ СКРИПТ, ЧТОБЫ АКТИВИРОВАТЬ ТОВАРЫ[/B]
============================================================ ===============
Если вдруг кому понадобится, как именно применяю событие OnSuccessCatalogImport1C (код был найден на просторах, работает отлично, когда нужна обработка товаров и торговых предложений во время выгрузки товаров - работает с полученными пачками)
Я понимаю, что в настройках интеграции с 1С на стороне сайта есть возможность убрать деактивацию товаров, которых не было в файле выгрузки - это не устраивает. Специфика работы с 1С не дает мне это сделать. Нужно именно "вручную" активировать их снова.
Как активировать товары - я знаю. Нужно место и возможность запустить это.
Пробовала событием OnSuccessCatalogImport1C, но каждый раз в конце всей выгрузки он аккуратненько деактивирует товары.
Пробовала события OnAfterIBlockUpdate и OnBeforeIBlockUpdate, OnProductUpdate - бесполезно.
Запустить обработку в определенное время - не вариант, т.к выгрузка выключается вручную и в разное время.
Вот и вопрос: [B]КАК В КОНЦЕ ПОЛНОЙ ВЫГРУЗКИ ЗАПУСТИТЬ СКРИПТ, ЧТОБЫ АКТИВИРОВАТЬ ТОВАРЫ[/B]
============================================================
Если вдруг кому понадобится, как именно применяю событие OnSuccessCatalogImport1C (код был найден на просторах, работает отлично, когда нужна обработка товаров и торговых предложений во время выгрузки товаров - работает с полученными пачками)
Скрытый текст |
|---|
| [CODE] init.php <?AddEventHandler('catalog', 'OnSuccessCatalogImport1C', array('ClassFunctionCatalogImportStep', 'customCatalogImportStep')); session_start(); CModule::AddAutoloadClasses( '', // не указываем имя модуля array( // ключ - имя класса, значение - путь относительно корня сайта к файлу с классом 'ClassFunctionCatalogImportStep' => '/local/php_interface/function/functionCatalogImport1C.php' ) ); [/CODE] |
Скрытый текст |
|---|
| [CODE]functionCatalogImport1C.php <? class ClassFunctionCatalogImportStep { public static function customCatalogImportStep(){ $stepInterval = (int) COption::GetOptionString("catalog", "1C_INTERVAL", "-"); $startTime = time(); // Флаг импорта файла торговых предложений $isOffers = strpos($_REQUEST['filename'], 'offers') !== false; $NS = &$_SESSION["BX_CML2_IMPORT"]["NS"]; if (!isset($NS['custom']['lastId'])) { // Последний отработанный элемент для пошаговости. $NS['custom']['lastId'] = 0; $NS['custom']['counter'] = 0; } /*получаю список элементов через CIBlockElement::GetList и работаю с ними*/ ... if ($arItem != false) { if ($errorMessage === null) { print "progress\n"; print "Обработано " . $NS['custom']['counter'] . ' элементов, осталось ' . $res->SelectedRowsCount(); } else { print "failure\n" . $errorMessage; } $contents = ob_get_contents(); ob_end_clean(); if (toUpper(LANG_CHARSET) != "WINDOWS-1251") { $contents = $GLOBALS['APPLICATION']->ConvertCharset($contents, LANG_CHARSET, "windows-1251"); } header("Content-Type: text/html; charset=windows-1251"); print $contents; exit; } } } [/CODE] |