Ответы пользователя по тегу Битрикс24
  • Когда отправляется исходящий вебхук из коробочного Битрикса, то запрос идёт сразу в на "URL вашего обработчика"?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Запрос идёт сразу в на URL вашего обработчика


    Нет, не сразу.
    Формируется специальное сообщение и отправляется на oauth.bitrix.info, там оно попадает в очередь и один из воркеров отправляет его на адрес вебхука.

    Таким образом: если у вас закрытый контур или не оплачена лицензия исходящие вебхуки не работают.
    Ответ написан
    Комментировать
  • Как включить в Битрикс24 раздел "Группы и проекты"?

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

    Но насколько я знаю можно попробовать выполнить код в php-консоли (в админке)
    CBXFeatures::ModifyFeaturesSettings([], ["Workgroups" => true]);
    Ответ написан
    Комментировать
  • Как в битриксе придумать псевдослучайный порядок вывод элементов?

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


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

    1. Вы можете использовать `rand` ключ сортировки из `CIblockElement::GetList` - это позволит выбирать псевдослучайные записи в количестве которые вы укажие в navParams.
    В случае такой задачи это будет наиболее правильное решение.

    2. Если такой вариант не подходит, то можете сделать многоуровневое кеширование.
    Т.е. отдельный кеш идентификаторов элементов и (можете, но не обязательно) отдельный кеш под каждый элемент.
    Соответственно получаете все ID (запросом или из кеша), перемешиваете и делаете ЛИБО получение через GetList скармливая в order порядок элементов либо обращение к своему методу и забор кеша (то самое многоуровневое кеширование).

    Однако есть нюансы:
    1. Кешировать все элементы и перебирать все элементы нет никакого смысла - вы дублируете базу данных кодом с меньшей эффективностью. Т.е. после такого производительность может не только не вырасти, но и упасть. Вам же еще нужно задуматься про обновление этих кешей.

    2. В данном случае эффективнее кешировать не конкретные элементы, а вывод всей страницы. Т.е. делаете запросы, рендерите вывод и его кешируете. Следюущий запрос просто достанет кеш. В противном случае мало того что придется доставать кеширование данные, так вам еще придется тратить ресурсы на их рендер (а в большинстве случаев он будет одинаковый).

    Еще увидел у вас в комментариях ваше предложение:
    в result_modifier.php передать данные в component_epilog.php, получить ITEMS в component_epilog.php, рандомно сортировать этот массив, перенести содержимое template.php в component_epilog.php и выводить. Данные будут браться из кэша и при этом каждый раз сортироваться. Норм?))


    Оно бессмысленное потому что передавать данные можно только в одном порядке: component -> result_modifier -> template -> component_epilog.
    Т.е. дойдя до component_epilog вернуть в сам template (если только это не отложенная функция, но в таком случае профита нет никакого).
    Ответ написан
    Комментировать
  • Как отредактировать код для корректной отправки данных сайта в битрикс 24?

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

    Т.е. ваш код должен быть таким:
    $.ajax({
    	url: apiUrl,
    	method: 'POST',
    	data: {
    		fields: fields
    		params: {
    			REGISTER_SONET_EVENT: "Y",
    		}
    	},
    	success: function(response) {
    	    console.log('Lead created successfully');
    	},
    	error: function(error) {
    	    console.error('Error creating lead:', error);
    	}
    });


    Ну и соотстветно:
    1. Ключи в fields лучше передавать как в Битрикс24 - в верхнем регистре
    2. Смотрите корректные названия для UTM меток в документации
    Ответ написан
    Комментировать
  • Битрикс 24 Облако как посчитать количество символов в строке?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Чтобы посчитать количество символов в строке используйте функцию бизнес-процессов "strlen".
    Подробнее об этом указано в документации.

    Т.е. приводим к строке и используем strlen
    Ответ написан
    Комментировать
  • Как ограничить количество показов CRM формы в Битрикс24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Таких настроек нет.
    Ответ написан
    Комментировать
  • Как получить контакт из бизнес-процесса?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    У вас есть как минимум 3 способа (а на самом деле еще больше):

    Вариант 1: парсер
    $companyId = $this->ParseValue('{'.'=Document:ID}');


    Вариант 2: runtime свойство:
    list($property, $companyId) = $this->getRuntimeProperty(
    	\Bitrix\Bizproc\Workflow\Template\SourceType::DocumentField,
    	'ID',
    	$this
    );
    
    // $companyId - идентификатор сущности


    Вариант 3: document service
    $documentId = $this->getDocumentId();
    $documentService = $this->workflow->getService('DocumentService');
    $document = $documentService->getDocument($documentId);
    
    $companyId = $document['ID'];
    Ответ написан
    2 комментария
  • Как можно в Б24 запускать бизнес-процессы отложено?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Такого механизма нет.

    Что можно сделать? Очевидных вариантов два:

    ЛИБО запускать процесс, но процесс ставить на паузу до нужной даты.
    Здесь конечно минус, т.к. процесс является запущенным и повторное совпадение комбинаций вызовет еще один процесс и т.д. Очень опасно вешать такие штуки на изменение документа.

    ЛИБО запускать другой процесс, который в специальное место (например УС/таблицу/инфоблоко) запишет что нужно запустить для такого-то элемента.
    А потом отдельным скриптом - запускать БП на элементах из этого списка.
    Ответ написан
    Комментировать
  • Как в Битрикс24 получить список записей из вкладки История у лида?

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


    REST метода на получения этой истории нет.

    Единственный метод через который можно получить историю стадий это упомянутый crm.stagehistory.list
    Ответ написан
  • Кастомное действие в Битрикс24 после создания задачи?

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

    Если мы говорим про коробочную версию Битрикс24 и используя только штатные сдества, то нельзя.

    Давайте начнем с простых вещей: опишем окно.
    Предположим мы создали задачу и отобразили некоторое окно (может с полями для ввода). Что должно произойти если пользователь закроет свой браузер? Таким образом можно предположить что после создания задачи окно как бы и не появлялось, а тогда смысл в этом действии? А что если задача по шаблону будет поставлена через бизнес-процесс - у кого открывать окно? А если эта задача была поставлена с мобильного устройства?

    Давайте предположим, что вы хотите отобразить некоторую текстовую информацию - мы не ждем ввода данных, просто оставим какое-то примечание какому-то сотруднику.
    Как это можно сделать?
    1. Сделать javascript код, который вызывает всплывающее окно и подключим его к сайту.
    После этого вызвав функцию в консоли вы сможете получть свое окно - уже хорошее начало.

    2. Затем нужно создать свое push-событие и сделать так, чтобы при выбрасывании вашего push сообщения всплывало ваше окно.
    Здесь поможет статья разработчика (почти из документации): https://dev.1c-bitrix.ru/community/blogs/hazz/work...

    3. Затем дело за малым - подписать на событие создания задачи, проверить из какого шаблона она создана и выкинуть событие.

    А что же делать если нужны поля ввода?
    Тогда придется определиться что нужно делать если полей нет.
    Всего существует 2 стратегии: если поля не заполнены - не создавать задачу (стратегия А) и все равно создать задачу, но записать где-то (а возможно и когда-нибудь напомнить) (это стратегия Б).

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

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

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Это не сложно: нужно всего-лишь довести дату до формата "d.m.Y", затем пройти через explode и результат скормить итератору. Тогда по ключам вы сможете определить (0 - дата, 1 - месяц, 2 - год).

    646b0efb0e94b556125377.png
    646b0f081ede9066978439.png
    646b0f0d4d8b1084757002.png
    646b0ea813a72841372803.png
    646b0eea40f4a611856770.png
    Ответ написан
    1 комментарий
  • Проблема с добавлением чек листа по событию б24. Что подскажете?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Не могу понять почему происходит удаление


    Это происходит потому что процесс создания задачи не заканчивается на создании записи о задаче.

    Добавление задачи из публичной части сводится к методу: `Bitrix\Tasks\Manager\Task::add`, где вначале происходит создание записи и инициирование события (строчка 139), а затем объединение чек-листов (строчка 177). Таким образом получается что изначально при создании задачи передается пустой набор чек-листов, потом вы создаете элементы чек-листов, а затем merge производит удаление существующих чек-листов, которые не были переданы в изначальном запросе, а так как их не было - просто удаляет ваши созданные чек-листы.

    Как можно избежать этой ситуации?

    1. Наилучшим вариантом будет попробовать использовать другое событие: before.
    Т.е. не создавать элементы чек-листов, а дополнить исходный массив данных структурой, которая будет создавать чек-листы.
    Попробуйте отловить прочку событий before с чек-листами чтобы понять что нужно делать

    2. Удовлетворительным вариантом будет так же создание агента, который добавит чек-листы.
    Однако тут будут свои тонкости, поскольку агенты могут исполняться значительно позже чем хотелось бы.

    3. Так же, неплохим хаком будет являться использование background job - т.к. он выполняется в конце страницы уже после выполнения всех правок.

    Обращу ваше внимание - событие является независимым от контекста, поэтому вполне может быть такая ситуация, что при создании задачи на агентах (или консольном скрипте) у вас `$USER` будет null, таким образом ваш скрипт упадет с фатальной ошибкой. Но наличие `$USER` еще не являетися поводом для радости, сам GetId может вернуть `null`, таким образом фатальная ошибка прилетит уже от контроллера прав.
    Рекомендую использовать выполнить проверки и сделать fallback механим - подставить ID = 1 (или самому бросить фатальную ошибку) в случае непредвиденной ситуации
    Ответ написан
  • Как выполнять метод crm.entity.mergeBatch автоматически?

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

    Здесь работают 2 других механизма:
    1. Автоматический поиск и объединение. Включается в настройках CRM, после чего сам проверяет актуальность.
    2. Ручной поиск через `crm.duplicate.findbycomm` или `crm.*.list`.

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

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

    Вариант 1: Найти кто отправляет лиды на сайте. Скорее всего есть какой-то обработчик события добавления элемента в инфоблок (или кусок кода отправляющий в б24 в самом компоненте).
    И там можно задать поле ASSIGNED_BY_ID и передать туда идентификатор нового ответственного.

    Вариант 2: сделать БП при добавлении (или робота на первой стадии), проверять ответственного и менять.

    Я бы рекомендовал все же выполнить пункт 1, т.к. это наиболее разумный шаг.
    Ответ написан
    Комментировать
  • Как одновременно создать сделку и контакт?

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


    В формулировке "одного стандартного метода" никак.
    Вы путаете интерфейсные возможности с возможностями REST, а это не одно и то же. Собсвтенно говоря в самом битриксе это тоже не один механизм - сначала выполняются задания контроллеров (т.е. создание контакта), а потом уже основное действие (создание сделки).

    Битрикс в плане api досаточно примитивная система: при создании сделки вы создаете только сделку, а при создании контакта только контакт.

    Таким образом есть 2 варианта как это можно сделать:
    - Через батч (создать контакт, создать сделку указав CONTACT_ID)
    - Через бизнес-процессы. Т.е. создать Н доп.полей в сделке и БП запускаемый при создании, который получит поля, создаст контакт и изменит сделку
    Ответ написан
    Комментировать
  • Как реализовать дублирование сообщений из чата Битрикс24 в чат Telegram?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Как уже сказали в предыдущем комментарии от SHADRIN можно воспользоваться API, но есть другой путь: если у вас есть маркет, то можно использовать чат-бот Многоцелевой и telegram (телеграм) бот , который это умеет и еще много всего другого.
    Ответ написан
    1 комментарий
  • Как кастомизировать/переименовать элементы карточки сделки в коробке?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    В курсе Bitrix Framework есть глава по работе с языковыми фразами и там есть раздел посвященный этому - "Замена фраз в продукте".

    Соответственно принцип такой:
    1. Сначала ищем языковую фразу. В Битриксе много однотипных фраз в разных компонентах системы, поэтому задача будет не самой простой. Для этого проще всего воспользоваться средством поиска языковых фраз из модуля Переводы (дописать к адресу страницы "show_lang_files=Y" и после обновления будет специальный дополнительный диалог поиска языковых фраз).
    2. Затем через механизм user_lang изменяем нужную фразу.
    3. Повторяем шаги 1 и 2 для всех фраз.
    Ответ написан
    1 комментарий
  • Нужен совет по облачной версии Битрикс24. Разрабатывать своё или использовать Б24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Однозначного ответа на ваш вопрос не будет.

    Во-первых, непонятно что именно вы подразумеваете под "функционалом документооборта". Просто централизованное хранилище документов с простым согласованием между отделами? Или сложное типиированного согласование с использованием ЭДО? Какой именно "функционал" вам требуется? Какое представление?

    Во-вторых, можно воспользоваться универсальным ответом - "Посмотрите что есть из доступного и если вас не устроит - делайте свое приложение".

    Начните с простых шагов:
    1. Определите что вы вкладываете в понятие документооборот. Какая цель стоит перед этой системой. Что самое важное (хранение, согласование или что-то другое)
    2. Распределите все фичи по уровням важности и сравните с тем что есть в наборе Битрикс24. Обратите внимание на смарт-процессы и универсальные списки в Битрикс24.
    3. Попробуйте собрать тестовую схему, потом попробуйте расширить ее.

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

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

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


    Можно использовать действие "Изменение документа" если БП запущен на том же элементе. Если БП запущен на другом элементе то можно сделать маленький БП на изменение и запускать этот БП
    Ответ написан
    Комментировать