Получение задач из Битрикс24 за выбранный период

1. user1619761 24.07.23 13:46 Сейчас в теме
Добрый день. Подскажите, пожалуйста, если кто работал с битриксом 24 через rest api, как получить задачи за выбранный период?
Делаю вот так, но получаю задачи за период 06.07.2023 - 24.07.2023, хотя на форме выбран период 01.05.2023 - 24.07.2023.
СтруктураОтвета = ОтправитьЗапрос("order[ID]=&filter[>=CREATED_DATE]:"+НачалоПериода+ "&filter[<=CREATED_DATE]:"+конецДня(КонецПериода));
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(СтруктураОтвета);
	СтруктураОтвета = ПрочитатьJSON(ЧтениеJSON, Истина);
	ОбщееКоличество = СтруктураОтвета.Получить("total");
	ТекущееКоличество = 0;
	
	Пока ТекущееКоличество < ОбщееКоличество Цикл 
		СтруктураОтвета = ОтправитьЗапрос("order[ID]=&filter[>=CREATED_DATE]:"+НачалоПериода +"&filter[<=CREATED_DATE]:"+конецДня(КонецПериода)+ "&start=" + ТекущееКоличество);
		ЧтениеJSON = Новый ЧтениеJSON;
		ЧтениеJSON.УстановитьСтроку(СтруктураОтвета);
		СтруктураОтвета = ПрочитатьJSON(ЧтениеJSON, Истина);
		ТекущееКоличество = ТекущееКоличество+50;
		Для Каждого соответствие Из СтруктураОтвета.get("result").get("tasks") Цикл 
			НСТр= ТЗЗадачи.Добавить();
			НСТр.Задача = соответствие;
		КонецЦикла;		
		
	КонецЦикла;

Функция ОтправитьЗапрос(параметрыЗапроса)
	webH = webH ;
	логин = ЛогинПортала;
	пароль = ПарольПортала;
	метод = "tasks.task.list";         
	адресПортала = АдресБитрикс; 
	соединение = Новый HTTPСоединение(адресПортала,,логин, пароль, ,5, Новый ЗащищенноеСоединениеOpenSSL);						
	запрос = Новый HTTPЗапрос(webH + метод + "?" + параметрыЗапроса);											
	запрос.УстановитьТелоИзСтроки("");		
	ответ = Соединение.Получить(запрос);
	возврат ответ.ПолучитьТелоКакСтроку();
КонецФункции
Показать
По теме из базы знаний
Найденные решения
6. user1619761 26.07.23 16:23 Сейчас в теме
(5) спасибо за помощь, но не получилось Вашим методом через Дату JSON, пришлось обратиться в техподдержку битрикс за помощью. В итоге вот так получилось
//НачалоПериодаJSON = ЗаписатьДатуJSON(НачалоПериода, ФорматДатыJSON.ISO, ВариантЗаписиДатыJSON.UniversalDate);
	//КонецПериодаJSON = ЗаписатьДатуJSON(конецДня(КонецПериода), ФорматДатыJSON.ISO, ВариантЗаписиДатыJSON.UniversalDate);
	НачалоПериодаJSON = Формат(НачалоПериода, "ДФ=yyyy-MM-dd");
	КонецПериодаJSON = Формат(КонецПериода, "ДФ=yyyy-MM-dd");
	
	СтруктураОтвета = ОтправитьЗапрос("order[ID]=ASC&filter[>CREATED_DATE]=" + НачалоПериодаJSON + "&filter[<CREATED_DATE]=" + КонецПериодаJSON);
	
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. dandykry 10 24.07.23 15:47 Сейчас в теме
даты должны быть в формате ISO.

НачалоПериодаJSON = ЗаписатьДатуJSON(НачалоПериода, ФорматДатыJSON.ISO, ВариантЗаписиДатыJSON.UniversalDate);

КонецПериодаJSON = ЗаписатьДатуJSON(конецДня(КонецПериода), ФорматДатыJSON.ISO, ВариантЗаписиДатыJSON.UniversalDate);

СтруктураОтвета = ОтправитьЗапрос("order[ID]=&filter[>=CREATED_DATE]:"+НачалоПериодаJSON + "&filter[<=CREATED_DATE]:"+КонецПериодаJSON);

Если не получится, то дополнительно

НачалоПериодаJSON  = КодироватьСтроку(НачалоПериодаJSON , СпособКодированияСтроки.КодировкаURL, "UTF8")
КонецПериодаJSON = КодироватьСтроку(НачалоПериодаJSON , СпособКодированияСтроки.КодировкаURL, "UTF8")
user1619761; +1 Ответить
4. user1619761 24.07.23 15:55 Сейчас в теме
(3) понял, спасибо. Сейчас попробую.
5. dandykry 10 24.07.23 16:06 Сейчас в теме
(4) Вы можете передать все параметры в теле запроса. Так будет нагляднее.
Cкопировал часть, которая за это отвечает, вроде все что надо.
Если коротко, то различие в том, что в УстановитьТелоИзСтроки передается записанное соответствие с фильтром и параметром старта, если он есть в предыдущем ответе

НачалоПериодаJSON = ЗаписатьДатуJSON(НачалоПериода, ФорматДатыJSON.ISO, ВариантЗаписиДатыJSON.UniversalDate);

КонецПериодаJSON = ЗаписатьДатуJSON(конецДня(КонецПериода), ФорматДатыJSON.ISO, ВариантЗаписиДатыJSON.UniversalDate);

FILTER = New Map;
FILTER.Insert("CREATED_DATE", ">=" + НачалоПериодаJSON);
//FILTER.Insert("ID", 9999);

Start = 0;
Result = New Array;
MethodName = "tasks.task.list";

While True Do

If Start <> 0 Then			
MethodParametersStructure.Insert("start", Start); 
EndIf;

MethodParametersStructure = New Structure;
MethodParametersStructure.Insert("filter", FILTER);

MethodParameters = New JSONWriter;
MethodParameters.SetString();
WriteJSON(MethodParameters, MethodParametersStructure);
		
HTTPRequestBody = MethodParameters.Close(); 


ResourceAddress = "rest/" + MethodName + "?auth=" + AccessToken;
		
SSLConnection	= Тут как вы его формируется так пойдет;
HTTPConnection	= New HTTPConnection(
Domain, , , , , Timeout, SSLConnection
		);
		
Headers = New Map;
		
Headers.Insert("Cookie",			Если есть Cookies);
Headers["Content-Type"] = "application/json";
Headers["Accept"] = "application/json";
Headers.Insert("Content-Length",	Format(StrLen(HTTPRequestBody), "NG=0"));			
		
Request = New HTTPRequest(ResourceAddress, Headers);	
		
Request.SetBodyFromString(HTTPRequestBody);
		
Response		= HTTPConnection.Post(Request);

If Response = Undefined Then
	Break;
EndIf;

ResponseString	= Response.GetBodyAsString();

JSONReader = New JSONReader;
JSONReader.SetString(JSON);
	
ServerAnswer = ReadJSON(ResponseString, True);

Objects = ServerAnswer["result"];	   
		
If Objects <> Undefined Then	
	Result.Add(Objects);
EndIf;    
		
If ServerAnswer["next"] = Undefined Then
	Break;
EndIf;
		
Start = Number(ServerAnswer["next"]);

EndDo;
Показать
user1619761; +1 Ответить
6. user1619761 26.07.23 16:23 Сейчас в теме
(5) спасибо за помощь, но не получилось Вашим методом через Дату JSON, пришлось обратиться в техподдержку битрикс за помощью. В итоге вот так получилось
//НачалоПериодаJSON = ЗаписатьДатуJSON(НачалоПериода, ФорматДатыJSON.ISO, ВариантЗаписиДатыJSON.UniversalDate);
	//КонецПериодаJSON = ЗаписатьДатуJSON(конецДня(КонецПериода), ФорматДатыJSON.ISO, ВариантЗаписиДатыJSON.UniversalDate);
	НачалоПериодаJSON = Формат(НачалоПериода, "ДФ=yyyy-MM-dd");
	КонецПериодаJSON = Формат(КонецПериода, "ДФ=yyyy-MM-dd");
	
	СтруктураОтвета = ОтправитьЗапрос("order[ID]=ASC&filter[>CREATED_DATE]=" + НачалоПериодаJSON + "&filter[<CREATED_DATE]=" + КонецПериодаJSON);
	
7. dandykry 10 27.07.23 08:16 Сейчас в теме
(6) Я старался) Если у вас следующая задача получить отмеченное время выполнения задачи, то я вам сочувствую. API битрикс это ужасный зверь.
user1619761; +1 Ответить
2. user1619761 24.07.23 13:56 Сейчас в теме
Попробовал убрать параметры даты, но такая же ситуация. Берутся задачи с 6 числа только. Может остальные в какой то архив помещаются?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот