Бачаева Юлия | Руководитель проектов | ГК «Софт-сервис»

«Как не потерять контроль над управлением проектом»

Изменение первоначальных условий договоренностей в процессе проекта, как основные факторы риска. Удовлетворение потребностей заказчика в рамках проекта и избежание переработки участников проекта. Эффективность проектной документации, как средство коммуникации между участниками проекта. Убеждение заказчика в рациональности предложенного решения задач автоматизации. Распределение ресурсов проекта на этапе проектирования и во время внедрения. Защита проекта: ожидания от функционала системы и реальный результат.

Передаем контакты из 1С в Битрикс24 через REST API

0. user662672_explorer2000 114 09.01.17 09:01 Сейчас в теме
Хочу поделиться опытом использования Битрикс24 REST API для экспорта контактов из 1С УТ 11

Перейти к публикации

Комментарии
Сортировка: Древо
1. script 190 09.01.17 20:07 Сейчас в теме
У меня к Вам огромная просьба. Покажите пожалуйста в какую сторону копать если нужно передавать из 1С реализации а в битрикс 24 загружать "Сделки"
2. user662672_explorer2000 114 10.01.17 08:38 Сейчас в теме
Добрый день! Смотрите офф документацию, в частности по сделкам http://dev.1c-bitrix.ru/rest_help/crm/cdeals/index.php. Для создания сделки используйте метод crm.deal.add. Перечень передаваемых полей доступен там же. Такой сущности, как реализация нет в Битрикс24, возможно это счета? по ним вся информация здесь http://dev.1c-bitrix.ru/rest_help/crm/invoice/index.php. Там примеры к сожалению только на js, так что пробуйте и смотрите что возвращается в качестве ответа. Если ошибка, то будет описание ошибки.
3. bulpi 129 10.01.17 14:03 Сейчас в теме
Люди, а вы не в курсе, что существует вот это :
http://1c.1c-bitrix.ru/intranet/download.php
Там готовые модули, в частности для УТ 11.1 есть.
Выгружаются организации, контрагенты, контактные лица партнеров, реализации....
Но плюс поставлю, т.к. метод реализован другой.
5. script 190 10.01.17 18:52 Сейчас в теме
(3) И не только смотрели, но и внедрили. Только когда внедрили, то оказалось что это полная ерунда.
Выгружает
Из 1С контрагенты в Б24 в клиенты
Из 1С конт. лица в Б24 в контакты
Из 1С все (любые) документы в Б24 в Дела
И все.

А внутри просто шлак. Запросы к базе через две точки.
Обращение к несуществующим полям в справочниках из-за которых все это сразу вываливается в ошибки.
Пишешь на поддержку - тебе дают 1С-ника, который лезет в запросы. Начинает там начинает ограничивать поля неограниченной длины - при тебе.
А сам модуль добавляет столько мусора, столько лишних объектов, что только из-за этого уже начинаешь жалеть что связался с ним.
VachKirp; Aquashop; Starec_I; +3 Ответить
12. Alister 9 24.04.17 20:01 Сейчас в теме
(5) еще замечательная поддержка, которая долго ищет какой релиз какой редакции УТ 11 минимально нужен для работы с Б24, а потом не могут объяснить какой же модуль используется для интеграции с УТ - трекер или модуль обмена с сайтом и чем они отличаются.
38. amd1986 07.11.17 13:08 Сейчас в теме
(5) только по ходу не поняли, что это и как это работает. Иначе бы не городили бы новое приложение, а использовали уже готовый для 1С трекера. Не говоря о том, что трекер смотрели старой версии.
Запросы к базе через две точки.
Всякое может быть, не спорю. Если бы делали наиболее оптимальные запросы , то такие как вы еще сильнее взвыли бы.
Обращение к несуществующим полям в справочниках из-за которых все это сразу вываливается в ошибки.
Может не читали для какого релиза этот модуль? Ну как всегда, виноваты все, кроме вас..
Начинает там начинает ограничивать поля неограниченной длины - при тебе
И что хотели сказать?
А сам модуль добавляет столько мусора, столько лишних объектов, что только из-за этого уже начинаешь жалеть что связался с ним.
Может потому что это универсальный модуль,а не только под вас?

