В процессе решения задачи был создан скрипт. Алгоритм его работы следующий:
• Сначала открываем csv-файл и обходим в цикле все строки, содержащиеся в нем. Получаем данные из каждой строки с помощью функции fgetcsv().
• В массиве, который возвращает fgetcsv(), в элементе с индексом 0 хранится идентификатор компании в Б24. Сохраним его в переменную ($id)
• Для добавления комментария нам нужно знать ответственного за компанию (поле ASSIGNED_BY_ID). Получаем эти данные с помощью CCrmCompany::GetListEx() и сохраняем в переменную $assignedByID
• Далее создаем комментарий:
PHP
В этом коде нужно обратить внимание на параметр BINDINGS. В нем указывается привязка комментария к сущности. Значение 'ENTITY_TYPE_ID' указывает на тип сущности. Оно хранится в классе CCrmOwnerType. Кроме Company в классе существуют следующие константы Contact, Lead, Deal, Invoice, Activity, Quote, Requisite, DealCategory, CustomActivityType.
• Для закрепления комментария используем метод update класса Bitrix\Crm\Timeline\Entity\TimelineBindingTable:
PHP
• Результат изменений можно получить следующим образом:
PHP
Если все прошло успешно, то значение $affected будет больше 0.
На всякий я решил сохранить идентификаторы компаний и созданных комментариев в файл. На случай если нужно будет их открепить или вообще удалить. Для этого в начале скрипта создал пустой массив $arResult. В нем сохранял информацию о каждом комментарии также в виде массивов:
PHP
И поместил в PHP-файл:
PHP
При необходимости вы можете использовать этот массив в любом скрипте подключив его следующим способом:
PHP
Если у вам нужно добавить и закрепить комментарии в таймлане других сущностей CRM (например, контактов), вы можете создать скрипт на основе приведенного примера из статьи.