• Как вывести кастомную ошибку/предупреждения/информацию битрикс24 коробка?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Если мы имеете ввиду выкинуть ошибку на событии перед изменением (before), то для этого нужно сделать 2 действия:

    1. В событие по ссылке передается набор изменяемых полей (&$arFields обычно называется).
    Нужно записать ему в ключ `RESULT_MESSAGE` строковое сообщение.

    2. Нужно дополнительно выбросить битриксовы экспешен:

    global $APPLICATION;
    $APPLICATION->ThrowException("Error text here");


    3. Вернуть в обработчике `false`.

    Таким образом на эране будет отображена строковая ошибка.

    Для возврата чего-то более интересного придется задействовать технологию push'n'pull, но это уже совсем другая история.
    Ответ написан
    7 комментариев
  • Работа с историей контактов и лидов через php код?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Это недокументированное API, поэтому изучить ее можно только через исходники.
    Важно так же что именно вы скрываете под термином "история контактов": есть timeline записи (то что отображается полоской с правой части на странице Основное) и есть история - записи отображаемые на вкладке История.

    В случае timeline начать поиски лучше с класса \Bitrix\Crm\Timeline
    В случае с историей - CCrmEvent
    Ответ написан
  • Как записать данные с xml в лог в Битриксе?

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


    Чтобы был "быстрый" способ, нужно хотя бы иметь "2 способа" решения, а вы даже проблему (т.е. собственно почему происходит деактивация) не локализовали.

    Как посмотреть пользователей которые пришли во время обмена с AD?


    Таких логов не ведется, но можно подписаться на событие OnLdapUserFields модуля ldap и посмотреть какие приходят данные во время обмена.

    Как записать в лог всех пользователей которые есть в xml с 1с?


    Если мы говорим про штатный импорт, то файл последнего импорта находится в `/upload/1c_intranet/`
    Судя по тому что вы привели код - у вас кастомный импорт и здесь вам нужно обратиться к разработчикам.

    Что касается вашей проблемы, я кажется знаю ее корень: изменение пользователей из 1С.
    В механизме сихнронизации битрикса происходит оперирование тремя датами:
    - Дата последней синхронизации в Битрикс24
    - Дата последнего изменения сотрудника в Битрикс24
    - Дата последнего изменения учетки в AD

    Синхронизация происходит при трех ключевых условиях:
    1. LDAP Query вернул учетку.
    2. Изменение учетке в AD (либо в Б24) произошли ПОСЛЕ последней успешной синхронизации.
    3. Учетка не должна входить в "неимпортируемые группы"

    Соответственно типовые ошибки:
    1. Рассинхрон времени (например по какой-то причине время на сервере Б24 бежит впереди времени AD).
    2. Шаманство с датами (иногда учетки отключают задним числом)
    3. Неправильные условия (ldap query с активностью)
    4. После увольнению учетку добавляют в группу, которая в Б24 помечена как несинхронизируемая
    Ответ написан
    Комментировать
  • Возможно ли передать статус "брошенная корзина" с сайта на битриксе в crm битрикс 24?

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

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


    Нет.
    Но при разработке собственных блоков вы имеете полный доступ к файлам вашего блока.

    возможно ли получить доступ к панели администратора


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

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

    Попробуйте написать в техническую поддержку с вашим кейсом.
    Ответ написан
    Комментировать
  • Как удалить кнопку "Соисполнители" в задачах?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    1. Сделайте файл с css, который будет скрывать `span[data-bx-id="task-edit-toggler"][data-target="accomplice"]`
    Рекомендую сделать через Extension: https://dev.1c-bitrix.ru/learning/course/index.php...

    2. На события onEpilog добавьте свой css-файл (или extension) в код страницы.
    Подробнее про события: https://dev.1c-bitrix.ru/learning/course/index.php...
    Ответ написан
    Комментировать
  • Как обновить страницу канбана лидов?

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

    Самый простой способ это реализовать:
    - Создает свое pull-событие (См. документацию: https://dev.1c-bitrix.ru/community/blogs/hazz/work...)
    - Подписаться на событие создание сделки (см. документацию: https://dev.1c-bitrix.ru/learning/course/index.php...)
    - Поставить ловушку на страницу канбака (см пункт 1)
    - Обновить канбан ( код обновления канбана: window.Kanban.reload() )

    Ну и конечно же потом уже можно докручивать много всего другого:
    - Не обновлять канбан если какой-то элемент открыт для редактирования
    - Не обновлять канбан если изменение происходит с той же страницы (Например перенесли элемент).
    - Не обновлять канбан если элемент не подходит под текущие условия поиска

    и т.п.
    Ответ написан
  • Когда отправляется исходящий вебхук из коробочного Битрикса, то запрос идёт сразу в на "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 меток в документации
    Ответ написан
    Комментировать
  • Страницы с символьным кодом bitrix в индексации яндекса?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Самый простой способ: модернизировать компонент (который отдает 404) и прописать запись в лог referrer'ов, т.е. откуда пришел пользователь.
    Таким образом вы узнаете страницу откуда пришел этот пользователь.

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

    Из очевидных вещей: если таких ссылок очень много советую посмотреть карту сайта - возможно в настройках инфоблока и на странцие разные параметры ЧПУ и соответственно на сайте одно, а в sitemap другое.
    Ответ написан
    Комментировать
  • Битрикс 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 комментарий