Да, судя по реализации - опрятно написано, но малофункционально.
39. user662672_explorer2000 114 07.11.17 13:42 Сейчас в теме
(38) Уважаемый, это по сути инструмент, а не законченный функционал. Синхронизация контактов одно из применений. Подставьте методы работы с лидами, сделками и т.д., оберните логикой и получите нужный функционал. Это не универсальное решение и для применения требует программирования.
40. amd1986 08.11.17 15:33 Сейчас в теме
(39) да это все понятно. Пост был адресован не вам.
4. user662672_explorer2000 114 10.01.17 14:39 Сейчас в теме
Тут неверно я указал привязку к УТ. Данный код можно использовать в любой конфигурации, даже под которую нет готовых модулей. Да и функционал можно реализовать какой угодно, т.к. доступен любой метод REST API
6. script 190 11.01.17 03:28 Сейчас в теме
И еще один вопрос.
Это доступ через REST API работает и на облачной версии или только в коробке?
8. kuntashov 360 12.01.17 17:25 Сейчас в теме
(6) Все нововведения у Б24 сначала в облаке. В коробке REST API добавили совсем-совсем недавно.
7. user662672_explorer2000 114 11.01.17 06:32 Сейчас в теме
На облачной работает точно, проверялось на ней. С коробочной не проверял, ее просто нет.
9. alprk 13.01.17 10:15 Сейчас в теме
Спасибо что поделились, как раз собирались городить свои костыли к Б24))
10. alprk 13.01.17 10:36 Сейчас в теме
Удивило что вы сделали авторизацию по логину и паролю. Почему бы не получить токен единожды, регулярно его обновляя?
Хотя конечно определенные плюсы в этом есть, особенно если вызовы нерегулярные. Я например даже не думал что оно даст авторизоваться по Basic, даже через curl проверил сейчас что оно работает, но вдруг перестанет (в документации ведь об этом ни слова).
11. user662672_explorer2000 114 13.01.17 12:20 Сейчас в теме
(10) Я вроде бы так и хотел сделать) Первоначально по логину и пароль получаю AccessToken и RefreshToken. Далее если время жизни токена истекло, уже обновляю его.
13. user755384 20.05.17 00:17 Сейчас в теме
Большое спасибо за статью! Очень помогла. Если знаете, подскажите, пожалуйста, в каком виде параметры (СтрПараметров) передавать в функцию для добавления товарных позиций к сделке. (crm.deal.producrows.set). Передаю
СтрПараметров = "id="+ИДСделки+
"&rows[PRODUCT_ID]="+ИдТовара+
"&rows[PRICE]="+"100"+
"&rows[QUANTITY]=1";
Ошибки не выдает, но и товары не добавляет.
14. user662672_explorer2000 114 22.05.17 06:47 Сейчас в теме
Вам нужно переделать передачу параметров вот так:

СтрПараметров = "id="+ИДСделки+

"&rows[0][PRODUCT_ID]="+ИдТовара1+
"&rows[0][PRICE]="+"100"+
"&rows[0][QUANTITY]=1"+

"&rows[1][PRODUCT_ID]="+ИдТовара2+
"&rows[1][PRICE]="+"500"+
"&rows[1][QUANTITY]=5";

Рез = ОтправитьRESTЗапрос("crm.deal.productrows.set", СтрПараметров, "");
15. dimasts 24 02.06.17 19:22 Сейчас в теме
Если авторизоваться по токену а не по логину и паролю, получится [ASSIGNED_BY_ID] правильно передавать??? Кто нибудь пробовал?

Просто это то, ради чего мы затеваем всю интеграцию :)
16. user662672_explorer2000 114 05.06.17 08:39 Сейчас в теме
Первоначальная регистрация по логину\паролю. Вы получаете токен время жизни которого ограничено. По истечении этого времени Вы обновляете токен без использования логина\пароля. Нужен старый токен, client_id и client_secret. Посмотрите процедуру ПроверитьТокен(). ASSIGNED_BY_ID присваивается автоматом. По идее его и в параметрах можно передавать, но у меня всегда ответственный тот, под кем я залогинился. Возможно нужны администраторские права. Точно не знаю.
mila_nikolaeva; dimasts; +2 Ответить
17. dimasts 24 30.06.17 07:42 Сейчас в теме
ASSIGNED_BY_ID сделал равным 2
Контакт создался с ответственным с чужого портала!
Чё так правда можно?!
NewLifeMan; +1 Ответить
18. dimasts 24 09.07.17 09:27 Сейчас в теме
В названии надо использовать слово «Забираем», а не «Передаём», так как передать из Битрикс24 что либо в 1с ни фига не просто. Создать http-сервис и зарегистрировать обработчик события в Битрикс24 дело не хитрое. А вот как заставить эти события срабатывать и переходить по запросам, которые к ним привязаны? Причём этот запрос в браузере работает как часы. а тут ещё Заговор
19. dimasts 24 09.07.17 15:11 Сейчас в теме
(18)Причина была в том что в 1с метод был установлен GET. Лучше сначала устанавливать Любой, чтобы проверить, а потом уже определяться с каким работать.
24. wiseowl 17.10.17 10:48 Сейчас в теме
(19) посмотрите, пожалуйста, мой вопрос ниже, может быть вы сможете мне помочь...
20. user662672_explorer2000 114 10.07.17 07:47 Сейчас в теме
(18) Контакты все же мы передаем (экспортируем или назовите как хотите, сути не меняет) из 1С в Битрикс24. О чем Вы пишите не тема статьи. Хотите забирать информацию из Битрикс24? Делайте аналогично, забирайте контакты с фильтром по незаполненности ORIGIN_ID например. При записи контакта в 1С пишите его GUID в ORIGIN_ID
21. bytecoded 25 25.08.17 16:08 Сейчас в теме
А с локализациями не пробовали работать? Пробую создавать валюты, одна не удается задать локализацию — если задавать через параметр LANG при вызове currrency.add, то ругается на пустое поле Format (которого в перечне полей локализации вообще нет). Если уже после создания валюты вызвать currency.localizations.set — ошибок нет, но и данные валюты, касающиеся локализаций, никак не изменяются.
22. Milanick 03.09.17 15:19 Сейчас в теме
23. wiseowl 17.10.17 10:42 Сейчас в теме
Делала по вашему примеру. Мне нужно почти тоже самое, только токен необходимо получить для power BI и данные отправлять туда.

Пишу get запрос (текст ниже), при использовании защищенного сертификата не происходит перенаправление по ссылке, которая указана в redirect_uri, если использовать http, то происходит постоянное перенаправление на тот же адрес, но уже с https соединением.
При проверке в браузере, перенаправление происходит и все нормально. Как можно решить эту проблему?

При перенаправлении на office.com я должна в строке получить параметр "code", который потом хочу использовать для получения токена приложения.
В Set-Cookie есть такое поле как "buid" это одно и тоже? Если да, то в принципе я могу использовать его в качестве кода авторизации, но проблему с перенаправлением все равно надо как то решить, так как при получении токена с запросом тоже самое, редирект не происходит...

Адрес="login.microsoftonline.com";
АдресРесурса="&response_mode=query&response_type=code&redire­­ct_uri=https%3A%2F%2Fwww.office.com%2F&nux=1&msafed=0";
client_id="3bf6d724-6dae-4177-a437-cd1e20619bd8";
//Если НЕ (AccessToken = "" ИЛИ RefreshToken = "" ИЛИ RefreshTime = Дата(1, 1, 1)) Тогда
//        
//        Возврат;
//        
//    КонецЕсли;

     
    ssl = Новый ЗащищенноеСоединениеOpenSSL();
                //Новый СертификатКлиентаWindows(
                // СпособВыбораСертификатаWindows.Выбирать),
                //Новый СертификатыУдостоверяющихЦентровWindows());   
                         
    Соединение = Новый HTTPСоединение(
                            Адрес, //"хххххх.bitrix24.ru",
                            , // порт
                            , // пользователь
                            , // пароль
                            , // прокси
                            , // таймаут в секундах
                           ssl  // защищенное HTTPS соединение
                        );
                        
                        
    //Заголовки = Новый Соответствие;
    
    Запрос = Новый HTTPЗапрос("/common/OAuth2/Authorize?client_id=" + client_id + АдресРесурса);                    
    Ответ = Соединение.Получить(Запрос);
    
     Сообщить (Ответ.КодСостояния);      
    АдресРесурса = Ответ.Заголовки.Получить("Location");
    Сообщить (АдресРесурса);
