Как получить реквизиты/адрес в CRM в Битрикс24

Сегодня я расскажу как работать с реквизитами компании в CRM Битрикс24.

В 16.х версии Битрикса24 в модуле CRM адреса компании и контактов начали храниться в реквизитах.

Bitrix
Блок с адресом в Битрикс24

Предания гласят, что в ранних версиях Битрикса24 <16.х адреса хранились в карточке компании: фактический и юридические адреса. Их можно было легко вывести с помощью метода CCrmCompany::GetByID($companyId), который возвращал такой массив

Сейчас адреса перенесены в реквизиты и методом CCrmCompany::GetByID($companyId) уже нельзя делать выборку адресов. Как видите в массиве все по нулям.

Как же получить реквизиты компании?

Для этого нужен класс \Bitrix\Crm\EntityRequisite().

Пример для компании:

Создаем экземпляр обьекта и через метод getList делаем выборку. Про фильтрацию поговорим подробнее.

  • «ENTITY_ID» — ид сущности. В нашем случае ид компании, который равен 1. Сущности могут быть разными. Какими?
  • За это отвечает ENTITY_TYPE_ID. Откуда взялась цифра 4? Это означает, что мы ищем тип «Компания». Со всеми типами можно познаскомиться в классе

     

То есть предыдущий пример мы могли записать как

Такая запись более читабельна и предпочтительней. Идем дальше…


Запись $reqData = $rs->fetchAll(); может вернуть не одну строку, так как в компанию могут быть добавлены разные виды реквизитов. Например, «Организация», «ИП», «Физ лицо» и свои собственные. Эти шаблоны вы можете редактировать в настройках→шаблоны реквизитов.

Шаблоны реквизитов в Битрикс24

Например, вы хотите получить реквизиты «ИП» определенной компании. Для этот в фильтр нужно добавить параметр «PRESET_ID».

«PRESET_ID» вы можете посмотреть при редактировании шаблонов реквизитов:

Битрикс

или в таблице b_crm_preset. Для «ИП» оно равно 2.

Так реквизиты  мы получили, но массиве ($row) нет адреса(ов). Чтобы получить адрес:

Метод Bitrix\Crm\EntityRequisite::getAddresses принимает ИД реквизита, на выходе отдает массив с адресами.

Как видите каждый тип адреса хранится под своим номером. 1 — Фактический, 4 — адрес регистрации 6 — юридический, 9 — Адрес бенефициара

Я пока не нашел почему фактическому адресу отдается цифра 1, а юридическому 6. Если у кого то есть информация по этому поводу, поделитесь в комментариях.

UPD: Посмотреть константы адресов можно в классе \Bitrix\Crm\EntityAddress

Ну что ж, сегодня мы приоткрыли завесу в мир реквизитов Битрикс24. Пойду дальше копать картошку ядро…. 🙂

 

18 комментариев

  1. Timur Sobolev
    ·

    Крайне полезная статья. Спасибо. А как получить банковские данные — ИНН, КПП и пр.?

    Ответить
    1. Alma Z
      ·

      Здравствуйте.
      Спасибо большое.
      Попробуйте код

      Должно вывести, примерно

      Ответить
      1. Timur Sobolev
        ·

        Да с этим разобрался. Спасибо. А как насчет БИК, Банк, к/c, р/c? Это отдельный объект?

        Ответить
      2. Timur Sobolev
        ·

        Нашел, кажется. EntityBankDetail::getList($params) — далее по аналогии)

        UPD: По аналогии не вышло. Не могли бы вы привести пример? Заранее спасибо.

        Ответить
        1. sergey arkhipov
          ·

          Если ещЁ надо , то EntityBankDetail::getList
          $bank = BitrixCrmEntityBankDetail::getList([«filter»=>[‘ENTITY_ID’=>’ID компании’]]);
          $bankData = $bank->fetchAll();
          var_dump($bankData);

          Ответить
  2. Zharkov Serguei
    ·

    Здравствуйте!
    Подскажите, если возможно, а как можно получить контакты компании?
    Как добавить контакт к компании — сложности не представляет. А как получить массив контактов компании?

    Ответить
    1. Alma Z
      ·

      Здравствуйте.

      Вам нужно получить все контакты определенной компании?

      Нужно использовать класс CCrmContact. У него много методов, но для выборки есть GetList. Первый параметр это сортировка, второй — фильтр.

      Ответить
  3. Timur Sobolev
    ·

    Добрый день. У меня есть несколько отвлеченный вопрос.
    Как получить доступ к комментариев в действиям БП. Например, комментарий к форме ввода доп. информации: http://prntscr.com/e0146k

    Заранее спасибо.

    Ответить
    1. Alma Z
      ·

      Немного удалось покопать в этом вопросе. Пока остановился на компоненте main.post.list. Похоже этот компонент выводить все сообщения в БП. Ему передается ИД БП. Все начинается с компонента bizproc.task — затем bitrix:forum.comments — который вызывает main.post.list
      К сожалению до конца еще не разобрался.

      Ответить
  4. Katerina Laufer
    ·

    Подскажите, может кому-то удавалось найти в какой таблице хранятся адреса из реквизитов? Сами реквизиты лежат в b_crm_bank_detail, а вот адреса никак найти не могу(

    Ответить
    1. Alma Z
      ·

      К сожалению, не знаю. Лучше написать в техподдержку Битрикса по этому вопросу.

      Ответить
  5. Роман Анищенко
    ·

    Подскажите, а как отфильтровать по дате реквизиты?
    function findRequisiteDel()
    {
    $entityRequisite = new BitrixCrmEntityRequisite;
    $rsRequisite = $entityRequisite->getList([
    "select" => array("*"),
    "filter" => array(
    "CREATED_BY_ID" => 394,
    '>=DATE_CREATE' => '2022-09-28',
    '<=DATE_CREATE' => '2022-09-30'
    ),
    "order" => array("SORT" => "asc", "ID" => "desc")

    ]);
    return $rsRequisite->fetchAll();
    }

    Ответить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *