Задать вопрос
  • Можно ли в Битрикс24 перенести автоматически значения из пользовательского поля "итоговая цена" в системное поле "сумма и валюта" в карточках лидов?

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


    Да, можно.
    Системное поле "Сумма и валюта" технически это 2 поля - Сумма (тип число) и Валюта (справочник).
    Вы можете сделать бизнес-процесс "Перенос итоговой валюты", внутри через explode разбить вашу переменную по символу вертикальной черты (в поле типа Деньги хранится в формате "<число>|<код валюты>", например "100|RUB"), затем первую часть перенести в поле "Сумма", а вторую в поле "Валюта".

    Этот БП вы можете поставить на стадию или вызывать через другие БП для актуализации.

    Для запуска на существующих элементах вы можете создать "Умный сценарий", который может отработать на нужных элементах - по фильтру.
    Ответ написан
    Комментировать
  • Как в Битрикс24 интегрировать несколько CRM-форм от разных клиентов?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    В почтовом ящике создать папку для писем из ВК рекламы.
    Настроить распределение писем в самом почтовом ящике.
    Подключить почтовый ящик в Битрикс24, указать что нужно забирать письма только из этой папки.
    Включить создание повторных лидов.
    В лидах настроить правило отфильтровывания мусорных лидов (на всякий случай).

    Звучит как профит
    Ответ написан
    4 комментария
  • Как отправить уведомление после смены статус задачи на закрыто?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Без лишних слов, вот так:

    // Подписываемся на событие через современный механизм
    $eventManager = \Bitrix\Main\EventManager::getInstance();
    $eventManager->addEventHandlerCompatible("tasks", "OnTaskUpdate", "OnTaskUpdateHandler");
    
    function OnTaskUpdateHandler($taskId, $editedFields, $originalFields)
    {
    	// Если статус не меняется, ничего делать не нужно
    	if ( !array_key_exists('STATUS', $editedFields) )
    	{
    		return true;
    	}
    
    	// Если статус меняется НЕ в состояние completed - ничего делать не нужно 
    	if ( intval($editedFields["STATUS"]) != \Bitrix\Tasks\Internals\Task\Status::COMPLETED )
    	{
    		return true;
    	}
    
    	// Если вы меняете что-то другое, например название завершенной задачи, а статус просто летит за компанию, то делать ничего не нужно
    	if ( $editedFields["STATUS"] == $editedFields["originalFields"] )
    	{
    		return true;
    	}
    
    	// Наш обработчик не имеет смысла, если модуль "Веб-мессенджер" не подключен
    	if (!\Bitrix\Main\Loader::includeModule('im'))
    	{
    		return true;
    	}
    
    	/**
    	 * Посмотреть поля можно через этот метод.
    	 * Они будут в той же директории где и текущий файл, в файле log.log
    	 */
    	//\Bitrix\Main\Diag\Debug::dumpToFile(
    	//	[
    	//		'$taskId'        => $taskId,
    	//		'$arFields'      => $arFields,
    	//		'$eventTaskData' => $eventTaskData
    	//	],
    	//	date('d.m.Y H:i:s'),
    	//	str_replace($_SERVER['DOCUMENT_ROOT'], '', __DIR__.'/log.log')
    	//);
    
        $notificationParams = [
    		"TO_USER_ID"   => $originalFields["CREATED_BY"],
    		"FROM_USER_ID" => $originalFields["CREATED_BY"],
    		"NOTIFY_TYPE" => IM_NOTIFY_SYSTEM,
    		"NOTIFY_MODULE" => 'tasks', 
    		"NOTIFY_MESSAGE" => "Задача #".$taskId." была закрыта.",
    	];
    
    	\CIMNotify::Add($notificationParams);
    }
    Ответ написан
    Комментировать
  • Как отлавливать событие Изменения/Добавления OnAfter в Битрикс24 после исполнения всех Бизнес процессов?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Во-первых, вам скорее следует поправить логику БП и вашего обработчика событий, чтобы он делал то что нужно только в определенный момент и не делал ее лишний раз.
    Во-вторых, если вам нужен момент ИМЕННО после определенных действий, а обычные изменения в БП вам в принципе не нужно, то стоит рассмотреть момент создания собственного действия в БП.
    Ответ написан
  • Где найти старые версии приложения bitrix24?

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


    1. На компьютере с Windows вообще не рекомендуется устанавливать Битрикс. Либо VirtualBox/VMWare/Другая виртуализация, а туда CentOS7 + Bitrix Env, либо виртуализация и туда любая ось и сами настраивайте nginx/php-fpm/mysql и т.п.

    2. На крайняк docker + wsl.

    Что касается старых версий то их можно скачать только через техподдержку или у вас есть старый ключ, который не продлевали (в таком случае в ЛК сайта вы можете запросить последний архив).

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

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Начните с очевидного - проверьте все onEpilog события, затем проверьте onEndBufferContents и далее если это все не поможет вооружайтесь отладчиком и идите в footer.php смотреть что же именно там выдает это подчеркивание. Вариантов может быть масса, но если ядро не правили скорее всего одно из двух событий подойдет и там обнаружите ваше подчеркивание.
    Ответ написан
    Комментировать
  • Можно ли получить пользовательские поля сделки без токкена?

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


    При помощи логина, пароля и адреса это можно сделать только через эмуляцию браузера (selenium например или phantom).
    Проще всего - сгенерировать вебхук и через него выполнять проверку.
    Ответ написан
    Комментировать
  • Какой метод, какого класса обновляет курс сделки в коробочном Битрикс24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Вам нужно получить поля сделки (ID, OPPORTUNITY), посчитать через CCrmAccountingHelper::calculateAccountingData и положить обратно в сделку.

    Хотя скорее всего если вы просто те же поля передадите в пустой update он сам пересчитает все.
    Ответ написан
    Комментировать
  • Какие задачи решает бизнес-аналитик Битрикс24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Хотелось бы начать с того, что есть любая профессия (например где-то есть "Директор сайта" или "Производственный менеджер" или даже "Скрам-мастер") - название и обязанности это разные вещи.

    1. Должен ли Аналитик Битрикс24 заниматься настройкой битрикс24 в соответствии с требованием заказчика?


    Вопрос "Должен ли" - зависит исключительно в плоскости конкретных трудовых взаимоотношений.
    Если в соответствии с должностными обязанностями он должен - то да. Если нет - то нет.
    Мы не в курсе конкретных трудовых отношений с какой-то компанией поэтому точного ответа на вопрос нет.

    Например, в компании где я работаю должности "Аналитик Битрикс24" вообще нет (хотя мы работаем преимущественно с Битрикс24). У нас есть бизнес-аналитики и системные аналитки, при этом они должны знать систему Битрикс24, но совершенно не обязаны ее настраивать.

    2. Какие задачи обычно решает бизнес аналитик Битрикс24?


    Опять же - зависит от конкретных должностных обязанностей.
    Аналитки впринципе довольно субьективная профессия и в зависимости от компании в нее вкладывают разный смысл. Есть компании где "Аналитик Битрикс24" это просто красивое название для человека который выполняет "настройку" Битрикс24 - т.е. собирает требования к бизнес-процессам, пишет тех.задание, а потом сам и создает бизнес-процессы.

    3. Если есть Аналитик Битрикс24 то зачем нужен Администратор Битрикс24 если аналитик может решать все задачи Администратора Битрикс24?


    Опять же - очень субьективная вещь.
    Например я знаю некоторые компании где "Администратор Битрикс24" - это конкретный человек в компании в чьей зоне ответственности лежит работа кор. портала. Т.е. его задача следить чтобы процессы двигались, чтобы бекапы делали (на коробке), чтобы вовремя проходили оплаты за битрикс и так далее.
    В облачном битрикс24 можно считать это впринципе синонимами, а вот на коробке это могут быть разные люди.
    Ответ написан
    Комментировать
  • Как настроить робота в битрикс, чтоб при покупке определенного товара отправлялись определлные файлы?

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


    Здесь штатно такой возможности не предусмотрено и эту потребность закрывает REST.
    Вам нужно поставить какое-нибудь приложение, которое по идентификатору достанет необходимые товары и чтобы вы могли сопоставить условия.
    Ответ написан
  • Почему возникает ошибка при импорте пользователей из Active Directory в Битрикс24?

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


    В настройках главного модуля есть опция "Email является обязательным полем", если ее выключить то можно добавлять пользователей вообще без email.
    После чего из настроек импорта контроллера в Битрикс24 убрать из списка вообще синхронизацию поля email.
    У вас вход все равно по логину.
    Это способ номер 1 - когда вообще никому мыло не нужно.

    На стороне AD можно завести доп. аттрибут куда прописывать валидный email адрес и указать его в качестве синхронизирующего.
    После чего на стороне AD заполнить этот аттрибут у нужных сотрудников.
    Далее в Битрикс24 в настройках модуля AD/LDAP заполнить аттрибут "E-mail для пользователей, у которых он не указан" - туда нужно вписать ЛЮБОЙ ВАЛИДНЫЙ email адрес.
    По техническому условию не обязательно чтобы у каждого сотрудника был уникальный email, так что можно вписать no@email.com например.
    Это способ номер 2 - когда есть сотрудники которым в профиле мыло все-таки нужно, но есть те кому не нужно.

    Эти способы можно и комбинировать.
    Ответ написан
    Комментировать
  • Как найти элемент списка?

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


    Возможно - через REST приложение в облаке или PHP-код (свое активити) в коробке Битрикс24.
    Штатных инструментов в данном случае нет - разве что только очень экзотические.
    Ответ написан
    Комментировать
  • Как изменить приветственную фразу в битриксе?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    На Битриксе версии 23.750+ Настройки (рядом с логотипом) -> Сотрудники -> Приглашения.
    Выключить "Показывать сообщение о новом сотруднике"
    66d17f1270151896917014.png

    Или через php-консоль (скорее всего работает на версих младше):
    \Bitrix\Main\Config\Option::set('im', 'general_chat_message_join', false);
    Ответ написан
    Комментировать
  • Копирование События в календаре?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Копирование события в Битрикс24 не предусмотрено.
    Ответ написан
    1 комментарий
  • Как добавить запуск своего класса/метода агентом в 1с-Битрикс?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Если вы прописали в php_interface/init.php (а не в конкретный сайт), при этом если он не перекрывается другим init.php то все должно работать с точки зрения подключения классов.

    Однако метод агента должен возвращать строку - либо php-код (полное название функции) следующего агента, либо ничего - у вас же дальше будет "eval("агент");" что вызовет ошибку php.

    Смотрите логи httpd и php
    Ответ написан
  • Как выдать права на просмотр календаря?

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


    Никак, потому что права выдаются на "событие", а не на "бронирование".

    Есть несколько способа как можно это организовать:

    Первый: выдать каждую пользователю права на чтение каждого календаря другого пользователя.
    Минус 1: таким образом можно смотреть в том числе и личные встречи сотрудника.
    Минус 2: Огромное количество настроек которое нужно сделать.

    Второй способ: выдать всем полные права на управления календарями.
    Минус 1: теперь можно не только смотреть чужие события, но и редактировать их.

    Третий способ (для коробки): поставить бесплатный модуль "Fusion: Занятость переговорных комнат".
    Он добавляет новую страницу на которой отображены переговорные комнаты, кто их занял и зачем (названия/описания событий).
    Ответ написан
  • Возможно ли через REST API Битрикс24 изменить склад у товаров в сделке?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    В данный момент REST'а для складов
    Ответ написан
    Комментировать
  • Можно ли из php кода активити получить массив Дополнительных результатов в Битрикс24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Да, можно.
    Самый простой способ - парсером:

    $rootActivity = $this->GetRootActivity();
    
    $result = $this->ParseValue('{'.'=ACTIVITY_NAME_AA1312312313123:VoteResult}');
    
    // В зависимости от множественности и типа значения может быть разное содержание, например перечисление через запятую (использовать explode)


    Подробнее тут.
    Ответ написан
    Комментировать
  • Как не создавать элемент через событие?

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

    Для кастомизации смарт-процессов на коробке вы должны использовать дополнительные Действия, перекрывая фабрику смарт-процесса.
    Ответ написан
    Комментировать
  • Как работать с объектом ORM в методе обработчике класса описания сущности?

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

    Можно сделать работу обработчиков в паре, для получения воспользоваться объектом.

    Для вдохновения можно использовать код:
    use \Bitrix\Main\ORM\Event;
    
    class DeleteHandler
    {
        static $queue = [];
    
        public static function beforeDelete(Event $event)
        {
            // Получаем объект
            $item = $event->getParameter('object');
    
            // Запрашиваем из БД `FILE_ID`
            $item->fill('FILE_ID');
    
            // Пишем в "стек" удаляемый файл
            static::$queue[ $event->getParameter('ID') ] = (int) $item->get('FILE_ID');
        }
    
        public static function afterDelete(Event $event)
        {
            if (
                in_array($event->getParameter('ID'), static::$queue )
                && static::$queue[$event->getParameter('ID')]>0
            )
            {
                \CFile::Delete(static::$queue[$event->getParameter('ID')]);
    
                unset(static::$queue[$event->getParameter('ID')]);
            }
        }
    }
    Ответ написан
    Комментировать