Показать
25. MakarkinPRO 28.10.17 16:46 Сейчас в теме
А есть наоборот из Битрикс24 в 1С, чтобы Битрикс24 (компании контакты) была материнская система.
28. user662672_explorer2000 114 30.10.17 14:07 Сейчас в теме
(25) Есть приложение, которое импортирует сделки в 1С. В периодическом задании запускается процедура, которая через функцию crm.deal.list получает ID сделок, у которых ORIGIN_ID не заполнено. По каждой сделке в 1С создается заказ, GUID заказа записывается в ORIGIN_ID лида. Точно так же по клиентам и контактам. Это по новым, а вот как отреагировать на изменение сделок вопрос. Нужно подписаться на событие, но URL не указать никакой, чисто средствами 1С не обойтись
33. MakarkinPRO 30.10.17 21:04 Сейчас в теме
34. user662672_explorer2000 114 30.10.17 21:19 Сейчас в теме
(33) Я немного наврал, клиент захотел лиды из Битрикс24 трансформировать в клиентские заказы в УТ. Т.е. ни сделки и ни счета. Давненько было..
26. Milanick 28.10.17 18:35 Сейчас в теме
А как в REST API обходится вывод больше 50 ?

Например ,хочу получить список пользователей, а там больше 50 пользователей не выводит :(. А у меня их больше 200 :(
29. user662672_explorer2000 114 30.10.17 14:12 Сейчас в теме
(26) Из документации: Списочные методы возвращают данные страницами по 50 элементов (число может изменяться). Для получения следующей страницы данных к запросу нужно добавить параметр start со значением, пришедшем в параметре next ответа. Ссылка https://dev.1c-bitrix.ru/rest_help/rest_sum/index.php
27. salex2002 29.10.17 15:52 Сейчас в теме
Почему-то по стандартной схеме не могу модифицировать сделку crm.deal.update

Результат = ОтправитьRESTЗапросPOST("crm.deal.update", "id="+ИДКлиента+"&fields[TITLE]="+Выборка.Представление,"")



возвращает Неопределено.
30. user662672_explorer2000 114 30.10.17 14:18 Сейчас в теме
(27) Сложно что-то сказать, возможна ошибка при получении токена. Зайдите
отладчиком в ОтправитьRESTЗапросPOST
31. salex2002 30.10.17 17:06 Сейчас в теме
(30)
Да другие методы работают через ОтправитьRESTЗапросPOST, тот же crm.deal.add. Используется ваша обработка 685093. Может в самом портале что-то включить. Пока его в базовом бесплатном варианте использую для тестов.
32. salex2002 30.10.17 17:23 Сейчас в теме
(31) Включил демо-режим "Компания" - заработал crm.deal.update
35. TSRh 01.11.17 18:27 Сейчас в теме
Здравствуйте всем!

oauth/token/?grant_type=authorization_code
&client_id=local.59f9cc5662a690.43624909
&client_secret=PA5VfcmiEtE8rzkzJupvo0OX468IDPBvuZGTfYaFs3Oae­XMCOs
&code=8za5opd5bvd6hoynktv351l4zuzn0du2

КодСостояния: 400
Тело: {"error":"invalid_client1"}

В чём может быть проблема ?
36. isaev2016 02.11.17 12:03 Сейчас в теме
Справился ли кто с crm.activity.list и "COMMUNICATIONS" ? Не могу ни прочитать, ни установить правильно. Пока веду активную переписку с ТП Битрикс24
37. TSRh 02.11.17 17:48 Сейчас в теме
Мой вопрос снимается, была ошибка в тексте
41. user880839 15.12.17 11:53 Сейчас в теме
Немного припозднился к разговору. Заведение нового Клиента получилось сразу. Спасибо! А вот с чтением данных из Bitrixa проблема. Хочу получить Контакт по методу crm.contact.get, а вот как задать ID в параметрах ни как не догоню... Ругается на то, что параметр вообще не задан. "ID is not defined or invalid."
74. Mva_72 21.05.18 17:57 Сейчас в теме
(41)
А подскажите, пожалуйста,как вы передали id?
75. user662672_explorer2000 114 22.05.18 07:56 Сейчас в теме
(74) разве вот так ОтправитьRESTЗапрос("crm.contact.get", "id=12345", ""); не работает?
76. Mva_72 22.05.18 10:58 Сейчас в теме
42. user880839 15.12.17 13:07 Сейчас в теме
Результат получил (нельзя пробелы указывать при задании параметров), но все значения в полях указаны отдельно по буквам. Сейчас посмотрю, что можно сделать.
43. user880839 15.12.17 15:12 Сейчас в теме
Преодолеть последствия экранирования (замены русских букв) в ответе на запрос помогла функция

Функция УТФвСтроку(ВхСтр)
ВыхСтр="";
поз=1;
Пока поз<СтрДлина(ВхСтр) Цикл
симв=Сред(ВхСтр,поз,1);
Если симв="\" И Сред(ВхСтр,поз+1,1)="u" Тогда
поз=поз+2;
Вес=4096;
ВыхКод=0;
Для п=0 По 3 Цикл
кодСимв=КодСимвола(ВхСтр,поз+п);
Если кодСимв>96 Тогда // a-f
кодСимв=кодСимв-87;
ИначеЕсли кодСимв>64 Тогда // A-F
кодСимв=кодСимв-55;
Иначе
кодСимв=кодСимв-48; // 0-9
КонецЕсли;
ВыхКод=ВыхКод+кодСимв*Вес;
Вес=Вес/16;
КонецЦикла;
ВыхСтр=ВыхСтр+Символ(ВыхКод);
поз=поз+4;
Иначе
ВыхСтр=ВыхСтр+симв;
поз=поз+1;
КонецЕсли;
КонецЦикла;
Возврат ВыхСтр;
КонецФункции

Спасибо добрым людям.

Но это я похоже сам с собой сегодня на форуме разговариваю...
44. user662672_explorer2000 114 18.12.17 07:36 Сейчас в теме
Добрый день!

ПрочитатьJSON не выполняет эту же конвертацию? Не было проблем с получением текста на кириллице
45. ikekoval 82 21.12.17 15:04 Сейчас в теме
(0) Автор, Спасибо за статью! Очень помогла, когда писал выгрузку компаний. Столкнулся с проблемой скудности описания данных в https://dev.1c-bitrix.ru/rest_help
Метод "crm.company.add". Не могу передать адрес компании. Во 1х данные не сохраняются в нужных полях, во 2х не понимаю где они должны отображаться. При запросе "crm.company.get(id)" поля есть, но они пустые.
Метод "crm.company.update". Телефон, почта не затираются, а создаются дополнительные с теми же данными (дубль). Параметр "fields" одинаковый для обоих методов и ниже живой пример. Что делаю не так? Пробовал адрес исполнить как массив, хоть судя по описанию полей он не множественный через &fields[ADDRESS][0][VALUE]=123022

fields[TITLE]=ООО "Рога-Копыта"&fields[COMPANY_TYPE]=Клиент&fields[ADDRESS]=123022, Москва г, Звенигородская 2-я ул, дом № 13, строение 37&fields[ADDRESS_CITY]=Москва г&fields[ADDRESS_COUNTRY_CODE]=643&fields[ADDRESS_COUNTRY]=Российская Федерация&fields[ADDRESS_POSTAL_CODE]=123022&fields[PHONE][0][VALUE_TYPE]=WORK&fields[PHONE][0][VALUE]=+7 (495) 999-11-22

"во 2х не понимаю где они должны отображаться" - к таблицам company может пристегиваться таблица "crm.requisite". На каком-то этапе после записи компании я добавлял к ней запись об организации, но в интерфейсе эти данные я видел только в окне редактирования и с адресами там тоже не срослось, а добавлять всё нужное через пользовательские поля не решился.
46. user662672_explorer2000 114 26.12.17 08:11 Сейчас в теме
Добрый день! телефон для контакта добавляю\обновляю например так "....&fields[PHONE][0][VALUE_TYPE]=WORK&fields[PHONE][0][VALUE]=+71111111111....", работает ...
47. isaev2016 27.12.17 04:38 Сейчас в теме
Сегодня авторизация отвалилась, пока нашел что вместо 302 возвращает состояние 200..
48. user662672_explorer2000 114 28.12.17 08:32 Сейчас в теме
(47) такое впечатление, что 26-го вечером что-то было, работающие закачки вываливались в неожиданных местах. Все восстановилось, даже не успел толком разобраться, с 27-го точно уже все работает
49. baracuda 3 20.02.18 22:51 Сейчас в теме
Автору лайк. Можно в личку пару вопросиков. Сейчас курю интеграцию самописной конфы с битриксом...
50. user662672_explorer2000 114 21.02.18 06:39 Сейчас в теме
Добрый день! Конечно пишите, постараюсь ответить
51. pbabincev 95 22.02.18 14:50 Сейчас в теме
Добрый день.
Спасибо за статью, думаю, что многим она пригодилась, в том числе и мне.

Опишу как в итоге сделал я. Ключевое - то, что я использовал веб-хуки и для формирования тела запроса использовал штатную сериализацию JSON.
Надеюсь, кому-нибудь пригодится.


Например, для добавления поста в живую ленту мне же:


Функция ТестПостВЖивуюЛенту() Экспорт 
	
	ПараметрыЗапроса = Новый Структура;
	
	
	
	Метод = "log.blogpost.add";
	
	SPERM_U = Новый Массив;
	SPERM_U.Добавить("U254"); // это ID пользователя, которому дать доступ читать этот пост
	
	ПараметрыЗапроса.Вставить("POST_MESSAGE", 	"Hello, World!");
	ПараметрыЗапроса.Вставить("POST_TITLE", 	"title - 3");
	ПараметрыЗапроса.Вставить("SPERM", 			Новый Структура("U", SPERM_U));
	
	
	ПараметрыЗапроса = СериализоватьВJSON(ПараметрыЗапроса);
	
	Возврат ВыполнитьЗапрос(Метод, ПараметрыЗапроса);
	
КонецФункции

Функция ВыполнитьЗапрос(Метод, Знач ПараметрыЗапроса)

	АдресСервера = "mycompany.bitrix24.ru";
	АдресРесурса = "/rest/254/xxxxxxxxxx/" + Метод + ".json"; // тут "254" - пользователь, от имени которого опубликован веб-хук; "xxxxxxxxxx" - сам веб-хук
	
	
	Попытка
		HTTPСоединение = Новый HTTPСоединение(АдресСервера, 443, , , , , Новый ЗащищенноеСоединениеOpenSSL); // соединяемся по https
	Исключение
		Возврат ОписаниеОшибки();
	КонецПопытки;
	
	
	
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("Accept-Language", "ru");
	Заголовки.Вставить("Accept-Charset", "utf-8");
	Заголовки.Вставить("Content-Language", "ru");
	Заголовки.Вставить("Content-Charset", "utf-8");
	Заголовки.Вставить("Content-type", "application/json"); // тут обозначаем, что "общаемся" через JSON
	
	HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, Заголовки);
	HTTPЗапрос.УстановитьТелоИзСтроки(ПараметрыЗапроса);
	
	
	HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
	
	
	ТелоОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
	
	
	Строка = ДесериализоватьИзJSON(ТелоОтвета);
	
	Возврат HTTPОтвет.КодСостояния;
	
КонецФункции

Функция СериализоватьВJSON(ПараметрыЗапроса)
	
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, , ));
	ЗаписатьJSON(ЗаписьJSON, ПараметрыЗапроса);
	
	ПараметрыJSON = ЗаписьJSON.Закрыть();
	
	Возврат ПараметрыJSON;

