Задать вопрос
  • Как называется плагин для vs code?

    Комментировать
  • Битрикс GetList - как получить самые просматриваемые элементы инфоблока?

    @voland700 Автор вопроса
    Вопрос решен. Возможно решение пригодится кому-нибудь, опишу решение.
    С помощью CIBlockElement::GetList - получаем список элементов инфоблока, сортируем по убыванию по полю SHOW_COUNTER - в котором содержаться данные о количестве просмотров, и ограничиваем лимит 5 элементами.

    if(CModule::IncludeModule('iblock'))
    {
    	$res = CIBlockElement::GetList(
    		array("SHOW_COUNTER"=>"DESC"), // сортировка по количеству просмотров;
    		array("IBLOCK_ID"=>1," ACTIVE"=>"Y"), //Получаем  активные элементы , в данном случае из инфоблока с ID = 1;
    		false, 
    		array("nTopCount"=>5), //ограничиваем количество элементов - только 5.
    		array("NAME","PREVIEW_PICTURE", "DETAIL_PAGE_URL")// Выбираем только указанные поля
    	); 
    	while($ar = $res->GetNext())
    	{
    		$arTheBest[]=$ar;	//массив с данными 5 самых просматриваемых элементов инфоблока				
    	}
    }
    Ответ написан
    Комментировать
  • Как в коробочной версии bitrix24 получить комментарий к лиду?

    Для того, чтобы найти комментарий:
    \Bitrix\Main\Loader::includeModule('crm');
    
    $rs = Bitrix\Crm\Timeline\Entity\TimelineTable::getList(array(
      'order' => array("ID" => "DESC"), 
      'filter' => array('=TYPE_ID' => 7),
    'select'=>array("ID", "BINDINGS")
    ));
    while($ar = $rs->Fetch()) 
    {
       echo '<pre>';
       print_r($ar);
       echo '</pre>';
    }

    Array
    (
       [ID] => 1537
       [CRM_TIMELINE_ENTITY_TIMELINE_BINDINGS_OWNER_ID] => 1537
       [CRM_TIMELINE_ENTITY_TIMELINE_BINDINGS_ENTITY_TYPE_ID] => 1
       [CRM_TIMELINE_ENTITY_TIMELINE_BINDINGS_ENTITY_ID] => 134
       [CRM_TIMELINE_ENTITY_TIMELINE_BINDINGS_IS_FIXED] => 
    )

    ENTITY_TYPE_ID берётся из CCrmOwnerType, например, \CCrmOwnerType::Lead
    ENTITY_ID - собственно ID лида/сделки/где-там-ещё можно комментарии оставлять
    OWNER_ID - это ID который нам нужен для следующего запроса

    $rs = Bitrix\Crm\Timeline\Entity\TimelineTable::getList(array(
       'order' => array("ID" => "DESC"), 
       'filter' => array('=TYPE_ID' => 7)
    ));
    while($ar = $rs->Fetch()) 
    {
       echo '<pre>';
       print_r($ar);
       echo '</pre>';
    }

    Array
    (
        [ID] => 263472
        [TYPE_ID] => 7
        [TYPE_CATEGORY_ID] => 0
        [CREATED] => Bitrix\Main\Type\DateTime Object
            (
                [value:protected] => DateTime Object
                    (
                        [date] => 2019-03-18 15:26:16.000000
                        [timezone_type] => 3
                        [timezone] => Europe/Moscow
                    )
    
            )
    
        [AUTHOR_ID] => 14
        [ASSOCIATED_ENTITY_ID] => 0
        [ASSOCIATED_ENTITY_TYPE_ID] => 0
        [COMMENT] => повторное обращение
        [SETTINGS] => Array
            (
                [HAS_FILES] => N
            )
    
    )
    Ответ написан
    2 комментария
  • Битрикс24 Коробочная версия, как реализровать через PHP код создание события - напоминания в календаре на опреденно число и время?

    @elov4anin Автор вопроса
    Frontend developer
    Ребят всем спасибо за ответы, но решил по другому выкладываю код если кому нибудь понадобиться
    //Устанавливаем дело-звонок и напоминание для сделки
                            $arFieldsDelo = array(
                                'TYPE_ID' => CCrmActivityType::Call,
                                'PROVIDER_ID' => 'VOXIMPLANT_CALL',
                                'ASSOCIATED_ENTITY_ID' => $_GET['deal'],
                                'SUBJECT' => "Тема",
                                'COMPLETED' => 'N',
                                'RESPONSIBLE_ID' => "ID отвественного",
                                'NOTIFY_TYPE' => \CCrmActivityNotifyType::Min,
                                'NOTIFY_VALUE' => 20,                            
                                'DESCRIPTION' => "Описание",
                                'START_TIME' => $_GET['datetime'],
                                'END_TIME' => $_GET['datetime'],
                                'PRIORITY' => CCrmActivityPriority::Medium,
                                'AUTHOR_ID' => $_GET['assigned'],
                                'ORIGIN_ID' => 'XYZ_1',
                                'DIRECTION' => CCrmActivityDirection::Outgoing,
                                'OWNER_ID' => $_GET['deal'],
                                'OWNER_TYPE_ID' => CCrmOwnerType::Deal,
                            );
    
                            $arComms = array(
                                           array(
                                              'ID' => 0,
                                              'TYPE' => 'PHONE',
                                              'VALUE' =>  $_GET['contactTel'],
                                              'ENTITY_ID' => $_GET['deal'],
                                              'ENTITY_TYPE_ID' => 'DEAL'
                                           )
                                        );
    
                            $ID = CCrmActivity::Add($arFieldsDelo, false, true, array('REGISTER_SONET_EVENT' => false));
                               
                            if($ID > 0)
                            {
                                //сохраняем дело в календарь
                               CCrmActivity::SaveCommunications($ID, $arComms, $arFieldsDelo, true, false);
                               
                            }
                            
                           }
    Ответ написан
    Комментировать
  • Как в WordPress сделать вывод без шаблона?

    dimasmagadan
    @dimasmagadan
    несколько вариантов:
    1 добавить свой кастомный endpoint через Rewrite API
    сможете ловить запросы вида site.ru/wc-api/...
    2 использовать admin-ajax.php как точку входа
    отправлять запросы к site.ru/wp-admin/admin-ajax.php?action=wc-api...
    3 использовать кастомный роут для REST API
    что-то вроде такого site.ru/wp-json/wc-api/...
    4 повесить фильтр на page_template или что-то похожее
    подменять шаблон страница на нужный, если isset($_GET['wc-api']) && $_GET['wc-api']=='wc_plugin'
    5 повесить фильтр на вывод rss
    и выводить нужное, если isset($_GET['wc-api']) && $_GET['wc-api']=='wc_plugin' и обращаются вот так
    site.ru/hello-world/feed/?wc-api...
    Ответ написан
    Комментировать
  • Как выполнить функцию после сабмита формы?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Код и не мог работать на странице формы, WordPress не позволит. Почитай про lifecycle. Хукаться и выполнять другие низкоуровневые действия можно только из functions.php или из плагина. Непосредственно из файла темы (шаблона) работать не будет, если на пальцах - в тот момент, когда инклудится и выполняется файл темы, все основные экшны уже давно выстрелили.
    Ответ написан
    Комментировать
  • Как сделать групповой сдвиг строк влево в SublimeText?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    shift+tab на выделенном тексте
    Как во всех редакторах
    Ответ написан
    1 комментарий
  • Как сделать групповой сдвиг строк влево в SublimeText?

    @bukovki
    Ещё можно так:
    ctrl+[ - сдвинуть влево
    ctrl+] - сдвинуть вправо
    Ответ написан
    1 комментарий
  • Как добавить тег к задаче с помощью вебхука?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Вы опять задаете 2 вопроса в одном, что не очень хорошо.

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

    Что касается добавления тегов: в Битрикс24 не предусмотрен механизм добавления тегов есть только замена значения в поле.
    Каждый раз когда вы выполняете запрос, все теги (это одно поле) заменяются вновь пришедшими.
    Соответственно, чтобы добавить теги вы должны получить все теги, добавить необходимые и установить их. И да - для этого потребуется 2 обращения (на получение и на обновление).

    Что касается количества тегов, то тут действует обычный http протокол и передача в GET-параметрах иерархичных структур, т.е. для установки 2х тегов запрос будет иметь вид:
    /tasks.task.update?taskId=3564&fields[TAGS][]=тег1&fields[TAGS][]=тег2
    Ответ написан
    Комментировать
  • Как обновлять только статусы заказов?

    udjin123
    @udjin123
    PHP, Golang, React
    1с отправляет данные на скрипт /bitrix/admin/1c_exchange.php
    В этом файле за обновление заказов из 1с отвечает кусок кода, где вызывается компонент sale.export.1c, в котором за все это отвечает класс CSaleOrderLoader

    Как кастомизировать выгрузку не трогая ядро?

    1. Создаем свой класс и наследуем его от CSaleOrderLoader ну или тупо копи-пастим CSaleOrderLoader но уже своим названием, пусть будет MyOrderLoader

    2. Меняем в нем логику обновления заказа из 1с (запасаемся валерьянкой и кофе, там класс на ~4000 строк)
    5e35dc000fc8b072477447.jpeg

    3. Создаем папочку /local/bitrix/components/custom и копируем туда компонент sale.export.1c (да, да! в компоненте с названием export, делается импорт)
    5e35dd91e8fa4990941836.jpeg

    4. В файлике /local/bitrix/components/custom/sale.export.1c/component.php подменяем название класса CSaleOrderLoader на MyOrderLoader

    5. Копируем /bitrix/admin/1c_exchange.php в /bitrix/admin/my_1c_exchange.php и меняем в нем вызов
    bitrix:sale.export.1c на custom:sale.export.1c

    6. В 1ске в модуле обмена меняем путь соответственно на /bitrix/admin/my_1c_exchange.php
    5e35db643087f714543457.jpeg
    Ответ написан
    3 комментария