Подскажите как поправить код лучше
написал получение данных от офд по api
но есть ограничение за раз я могу запросить только за 7 дней
а если мне необходимо выгрузить месяц сразу так нельзя
мб как сделать проверку периода ??(тип если разница дат больше 7 дней пройти первые 7 дней потом оставшееся проверить и т.д.)
dateFrom Начало местного времени и даты для запрашиваемых документов. Период не должен превышать 7 дней «2016-10-19T12:20:45»
Для каждого СтрокаСид из Объект.Кассы Цикл
Соединение = Новый HTTPСоединение("api.sbis.ru",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
Заголовки = Новый Соответствие;
Заголовки.Вставить("Cookie","sid="+СтрокаСид.Сид);
Заголовки.Вставить("Host", "api.sbis.ru");
dateFrom = Строка(Формат(НачалоДня("20210301"),"ДФ=гггг-ММ-ддTЧЧ-мм-сс"));
dateTo = Строка(Формат(КонецДня(Объект.ДатаЗапроса),"ДФ=гггг-ММ-ддTЧЧ-мм-сс"));
СтрокаСервиса="/ofd/v1/orgs/"+СтрокаСид.ИНН+"/kkts/"+СтрокаСид.regId+"/shifts?dateFrom="+dateFrom+"&dateTo="+dateTo+"&accounting=byOpen";// byOpen - по открытию(может быть по закрытию смены "byClose") &startId=<startId>&limit=<limit>; начальный номер смены и количество смен
Ответ = Соединение.Получить(Новый HTTPЗапрос(СтрокаСервиса, Заголовки));
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
Данные = ПрочитатьJSON(ЧтениеJSON, Ложь); //Получаем Массив из Массивов из КлючЗначение
// Сообщить(Ответ.ПолучитьТелоКакСтроку());
ЧтениеJSON.Закрыть();
Для Каждого Строка Из Данные Цикл
СтрокаСмен=Объект.Смены.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаСмен,СтрокаСид);
СтруктураСмены =Новый Структура;
Для Каждого Элемент Из Строка Цикл
СтруктураСмены.Вставить(Элемент.Ключ,Элемент.Значение);
КонецЦикла;
ЗаполнитьЗначенияСвойств(СтрокаСмен,СтруктураСмены);
КонецЦикла;
КонецЦикла;
как сделать проверку периода ??(тип если разница дат больше 7 дней пройти первые 7 дней потом оставшееся проверить и т.д.)
Организовать примерно такой цикл:
ДатаС=НачалоДня(ДатаНачалаПериода);
Пока ДатаС<=ДатаКонцаПериода Цикл
ДатаПо=Мин(ДатаС+7*86400,ДатаКонцаПериода);
// получение данных в интервале ДатаС...ДатаПо
ДатаС=ДатаПо+86400;
КонецЦикла;
ДатаС=НачалоДня(ДатаНачалаПериода);
Пока ДатаС<=ДатаКонцаПериода Цикл
ДатаПо=Мин(ДатаС+7*86400,ДатаКонцаПериода);
// получение данных в интервале ДатаС...ДатаПо
ДатаС=ДатаПо+86400;
КонецЦикла;
(13)
вопрос в начале звучал как получить за больший период- ответ на него нельзя больше чем за 7 дней, что еще можно было в ответ включить на этот вопрос? )