• Как добавить запуск своего класса/метода агентом в 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')]);
            }
        }
    }
    Ответ написан
    Комментировать
  • Как задать верное значение суммы в битрикс24?

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

    Для размышления: например если мы знаем что операция только сложение, а элементов всегда определенное количество то можно сделать как комбинацию функций firstValue, explode, swirl
    Ответ написан
    Комментировать
  • Чем заменить (паузу, ожидание) в бизнес-процессах Битрикс?

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

    Если же ваш бизнес-процесс подразумевает откладывание логики на 1-2-5 месяцев то это вполне нормально.
    Если ваш процесс подразумевает годовые паузы - то возможно не стоит так делать и следует использовать другие инструменты.

    Например:
    - Если вы используете "Доставку", то логичнее использовать триггер "Отслеживание доставки"
    - Если вы используете отслеживание какой-то даты, то просто оставляйте как есть - ожидание даты (паузу) в БП.
    - Если вы используете дату для создания новой сделки, то лучше воспользоваться генератором продаж.
    Ответ написан
    Комментировать
  • Как свернуть левое меню в Б24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    <script>
    BX.ready(function(){
      let isVisible = false; // Показать - true, скрыть - false 
      BX.Intranet.LeftMenu.toggle(isVisible);
    });
    </script>
    Ответ написан
    Комментировать
  • Как вызвать диалог выбора компании Битрикс24 при помощи BX.UI.EntitySelector.Dialog?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    <button id='companySelectButtonNode'>Select company</button>
    
    <script type="text/javascript">
    BX.ready(function(){
    	const button = document.getElementById('companySelectButtonNode');
    
    	let dialog = new BX.UI.EntitySelector.Dialog({
    		targetNode: button,
    		context: 'MY_PAGE_CONTEXT',
    		enableSearch: true,
    		searchOptions: {
    				allowCreateItem: false
    		}, 
    		multiple: false,
    		entities: [
    			{
    				id: 'company',
    				dynamicLoad: true,
    				dynamicSearch: true
    			},
    		],
    	});
    
    	button.addEventListener('click', () => {
    		dialog.show();
    	});
    });
    </script>


    6673ce43e438e057835629.png
    Ответ написан
  • Как запускать бизнес процесс от ответственного?

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

    Это выполнено потому что запустить это действие мог и не ответственный по сделке, т.к. сменить стадию элемента можно из бизнес-процесса другого пользователя или внешней автоматизацией.

    Вы можете кастомизировать шаблон компонента bitrix:bizproc.workflow.instances для вывода туда нужных полей, но помните что этот компонент отвечает за вывод всех экземпляров бп (даже не из crm)
    Ответ написан
    Комментировать
  • Как убрать поле "комментарий" в заданиях бп?

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

    Для того чтобы убрать или контролировать его появление необходима кастомизация шаблона bitrix:bizproc.task
    Ответ написан
    1 комментарий
  • Как добавить счетчик комментариев в карточке смарт-процесса?

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

    А потом самое малое - подписавшись на событие отсовать ваш кружочек с цифрой.
    Ответ написан
    Комментировать
  • Сайты на битрикс как ограничить доступ?

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


    По web-адресу который дает битрикс24 - не можете.
    Если вы делаете создание сайта на своем домене, то там вы можете настроить любые правила.
    Ответ написан
  • Где лучше хранить историю переписки телеграм-бота с клиентом в битрикс 24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    1. Где лучше хранить историю переписки телеграм-бота с клиентом в битрикс 24?


    Историю? В диалоге открытой линии.
    Видел кейс когда сообщение клиента пробрасывали в комментарий к сделке (1 сообщение = 1 комментарий).
    Но с точки зрения идеологии Битрикс24 - это именно открытая линия и точка.

    2. Если же в строке то как можно расширить количество символов которая ?


    Нельзя
    Ответ написан
    Комментировать
  • Как можно отследить действия в связанной сделке?

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

    Не вижу других способов полноценно поддерживать такую связку по последним изменениям.
    Ответ написан
    Комментировать
  • Как в Bitrix 24 отправить уведомление?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Что не так делаю может кто подскажет?


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

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

    Получить значение глобальной переменной можно многими путями, например через парсинг:

    $globalVarAsdasd = $this->ParseValue('{'.'{Переменные глобальные: asdasd}}');


    Взято из книжки
    Ответ написан
    1 комментарий
  • Как объединить сделку и контакт при создании методом crm.deal.contact.add?

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

    1. Команда "find_contact" выполняет метод "crm.duplicate.findbycomm" который по номеру телефона ищет контакты (да - может вернутся от 0 до 50 контактов).
    2. Команда "get_contact" выполняет получение контакта по идентификатору. В вашем случае по "$contact['CONTACT_ID']"
    3. Команда "get_deal" выполняет получение сделки по ее идентификатору. В вашем случае по "$contact['DEAL_ID']".

    Как вы можете видеть НИ ОДНА из команд не создает сделку, привязанную к контакту И не привязывает контакт к сделке.

    Есть несколько вариантов как выполнить создание сделки привязанной к контакту:

    1. Вы знаете ID контакта, поэтому вам нужно создать только сделку.
    Вы используете метод crm.deal.add и заполняете поле CONTACT_ID указывая туда ID контакта.

    2. Вы знаете ID контакта и ID сделки куда должны его прикрепить.
    Вы используете метод "crm.deal.contact.add" передавая в "fields" ключи "CONTACT_ID" и "IS_PRIMARY".

    3. Вы НЕ знаете ID контакта - в таком случае нужно сначала найти контакт по мультифилду (например по номеру телефона) используя метод "crm.duplicate.findbycomm", а потом уже в зависимости от того существует сделка или нет использовать методы 1 или 2.
    Ответ написан
    Комментировать
  • Как через rest API Битрикс24 искать контакты по номеру телефона конкретного типа (например по мобильному)?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Такой возможности нет.
    Ответ написан
    Комментировать