Гость
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Вопрос по Битрикс24 / 5 сообщений из 5, страница 1 из 1
24.09.2020, 15:42
    #40002190
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Битрикс24
Столкнулся со странным поведением, а ТП тупит и не отвечает.
Возник такой вопрос.
Есть скрипт, который создает или обновляет в CRM список компаний.
У компании есть поле телефона. Данное поле является множественным.
Это поле я обновляю с помощью метода crm.company.update (или crm.company.add), передавая в параметре FIELDS следующую структуру (массив массивов):
Код: javascript
1.
"PHONE": [{"VALUE":$phone, "VALUE_TYPE":"WORK"}]


То есть в PHONE передается массив из одного элемента.
Я считал, что тем самым я перезаписываю данное множественное поле.
Однако получилось, что поле не перезаписывается, а дополняется, то есть старые номера не удаляются, только добавляются новые.
Видимо нужно вначале очистить множественное поле, а затем его заполнять. Но в документации REST API я не нашел, как это сделать.
Вопрос в ТП я задал, но вот уже второй день он остается без ответа (на коммерческом тарифе).
...
Рейтинг: 0 / 0
24.09.2020, 16:05
    #40002196
vb_sub
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Битрикс24
Alibek B.,
название метода crm.company.add как бы намекает.
...
Рейтинг: 0 / 0
24.09.2020, 16:08
    #40002199
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Битрикс24
На что?
У меня вопрос не с компаниями, а с телефонами.
Например у компании также может быть множество контактов.
И есть отдельный метод crm.company.contact.items.delete, который очищает список контактов компании.
Но отдельного метода для очистки множественного поля я не нашел.
...
Рейтинг: 0 / 0
16.10.2020, 06:06
    #40009104
Togglesun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Битрикс24
Где есть хорошие курсы по Битрикс?
...
Рейтинг: 0 / 0
22.10.2020, 17:10
    #40010947
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Битрикс24
Может кому пригодится.
Если в поле телефона указывать только VALUE, то номера будут всегда добавляться.
Чтобы изменить или удалить существующие номера, нужно дополнительно указать ID.
То есть PHONE это коллекция. Нужно считать всю коллекцию. для новых записей указать значения без ID, для изменяемых записей указать ID и значения, для удаляемых записей указать ID без значений.
Можно использовать такую вспомогательную функцию:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
function make_field_contact($rec, $section, $value, $type)
{
        $res = [];
        $found = null;
        if (isset($rec) && array_key_exists($section, $rec) && is_array($rec[$section]))
        {
                foreach ($rec[$section] as $item)
                {
                        if (($item['VALUE'] == $value) && !$found) {
                                $res[] = ['ID'=>$item['ID'], 'VALUE'=>$value, 'VALUE_TYPE'=>$type];
                                $found = true;
                        } else {
                                $res[] = ['ID'=>$item['ID']];
                        }
                }
        }
        if (!$found) $res[] = ['VALUE'=>$value, 'VALUE_TYPE'=>$type];
        return $res;
}
...
$item['PHONE'] = make_field_contact($res['result'][0], 'PHONE', '79876543210', 'WORK');



Аналогично с EMAIL и прочими множественными полями.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Вопрос по Битрикс24 / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]