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

09.01.17

Интеграция - Внешние источники данных

Хочу поделиться опытом использования Битрикс24 REST API для экспорта контактов из 1С УТ 11

Первым делом регистрирую свое приложение в Битрикс24. Это нужно для получения client_id и client_secret.  Эти коды используются при авторизации.

Необходимо дать приложению требуемые права и поставить отметку "Приложение использует только API"

Ссылка на приложение может быть любая, в дальнейшем это не нужно.

Теперь подключаемся к Битрикс24

Процедура ПодключитьсяКБитрикс()

	Если НЕ (AccessToken = "" ИЛИ RefreshToken = "" ИЛИ RefreshTime = Дата(1, 1, 1)) Тогда
		
		Возврат;
		
	КонецЕсли;

 	
	ssl = Новый ЗащищенноеСоединениеOpenSSL(
                Новый СертификатКлиентаWindows(
                                СпособВыбораСертификатаWindows.Выбирать),
                Новый СертификатыУдостоверяющихЦентровWindows());   
                         
	Соединение = Новый HTTPСоединение(
                            АдресБитрикс24, //"хххххх.bitrix24.ru",
							, // порт
							"user@mail.ru", // пользователь
							"123456", // пароль
							, // прокси
                            5, // таймаут в секундах
                            ssl // защищенное HTTPS соединение
                        );
						
						
	Заголовки = Новый Соответствие;
	
	Запрос = Новый HTTPЗапрос("oauth/authorize/?client_id=" + <strong>client_id</strong>, Заголовки);					
	Ответ = Соединение.Получить(Запрос);
	
	
	// если нас переадрессовали
	Если Ответ.КодСостояния = 302 Тогда
		
		//в Location взять code
		
		Параметры = ПолучитьПараметрыИзGetСтроки(Ответ.Заголовки.Получить("Location"));
		Cookie = Ответ.Заголовки.Получить("Set-Cookie");
		Код = Неопределено;
		
		
		Если Параметры.Свойство("code", Код) Тогда
			
			// используя Код получаем access_token и refresh_token
			
			Соединение = Новый HTTPСоединение(
                            "oauth.bitrix.info",
							, // порт
							, // пользователь
							, // пароль
							, // прокси
                            5, // таймаут в секундах
                            ssl // защищенное HTTPS соединение
                        );
						
			Запрос.АдресРесурса	= "oauth/token" + ПараметрыАвторизацииВСтроке(Код);	
			Запрос.Заголовки.Вставить("Cookie", Cookie);
			
			
			Ответ = Соединение.Получить(Запрос);
			
			
			Если Ответ.КодСостояния <> 200 Тогда
				
				ВызватьИсключение "Ошибка при получении access_token"; 
				
			Иначе
				
				// разобрать полученный json
				json = Ответ.ПолучитьТелоКакСтроку();
				
				
				Чтение = Новый ЧтениеJSON;
				Чтение.УстановитьСтроку(json);
				ОтветСтруктура = ПрочитатьJSON(Чтение);
				
				// сохраняю параметры подключения
				AccessToken  = ОтветСтруктура.access_token;
				RefreshToken = ОтветСтруктура.refresh_token;
				RefreshTime  = ТекущаяДата() + ОтветСтруктура.expires_in;
				
			
			КонецЕсли;
			
			
			
		Иначе
			
			ВызватьИсключение "Ошибка при подключении, нет параметра code";
			
		КонецЕсли;
		
		
	КонецЕсли;

КонецПроцедуры

Функция ПараметрыАвторизацииВСтроке(Код)
	
	// собрать параметры в строку Get запроса
	Возврат "/?" + "grant_type=authorization_code" + "&" + 
		"client_id=" + client_id + "&" + 
		"client_secret=" + client_secret + "&" + 
		"code=" + Код;
		
КонецФункции

client_id и client_secret получили при регистрации приложения в Битрикс24.

Функция "ПолучитьПараметрыИзGetСтроки" из строки вида адрес?параметр1=значение1&параметр2=значение2 возвращает структуру, где ключ = параметр, а значение = значение

Теперь пробуем добавить контакт

СтрПараметров =  "fields[NAME]=" + Имя + "&fields[SECOND_NAME]=" + Отчество + "&fields[LAST_NAME]=" + Фамилия +
		"&fields[ADDRESS_CITY]=" + СтруктураПараметров.Город + 
		"&fields[COMMENTS]=" + СтруктураПараметров.Вашвиддеятельности + 
		"&fields[EMAIL][0][VALUE_TYPE]=WORK&fields[EMAIL][0][VALUE]=" + СтруктураПараметров.Email +
		"&fields[ASSIGNED_BY_ID]=" +  ОтветственныйИД + "&fields[TYPE_ID]=CLIENT" +
		"&fields[PHONE][0][VALUE_TYPE]=WORK&fields[PHONE][0][VALUE]=" + СтруктураПараметров.Телефон;
		
	
	Рез = ОтправитьRESTЗапрос("crm.contact.add", СтрПараметров, "");
	
	// смотрим что получилось

	Чтение = Новый ЧтениеJSON;
	Чтение.УстановитьСтроку(Рез);
	
	РезСтр = ПрочитатьJSON(Чтение);

	Если РезСтр.Свойство("result", ИдНовогоКонтакта)  Тогда
		
		Сообщить("Контакт добавлен!");
		
	Иначе
		
		ВызватьИсключение "Ошибка при добавлении нового контакта!";
		
	КонецЕсли;

Что делает ОтправитьRESTЗапрос:

Функция ОтправитьRESTЗапрос(RESTЗапрос, Параметры, Тело)
 	
	ПроверитьТокен();
	
	
	ssl = Новый ЗащищенноеСоединениеOpenSSL(
                Новый СертификатКлиентаWindows(
                                СпособВыбораСертификатаWindows.Выбирать),
                Новый СертификатыУдостоверяющихЦентровWindows());   
                         
	Соединение = Новый HTTPСоединение(
                            АдресБитрикс24,
							, // порт
							, // пользователь
							, // пароль
							, // прокси
                            5, // таймаут в секундах
                            ssl // защищенное HTTPS соединение
                        );
						
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("Cookie", Cookie);
	
	
	
	Если Параметры = "" Тогда
		Запрос = Новый HTTPЗапрос("rest/" + RESTЗапрос + "?auth=" + AccessToken, Заголовки);											
	Иначе
		Запрос = Новый HTTPЗапрос("rest/" + RESTЗапрос + "?auth=" + AccessToken + "&" + Параметры, Заголовки);											
	КонецЕсли;
	
	Запрос.УстановитьТелоИзСтроки(тело);
	
			
			
	Ответ = Соединение.Получить(Запрос);	

	Возврат Ответ.ПолучитьТелоКакСтроку();

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

Ну и соответственно  процедура ПроверитьТокен:

Процедура ПроверитьТокен()
 	
	// проверяю токен на валидность
	
	Если RefreshTime = Дата(1, 1, 1) Тогда
		
		ПодключитьсяКБитрикс();
		Возврат;
		
	КонецЕсли;
	
	Если  RefreshTime - 5 < ТекущаяДата() Тогда
		
			ssl = Новый ЗащищенноеСоединениеOpenSSL(
                Новый СертификатКлиентаWindows(
                                СпособВыбораСертификатаWindows.Выбирать),
                Новый СертификатыУдостоверяющихЦентровWindows());   		
		// обновить токен
			Соединение = Новый HTTPСоединение(
                            "oauth.bitrix.info",
							, // порт
							, // пользователь
							, // пароль
							, // прокси
                            5, // таймаут в секундах
                            ssl // защищенное HTTPS соединение
                        );
						
						
			Заголовки = Новый Соответствие;			
			Заголовки.Вставить("Cookie", Cookie);						
			
			Запрос = Новый HTTPЗапрос("oauth/token" + ПараметрыОбновленияВСтроке(), Заголовки);
			
			
			
			
			Ответ = Соединение.Получить(Запрос);
			
			
			Если Ответ.КодСостояния <> 200 Тогда
				
				ВызватьИсключение "Ошибка при получении access_token"; 
				
			Иначе
				
				// разобрать полученный json
				json = Ответ.ПолучитьТелоКакСтроку();
				
				Чтение = Новый ЧтениеJSON;
				Чтение.УстановитьСтроку(json);
				ОтветСтруктура = ПрочитатьJSON(Чтение);
				
				
				// сохраняю параметры подключения
				AccessToken  = ОтветСтруктура.access_token;
				RefreshToken = ОтветСтруктура.refresh_token;
				RefreshTime  = ТекущаяДата() + ОтветСтруктура.expires_in;
			
			КонецЕсли;
		
		
	КонецЕсли;

КонецПроцедуры


Функция ПараметрыОбновленияВСтроке()
	
	Возврат "/?" + "grant_type=refresh_token" + "&" + 
		"client_id=" + client_id + "&" + 
		"client_secret=" + client_secret + "&" + 
		"refresh_token=" + RefreshToken;
	
КонецФункции

Что пока не удалось сделать. Пока не удалось передавать пользовательские поля. И при создании контакта ответственным ставится пользователь, под которым залогинились. А не тот, которого указываю в fields[ASSIGNED_BY_ID].

Битрикс 24 REST API

См. также

SALE! 15%

Внешние источники данных Программист Бизнес-аналитик Пользователь Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование Конфигурации 1cv8 Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

28500 руб.

15.11.2022    20903    20    49    

38

Поиск данных Внешние источники данных Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Если вам нужно автоматически генерировать представления (view) к вашей базе данных 1С (есть две версии - для СУБД MS SQL Server и для PostgreSQL) по структуре метаданных 1С, то вам необходима данная обработка. Наш "Генератор View", другими словами - это коннектор к данным 1С для Power BI - незаменимый помощник для бизнес-аналитиков, работающих с базами 1С из Yandex Datalens/Power BI и т.д. Работает для обычных и управляемых форм под 1С 8.3

230000 руб.

31.07.2020    13815    13    48    

25

Внешние источники данных Зарплата Бюджетный учет Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 7.хх учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

48000 руб.

24.04.2017    51197    101    165    

89

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    10873    13    8    

15

Зарплата Внешние источники данных Бюджетный учет Перенос данных 1C Системный администратор Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    25173    22    1    

25

Внешние источники данных Облачные сервисы, хостинг Программист Бизнес-аналитик Пользователь Руководитель проекта Платформа 1С v8.3 8.3.14 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Бытовые услуги, сервис Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Гостиничный бизнес Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Легкая промышленность, мода и одежда Управленческий учет Платные (руб)

Расширение позволяет автоматизировать управление картами лояльности и взаимодействие с покупателями при помощи интеграции корпоративной системы 1С и специализированного облачного сервиса "CARDPR". Автоматическая онлайн синхронизация сведений о владельце электронной карты лояльности и баланса бонусных баллов на карте между корпоративной системой 1С и мобильным устройством покупателя. Оповещение покупателя об изменении баланса его электронной карты лояльности и проведении каких-либо маркетинговых акций в компании при помощи рассылки push-сообщений на его мобильное устройство.

36000 руб.

20.07.2023    3248    1    2    

11

Производство готовой продукции (работ, услуг) Внешние источники данных Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 Лесное и деревообрабатывающее хозяйство Россия Управленческий учет Платные (руб)

Обработка предназначена для загрузки файлов, выгруженных из системы Базис-мебельщик, в справочник 1С "Спецификации" для последующих процессов учета и диспетчирования полуфабрикатов и изделий.

10200 руб.

24.06.2021    20775    57    53    

35
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. script 128 09.01.17 20:07 Сейчас в теме
У меня к Вам огромная просьба. Покажите пожалуйста в какую сторону копать если нужно передавать из 1С реализации а в битрикс 24 загружать "Сделки"
2. user662672_explorer2000 228 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 217 10.01.17 14:03 Сейчас в теме
Люди, а вы не в курсе, что существует вот это :
http://1c.1c-bitrix.ru/intranet/download.php
Там готовые модули, в частности для УТ 11.1 есть.
Выгружаются организации, контрагенты, контактные лица партнеров, реализации....
Но плюс поставлю, т.к. метод реализован другой.
5. script 128 10.01.17 18:52 Сейчас в теме
(3) И не только смотрели, но и внедрили. Только когда внедрили, то оказалось что это полная ерунда.
Выгружает
Из 1С контрагенты в Б24 в клиенты
Из 1С конт. лица в Б24 в контакты
Из 1С все (любые) документы в Б24 в Дела
И все.

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

