Имя: Пароль:
1C
1С v8
Задержка выполнения кода.
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 статуса в день.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn