Телефон в Москве:

(495) 788-77-16

в Санкт-Петербурге:

(812) 313-28-51

по России (бесплатно):

8-800-555-11-32

Опыт  говорит  сам  за  себя:

• более 130 реализованных проектов за все время существования компании

• успешное сотрудничество с крупнейшими компаниями российского бизнеса

Параметр есть, но не учитывается

Параметр есть, но не учитывается

Обнаружили вот какую проблему:

В настройках 1С-Битрикс стоит "шаг" загрузки при импорте из 1С. Но при этом скрипт импорта больших объемов данных (более 30 000 наименований) выполняется больше времени, чем "шаг" в параметрах.

Путь экспериментов решили отложить и спросить производителя (1С-Битрикс) о причинах такого поведения. Ответ не заставил себя долго ждать.

Оказывается, в компоненте импорта bitrix:catalog.import.1c используется функция распаковки архива CIBlockXMLFile::UnZip(), имеющая 4 параметра:

$file_name - путь к zip-архиву
$last_zip_entry - последний извлечённый файл архива
$start_time - время начала распаковки
$interval - интервал, время шага распаковки

Но при вызове этой функции в компоненте разработчики (производитель) передают только два первых параметра, тем самым получается результат - архив распаковывается не по шагам (а на хостинг-площадках обычно на процессы веб-сервера действуют ограничения на время выполнения), тем самым выгрузка часто проходит с ошибками длительной "работы" скрипта.

Решение проблемы:

В компоненте надо заменить строку

$result = CIBlockXMLFile::UnZip($_SESSION["BX_CML2_IMPORT"]["zip"], $_SESSION["BX_CML2_IMPORT"]["last_zip_entry"]);

на

$result = CIBlockXMLFile::UnZip($_SESSION["BX_CML2_IMPORT"]["zip"], $_SESSION["BX_CML2_IMPORT"]["last_zip_entry"],$start_time,$arParams['INTERVAL']);

Разумеется лучше компонент вынести в отдельную папку, чтобы обновления 1С-Битрикс его не затронули.

И на последок:

О проблеме есть соответствующая тема в блогах на сайте 1С-Битрикс, но учитывая, что тема существует с 24.12.2010, 1С-Битрикс не "спешит" это решение делать в стандартном компоненте. Поэтому без программистов на 1С-Битрикс корректно устранить эту проблему будет сложно.