Да, судя по реализации - опрятно написано, но малофункционально.
39. user662672_explorer2000 228 07.11.17 13:42 Сейчас в теме
(38) Уважаемый, это по сути инструмент, а не законченный функционал. Синхронизация контактов одно из применений. Подставьте методы работы с лидами, сделками и т.д., оберните логикой и получите нужный функционал. Это не универсальное решение и для применения требует программирования.
40. amd1986 08.11.17 15:33 Сейчас в теме
(39) да это все понятно. Пост был адресован не вам.
ybatiaev; +1 Ответить
4. user662672_explorer2000 228 10.01.17 14:39 Сейчас в теме
Тут неверно я указал привязку к УТ. Данный код можно использовать в любой конфигурации, даже под которую нет готовых модулей. Да и функционал можно реализовать какой угодно, т.к. доступен любой метод REST API
6. script 128 11.01.17 03:28 Сейчас в теме
И еще один вопрос.
Это доступ через REST API работает и на облачной версии или только в коробке?
8. kuntashov 463 12.01.17 17:25 Сейчас в теме
(6) Все нововведения у Б24 сначала в облаке. В коробке REST API добавили совсем-совсем недавно.
7. user662672_explorer2000 228 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 228 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 228 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 22 02.06.17 19:22 Сейчас в теме
Если авторизоваться по токену а не по логину и паролю, получится [ASSIGNED_BY_ID] правильно передавать??? Кто нибудь пробовал?

Просто это то, ради чего мы затеваем всю интеграцию :)
16. user662672_explorer2000 228 05.06.17 08:39 Сейчас в теме
Первоначальная регистрация по логину\паролю. Вы получаете токен время жизни которого ограничено. По истечении этого времени Вы обновляете токен без использования логина\пароля. Нужен старый токен, client_id и client_secret. Посмотрите процедуру ПроверитьТокен(). ASSIGNED_BY_ID присваивается автоматом. По идее его и в параметрах можно передавать, но у меня всегда ответственный тот, под кем я залогинился. Возможно нужны администраторские права. Точно не знаю.
mila_nikolaeva; dimasts; +2 Ответить
17. dimasts 22 30.06.17 07:42 Сейчас в теме
ASSIGNED_BY_ID сделал равным 2
Контакт создался с ответственным с чужого портала!
Чё так правда можно?!
NewLifeMan; +1 Ответить
18. dimasts 22 09.07.17 09:27 Сейчас в теме
В названии надо использовать слово «Забираем», а не «Передаём», так как передать из Битрикс24 что либо в 1с ни фига не просто. Создать http-сервис и зарегистрировать обработчик события в Битрикс24 дело не хитрое. А вот как заставить эти события срабатывать и переходить по запросам, которые к ним привязаны? Причём этот запрос в браузере работает как часы. а тут ещё Заговор
19. dimasts 22 09.07.17 15:11 Сейчас в теме
(18)Причина была в том что в 1с метод был установлен GET. Лучше сначала устанавливать Любой, чтобы проверить, а потом уже определяться с каким работать.
24. wiseowl 17.10.17 10:48 Сейчас в теме
(19) посмотрите, пожалуйста, мой вопрос ниже, может быть вы сможете мне помочь...
20. user662672_explorer2000 228 10.07.17 07:47 Сейчас в теме
(18) Контакты все же мы передаем (экспортируем или назовите как хотите, сути не меняет) из 1С в Битрикс24. О чем Вы пишите не тема статьи. Хотите забирать информацию из Битрикс24? Делайте аналогично, забирайте контакты с фильтром по незаполненности ORIGIN_ID например. При записи контакта в 1С пишите его GUID в ORIGIN_ID
21. bytecoded 26 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 228 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 228 30.10.17 21:19 Сейчас в теме
(33) Я немного наврал, клиент захотел лиды из Битрикс24 трансформировать в клиентские заказы в УТ. Т.е. ни сделки и ни счета. Давненько было..
26. Milanick 28.10.17 18:35 Сейчас в теме
А как в REST API обходится вывод больше 50 ?

