В 1C-Bitrix при импорте элементов hl блока получить номер строки, в которой произошла ошибка, можно с помощью обработчика события "OnAfterIBlockElementAdd". Для этого вам потребуется следующий набор действий:
1. Создайте свой модуль, предположим, назовем его "my.module".
2. В папке "bitrix/modules/my.module" создайте файл "include.php" и добавьте в него следующий код:
<? use BitrixMainEventManager; use BitrixMainEventResult; EventManager::getInstance()->addEventHandler("iblock", "OnAfterIBlockElementAdd", "myOnAfterIBlockElementAdd"); function myOnAfterIBlockElementAdd(&$arFields) { // Получаем номер HL блока $hlBlockId = YOUR_HL_BLOCK_ID; // Получаем ID элементов, которые были успешно импортированы $successElements = []; foreach ($arFields as $key => $value) { if (strpos($key, 'ELEMENT_') === 0 && is_numeric($value)) { $successElements[] = $value; } } // Получаем список элементов HL блока $hlBlockElements = []; $rsElements = BitrixHighloadblockHighloadBlockTable::getList([ 'filter' => ['ID' => $hlBlockId], ]); if ($hlBlock = $rsElements->fetch()) { $entity = BitrixHighloadblockHighloadBlockTable::compileEntity($hlBlock); $entityDataClass = $entity->getDataClass(); $rsData = $entityDataClass::getList([ 'filter' => ['ID' => $successElements], 'select' => ['ID'], ]); while ($arData = $rsData->fetch()) { $hlBlockElements[] = $arData['ID']; } } // Проверяем, что все элементы HL блока были успешно импортированы if (count($hlBlockElements) !== count($successElements)) { $errorElements = array_diff($successElements, $hlBlockElements); // Обрабатываем ошибки foreach ($errorElements as $errorElement) { // Получаем номер строки $rsElement = BitrixHighloadblockHighloadBlockTable::getRowById($errorElement); $rowNumber = $rsElement['ID']; // Делаем что-то с номером строки, в которой произошла ошибка } } }
3. В файле "bitrix/php_interface/init.php" добавьте следующий код для подключения модуля:
<? BitrixMainLoader::includeModule('my.module');
4. Замените YOUR_HL_BLOCK_ID
на ID вашего HL блока.
Обратите внимание, что код проверяет только успешно импортированные элементы, но возможно, вам также потребуется проверить и другие кейсы, например, пустые значения или неправильный формат данных. В этом случае можно использовать дополнительные проверки и обрабатывать ошибки соответствующим образом.