Имя: Пароль:
1C
1С v8
Постоянный опрос вебсервиса с 1С
, ,
0 Nesh
 
21.07.16
17:31
У нас есть такая задача:
Есть веб сервис, который по запросу отдает данные.
Нам в 1с надо эти данные мониторить реалтайм (полсекунды, секунда). Какие есть соображения на эту тему сделать исключительно средствами 1с?
1 Nuobu
 
21.07.16
17:33
(0) Приступайте.
2 Юрий Лазаренко
 
21.07.16
17:37
(0) Взлетит, если объем данных небольшой и их обработка на стороне 1С не будет занимать много времени.
3 Юрий Лазаренко
 
21.07.16
17:38
+(2) Но лучше таки на стороне веб-сервиса отслеживать момент, когда пора отправлять данные в 1С, и дергать уже 1Ску.
4 Fragster
 
гуру
21.07.16
17:41
на файловой решается запуском сеанса с обработкой, в клиент-сервере - двумя регламентными - одно запускается и работает в цикле дергая сервис, другое просыпается раз в некоторое время и смотрит, например, константу с датой последнего запроса (которую устанавливает первое регламентное). если прошло много времени - прибивает первое фоновое (если оно еще живо) и запускает его еще раз
5 Fragster
 
гуру
21.07.16
17:42
вернее одним регламентным и одним фоновым
6 Serginio1
 
21.07.16
17:42
7 ptiz
 
21.07.16
17:42
(0) Веб-сервис - он чей? Тоже средствами 1С поднят?
8 Nesh
 
21.07.16
17:42
(4) вы предлагаете делать регламентное с периодичностью в секунду?
ведь 1с рекомендует не меньше минуты.
9 Nesh
 
21.07.16
17:43
(7) нет, сторонний
10 Fragster
 
гуру
21.07.16
17:44
(8) нет. регламентный вочдог и фоновое, которое работает в цикле с паузой, например запуская ping
11 Serginio1
 
21.07.16
17:44
Либо сделать на стороне 1С свой вэб сервис и чтобы получать данные из данного вэб сервиса
12 Fragster
 
гуру
21.07.16
17:45
делал такое для мониторинга кластера через ком для гилева
13 Nesh
 
21.07.16
17:46
(10) а как фоновое работает? там бесконечный цикл?
14 Fragster
 
гуру
21.07.16
17:46
(13) да
15 Nesh
 
21.07.16
17:47
(14) так 1с бесконечные цикл рубит из-за переполнения стека вызова
16 Fragster
 
гуру
21.07.16
17:47
(15) нет
17 Fragster
 
гуру
21.07.16
17:48
(15)
18 Мыш
 
21.07.16
18:13
(17) Прелесть картинка )))
19 Serginio1
 
21.07.16
18:21
При этом Хвоствая рекурся https://ru.wikipedia.org/wiki/Хвостовая_рекурсия

может разворачиваться многими компиляторами в цикл
20 Юрий Лазаренко
 
21.07.16
21:53
Вообще такой частый опрос веб-сервиса говорит о том, что некоторую задачу хотят решить неверным способом.
Автор, можешь подробнее написать, чего именно вы хотите достичь? Наверняка найдутся более оптимальные пути решения.
21 Jija Grenkov
 
22.07.16
01:08
(0) Вариантов у вас не много, к сожаению в 1с нет паузы. Можно использовать ВК(наверняка есть реализации) или пинг, но  пингом не все гладко если код может выполняться на разных машинах в разных сетях. А так заупустили вечный цикл с паузой в пол секунды и опрашивайте ваш сервис.

(20) А что они могут хотеть достичь, кроме как поолучать события в реал тайме? Может хотят за постами в фейсбуке следить или слушать некую очередь сообщений.
22 NSSerg
 
22.07.16
01:34
(21) В 1с миллион способов сделать паузу без вк.
v8: Как в 1С кошерно реализовать задержку (delay, sleep и т. д.)?
23 Сниф
 
22.07.16
01:41
(9) Если веб-сервис сторонний, то интервал долбления к нему определяется самим веб-сервисом, например, раз в 30 секунд. Если вы будете долбиться чаще, то вас забанят на веб-сервисе.
24 Jija Grenkov
 
22.07.16
01:42
(22) Реализовывали этот милилон способов? Когда я сталкивался с этим вопросом, то delay и sleep вообще не дали результата. Оказалось, что преупреждение может зависать, а пинг ведет себя не стабильно и не гарантирует определенныу задержку на разных машинах. А еще 1с может крутится на линуксе.
25 Сниф
 
22.07.16
01:53
Написал систему, которая позволяет из 1C отдавать данные по http-запросу за 30 миллисекунд (0.03 секунды). Смешно выглядят такие старые телеги, как веб-сервисы. Вот думаю, кому оптом продать технологию.
26 Сниф
 
22.07.16
02:06
+(25) Утверждаю, что мною создана технология, которая позволяет отдавать данные из 1С (например, файл JSON размером в 1 килобайт) за время 50 миллисекунд. Так же утверждаю, что я потратил на это много времени и сил и мне даже сейчас нечего жрать ) Кому интересно - пишите в личку. Дорого, но офигенно.
27 Jija Grenkov
 