Например ,хочу получить список пользователей, а там больше 50 пользователей не выводит :(. А у меня их больше 200 :(
29. user662672_explorer2000 228 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 228 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. RIS2020 5 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. RIS2020 5 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 228 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;
КонецЕсли;
КонецЦикла;
Возврат ВыхСтр;
КонецФункции

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

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

ПрочитатьJSON не выполняет эту же конвертацию? Не было проблем с получением текста на кириллице
ivan_luzinov; +1 Ответить
45. ikekoval 123 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 228 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 228 28.12.17 08:32 Сейчас в теме
(47) такое впечатление, что 26-го вечером что-то было, работающие закачки вываливались в неожиданных местах. Все восстановилось, даже не успел толком разобраться, с 27-го точно уже все работает
49. baracuda 2 20.02.18 22:51 Сейчас в теме
Автору лайк. Можно в личку пару вопросиков. Сейчас курю интеграцию самописной конфы с битриксом...
50. user662672_explorer2000 228 21.02.18 06:39 Сейчас в теме
Добрый день! Конечно пишите, постараюсь ответить
51. pbabincev 133 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);
	
	Возврат Строка;
	
	
КонецФункции

Показать


Как мы видим, всё просто и логично :-)
primat; v0v; vladnet; Evilleo; ivan_luzinov; mikukrnet; +6 Ответить
52. amd1986 12.03.18 20:04 Сейчас в теме
(51) У вас все просто до того момента, пока не наткнетесь в ограничение в 2 запроса в секунду.
53. pbabincev 133 13.03.18 21:55 Сейчас в теме
(52)
Это ограничение продиктовано вэбхуком?
54. amd1986 14.03.18 11:43 Сейчас в теме
(53) Нет, нагрузкой на Б24. Нужно передавать пакетами по 50 элементов.
116. пользователь 15.12.20 18:18
Сообщение было скрыто модератором.
...
117. pbabincev 133 15.12.20 19:21 Сейчас в теме
(116)
sage.add". Сделали по аналогии с вашим кодом, не заработало. id точно корректный, т.к. методом crm.lead.get его пол

Добрый день! Написал в личку
120. yurazyuraz 16.12.21 15:50 Сейчас в теме
(51)
ПараметрыЗапроса.Вставить("POST_MESSAGE", "Hello, World!");


Добрый день!
а как сформировать в ленту сообщение с переносом строк ?

Например нужно написать так что бы в ленте это выглядело как

1 строка Hello
2 строка Bill
3 строка привет тебе
55. Milanick 15.03.18 08:40 Сейчас в теме
Ребята помогите пожалуйста с такой ерундой как Универсальные списки.
Есть примеры работы с ними через rest api ?
56. harmless 09.04.18 13:57 Сейчас в теме
Подскажите как сформировать тело POST запроса для передачи не одного, а массива контактов. Такое возможно?
57. user662672_explorer2000 228 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 228 11.04.18 09:17 Сейчас в теме
114. rpashkovsky 23 31.10.20 13:39 Сейчас в теме
(58) Можете, пожалуйста, дать ссылку на модуль? Не могу разобраться как при помощи batch можно обновить поля нескольких контактов.
115. amd1986 02.11.20 11:56 Сейчас в теме
(114) например вот: https://1c.1c-bitrix.ru/upload/iblock/1ae/synchronizationB24_RU_UNF.cfe
В общем модуле restApi функция отправки батч запроса
60. kobal 11.04.18 14:02 Сейчас в теме
Всем привет.
Озадачился вопросом слива Задач из Б24 в 1С для выстраивания очереди выполнения задач.
Приоритетность будет строиться исходя из данных о клиентах в 1Ске (важность, срочность и тд)
Прочитав ленту понимаю, что есть проблема слива обновленных задач (перенесли дату, ответственного и т.д.)
Но на первом этапе стоит задача просто слить все задачи в 1Ску.
Кто может поделиться кодом?
Спасибо.
61. amd1986 11.04.18 15:28 Сейчас в теме
(60) Используйте новый механизм регистрации изменений. Если для задач есть событий(при добавлении/обновлении задачи), тогда взлетит.
62. pbabincev 133 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 133 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 228 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 228 18.04.18 10:45 Сейчас в теме
(68) какой-то глюк, почему-то вместо & и слитно params[] вставляет ¶ms[]
70. kobal 18.04.18 11:55 Сейчас в теме
(68) Спасибо огромное! Заработало.
Я лично убил на изучение и поиск проблему часа 3-4 :)
Как могу отблагодарить?
64. script 128 17.04.18 12:24 Сейчас в теме
Т.е. можно получить только изменения(например только новые и измененные компании/контакты), а не все данные. А возможность узнать об изменении сразу - дает возможность реализации реал тайм обмена.


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

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

