• Есть ли 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, то ее нет.
    Ответ написан
  • Как настроить пропущенные звонки в B24 коробка?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Подобной настройки нет.

    Дело в том, что лид создается заранее, когда еще нет понимания звонок пропущен или нет.
    В коробочной версии Битрикс24 можно сделать отложенный агент обработчик, который бы проверял был ли лид создан по звонку и уже проверял статус звонка.
    Ответ написан
    Комментировать
  • Как добавить обработку события изменения сделки в коробке Битрикс24?

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


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

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


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

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

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

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

    gromdron
    @gromdron
    Работаю с Bitrix24
    - А каково вообще нормальное значение для современных скриптов?


    Нельзя мести всех под одну гребенку и какого-то единого значения нет.
    Есть рекомендованные значения вендора движка и есть "индивидуальные разработки", после которых естественно никто не проверяет характеристики. Код любого дополнительного модуля может в ходе своего выполнения требовать абсолютно разное количество памяти, но дело тут не в "современности" скриптов, а в банальной недальновидности или криворукости.

    У него вообще морда не треснет от 256 метров на процесс? -)


    В зависимости от настроек, например 1С-Битрикс может требовать 257/512 со старта, а некоторые нерадивые разработчики и вовсе увеличивают лимиты до 1ГБ. Здесь все зависит от характера выполняемой работы и подходить нужно индивидуально.

    Каково нормальное значение memory_limit (PHP как модуля Apache)


    Не существует единого "нормального значения", но практика показывает - чем меньше тем лучше.
    Ответ написан
    4 комментария
  • Может ли Битрикс24 заменить low-code BPM систему?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    есть ли у продуктов вроде ELMA преимущество перед Битрикс24


    Безусловно есть.
    Например Битрикс24 это не low-code BPM система.
    Ответ написан
    Комментировать
  • Как реализовать выбор пользователя по должности в битрикс24?

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

    Предположим, что у нас есть некоторая переменная "UsersWithTargetPosition", имеющая тип - Пользователь, множественная.

    2. Т.е. набор типов ограничен, то и набор значений ограничен.
    Например, если это множественная переменная, то она должна принимать массив.
    CUser::GetList - вернет объект, который нужно обработать.

    3. Внимательнее читайте документацию к методу: https://dev.1c-bitrix.ru/api_help/main/reference/c...
    У вас несовпадение входящих переменных.
    Для вашего случая, я бы воспользовать более лаконичным UserTable

    4. Не забывайте обрабатывать ошибки. Вы работаете с блоком php кода.

    Для приведенного случая, код получиться примерно таким:

    $usersWithPosition = [];
    
    try
    {
    	$position = "Кладовщик";
    
    	$users = \Bitrix\Main\UserTable::getList([
    		'select' => ['ID'],
    		'filter' => [
    			'=WORK_POSITION' => $position
    		]
    	]);
    
    	foreach( $users as $user )
    	{
    		$usersWithPosition[] = "user_".$user['ID'];
    	}
    }
    catch( \Throwable $e )
    {
    	$this->WriteToTrackingService($e->getMessage(), 0, \CBPTrackingType::Error);
    }
    
    $this->SetVariable('UsersWithTargetPosition', $usersWithPosition);


    Проверьте код, возможно там есть ошибки.
    Ответ написан
    Комментировать
  • Бизнес-процесс в битрикс24 - как проверить год работы сотрудника?

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


    Штатно - никак.

    В Битрикс24 бизнес-процесс это последовательность действий запускающася над определенной сущностью, поддерживающей БП.
    Пользователи - не являются сущностью для которой доступны бизнес-процессы.
    Соответственно - нужно либо прийти к дублирующему механизму использующему БП, либо отказаться от того чтобы делать это на БП в пользу, например REST-приложения.

    REST-приложение в данном случае является наиболее предпочтительной системой, т.к. создает меньше нагрузки на ваш портал.
    Можно попробовать через дублирующую сущность: нужно всего лишь создать универсальный список, куда заносить Пользователя и Дату его первого дня, а потом в цикле с ожиданием проверять необходимую дату.
    Ответ написан
    Комментировать
  • Как можно сделать на битриксе англоязычную версию и казахскую?

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

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

    Сильно много зависит от того на какую аудиторию расчитано, потому что у каждой страны свои законы относительно работы ИМ.
    Ответ написан
    Комментировать
  • Сайт эро массажа с интеграцией битрикс24?

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

    Наверное я бы исходил из следующих утверждений:
    1. Получать заявки с ваших сайтов эротическим содержимым можно. Особенно если они не противоречат законодательству РФ.
    2. Если важна приватность, я бы рекомендовал Коробочную версию Битрикс24 - там вы можете вообще все что угодно что не противоречит законодательству РФ (а если нет решения суда, то и ограничений нет). Мне кажется, что таким сайтам очень важна приватность.
    Ответ написан
    2 комментария
  • Как вывести миниатюру фото в списках CRM Битрикс 24 (Коробочная версия)?

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


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

    Увы, но в реальности эта работа не на ответ на Q&A, а даже на целую статью или задачу тянет.
    Ответ написан
    Комментировать
  • Почему метод crm.item.update не обновляет поле?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Вы запутались в терминологии: пытаетесь обновить элемент, смотрите список доступных полей.

    Давайте попробую обьяснить:
    - Есть смарт-процесс. Это верхнеуровневая сущность подсистемы смарт-процессов. За работу с ними отвечают crm.type.* методы.
    - У каждого смарт-процесса есть элементы, которые состоят из фиксированных полей и пользовательских полей.
    - Когда вы создаете элемент сп вы заполняется фиксированные поля + пользовательские поля элемента.

    Таким образом, метод crm.item.update обновляет значения полей у элементов смарт-процесса.
    И на вход вы должны подавать ID элемента смарт-процесса, а не ID самого смарт-процесса.
    Ответ написан
    Комментировать
  • Как поправить карточку в CRM после восстановления?

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

    1. Проверка доступности и мониторингом в админке портала. Что она сообщает?
    2. Понять были ли кастомизации? Может быть существует папка local и переопределенные шаблоны/компоненты.
    3. Какие кастомные модули установлены. Возможно через marketplace.1c-bitrix.ru что-то ставили.
    4. Возможно собрали кривой бекап и часть файлов не загрузилось.
    5. Рекомендую так же проверить логи php и коносль браузера.

    Причин как видите может быть много и с наскока такие вещи отгадать будет очень сложно.
    Если вы собирали бекап стандартными средствами, не проводили кастомизаций портала и разворачиваетесь в чистом окружении Bitrix Env, то можете сэкономить себе кучу времени и обратиться в техподдержку, либо попробовать диагностировать проблему самостоятельно.
    Ответ написан
    1 комментарий
  • Как правильно кастомизировать файл header.php шаблона Битрикс?

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

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


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

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

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

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

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

    Либо у вас не активный лицензионный ключ (или он редакции CRM)
    Либо вы не развернули многосайтовость
    Ответ написан
  • Как в bitrix24 с помощью входящего вебухка получать из задачи только определённые поля?

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


    Метод task.item.getdata устарел и не имеет параметров фильтрации полей. Возвращаются ВСЕ поля задачи.

    Используйте метод tasks.task.get который и вернет необходимые вам поля.
    Ответ написан
    Комментировать
  • Bitrix24 перенос на ubuntu?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Кто сталкивался переноса сетевого окружения и cms bitrix24 c centos7 на убунту?


    Если вы обладаете достаточными знаниями в Битрикс24 и в системном администририровании то можно поднять на чем угодно.
    Если хотя бы один из этих пунктов отсутствует (например вы разработчик, но никогда не трогали linux-сервер ИЛИ вы системный администратор но в php и битриксе ни бум-бум), то лучше сразу оставить это дело и перейти на Fedora-based дистрибутивы в качестве сервера.

    С технической точки зрения Битрикс24 представляет собой целый комплекс программного обеспечения: помимо рутинной базы данных с картинками сюда же входит достаточно сильная зависимость от серверного ПО. Можно ли пользоваться Битрикс24 на голом Apache или PHP-FPM? Конечно можно, однако из-за некачественной настройки будет страдать конечный пользователь. Системному администратору все равно, а вот пользователю явно не будет комфортно, если вдруг какие-то из заявленных возможностей (например скачивание файлов в архиве, загрузка больших файлов или быстрая отдача файлов) работать не будут.

    Bitrix Env это подготовленное окружения для платформы Битрикс (вне зависимости БУС это или Б24). Уже "из коробки" будут произведены настройки некоторого системного программного обеспечения (SElinux), установлены необходимое ПО (nginx, apache, percona, php и другие) и поготовлены ansible playbook'и для установки/изменения сопутствующего ПО. Ну и конечно обертка в виде bash-меню для их запуска.

    В целом из чего состоит bitrix env не секрет, это явно описано в документации. Не смотря на то что вся документация пишется по Fedora-based дистрибутивы, при наличии должных знаний и опыта не составит труда перенести все это на Ubuntu или любой другой дистрибутив.
    Ответ написан
  • Как внедрить фотогалерею в карточку клиента в CRM Bitrix24?

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


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

    Есть другой вариант: написать свое rest приложение с встройкой в карточу компании вкладкой - там можно будет делать все что вам угодно, но без навыков и знаний программирования вы просто не сможете это сделать.
    Ответ написан
    Комментировать
  • Почему \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();
        }
    }
    Ответ написан
    Комментировать