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

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Самый простой способ: создать "Рабочую группу" с названием "Руководители отделов" и вручную включить всех руководителей туда.
    Тогда сообщения можно адресовать на рабочую группу.
    Ответ написан
    Комментировать
  • Как сделать поля с автоматическими разделителями для СНИЛС и кадастрового номера?

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


    В облаке это возможно только если сделать свой тип поля. https://dev.1c-bitrix.ru/rest_help/application_emb...
    В коробке это сделать сложнее: подписаться на событие отрисовки страницы, определить что эта страница - карточка сделки CRM, подключить свою js библиотеку. В своей js библиотеке подписаться на страницу и проверить что активируется нужное поле, а потом наложить masked input https://dev.1c-bitrix.ru/api_help/js_lib/js-library.php
    Ответ написан
    1 комментарий
  • Как на php в битрикс24 установить права - только чтение, для контактов, конкретному пользователю?

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

    Итак, с чего надо начать?
    В Битрикс есть пользователи, каждый пользователь наделен некоторым количеством "Access codes" (сокращенно AC, иногда они называются ролями, общими ролями, кодами доступа, пользовательскими кодами и т.п.). AC в частном случае если комбинация букв и цифр, например U1 - означает user ID:1, G2 - пользователь принадлежит к группе ID:2 и т.п.
    Один пользователь может обладать множеством таких аттрибутов.

    Битрикс24 это надстройка над платформой, основополагающем модулем, наряду с CRM является Интранет, который обеспечивает орг.структуру. Это добавляет новые код IU123, где IU - расшифровывается как Intranet User (сотрудник) ID:123 (т.е. пользователь с ID123, который находится в орг.структуре), D1 который расшифровывается как Department 1 (подразделение с ID:1, т.е. пользователь состоящий в подразделении ID:1) и DR1 (Department recurcive, вложенное подразделение в ID:1 или пользователь который состоит в орг.структуре и вложен в подразделение ID:1)

    Теперь поговорим про CRM.
    В CRM существуют права, например право на добавление сделок, право на чтение сделок, право на изменение контактов и т.п. У каждого права есть значени "Нет доступа", "Свои", "Своего отдела" и т.п. Комбинация прав называется Ролью (лучше говорить CRM Роль чтобы не путаться).
    Каждому Access code назначается своя роль.

    А пользователь соответственно получает максимально возможные значения прав из доступных ему.

    Т.е. предположим что вашей задачей является "Выдать роль ** сотруднику ID:1", тогда вам нужно обратиться к CCrmRole и использовать SetRelation($arRelation)
    Ответ написан
    Комментировать
  • В какой таблице базы данных Битрикс24 можно найти текст отчетов пользователей?

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


    В таблице: b_timeman_reports
    Ответ написан
    1 комментарий
  • Как настроить права доступа к меню Битрикс24?

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


    Без редактирования самого файла меню (.left.menu_ext.php) такое ограничение не сделать.
    Продукт из коробки не рассчитан на такие ограничения.
    Ответ написан
    2 комментария
  • Как указать воронку при интеграции заявок с сайта в Битрикс 24?

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

    В лидах воронок и тоннелей нет, а вы создаете именно лид (/crm/configs/import/lead.php).
    То что у вас режим "Без лидов", это значит то он автоматически будет конвертирован в сделку.

    Для того чтобы предотвратить ситуацию - используйте Вебхук и указывайте воронку куда хотите создать сделку.
    как при интеграции указать, в какую воронку должна идти заявка?


    Используйте ключи CATEGORY_ID и STAGE_ID
    Ответ написан
    Комментировать
  • По какой причинет CRest::call("crm.company.update добавляет json при изменении данных, как правильно передать очень длинные данные??

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

    public static function call($method, $params = [])

    Т.е., все то что вы так заботливо пытаетесь написать в patch_string, вы можете передать массивом в в $params и он сам его соберет.
    Когда вы передаете все в query вы ограничены длинной запроса (в некоторых системах 200, в некоторых 500 символов), а вот размер POST имеет сильно больше возможностей.
    Ответ написан
    Комментировать
  • Как добавить комментарий к заказу bitrix24 + CRM?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Насколько я знаю, в апи есть возможность добавлять его через метод crm.livefeedmessage.add
    Ответ написан
    Комментировать
  • Как обновить пользовательское поле в заказе?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Не думаю что это возможно.
    На backend заказа архитектурно не используются UF_* поля, у магазина своя историческая наследственность. Когда его добавили в CRM эти поля идут как-бы сбоку, поэтому они не являются частью самого магазина и этим методом вы не можете их установить.
    Ответ написан
  • Почему Битрикс не находит класс из кастомного модуля?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Проверьте что у вас в $classes в файле include.php

    Я бы вообще не стал делать так как предложено автором, а воспользовался подключением composer к Bitrix Framework
    Ответ написан
    Комментировать
  • Как установить выбранную телефонную линию на этапе установки своего приложения(в коде)?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Из приложения вы никак не можете это контролировать.
    Данная опция настраивается в разделе телефония как исходящая линия по-умолчанию.
    Ответ написан
    Комментировать
  • Как с помощью вебхука конвертировать лид?

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

    В настоящий момент есть только один способ конвертировать лид:
    - Создаете БП который конвертирует лид.
    - При помощи REST метода bizproc.workflow.start запустить БП на конвертацию
    Ответ написан
    Комментировать
  • Как убрать в левом меню Битрикс24 некоторые пункты и ограничить доступ?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Механизмов которые позволяли бы это сделать без нарушения обновлений не существует.
    Наиболее оптимальный способ который мы нашли: прямая модификация .top.menu_ext.php в корне проекта.

    Переходим в конец файла, находим:
    [CODE]
    $aMenuLinks = $arMenuB24;
    [/CODE]

    Перед ним необходимо проверить `$arMenuB24` и модифицировать согласно вашему пункту.
    Рекомендую оставить лазейку и не скрывать для админа ничего.
    Ответ написан
    2 комментария
  • Можно ли как-то вывести у сделок пользовательское поле типа "привязка к элементам highload блока"?

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


    Не все типы пользовательских полей доступных в системе можно использовать в сделке ввиду особенностей работы компонента bitrix:crm.entity.editor.
    Некоторые поля требуют значительного изменения, например создания компонента отрисовки пользовательского поля - https://dev.1c-bitrix.ru/api_d7/bitrix/main/system...

    Я бы не рекомендовал выводить эти поля, поскольку в карточке они еще имеют нормальную привязку, а вот для списка совсем не годяться - битрк не производит их модификацию для вывода.

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

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

    Возможно вы ведете речь о браузерном расширении или о коробочной версии.
    Например для коробочной версии существует модуль Документооборот. ИНТЕРВОЛГА Мини-СЭД. Согласование....
    Ответ написан
    Комментировать
  • Где лежит темплейт вкладки "время" в задачах битрикс24?

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


    Нет отдельного шаблона или компонента этой вкладки. Это часть верстки из компонента bitrix:tasks.task.detail.
    Если нужно модифицировать вывод рекомендую воспользоваться JS - при обновлениях будет намного меньше проблем.

    Так же хочу напомнить что править компоненты и шаблоны компонентов в /bitrix/components/bitrix запрещено.
    Ответ написан
    Комментировать
  • Как уменьшить размер области в интерфейсе Битрикс24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Если это облако, то только через надстройки для браузера.

    Если это коробка, то можно подписаться на событие открытия слайдера и переопределить параметр customLeftBoundary установив его в нужное значение (для чата и почты по-умолчанию 0, обычно начинается с 240).
    Ответ написан
    3 комментария
  • Как вы делаете архитектурные решения AJAX?

    gromdron
    @gromdron
    Работаю с Bitrix24
    На сколько такое решение приемлимо?


    В зависимости от проекта и выделенного времени варьируется и оценка.
    Я бы оценил его как "Неудовлетворительный, находящийся на гране допустимного, но решающий исходный запрос".
    Ваш подход может существовать, однако на Code review у нас бы его завернули с пометкой "Все переделать".

    Есть ли какие то более правильные, гибкие архитектурные решения?


    Вариантов на вкус и цвет, начиная от родного AJAX => 'Y' параметра в компоненте и его работы и заканчивая javascript rendering.
    Замечательным вариантом было бы:
    - Чтобы тег #orders-block рендерил компонент d6core:custom.order.list. Т.е. он был бы самодостаточным.
    - Не создавалась бы отдельная страница под "ajax.php", а использовались бы контроллеры компонентов (хотя бы)
    - Возвращалось как можно меньше данных, т.е. структуры данных, а не верстка.

    Конечно интересует здесь и вопросы ИБ.


    Контроллеры компонентов по-умолчанию имеют защиту от CSRF, а так же можно установить проверки на авторизацию (только от авторизованных пользователей), проверку на метод запроса (POST/GET), проверку на пользователя (передавать его в signedParams).
    Почитайте про контроллеры, там много интересного написано.

    Тогда вопрос, зачем делать такую обертку если я могу тупо тянуть данные из $_POST напрямую?


    Например потому что при обработке запроса глобальный $_POST может поменять любой скрипт выполняющий до вашего, а HttpRequest содержит исходную информацию которая была отправлена на сервер.
    Или потому что при обращении к несуществующему ключу $_POST выдается notice-сообщение, а HttpRequest корректно возвращает null.
    Если ваша функция или метод работает с $_POST, то в случае объекта вы можете указать что ожидается HttpRequest и знать что придет именно параметры запроса и что там будут гарантированно методы getPost и т.п., а в случае с $_POST вам могут направить туда что угодно с какими угодно ключами.
    Ответ написан
    Комментировать
  • Есть ли в БП Б24 функция сложения данных одного пользовательского поля n-го множества сделок?

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

    При создании сделки итератором производим подсчет "Суммарного значения" сделки.
    Как только расчет произведен запрашиваем у компании Текущее значение и Лими значения и сравниваем чтобы текущее значение не было больше Лимита.
    Если больше - бракуем сделку и т.п. В общем отрабатываем процесс превышения.
    Если меньше - обновляем Текущее значение компании как Текущее значение компании + Суммарное значение.

    Как только сделка достигает успеха или неудачи необходимо выполнить перерасчет, т.е. из Текущего значения компании вычесть суммарное значение сделки чтобы высвободить лимит.

    Предполагаю что было бы неплохо дополнительно сделать следующее:
    - Хранить в сделке "Флаг учета значения в компании", который установлен в значение Да, если сделка учтена в текущем значении и Нет, если ее значение не модифицировало компанию.
    - Изменение Текщуего значения (увеличение или уменьшения) реализовать бизнес-процессом с логгированием в историю компании - из какой сущности, какое действие и какое логированию.
    Ответ написан
    Комментировать
  • Как вывести названия задач, привязанных к сделке?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Я смог добиться вывода всех существующих задач,


    Помни, что фильтр выполняется исходя из прав текущего пользователя, а значит что у другого пользователя будет другой результат. Чтобы убрать это поведение поищи в коде CHECK_PERMISSIONS флаги и посмотри как они работают.

    как отфильтровать их по привязке к сделке.


    Привязка к сделке хранится в поле UF_CRM_TASK, хранятся в виде комбинации буквы сущности и идентификатора, разделенные подчеркиванием.
    Например задача имеющая связь со сделкой 123 будет иметь в этом поле D_123
    Ответ написан
    Комментировать