Задать вопрос
Ответы пользователя по тегу 1С-Битрикс
  • Как запретить создавать дубль контакта через веб-хук?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    возможно ли сделать так чтобы если есть контакт то привязать к нему сделку?


    Нет, нельзя.
    Проверяйте сами перед созданием (getlist или findbycriteria методами).
    Ответ написан
    Комментировать
  • Есть ли PHP запрос автоматическое создание ссылки Битрикс 24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Если вы имеете ввиду REST методы, то нет.

    Если у вас коробочная версия и вы хотите использовать API битрикса чтобы это сделать, то вы можете посмотреть пример в файле:
    /home/bitrix/www/bitrix/activities/bitrix/crmgetpaymenturlactivity/crmgetpaymenturlactivity.php


    Обратите внимание на getUrlByDealId и createPayment методы - они как раз делают то что вам нужно.

    У меня есть небольшая, но непроверенная заготовка-выжимка:

    use \Bitrix\Main,
    	\Bitrix\Salescenter\Builder,
    	\Bitrix\Salescenter\Integration
    	;
    
    /**
     * @var int
     */
    $dealId = 1;
    
    try
    {
    	Main\Loader::requireModule('crm');
    
    	$deal = \CCrmDeal::GetByID($dealId, false);
    	if (!$deal)
    	{
    		throw new \Exception("Deal not found");
    	}
    
    	$builder = Builder\Manager::getBuilder(
    		Builder\SettingsContainer::BUILDER_SCENARIO_PAYMENT
    	);
    
    	$builder->build(
    		$this->getBuilderData($deal)
    	);
    
    	$order = $builder->getOrder();
    
    	$r = $order->save();
    
    	if (!$r->isSuccess())
    	{
    		throw new \Exception("Order update error:".implode(', ', $r->getErrorMessages()));
    	}
    
    	$foundPayment = null;
    
    	foreach ($order->getPaymentCollection() as $payment)
    	{
    		$foundPayment = $payment;
    	}
    
    	if ( is_null($foundPayment) )
    	{
    		throw new \Exception("Payment not found");
    	}
    
    	$urlInfo = Integration\LandingManager::getInstance()->getUrlInfoByOrder(
    		$payment->getOrder(),
    		['paymentId' => $payment->getId()]
    	);
    
    	// Payment url: $urlInfo['shortUrl']
    }
    catch( \Throwable $e )
    {
    	var_dump($e);
    }
    Ответ написан
    Комментировать
  • Как обновить страницу пользователя с помощью Push&Pull?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Возможно ли с помощью Push&Pull обновить страницу лида/сделки, которую просматривает пользователь?


    Если вы спрашиваете про абстрактную возможность обновления страницы через push'n'pull технологии то она есть.
    Если вы спрашиваете конкретно про использование push'n'pull технологии в приложениях Битрикс24, то ее нет.
    Ответ написан
  • Как добавить обработку события изменения сделки в коробке Битрикс24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Как добавить обработку события изменения сделки в коробке Битрикс24?


    Читайте документацию:
    1. Как работают события в Bitrix Framework
    2. События CRM
    Ответ написан
    Комментировать
  • Как при импорте создавать категории?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Из-за чего при импорте товаров могло перестать создаваться категории?


    Ответ на этот вопрос можно дать только после полного анализа следующих факторов:
    1. Коробка/Облако? Если коробка, какой версии.
    2. Нужно предоставить файл для анализа

    Рекомендую с этим вопросом и файлом обратиться в техническую поддержку Битрикс24 сразу предоставив файл.

    И как прописать категории более 4-ого уровня

    Насколько я знаю, там дело в самом парсере - он не рассчитан больше чем на 3 уровня.
    Ответ написан
    Комментировать
  • Как можно сделать на битриксе англоязычную версию и казахскую?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Касательно Битрикс24:
    - Если мы говорим про облачную версию: то только полной копией Интернет-Магазина24.
    - Если мы говорим про коробочную Битрикс24 с девелоперским сайтом, то точно так же как и в БУС.

    Что касается БУС, то кто во что горазд:
    - Создавать дополнительный сайт
    - Создавать дополнительные свойства и ими управлять
    - Просто подключить google translate к сайту

    Сильно много зависит от того на какую аудиторию расчитано, потому что у каждой страны свои законы относительно работы ИМ.
    Ответ написан
    Комментировать
  • Как вывести миниатюру фото в списках CRM Битрикс 24 (Коробочная версия)?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Как в представлении списка, в разделах CRM системы вывести миниатюры изображений (фотографий)?


    Какой-то волшебной кнопки-настройки нет.
    Все по-старинке:
    - Копируем цепочку шаблонов к себе (чтобы шаблоны компонентов прямо в bitrix24 шаблоне сайта не править)
    - Определяем что поле типа файл, определяем что файл - изображение, выводим превью.

    Увы, но в реальности эта работа не на ответ на Q&A, а даже на целую статью или задачу тянет.
    Ответ написан
    Комментировать
  • Как правильно кастомизировать файл header.php шаблона Битрикс?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Как можно внести изменения в header не копируя весь шаблон в local?

    Как правильно кастомизировать файл header.php шаблона Битрикс?


    Вы задали 2 противоречивых вопроса потому что "чтобы работало" не есть "правильно".

    Способ "Правильно": копируете весь шаблон в папку local.
    На каждом обновлении смотрите dif'ы и обновляете так же local.

    Способ "чтобы работало": можете обьявить папку положить туда файл, а дальше - симлинки.
    Но в таком случае вам придется проверять симлинки что очень не хорошо.

    Рекомендую не заниматься ерундой и копировать шаблон as is, а сравнивать уже diff инструментами
    Ответ написан
  • Возможно ли создание девелоперского сайта в Bitrix24 коробка?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Скорее всего вы не выполнили начальные требования к девелоперскому сайту:

    Либо у вас не активный лицензионный ключ (или он редакции CRM)
    Либо вы не развернули многосайтовость
    Ответ написан
  • Почему \Bitrix\Crm\FieldMultiTable::getList не находит компанию с номером телефона +7, а с 7 видит?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Дело в том что у вас номер телефона хранится в международном формате, т.е. "+7...", а вы в первой регулярке указываете что он должен начинаться строго с цифры.

    Надо сказать что искать по сырым значениям телефонного номера это то еще занятие и так лучше не делать.

    Лучше воспользоваться методом поиска дубликатов:

    \Bitrix\Main\Loader::requireModule('crm');
    
    /**
     * Телефон который будем искать
     * @var string
     */
    $phone = '2131164';
    
    /**
     * Список всех ID лидов с этим телефонным номером
     * @var int[]
     */
    $leadIds = [];
    
    
    $adapter = \Bitrix\Crm\EntityAdapterFactory::create([
            'FM' => [
                'PHONE' => [
                    ['VALUE' => $phone]
                ]
            ]
        ],
        \CCrmOwnerType::Lead
    );
    
    $dups = (new \Bitrix\Crm\Integrity\ContactDuplicateChecker())
        ->findDuplicates(
            $adapter,
            new \Bitrix\Crm\Integrity\DuplicateSearchParams([
                'FM.PHONE'
            ])
        );
    
    foreach($dups as &$dup)
    {
        if(!($dup instanceof \Bitrix\Crm\Integrity\Duplicate))
        {
            continue;
        }
    
        $entities = $dup->getEntities();
        if(!(is_array($entities) && !empty($entities)))
        {
            continue;
        }
    
        //Each entity type limited by 50 items
        foreach($entities as &$entity)
        {
            if(!($entity instanceof \Bitrix\Crm\Integrity\DuplicateEntity))
            {
                continue;
            }
    
            if ( $entity->getEntityTypeID() != \CCrmOwnerType::Lead)
            {
                continue;
            }
    
            $leadIds[] = $entity->getEntityID();
        }
    }
    Ответ написан
    Комментировать
  • Как заставить работать обработчик событий битрикс?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Нужно больше контекста.

    Я сейчас поставил вот такой код в PHP консоль:
    AddEventHandler("crm", "OnBeforeCrmLeadAdd", "CheckOnBeforeCrmLeadAdd");
    AddEventHandler("crm", "OnAfterCrmLeadAdd", "CheckOnBeforeCrmLeadAdd");
    AddEventHandler("crm", "OnAfterExternalCrmLeadAdd", "CheckOnBeforeCrmLeadAdd");
    
    function CheckOnBeforeCrmLeadAdd(&$arFields) {
    file_put_contents($_SERVER["DOCUMENT_ROOT"]."/log_lead.log",print_r($arFields,true)."\n",FILE_APPEND);
    }
    
    \Bitrix\Main\Loader::IncludeModule('crm');
    
    $obLead = new \CCrmLead(false);
    $ID = $obLead->Add(
    	$leadfields = ['TITLE'=>'test'],
    	true,
    	array("REGISTER_SONET_EVENT" => true, "DISABLE_USER_FIELD_CHECK" => true)
    );


    Файл создался.

    Проверь права на папку куда записываешь файл и проверь подключен ли модуль crm на странице.
    Ответ написан
    Комментировать
  • Как добиться отображения Чатов в мобильном приложении Битрикс аналогично приложению Битрикс24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Вам нужно не открывать iframe в чаты, а разработать код, который будет делать то же самое.
    Т.е. это не какая-то галочка или другой шаблон компонента, а уже более нативная разработка.
    Ответ написан
    Комментировать
  • Как получить id лида созданного через плагин WooCommerce(Интеграция wooCommerce с bitrix)?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    вопрос в том, как можно получить id созданного лида


    Замените вызов архаичного метода с логином и паролем на вебхук crm.lead.add
    В результате вызова он вернет вам идентификатор созданного лида, который вы сможете использовать для заполнения товарных позиций
    Ответ написан
    1 комментарий
  • Как вызывать методы rest api Bitrix24 коробки из блока php-кода в бизнес-процессе?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Как вызывать методы rest api Bitrix24 коробки из блока php-кода в бизнес-процессе?


    Методы REST API изложены в https://dev.1c-bitrix.ru/rest_help/
    Через REST вы не можете вызвать нативное API.

    Или как например выполните те же действия через методы классов https://dev.1c-bitrix.ru/api_help/crm/index.php

    Основы разработки вы можете начать постигать здесь: https://dev.1c-bitrix.ru/learning/course/index.php...
    Ответ написан
    Комментировать
  • Как настроить права доступа к меню Битрикс24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    А как настроить права, что например они не видели в меню слева какие-то отдельные пункты, например, календарь. диск и тд.


    Без редактирования самого файла меню (.left.menu_ext.php) такое ограничение не сделать.
    Продукт из коробки не рассчитан на такие ограничения.
    Ответ написан
    2 комментария
  • Как вы делаете архитектурные решения AJAX?

    gromdron
    @gromdron
    Работаю с Bitrix24
    На сколько такое решение приемлимо?


    В зависимости от проекта и выделенного времени варьируется и оценка.
    Я бы оценил его как "Неудовлетворительный, находящийся на гране допустимного, но решающий исходный запрос".
    Ваш подход может существовать, однако на Code review у нас бы его завернули с пометкой "Все переделать".

    Есть ли какие то более правильные, гибкие архитектурные решения?


    Вариантов на вкус и цвет, начиная от родного AJAX => 'Y' параметра в компоненте и его работы и заканчивая javascript rendering.
    Замечательным вариантом было бы:
    - Чтобы тег #orders-block рендерил компонент d6core:custom.order.list. Т.е. он был бы самодостаточным.
    - Не создавалась бы отдельная страница под "ajax.php", а использовались бы контроллеры компонентов (хотя бы)
    - Возвращалось как можно меньше данных, т.е. структуры данных, а не верстка.

    Конечно интересует здесь и вопросы ИБ.


    Контроллеры компонентов по-умолчанию имеют защиту от CSRF, а так же можно установить проверки на авторизацию (только от авторизованных пользователей), проверку на метод запроса (POST/GET), проверку на пользователя (передавать его в signedParams).
    Почитайте про контроллеры, там много интересного написано.

    Тогда вопрос, зачем делать такую обертку если я могу тупо тянуть данные из $_POST напрямую?


    Например потому что при обработке запроса глобальный $_POST может поменять любой скрипт выполняющий до вашего, а HttpRequest содержит исходную информацию которая была отправлена на сервер.
    Или потому что при обращении к несуществующему ключу $_POST выдается notice-сообщение, а HttpRequest корректно возвращает null.
    Если ваша функция или метод работает с $_POST, то в случае объекта вы можете указать что ожидается HttpRequest и знать что придет именно параметры запроса и что там будут гарантированно методы getPost и т.п., а в случае с $_POST вам могут направить туда что угодно с какими угодно ключами.
    Ответ написан
    Комментировать
  • Можно ли вести несколько корпоративных порталов Битрикс24 из одной админки?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    что старое нужно удалить, как это лучше сделать?


    Если требуется удалить вообще все, то имеет смысл не восстанавливать бекап, а сделать чистую установку с тем же лицензионным ключем.
    Можно так же воспользоваться Мастером очистки данных.

    Может можно вести сразу 2 корпоративных портала на одной админке, в коробочной версии.


    Нет, нельзя.
    Ответ написан
    Комментировать
  • Можно ли через веб-формы Битрикс24 ставить задачи?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    А можно ли связать с задачами?


    Нет, такой возможности штатно нет.
    Но можно извращнуться: создать доп поле в Лиде "Является задачей", проставлять его в форме (автоматически) и сделать БП на запуск: при запуске проверять отмечена ли опция и если отмечена - создавать задачу и удалять лид.
    Ответ написан
    Комментировать
  • "Ошибка при сохранении файла скрипта. Изменения не сохранены"?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Дело не в правах скрипта (.access.php), а в физических правах на директорию.
    Например в Bitrix Env есть linux пользователь bitrix (UID:600), из-под которого выполняются все операции, но многие неквалифицированные разработчики работают из-под root-доступов.

    В папку созданную root пользователем нельзя скопировать файлы из-под пользователя bitrix, если ей не установить соответствующие права.

    Ознакомьтесь с соответствующей статьей в документации: https://dev.1c-bitrix.ru/learning/course/index.php...
    Ответ написан
    3 комментария
  • Как создать чат с bitrix24 rest?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Ознакомьтесь с документацией на эту тему: https://dev.1c-bitrix.ru/rest_help/imconnector/cas...
    Ответ написан
    Комментировать