• Где искать обработчики форм на сайте bitrix?

    Adamos
    @Adamos
    Искать формы бесполезно, следы уведут вглубь компонентов, куда ТП Битрикса не советует соваться, потому что при обновлении все ваши правки пойдут лесом.
    Есть Истинно Перанальный Путь Битрикса - добавить обработчик в /bitrix/php_interface/init.php:
    function yourHandler($WEB_FORM_ID, $RESULT_ID)
    {
      if ($WEB_FORM_ID == YOUR_NUMBER) // номер той формы, которую вы хотите поймать
      {
    	  $fields = array();
    	  $arAnswers = CFormResult::GetDataByID($RESULT_ID, $fields); 
              // отправленные в форме данные в $arAnswers, можно что-то с ними сделать
      }
    }
    AddEventHandler('form', 'onAfterResultAdd', 'yourHandler');
    AddEventHandler('form', 'onAfterResultUpdate', 'yourHandler');
    Ответ написан
    7 комментариев
  • Как вывести компонент или диалогово окно по событию AddEventHandler в bitrix?

    winer
    @winer
    занимаюсь разработкой сайтов на 1c-bitrix
    Я бы делал так:

    Создать ORM таблицу. На событии OnAfterCrmDealUpdate в нее записывать ID тех пользователей, кому нужно показать popup.

    На событии OnProlog или OnEpilog, делать проверку на необходимость вывода popup (getList к таблице, описанной выше. В параметрах getList указать ID текущего пользователя).

    После успешной проверки сделать подключение js скрипта, который бы открывал popup.
    Bitrix\Main\Page\Asset::getInstance()->addJs("/path/to/script/file.js");


    В popup делать ajax запрос к скрипту, который содержит в себе компонент/форму. После показа формы в orm таблице как то отмечать показ (удалять строку или же менять ей какое то поле)
    Ответ написан
    3 комментария
  • Как определить онлайн ответственный (ASSIGNED_BY_ID) или нет?

    RGameShow
    @RGameShow Автор вопроса
    В поисках ответов на глупые вопросы
    Моя реализация, мб кому будет полезна:

    $array = $manager_and_product[$product_id];
    $product_id = $array['product_id'];
    $manager_id_array = $array['manager_id'];
    
    foreach ($manager_id_array as $id){
        $user_online = file_get_contents('https://XXXXX.bitrix24.ru/rest/ID/XXXXXXXXXXX/user.get.json?IS_ONLINE=Y&id='.$id);
        $user_online = json_decode($user_online, true);
        if(count($user_online['result'][0]) > 0){
            $manager_id = $id;
        }else{
            $manager_id = $manager_id_array[0];
        }
    }
    Ответ написан
    Комментировать
  • PHP while последний элемент

    @tushev
    Если вы пытаетесь сделать вывод в формате JSON, то может быть лучше сначала запихать выборку из БД в массив-таблицу, а потом вывести все через json_encode().
    Ответ написан
    1 комментарий
  • Ubuntu 16 не отображается кирилица?

    локаль не ru-RU.UTF-8 а ru_RU.UTF-8
    Нижнее подчёркивание между "ru" и "RU", а не дефис.

    Даже в списке сгенерированных так написано "ru_RU.UTF-8... done", тяжело было скопировать?
    Ответ написан
    1 комментарий
  • Как запустить upstart после установки на ubuntu?

    zooks
    @zooks
    Frontend
    upstart выкинули в 14-й убунте в пользу systemd
    Ответ написан
    Комментировать
  • Зачем использовать Vue вместе с Laravel?

    Добавили, чтобы вы jquery спагетти не использовали. Vue (как и другие js фреймворки) сокращает количество кода на клиенте и уменьшает его запутанность.

    Для примера вы создаете админку для магазина. У вас есть следующие варианты:
    1. Делать статическую страницу. На клиенте никакой логики, все вычисляет сервер. При новой покупке администратор должен будет обновить страницу.
    2. Писать динамический фронтэнд с использованием vue, angular и чего угодно остального. Бэкэнд шлет вам уведомления через вэбсокеты о новых заказах без перезагрузки страницы.
    2.1 Вы берете jquery и сначала все идет хорошо. Первые полчаса. Затем ваш код обрастает огромным количеством обработчиков событий. Если товар заканчивается на складе, его надо убрать из таблицы, затем если заказ отменяется, его надо вернуть в таблицу. Вы его вернули, но почему-то кнопка в строке с ним, вызывающая модальное окно перестала реагировать на события, потом еще что-то случилось и еще. Проблемы с jquery растут как снежный ком и вы проклинаете свое решение создать динамическую админку.
    2.2 Вы используете современный js фреймворк. Vue в этом плане хорош низким порогом изучения. Вы загружаете определенные обхекты и в зависимости от их свойств vue сам строит таблицы (с проданными и непроданными товарами), скрывает лишние элементы (не показывать такую-то кнопку, если товар всего 1), отправляет плагинам команды на обновление при изменении объектов и следит за тем, чтобы события, которые отваливались при jquery подходе работали.

    Я не сказать что спец в javascript, но (именно поэтому) меня vuejs на текущем проекте очень выручает.
    Ответ написан
    Комментировать
  • В чем проблема в миграции?

    Fragster
    @Fragster
    помогло? отметь решением!
    8 комментариев
  • PHP. Строки или массивы быстрее?

    @kofon Автор вопроса
    Я человек
    65536 Спасибо!
    Думаю вопрос закрыт. Странно, что я сам не додумался...
    Ответ: Строки быстрее!

    PHP 4 очень колеблется, то [20, 30] то [30, 60]

    2c8424c7f41848f480ffff9012c8b6c2.PNG

    Теперь перенёс создание и инициализацию перед for.
    Разница иногда есть, верхняя цифра (массив) иногда медленнее (в 1/10 случаев).
    Вот такая фотка (может совпадение)
    480574e37e3d4f0c95264bf7e0250d81.PNG



    PHP 5.5 более менее однозначен. Разницы если вынести поверх for - нет, просто поверьте. Зато он в 10 раз быстрее (100 000 итераций (в 4-ом не смог столько же написать из-за получения минусовых значений от задержки))

    2f121c4f46bb44b0ab2d921bc346ae3a.PNG
    Ответ написан
    5 комментариев
  • PHP. Строки или массивы быстрее?

    65536
    @65536
    что мешает спросить у интерпретатора пхп?

    $start = microtime(1);
    
    for ( $i = 0; $i < 1000000; $i++ )
    {
        $array = array();
        $array[] = 'First ';
        $array[] = 'Second ';
        $array[] = 'Three';
    }
    
    print microtime(1) - $start;
    
    $start = microtime(1);
    
    for ( $i = 0; $i < 1000000; $i++ )
    {
        $str = '';
        $str .= 'First ';
        $str .= 'Second ';
        $str .= 'Three';
    }
    
    print microtime(1) - $start;
    Ответ написан
    Комментировать
  • Кодировка в PHP и MySQL, почему выводятся знаки вопроса?

    @Denis9999 Автор вопроса
    перерыл я кучу статей, исчерпывающих мануалов от людей которых задолбали подобными вопросами на форумах, и ничего не помогало, хоть ты тресни.
    Но решение нашел, надо в файле my.cnf (my.ini) в этой строке указать необходимую кодировку init-connect = "set names utf8"
    Ответ написан
    1 комментарий