КонецФункции

Функция ДесериализоватьИзJSON(СтрокаJSON)
	
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
	Строка = ПрочитатьJSON(ЧтениеJSON);
	
	Возврат Строка;
	
	
КонецФункции

Показать


Как мы видим, всё просто и логично :-)
52. amd1986 12.03.18 20:04 Сейчас в теме
(51) У вас все просто до того момента, пока не наткнетесь в ограничение в 2 запроса в секунду.
53. pbabincev 95 13.03.18 21:55 Сейчас в теме
(52)
Это ограничение продиктовано вэбхуком?
54. amd1986 14.03.18 11:43 Сейчас в теме
(53) Нет, нагрузкой на Б24. Нужно передавать пакетами по 50 элементов.
55. Milanick 15.03.18 08:40 Сейчас в теме
Ребята помогите пожалуйста с такой ерундой как Универсальные списки.
Есть примеры работы с ними через rest api ?
56. harmless 09.04.18 13:57 Сейчас в теме
Подскажите как сформировать тело POST запроса для передачи не одного, а массива контактов. Такое возможно?
57. user662672_explorer2000 114 10.04.18 07:54 Сейчас в теме
(56) на мой взгляд такое нельзя, crm.contact.add хоть через GET, хоть через POST подразумевает передачу одного контакта
58. amd1986 10.04.18 18:45 Сейчас в теме
(56)Можно через batch запрос. Пример посмотреть, как реализовано, можно в новом модуле синхронизации от Битрикса
harmless; +1 Ответить
59. user662672_explorer2000 114 11.04.18 09:17 Сейчас в теме
60. kobal 11.04.18 14:02 Сейчас в теме
Всем привет.
Озадачился вопросом слива Задач из Б24 в 1С для выстраивания очереди выполнения задач.
Приоритетность будет строиться исходя из данных о клиентах в 1Ске (важность, срочность и тд)
Прочитав ленту понимаю, что есть проблема слива обновленных задач (перенесли дату, ответственного и т.д.)
Но на первом этапе стоит задача просто слить все задачи в 1Ску.
Кто может поделиться кодом?
Спасибо.
61. amd1986 11.04.18 15:28 Сейчас в теме
(60) Используйте новый механизм регистрации изменений. Если для задач есть событий(при добавлении/обновлении задачи), тогда взлетит.
62. pbabincev 95 16.04.18 12:03 Сейчас в теме
(61)
Александр, можете уточнить - вы имеете в виду то, что в Б24 появился механизм регистрации изменений? Давно он там есть?
Спасибо.
63. amd1986 16.04.18 19:30 Сейчас в теме
(62)Примерно месяц - полтора. С выходом нового модуля синхронизации в режиме реального времени.
Смысл логики такой:
1) Цепляем офлайн события на нужные типы данных в Б24.
2) Когда зацепленное событие выполняется, то записывается инфа о событии и ид элемента в спец таблицу.
3) HTTP запросом С получаем данные из этой таблицы и обрабатываем.

Также реализован спец метод push&pull сервера, который сразу сообщает, что появилось хоть одно новое офлайн событие(ну это для реал тайм).

Это все в кратце. Частично дока уже есть тут: https://dev.1c-bitrix.ru/rest_help/general/events_method/index.php
Но там мизер. По событиям(которые были реализованы почти для всех сущностей CRM) пока только в модуле синхронизации.


Т.е. можно получить только изменения(например только новые и измененные компании/контакты), а не все данные. А возможность узнать об изменении сразу - дает возможность реализации реал тайм обмена.
pbabincev; +1 Ответить
66. pbabincev 95 17.04.18 17:27 Сейчас в теме
67. kobal 18.04.18 09:40 Сейчас в теме
(61) Спасибо за подсказку.
Я решил попробовать просто сливать задачи по реквизиту CHANGED_DATE - дата последнего изменения;
Тут скачал пример по созданию задачи и сливу ее по ID.
Но чтобы получит список по фильтру надо применять метод task.item.list

В параметры нужно передавать 1= (ORDER) Массив для сортировки, 2= (FILTER) фильтр, 3= (PARAMS) Массив для опций вызова, 4= (SELECT) Массив полей записей. Дока тут https://dev.1c-bitrix.ru/rest_help/tasks/task/item/list.php


и вот проблема никак не могу его заполнить параметрами.
Что удалось нарыть.
Пример кода.
1) Запрос = Новый HTTPЗапрос("rest/" + RESTЗапрос + "?auth=" + AccessToken + "&" + Параметры, Заголовки);
Выдает 50 задач.
2) если заполнить параметры
СтрПараметров = fields[CREATED_DATE]=" + "asc"; //desc
Выдает 50 первых или 50 последний с сортировкой по дате создания.
Видимо я устанавливают параметр 1 ORDER,
как установить параметр 2 FILTER (отборы) никак не могу разобраться.
Кто знает подскажите!
СПАСИБО!
68. user662672_explorer2000 114 18.04.18 10:40 Сейчас в теме
(67) Если пользоваться процедурами из статьи, то например так

Ответ = ОтправитьRESTЗапрос("task.item.list", "order[]=&filter[RESPONSIBLE_ID]=46&filter[!REAL_STATUS]=5¶ms[]=&select[]=", "");


Запрос получает не выполненные задачи по ответственному с ИД=46

Это работает, проверено
69. user662672_explorer2000 114 18.04.18 10:45 Сейчас в теме
(68) какой-то глюк, почему-то вместо & и слитно params[] вставляет ¶ms[]
70. kobal 18.04.18 11:55 Сейчас в теме
(68) Спасибо огромное! Заработало.
Я лично убил на изучение и поиск проблему часа 3-4 :)
Как могу отблагодарить?
64. script 190 17.04.18 12:24 Сейчас в теме
Т.е. можно получить только изменения(например только новые и измененные компании/контакты), а не все данные. А возможность узнать об изменении сразу - дает возможность реализации реал тайм обмена.