В частности интересует обмен Сделки-Заказы + статусы, Компании - Контрагенты, и товарами
65. user662672_explorer2000 228 17.04.18 12:49 Сейчас в теме
(64) Все перечисленное будет работать и на бесплатном тарифе. Думаю, если есть доступ через интерфейс, то и через API будет работать. С ограничениями еще не сталкивался...
71. amd1986 18.04.18 12:17 Сейчас в теме
(65)Регистрация изменений, в полном объеме, на бесплатном тарифе работать не будет.
72. пользователь 25.04.18 20:19
Сообщение было скрыто модератором.
...
73. user662672_explorer2000 228 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 95 01.06.18 10:58 Сейчас в теме
Добрый вечер!
Коллеги, подскажите что такое "AccessToken и RefreshToken" - как их получить?
78. user662672_explorer2000 228 01.06.18 11:29 Сейчас в теме
AccessToken - некий ID который получается при подключении к Битрикс24, он должен в дальнейшем передаваться при каждом обращении к API. Время действия ограничено. Когда время действия AccessToken истекает, его необходимо получить заново. При помощи RefreshToken, который так же получается при регистрации. Как получить в статье есть пример кода и в обработке из вложения.
ivan_luzinov; +1 Ответить
79. novatrade 05.06.18 10:19 Сейчас в теме
Я бы строку
				ВызватьИсключение "Ошибка при получении access_token"; 

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

в процедуре проверки токена. Столкнулся с этим.
80. ПрестарелыйЗаяц 02.08.18 10:32 Сейчас в теме
А есть этот пример в виде обработки у кого-нибудь ?
81. ПрестарелыйЗаяц 02.08.18 10:36 Сейчас в теме
Функция "ПолучитьПараметрыИзGetСтроки" из строки вида адрес?параметр1=значение1&параметр2=значение2 возвращает структуру, где ключ = параметр, а значение = значение

Что это за функция и где она ???
105. uno-c 265 17.10.19 14:54 Сейчас в теме
(81)
&НаСервере
Функция ПолучитьПараметрыИзGetСтроки(ГетСтрока)
	
	ТолькоПараметры = Сред(ГетСтрока, СтрНайти(ГетСтрока, "?") + 1);
	МассивПараметров = СтрРазделить(ТолькоПараметры, "&", Ложь);
	Результат = Новый Структура;
	Для каждого эл из МассивПараметров Цикл
		МассивКиЗ = СтрРазделить(эл, "="); //должны получить массив из двух элементов
		Если МассивКиЗ.Количество() <> 2 Тогда
			ВызватьИсключение("Неверная строка параметров:" + ТолькоПараметры);
		КонецЕсли;
		Результат.Вставить(МассивКиЗ[0],МассивКиЗ[1]);
	КонецЦикла;
	Возврат Результат;
	
КонецФункции
Показать
107. AbadaTouro 13 17.10.19 15:56 Сейчас в теме
(105) мой вариант
Функция ПолучитьПараметрыИзGetСтроки(СтрокаОтвета)
	КакаятоСтрока =  УТФвСтроку(СтрокаОтвета);	
	Параметры = Новый Структура;
	//ПозицияСимвола =  СтрНайти(СтрокаОтвета,"?"); 
	ПозицияСимвола =  Найти(СтрокаОтвета,"?"); 
	СтрокаОтветаНовая = Прав(СтрокаОтвета,стрДлина(СтрокаОтвета)-ПозицияСимвола);
	
	//МассивПодстрок = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СтрокаОтветаНовая,"&");
	МассивПодстрок = РазложитьСтрокуВМассивПодстрок(СтрокаОтветаНовая,"&");
	Для Индекс = 0 По МассивПодстрок.Количество() - 1 Цикл
		ЗначениеПары = МассивПодстрок[Индекс];
		//ПозицияСимвола = СтрНайти(ЗначениеПары,"=");
		ПозицияСимвола = Найти(ЗначениеПары,"=");
		Параметр = Лев(ЗначениеПары,ПозицияСимвола-1);
		ЗначениеПараметра =Прав(ЗначениеПары,СтрДлина(ЗначениеПары)-ПозицияСимвола);
		Параметры.Вставить(Параметр,ЗначениеПараметра);
		
	КонецЦикла;
	
	Возврат Параметры;
