|
Задержка выполнения кода. | ☑ | ||
---|---|---|---|---|
0
Ginger_616
27.06.17
✎
10:24
|
Добрый день!
Я понимаю что задержка выполнения кода, еще и в цикле это как бы, мягко говоря, не очень хорошо. В чем состоит задача: Необходимо работать с апи ресурса http://www.laposte.fr/particulier, для получения статусов посылок. В чем проблема: Проблема в том, что можно посылать только 1 запрос в 3 секунды. Т.е. необходимо программно задерживать выполнение кода минимум на 3 секунды, что бы я могла получить ответ. Я не совсем представляю, как это можно реализовать. Код обращения к серверу и получению статусов реализован. |
|||
1
Ц_У
27.06.17
✎
10:26
|
ПодключитьОбработчикОжидания(....)
|
|||
2
Timon1405
27.06.17
✎
10:27
|
||||
3
Ginger_616
27.06.17
✎
10:27
|
С помощью предупреждения (Предупреждение("",60);) или вопроса конечно можно сделать, но это мне не подходит. Уверенна, есть более изящные способы реализации.
|
|||
4
Ginger_616
27.06.17
✎
10:28
|
ПодключитьОбработчикОжидания(....)
Не совсем честно говоря понимаю как его использовать. Возможно вы можете пояснить? |
|||
5
Ц_У
27.06.17
✎
10:32
|
Процедура НачалоДействия()
//делаем что то .. //ждем 30 секунд ПодключитьОбработчикОжидания("ПродолжитьДействие",30,Истина) Конецпроцедуры Процедура ПродолжитьДействие() //делаем что то Конецпроцедуры По синтаксису Контрл+Ф1 |
|||
6
Рэйв
27.06.17
✎
10:43
|
Старт=ТекущаяДата()
Пока ТекущаяДата()-Старт<3 Цикл Продолжить; КонецЦикла; |
|||
7
Ginger_616
27.06.17
✎
10:47
|
Дело в том, что мне необходимо это делать внутри цикла. На определенном этапе цикла делать задержку, и продолжать выполнение.
Вот мой код: Процедура ОбновлениеСтатусов(Команда) ЭтотОбъект = Объект; Если ЭтотОбъект.Отправка.Количество()>0 Тогда НС = Новый ТаблицаЗначений; Для каждого Стр из ЭтотОбъект.Отправка Цикл Если Стр.Страна <> Справочники.КлассификаторСтранМира.НайтиПоКоду("250") Тогда //Выполнение обновления статусов посылок для всех стран, кроме Франции Иначе ИмяВременногоФайла = ПолучитьИмяВременногоФайла(".json"); //Задаем формат временного файла АдресСервиса = "api.laposte.fr/suivi/v1/"; НомерТрека = Стр.Трек; ПроксиСервер = Новый ИнтернетПрокси; ПроксиСервер.Пользователь = ИмяПользователя; ПроксиСервер.Пароль = Пароль; Соединение = Новый HTTPСоединение(АдресСервиса + НомерТрека,,,,ПроксиСервер, Истина); ЗаголовкиAPI = "X-Okapi-Key:zchl9IRQIeGObF+kw+s4nD4h+d6pJKqgGMwJtT7KFJs/sGa4p1ljEh8hU1zwNcaV"; РезультатЗапросаHTTP = Соединение.Получить("", ИмяВременногоФайла, ЗаголовкиAPI); //Сообщить(РезультатЗапросаHTTP.КодСостояния); 2** если подключение выполнено ЧтениеJson = Новый ЧтениеJSON(); ЧтениеJson.ОткрытьФайл(ИмяВременногоФайла); СтрокаПолученная = ПрочитатьJSON(ЧтениеJson); ЧтениеJson.Закрыть(); //Вот тут я планирую делать задержку кода на 3 секунды. Стр.Статус = ПолучениеСтатуса(СтрокаПолученная.status); Стр.ДатаСтатуса = КонвертацияДаты(СтрокаПолученная.date); КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры |
|||
8
Галахад
гуру
27.06.17
✎
10:47
|
(6) Приятный код.
|
|||
9
Рэйв
27.06.17
✎
10:48
|
(7) тебе (6) вполне подойдет:-)
|
|||
10
Ginger_616
27.06.17
✎
10:57
|
(6) Да, все получилось!
Всем огромное спасибо) |
|||
11
Ginger_616
27.06.17
✎
10:57
|
(9) благодарю)
|
|||
12
Вафель
27.06.17
✎
10:59
|
единственное, что подключить обработчик можно только на клиенте
|
|||
13
тарам пам пам
27.06.17
✎
11:12
|
Я бы сначала поискал, нет ли возможности запросить статусы сразу по всем посылкам одним запросом.
|
|||
14
Ginger_616
27.06.17
✎
11:17
|
(13) к сожалению, пакетного запроса не нашла. Только в премиум аккаунте на этом ресурсе, а это, как вы понимаете, платно:)
Для меня сейчас это не критично, так нужно получить всего 2 - 3 статуса в день. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |