Обойти ограничение периода

1. Raideres 8 07.03.21 13:58 Сейчас в теме
Подскажите как поправить код лучше
написал получение данных от офд по 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.Закрыть();
		
		Для Каждого Строка Из Данные Цикл
			СтрокаСмен=Объект.Смены.Добавить();
			ЗаполнитьЗначенияСвойств(СтрокаСмен,СтрокаСид);
			
			СтруктураСмены =Новый Структура;
			Для Каждого Элемент Из Строка Цикл
				СтруктураСмены.Вставить(Элемент.Ключ,Элемент.Значение);
			КонецЦикла;
			ЗаполнитьЗначенияСвойств(СтрокаСмен,СтруктураСмены);
		КонецЦикла;
		
	КонецЦикла;
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. spacecraft 07.03.21 16:31 Сейчас в теме
(1) а в чем сложность? Проверяйте разницу дат и если больше 7 дней, то в цикле делаете запросы в офд.
7. ishelper 07.03.21 16:33 Сейчас в теме
(1)
как сделать проверку периода ??(тип если разница дат больше 7 дней пройти первые 7 дней потом оставшееся проверить и т.д.)
Организовать примерно такой цикл:
ДатаС=НачалоДня(ДатаНачалаПериода);
Пока ДатаС<=ДатаКонцаПериода Цикл
   ДатаПо=Мин(ДатаС+7*86400,ДатаКонцаПериода);

   // получение данных в интервале ДатаС...ДатаПо

   ДатаС=ДатаПо+86400;
КонецЦикла;
2. user958326 07.03.21 15:26 Сейчас в теме
Думаю информацию о выгрузке за произвольный период лучше запросить напрямую в СБИС
3. Raideres 8 07.03.21 15:34 Сейчас в теме
4. user958326 07.03.21 16:02 Сейчас в теме
(3)
молчат по официальным канал связи с ними? Жалобу подайте
5. Raideres 8 07.03.21 16:12 Сейчас в теме
(4)ответ не может дать, сказали требует уточнения заявка

https://sbis.ru/help/ofd/api но лично я сам тут не нашел такого
8. user958326 07.03.21 16:47 Сейчас в теме
(5)
На что не может дать ответ? На простой вопрос, может ли их апи дать произвольный период или максимум 7 суток? Куда уж проще вопрос?
9. Raideres 8 07.03.21 16:54 Сейчас в теме
(8)ну вот такой попался мне консультант
12. user958326 07.03.21 17:49 Сейчас в теме
10. spacecraft 07.03.21 17:30 Сейчас в теме
(5) а какие еще нужны уточнения, если в описании api четко прописано:
Период не должен превышать 7 дней


https://sbis.ru/help/ofd/api/upload_smena
11. user958326 07.03.21 17:48 Сейчас в теме
(10)
Что и требовалось доказать, читать просто описание надо внимательно и вопросов было бы меньше
13. Raideres 8 07.03.21 18:24 Сейчас в теме
(12)так я в начале написал

но есть ограничение за раз я могу запросить только за 7 дней

(2)
Думаю информацию о выгрузке за произвольный период лучше запросить напрямую в СБИС


я вам ответил что спросил у СП =)


(7)
Да вот так и сделал сейчас спасибо

Организовать примерно такой цикл:

ДатаС=НачалоДня(ДатаНачалаПериода);
Пока ДатаС<=ДатаКонцаПериода Цикл
   ДатаПо=Мин(ДатаС+7*86400,ДатаКонцаПериода);

   // получение данных в интервале ДатаС...ДатаПо

   ДатаС=ДатаПо+86400;
КонецЦикла;
14. user958326 07.03.21 18:56 Сейчас в теме
(13)
вопрос в начале звучал как получить за больший период- ответ на него нельзя больше чем за 7 дней, что еще можно было в ответ включить на этот вопрос? )
15. and_sk 14 08.03.21 17:32 Сейчас в теме
в сбисе за раз можно токо 100чеков читать вроде, ну год назад было)
Оставьте свое сообщение

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