Ответы пользователя по тегу 1С-Битрикс
  • Что и как тестировать в Битрикс?

    vekov
    @vekov Автор вопроса
    Спустя несколько лет отвечу на свой же вопрос :)

    1. Есть прекрасная утилита под названием Codeception. Она впихивается в пайплайн сборки и делает свою работу, более подробно в следующих пунктах.
    2. Юнит-тесты, как писал в вопросе - при написании модулей, api, компонентов и тд - отчасти применимо.
    3. Самое вкусное - функциональные тесты. Используем простейший сценарный код, чтобы проверять, что не поломали функциональность системы. Ну то есть условно, делаем формочку, навешиваем на неё сценарий вида:
    • Я -> захожу на страницу
    • Я -> вижу форму
    • Я -> ввожу емейл
    • Я -> нажимаю отправить
    • Я -> вижу "Успешно"
    Ответ написан
    Комментировать
  • Как вывести элемент при наличии свойства (Битрикс)?

    Довольно непонятно написан вопрос.

    Если речь о том, как разделить элементы с заполненным свойством от элементов с незаполненным, можно так:

    $IblockID = 1;
    $res = CIBlockElement::GetList([], ['IBLOCK_ID' => $IblockID], false, false, ['IBLOCK_ID', 'NAME', 'PROPERTY_ISEMPTY']);
    while($item = $res -> Fetch())
    {
        if($item['PROPERTY_ISEMPTY_VALUE'])
        {
            $arResult['FILLED'][] = $item;
        }
        else
        {
            $arResult['EMPTY'][] = $item;
        }
    }


    На выходе будет 2 массива - FILLED (где свойство заполнено) и EMPTY (где пусто).
    Вместо ISEMPTY - надо подставить код своего свойства.
    Ответ написан
  • Почему дублируются исходящие письма?

    vekov
    @vekov Автор вопроса
    Кажется понял. Частично :) Письма копировались на ящик. который был указан в sendmail_path, в настройках файла bitrix.env. Только все равно не очень понимаю причину и откуда берутся те адреса, которые в копии...
    Ответ написан
  • Почему удаляются обработчики событий после отправки формы?

    Всплывающее окно изначально создается на странице через php или после каких-то событий, через JS? Если второй случай, то, как я помню к объектам нельзя будет обратиться напрямую по классам, можно использовать что-то вроде $('body').on('click', '.js-ppopup', function(){})...
    Ответ написан
  • Как отсортировать массив по значениям нескольких ключей?

    vekov
    @vekov Автор вопроса
    Спасибо за ссылку на мультисорт, Владислав Тишин .
    Среди примеров там нашел нужное решение:

    function array_orderby()
    {
    	$args = func_get_args();
    	$data = array_shift($args);
    	foreach ($args as $n => $field) {
    		if (is_string($field)) {
    			$tmp = array();
    			foreach ($data as $key => $row)
    				$tmp[$key] = $row[$field];
    				$args[$n] = $tmp;
    		}
    	}
    	$args[] = &$data;
    	call_user_func_array('array_multisort', $args);
    	return array_pop($args);
    }
    
    $arObjects = array_orderby($arObjects, 'Тип', SORT_ASC, 'Номер объекта', SORT_ASC);
    Ответ написан
    Комментировать