Получение задач из Битрикс24 за выбранный период
Добрый день. Подскажите, пожалуйста, если кто работал с битриксом 24 через rest api, как получить задачи за выбранный период?
Делаю вот так, но получаю задачи за период 06.07.2023 - 24.07.2023, хотя на форме выбран период 01.05.2023 - 24.07.2023.
Делаю вот так, но получаю задачи за период 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 + метод + "?" + параметрыЗапроса);
запрос.УстановитьТелоИзСтроки("");
ответ = Соединение.Получить(запрос);
возврат ответ.ПолучитьТелоКакСтроку();
КонецФункции
ПоказатьПо теме из базы знаний
Найденные решения
(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);
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
даты должны быть в формате 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")
(4) Вы можете передать все параметры в теле запроса. Так будет нагляднее.
Cкопировал часть, которая за это отвечает, вроде все что надо.
Если коротко, то различие в том, что в УстановитьТелоИзСтроки передается записанное соответствие с фильтром и параметром старта, если он есть в предыдущем ответе
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;
Показать
(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);
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот