+7(960) 250-82-68 spam@mirossa.ru


  MCU         C           1С         PHP       JAVA      разное 


Скрипты
 
 

Bitrix. Сообщение с файлом в Живую Ленту. REST

<?

// сообщение в живую ленту с добавлением файла

 $queryUrl = 'https://mirossa.bitrix24.ru/rest/190/c977x8foprtdsmxy/log.blogpost.add.json';
 
$queryData = http_build_query(array(
 
     'POST_MESSAGE' => "Тест",
	 'POST_TITLE' => "Test",
	 'DEST' => array("U190"),          // 190 - это id контретного пользователя
	 //'FILES' => array('1.gif', 'R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='),
	 'FILES' => array(array('Ostap.txt', '0J7RgdGC0LDQvyDQkdC10L3QtNC10YA=') ),
 ));
 
// В итоге такая строка запроса: 
 // POST_MESSAGE=%D0%A2%D0%B5%D1%81%D1%82&POST_TITLE=Test&DEST%5B0%5D=U190&FILES%5B0%5D%5B0%5D=Ostap.txt&FILES%5B0%5D%5B1%5D=0J7RgdGC0LDQvyDQkdC10L3QtNC10YA%3D 
 // POST_MESSAGE=Тест&POST_TITLE=Test&DEST[0]=U190&FILES[0][0]=Ostap.txt&FILES[0][1]=0J7RgdGC0LDQvyDQkdC10L3QtNC10YA=
 
 $curl = curl_init();
 curl_setopt_array($curl, array(
 CURLOPT_SSL_VERIFYPEER => 0,
 CURLOPT_POST => 1,
 CURLOPT_HEADER => 0,
 CURLOPT_RETURNTRANSFER => 1,
 CURLOPT_URL => $queryUrl,
 CURLOPT_POSTFIELDS => $queryData,

 ));

 $result = curl_exec($curl);
 curl_close($curl);

  echo $result."
  
  ";
  
  $result = json_decode($result);
  
 var_dump($result);
 
 echo "
  
  "; 
  
  
 //варианты ответов:
 // {"result":620,"time":{"start":1570819847.8103471,"finish":1570819849.2287049,"duration":1.4183578491210938,"processing":1.3745460510253906,
 //"date_start":"2019-10-08T21:50:47+03:00","date_finish":"2019-10-08T21:50:49+03:00"}}
 
 //  {"error":"WRONG_ENCODING","error_description":"Wrong request encoding"}
 
?>
Сообщение в Живой Ленте

Получить список пользователей
https://dev.1c-bitrix.ru/rest_help/users/user_get.php

<?php
// список пользователей

 $queryUrl = 'https://mirossa.bitrix24.ru/rest/190/crt54fah78h/user.get.json';
  
 $queryData = "ACTIVE=true";  //фильтр
 
 $curl = curl_init();
 curl_setopt_array($curl, array(
 CURLOPT_SSL_VERIFYPEER => 0,
 CURLOPT_POST => 1,
 CURLOPT_HEADER => 0,
 CURLOPT_RETURNTRANSFER => 1,
 CURLOPT_URL => $queryUrl,
 CURLOPT_POSTFIELDS => $queryData, // '',

 ));

 $result = curl_exec($curl);
 curl_close($curl);

  echo $result;
  
  //$result = json_decode($result);
  
?>

Аналог в 1С. Сообщение с файлом в Живую Ленту. REST

Функция ОтправитьВБитриксЗавершение(ТабДок, кодПользователя)
	
	пИмяФ = КаталогВременныхФайлов() + "name.xlsx";
	
	Попытка
		ТабДок.Записать(пИмяФ, ТипФайлаТабличногоДокумента.XLSX);
		Двоичные = новый ДвоичныеДанные(пИмяФ);
	Исключение
		возврат Ложь;
	КонецПопытки;
	
	Б64 = Base64Строка(Двоичные);
	
	// при отправке запроса 1С платформа должна сама кодировать параметры запроса
	// но возникла проблема с символом "+" после кодирования в base64, который на сервере неправильно заменялся("обратно") на пробел.
	// ( "Content-Type: application/x-www-form-urlencoded" )
	// при URL-кодировании всей строки параметров "вручную" параметры вообще отваливаются (не передаются на сервер).
	// а при URL-кодировании отдельно только части в кодировке base64, чтобы заменить символ "+"
	// битрикс прочитал всё правильно. (это можно заменить на СтрЗаменить(Б64, "+", "%2B");
	
	Б64 = КодироватьСтроку(Б64, СпособКодированияСтроки.КодировкаURL);
	
	соединение = новый HTTPСоединение("mirossa.bitrix24.ru", , , , , , Новый ЗащищенноеСоединениеOpenSSL());
	 
	запрос = новый HTTPЗапрос("rest/175/df467gjkcv9/log.blogpost.add.json");
	
	запрос.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
	
	текстЗапроса = "POST_MESSAGE=Mes&POST_TITLE=Title&DEST[0]=U" + кодПользователя + 
					"&FILES[0][0]=name.xlsx" + "&FILES[0][1]=" + Б64;
					
	//текстЗапроса = КодироватьСтроку(текстЗапроса, СпособКодированияСтроки.КодировкаURL); 
	
	запрос.УстановитьТелоИзСтроки(текстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
	
	ответ = соединение.ОтправитьДляОбработки(запрос);
	текстОтвета = ответ.ПолучитьТелоКакСтроку();
	
	//  {"error":"WRONG_ENCODING","error_description":"Wrong request encoding"}
	    
	//костыль
	ч = Лев(текстОтвета, 13);
	
	Если Найти(ч, "error") <> 0 Тогда
	     возврат Ложь;
	КонецЕсли;
	
	
	возврат Истина;
КонецФункции
Процедура ПолучитьПользователейИзБитрикс()
	
	соединение = новый HTTPСоединение("mirossa.bitrix24.ru", , , , , , Новый ЗащищенноеСоединениеOpenSSL());
	
	запрос = новый HTTPЗапрос("rest/184/ejtyrg77v90989/user.get.json");
	
	текстЗапроса = "ACTIVE=true";// отбор
	                        
	
	
	запрос.УстановитьТелоИзСтроки(текстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
	
	ответ = соединение.ОтправитьДляОбработки(запрос);
	текстОтвета = ответ.ПолучитьТелоКакСтроку();// список пользователей
	...
КонецПроцедуры