КонецФункции
Показать
82. user662672_explorer2000 228 02.08.18 13:05 Сейчас в теме
Вот здесь есть законченная обработка. Это тоже моя статья, в ней есть все функции
83. men260181 22 18.10.18 11:55 Сейчас в теме
Спасибо автору, вариант рабочий, но тормозной. Для больших объемов информации не годится к сожалению.
Milanick; +1 Ответить
84. user662672_explorer2000 228 18.10.18 12:41 Сейчас в теме
не подойдет, т.к. по одному передает. Нужно через batch, как-нибудь дойдут руки сделаю
Milanick; men260181; +2 Ответить
85. Milanick 19.10.18 22:52 Сейчас в теме
Блин, такой потенциал у инструмента , а пользоваться почти невозможно :(
86. user1073447 23.10.18 13:10 Сейчас в теме
нужна интеграция 1с и битрикс - создание обычного счета и счета/оферты в битрикс, синхронизация с 1с, отладка автоматической интеграции номенклатуры и товаров между битрикс/1с интересуют сроки и стоимость, нахождение программиста в спб обязательно!
автоматические инструменты не подойдут, есть особенности заполнения полей
87. Vladislava-smile 14.12.18 11:09 Сейчас в теме
Добрый день. Как обстоят дела через batch? Пробую так:
rest/batch.xml?auth=c671135c0031a352003001c600000001706203479f972da7baeb2d9­58790d4f5c68828&halt=0&cmd[task.item.add]=&fields[TITLE]=Проверка Битрикс&fields[DESCRIPTION]=Проверка обмена Битрикс&fields[DEADLINE]=18.12.2018 0:00:00&fields[START_DATE_PLAN]=17.12.2018 0:00:00&fields[RESPONSIBLE_ID]=1&fields[CREATED_BY]=1

ошибка ( Может знаете в чем проблема?
88. Vladislava-smile 14.01.19 10:21 Сейчас в теме
Проблема с выгрузкой задач из Б24.

Запрос:
"rest/task.item.list?auth=ТокенБ24&order[CHANGED_DATE]=asc&filter[CHANGED_DATE]>=2019-01-11T00:00:00+03:00". в ответ пустой массив, если убирать фильтр по дате изменения - сортирует и отображает. Подскажите, как работать с датой????
89. user662672_explorer2000 228 14.01.19 10:55 Сейчас в теме
попробуйте вместо filter[CHANGED_DATE]>=2019-01-11T00:00:00+03:00 вот так filter[>=CHANGED_DATE]=2019-01-11T00:00:00+03:00

Перед названием фильтруемого поля может указать тип фильтрации:
"!" - не равно
"<" - меньше
"<=" - меньше либо равно
">" - больше
">=" - больше либо равно

взял отсюда https://dev.1c-bitrix.ru/rest_help/tasks/task/item/list.php
90. Vladislava-smile 14.01.19 11:14 Сейчас в теме
(89) Да я тоже читала документацию, это код для php, а я отправляю запрос через url, и не так там это пишется, как они дают в примерах ((.
91. user662672_explorer2000 228 14.01.19 11:17 Сейчас в теме
больше или равно не проверял, но точно работает например так ....&filter[!REAL_STATUS]=5&....
92. Vladislava-smile 14.01.19 11:31 Сейчас в теме
(91) Прав, трабл был в часовом поясе ... СтрПараметров = "order[CHANGED_DATE]=asc" + "&filter[>CHANGED_DATE]=2019-01-10 16:53:00"; работает. Спасибо)
LomayaZakat; +1 Ответить
Оставьте свое сообщение