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

Как при импорте элементов hl блока получить номер строки в которой ошибка (не заполнено поле)?

Добрый день! Помогите, разобраться! Поставил обработчик в init.php , который проверяет ошибки в загружаемом файле. Работает исправно. Ошибки находит, но не могу понять как к тексту ошибки добавить номер строки (или строк) импортируемого файла в котором ошибка .
Скрипт обработчика:
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'MyBlockOnBeforeAdd', 'OnBeforeAdd');

function OnBeforeAdd(\Bitrix\Main\Entity\Event $event) {
    $entity = $event->getEntity();
    $entityDataClass = $entity->GetDataClass();

    $eventType = $event->getEventType();

    $arFields = $event->getParameter("fields");

    $arParameters = $event->getParameters();
 
    $result = new \Bitrix\Main\Entity\EventResult();

//модификация данных
if($arFields['UF_NAME_ITEM'] && $arFields['UF_COUNTRY']) {
	CModule::IncludeModule("iblock");
	
    if (empty($arFields['UF_XML_ID'])) {
        $arFields['UF_XML_ID'] = md5(serialize([$arFields['UF_COUNTRY'],$arFields['UF_NAME_ITEM']]));      
    }
    if (empty($arFields['UF_NAME'])) {
        $arFields['UF_NAME'] =  $arFields['UF_NAME_ITEM'];  
    }	
    	
	 if (!empty($arFields['UF_WEIGHT'])) {
        $arFields['UF_WEIGHT'] =  strtoupper($arFields['UF_WEIGHT']);
    }		
	
	$result->modifyFields($arFields);
		

}

	
// Проверка незаполненных полей
    if (empty($arFields['UF_NAME_ITEM']) or empty($arFields['UF_WEIGHT']) or empty($arFields['UF_COUNTRY'])) {
        $arErrors = Array();
		if (empty($arFields['UF_NAME_ITEM'])) {
			$arErrors[] = new \Bitrix\Main\Entity\FieldError($entity->getField("UF_NAME_ITEM"), "Ошибка в поле UF_NAME_ITEM. Поле не должно быть пустым!");		
		}
		if (empty($arFields['UF_WEIGHT'])) {
		$arErrors[] = new \Bitrix\Main\Entity\FieldError($entity->getField("UF_WEIGHT"), "Ошибка в поле UF_WEIGHT. Поле не должно быть пустым!");}
		if (empty($arFields['UF_COUNTRY'])) {
		$arErrors[] = new \Bitrix\Main\Entity\FieldError($entity->getField("UF_COUNTRY"), "Ошибка в поле UF_COUNTRY. Поле не должно быть пустым!");		
        
		}
		$result->setErrors($arErrors);
    }
 

    return $result;
}
  • Вопрос задан
  • 100 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

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

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