Ну так это уже совсем другое дело.

Скажите пожалуйста, кто уже хорошо покопался, я так понял что некоторые манипуляции данными в Б24 из 1С можно сделать только в платных тарифах Б24.

В частности интересует обмен Сделки-Заказы + статусы, Компании - Контрагенты, и товарами
65. user662672_explorer2000 114 17.04.18 12:49 Сейчас в теме
(64) Все перечисленное будет работать и на бесплатном тарифе. Думаю, если есть доступ через интерфейс, то и через API будет работать. С ограничениями еще не сталкивался...
71. amd1986 18.04.18 12:17 Сейчас в теме
(65)Регистрация изменений, в полном объеме, на бесплатном тарифе работать не будет.
72. yaneev 39 25.04.18 20:19 Сейчас в теме
кто-нибудь обновлял EMAIL или PHONE в Контактах?

делаю так:
============================================================­===============
Параметры = "id="+_Б24_Contact_ID
+ ?(НЕ ПустаяСтрока(тСтр.Телефон) ,"&fields[PHONE][0][VALUE_TYPE]=WORK&fields[PHONE][0][VALUE]=" + тСтр.Телефон,"")
+ ?(НЕ ПустаяСтрока(тСтр.Емейл) ,"&fields[EMAIL][0][VALUE_TYPE]=WORK&fields[EMAIL][0][VALUE]=" + тСтр.Емейл,"");

СтрокаJSON = ОтправитьAPIЗапрос(Б24, "crm.contact.update", Параметры, "", Заголовки, Соединение);
Ответ = ДесериализоватьИзJSON(СтрокаJSON);
============================================================­===============
а Б24 вместо обновления, добавляет новый телефон и мейл.

Как надо сформулировать запрос, чтобы в Б24 обновлялась первая строка EMAIL и PHONE?
73. user662672_explorer2000 114 26.04.18 09:30 Сейчас в теме
Добрый день!

кусочек кода как обновляю контакт с телефоном


?(СтруктураПараметров.Свойство("Телефон"), "&fields[PHONE][0][ID]=" + ИДТелефона + "&fields[PHONE][0][VALUE_TYPE]=WORK&fields[PHONE][0][VALUE]=" + СтруктураПараметров.Телефон 
		


ИДТелефона из массива PHONE когда получаю контакт по crm.contact.get


Хотя коллеги уже это описали здесь https://dev.1c-bitrix.ru/rest_help/crm/contacts/crm_contact_get.php. Смотрите пользовательский комментарий.
77. uinx 94 01.06.18 10:58 Сейчас в теме
Добрый вечер!
Коллеги, подскажите что такое "AccessToken и RefreshToken" - как их получить?
78. user662672_explorer2000 114 01.06.18 11:29 Сейчас в теме
AccessToken - некий ID который получается при подключении к Битрикс24, он должен в дальнейшем передаваться при каждом обращении к API. Время действия ограничено. Когда время действия AccessToken истекает, его необходимо получить заново. При помощи RefreshToken, который так же получается при регистрации. Как получить в статье есть пример кода и в обработке из вложения.
79. novatrade 05.06.18 10:19 Сейчас в теме
Я бы строку
				ВызватьИсключение "Ошибка при получении access_token"; 

заменил бы на:
		ПодключитьсяКБитрикс();
		Возврат;

в процедуре проверки токена. Столкнулся с этим.
Оставьте свое сообщение

Вакансии

Менеджер по продажам проектов 1С
Санкт-Петербург
Полный день

Бизнес-аналитик 1С
Санкт-Петербург
зарплата от 70 000 руб. до 90 000 руб.
Полный день

Консультант-аналитик 1С
Санкт-Петербург
зарплата от 50 000 руб. до 65 000 руб.
Полный день

Консультант по внедрению 1С
Новосибирск
Полный день

Программист 1С
Новокузнецк
зарплата от 55 000 руб.
Полный день