22.07.16
02:15
(25) 33 запроса в секунду выходит и - это наверняка если отдавать небольшой объект из памяти. К примеру для джавы -- это очень посредственный результат
http://qrman.github.io/posts/2015/06/28/vertx3-performance/
28 Сниф
 
22.07.16
02:40
(27) Да, из памяти. Лучшая память 1С - индексированная ТЗ.
29 Юрий Лазаренко
 
22.07.16
08:51
(21) Один раз в секунду - это не в реалтайме, это один раз в секунду. В реалтайме - это один вызов в тот момент, когда он нужен.
30 Jija Grenkov
 
22.07.16
10:52
(29) Я вот слабо себе представляю реал тайм в вашем описании. Как можно получить сообщение без периодического опроса, если источник пассивен. А исходя из вашей логики даже цикл с опросом без задержки не будет реал тайм. Я не специалист в низкоуровневых тихнологиях, но что-томне подсказывает, что цикл будет всегда в случае с веб сервисами, просто он может быть спрятан глубже или его нужно делать вручную.
31 Юрий Лазаренко
 
22.07.16
10:56
(30) А мы пока еще не знаем, пассивен источник, или нет. Поэтому и хочется получить от ТС дополнительную информацию.
32 Сниф
 
22.07.16
11:31
(30) Реальный "реал тайм" - Socket, без вариантов.
33 Юрий Лазаренко
 
22.07.16
11:47
(32) Ну или не постоянные запросы от 1С к сервису, а от сервиса к 1С тогда когда надо.
34 vi0
 
22.07.16
13:08
(28) соответствие лучше
35 vhl
 
22.07.16
13:40
(25) Так это будет уже реализовано штатно самой 1С: https://wonderland.v8.1c.ru/blog/povyshenie-proizvoditelnosti-veb-servisov/
36 DrZombi
 
гуру
22.07.16
14:06
(26) НЕ, спасибо... Оставь себе :)
37 DrZombi
 
гуру
22.07.16
14:11
(0)Зачем вам это? Огласите образно, что ты так за доли секунды хотите получить?
38 Borteg
 
22.07.16
14:15
(0) обычно обработчик ожидания и 30 секунд достаточно. Все остальное брятли реализуемо.
39 Кирпич
 
22.07.16
14:16
(37) да глупость какая нибудь. тема для мисты.
40 МихаилМ
 
22.07.16
14:32
а в мобильном приложении есть Доставляемые уведомления
41 Jija Grenkov
 
22.07.16
14:53
(32) И там внутри нет цикла?
(37) Есть спектр задач, где за милисекунды борятся но это не про 1с. А вот мониторинг досок объявлений, откликов, наличия билетов(мониторить возвраты), всеческие электронные очереди. Вполне практические задачи где секунды могут играть роль.
42 Сниф
 
22.07.16
19:25
+(41) Можно административным путем заставить сотрудника тупо смотреть на зависший экран, но со сторонними клиентами такое не прокатит. Они просто закроют приложение и никогда больше не откроют.
43 NSSerg
 
22.07.16
21:27
(24) можно попродробней, каким образом под винду может не работать WScript.Sleep(), на который дана ссылка?
И да, конечно реализовывал, и конечно он отлично работает.
44 Jija Grenkov
 
22.07.16
21:38
(43) уже точно не помню, но толи ошибку на серверно винде выдавало и не слипало, толи регламентное задание повисало. Оно должно было целый день крутиться и стопать  цикл на 5-10 секунд.
45 Serginio1
 
22.07.16
21:50
(0) Есть еще один вариант. Отдельное приложение неважно на чем можно ввиде сервиса, опрашивает вэб сервис и если есть изменения посылает вэб сервису 1С сообщение
46 Jija Grenkov
 
22.07.16
22:02
(45) я поддерживаю микросервисную архитектуру, но в этом случае  туда нужно выносить часть бизнес логки, что бы сервис был законченым куском с точки зерния бизнеса и в таком случае не на 1с прийдется писать много. Я бы использовал:
a. Native API ВК, что бы не нужно было ничего регистрировать. В ВК вынести логику ожидания и опроса, после сего сразу передача результата в 1с.
b. Либо spin wait (цикл без паузы). Если обращение к сервису займет 0.1-0.2 сек. и будет выполняться раз в пол секунды, то ресурсы проца будут расходоваться приемлемо.
47 Serginio1
 
22.07.16
22:14
(46) Мы ничего не знаем, о том что у ТК. Ему дают варианты, а он сам пусть решает, что и как. В любом случае запрос по событию, значительно лучше чем постоянный опрос. Особенно если он не единственный клиент у этого сервиса.
48 Jija Grenkov
 
22.07.16
22:23
Можно попросить разработчиков сервиса, что бы вэб сервис отвечал с задержкой в 1 секунду и вопрос решен )))
49 Юрий Лазаренко
 
22.07.16
23:31
(48) Напомнило анекдот:
- А ваша собака за один раз килограмм мяса съесть сможет?
- Съесть-то она съест, да кто ж ей даст.

Ну то есть, попросить-то можно...
50 Jija Grenkov
 
23.07.16
00:10
(49) прошу мой вопринимать не больше чем шутку. Естественно если просить, то можно вопросить о чем-то более правильном.
51 Котокот
 
23.07.16
01:18
(50) Попросить можно и о правильном, с вероятностью 99,9% быть посланным на МПХ.