Имя: Пароль:
1C
1C 7.7
v7: Синхронные запросы к сайту
0 brenli
 
30.10.20
13:17
Возможно ли создать синхронные запросы к сайту? Т.е нужно выгрузить большой список товаров на сайт используя json.
Все количество товаров делится по 100 штук. Нужно выгружая ждать пока отработает каждый запрос до получения ответа.
Что можно предпринять?
1 Вафель
 
30.10.20
13:21
юзать . нет
2 MyNick
 
30.10.20
13:22
Не понял проблему автора.
Сайт асинхронно отдает чтоли ответ, не загрузив в себя порцию данных?
3 ДенисЧ
 
30.10.20
13:22
А что, с асинхронными, значит, вопросов не возникает? )))
4 Вафель
 
30.10.20
13:24
как я понял автор хочет параллельно грузить
5 arsik
 
гуру
30.10.20
13:26
Если (4) то фоновыми. В каждое фоновое пихаешь свою часть.
6 arsik
 
гуру
30.10.20
13:26
Сорян не увидел что 77
7 brenli
 
30.10.20
13:34
Вообще суть такая.

Делаю обработку для взаимодействия с Woocommerce из клюшек. По пути создания обработки выплыли неприятные моменты из за того что клюшки стоят на 2003 сервере
который не может нормально работать с https , соответственно не может пройти авторизация.
Вышел из проблемы так с помощью flask наваял прокси скрипт . Все работает корректно - скрипт получает данные из 1с и проталкивает до вэб сервера возвращая ответы...,НО
при попытке создания серии запросов, только последний запрос из серии отрабатывает корректно. В первых запросах по отношению к последнему нет тела из json. Они пустые.
Я уже всю голову сломал.

Вот трассировка работы скрипта с одним товаром в пакете запроса...
Список был сокращен. Я 10 товаров разбил на 10 запросов по 1 товару в запросе.

10.0.0.2 - - [29/Oct/2020 22:31:59] "POST /wp-json/wc/v3/products/batch/ HTTP/1.1" 400 -
db.test.ru
ck_693982c64ef09d3870cf5f8ec2b353e5eef37056
cs_062c1995b091e17f70e4087b9499264fb892edbb
OLOLO
10.0.0.2 - - [29/Oct/2020 22:31:59] "POST /wp-json/wc/v3/products/batch/ HTTP/1.1" 400 -
db.test.ru
ck_693982c64ef09d3870cf5f8ec2b353e5eef37056
cs_062c1995b091e17f70e4087b9499264fb892edbb
OLOLO
10.0.0.2 - - [29/Oct/2020 22:31:59] "POST /wp-json/wc/v3/products/batch/ HTTP/1.1" 400 -
db.test.ru
ck_693982c64ef09d3870cf5f8ec2b353e5eef37056
cs_062c1995b091e17f70e4087b9499264fb892edbb
OLOLO
10.0.0.2 - - [29/Oct/2020 22:31:59] "POST /wp-json/wc/v3/products/batch/ HTTP/1.1" 400 -
db.test.ru
ck_693982c64ef09d3870cf5f8ec2b353e5eef37056
cs_062c1995b091e17f70e4087b9499264fb892edbb
OLOLO
10.0.0.2 - - [29/Oct/2020 22:31:59] "POST /wp-json/wc/v3/products/batch/ HTTP/1.1" 400 -
db.test.ru
ck_693982c64ef09d3870cf5f8ec2b353e5eef37056
cs_062c1995b091e17f70e4087b9499264fb892edbb
OLOLO
{'create': [{'type': 'simple', 'regular_price': '4322.00', 'status': 'publish', 'tax_status': 'none', 'virtual': False, 'catalog_visibility': 'visible', 'featured': False, 'manage_stock': True, 'sku': '', 'downloadable': False, 'name': 'Абажур подвесной Паутина А-33'}]}
https://db.test.ru/wp-json/wc/v3/products/batch/?consumer_key=ck_693982c64ef09d3870cf5f8ec2b353e5eef37056&consumer_secret=cs_062c1995b091e17f70e4087b9499264fb892edbb&;
with body {'create': [{'type': 'simple', 'regular_price': '4322.00', 'status': 'publish', 'tax_status': 'none', 'virtual': False, 'catalog_visibility': 'visible', 'featured': False, 'manage_stock': True, 'sku': '', 'downloadable': False, 'name': 'Абажур подвесной Паутина А-33'}]}
10.0.0.2 - - [29/Oct/2020 22:32:02] "POST /wp-json/wc/v3/products/batch/ HTTP/1.1" 200 -

В самой 1с тело запроса проставляется корректно.
8 brenli
 
30.10.20
13:36
Грешу что 1с не дожидается завершения и создает очередь.  Пробовал ставить таймер для остановки, но безуспешно.
9 brenli
 
30.10.20
13:47
Функция POST_Req(Сервер, JSON, СпЗаголовки, пСтатус) Экспорт
    
    WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1"); //WinHttpRequest
    
    WinHttp.open("POST",Сервер);
    
    Для Н=1 По СпЗаголовки.РазмерСписка() Цикл
        Значение="";
        Тип = СпЗаголовки.ПолучитьЗначение(Н,Значение);
        WinHttp.SetRequestHeader(СокрЛП(Тип), СокрЛП(Значение));
        
        Сообщить(Тип + СимволТабуляции + Значение);
    КонецЦикла;
    
    Попытка
        WinHttp.send(JSON);
        пСтатус = WinHttp.status;
        Если WinHttp.status = 200 Тогда  
            Сообщить(" HTTP " + WinHttp.Status + " " + WinHttp.StatusText);
            Возврат WinHttp.ResponseText;
        Иначе
            Сообщить("Ошибка отправки запроса","!");
            Сообщить("HTTP " + WinHttp.Status + " " + WinHttp.StatusText);
            Возврат WinHttp.ResponseText;
            //Возврат 0;
        КонецЕсли;
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат 0;
    КонецПопытки;
КонецФункции
10 arsik
 
гуру
30.10.20
13:47
curl уже предлагали?
11 brenli
 
30.10.20
13:48
(10) Нет пока)
12 arsik
 
гуру
30.10.20
13:51
А так пробовал?
WinHttp.open("POST",Сервер,0);
13 arsik
 
гуру
30.10.20
14:20
Смотри фиддлером. Там видно будет, реально не отправляется, в чем я сомневаюсь, или на стороне flask коряво разбирается.
14 arsik
 
гуру
30.10.20
14:42
О. Еще 1 вариант вспомнил stunnel.
15 brenli
 
30.10.20
15:05
Спасибо буду пробовать
16 ДедМорроз
 
31.10.20
16:34
Что мешает обновить msxml и использовать ServerXMLHttpRequest напрямую ?
17 ДедМорроз
 
31.10.20
16:35
По крайней мере на windows xp ServerXMLHttp работает без проблем.
18 trdm
 
31.10.20
17:13
(16) откудова качнуть?
19 Alex_
Alexsin_2020
 
17.11.20
19:45
(0) могу библу свою скинуть для работы с веб сервисами
20 Alex_
Alexsin_2020
 
17.11.20
19:48
Могу в ней реализовать очередь из запросов в итоге сколько бы запросов не выпихнули она сама будет ждать пока первый пакет не отошлет
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший