|
Реальная асинхронность без долгих операций на сервере | ☑ | ||
---|---|---|---|---|
0
СделатьВсе Хорошо
10.11.23
✎
10:44
|
Добрый день.
Неужели в 1С клиенте нет реальной просто схемы запустить асинхронную операцию, которая может: 1. выполняться не блокируя интерфейс 2. получить входящее событие о порции обработанных данных. P.S. Пытаюсь запустить работу с Long Polling http запросам. P.P.S. Понятно, что есть возможность внешних компонент и внешнего события, но хочется штатных средств без стороннего программирования. |
|||
1
Garykom
гуру
10.11.23
✎
10:56
|
(0) Покажи где (в каком ЯП или платформе) оно есть
При работе с UI |
|||
2
shuhard
10.11.23
✎
11:06
|
(0)[Неужели в 1С клиенте нет реальной просто]
нет и не будет |
|||
3
Hmster
10.11.23
✎
12:39
|
Как нет?
Фоновые задания |
|||
4
Beduin
10.11.23
✎
12:48
|
(0) Их нигде нет. Это просто эмуляция. Выглядит как большой цикл событий/процессов и программный исполняемый слой бежит по нему проверяя кому какой результат отправить.
В 1С оповещение о результате, которое внутри выглядит также как большой цикл по фоновым процессам. |
|||
5
Chai Nic
10.11.23
✎
13:00
|
Асинхронность без многопоточности бесполезна, только лишний гемор создает.
Лучше бы многопоточность завезли в платформу. Чтобы можно было процедуры параллельно запускать, с соответствующим инструментарием синхронизации типа мутексов и семафоров. |
|||
6
NorthWind
10.11.23
✎
13:26
|
(5) одинэсникам только мьютексов с семафорами недоставало для полного счастья. Что это вам, системные программисты, что ли? Кому очень хочется - бери С++ и пиши... А в смузевом варианте - вроде Ждать и Асинх уже запилили.
|
|||
7
Chai Nic
10.11.23
✎
13:25
|
(6) Да одинесникам и асихронность нафиг не сдалась. Без неё проще и лучше. Но сейчас модно всё делать под мобильные браузеры, где синхронные вызовы и модальные окна некомильфо.
|
|||
8
asady
10.11.23
✎
13:31
|
(0) есть ПолучитьАсинх у HTTP запроса
Позволяет обработать порцию данных на клиенте твой сабж |
|||
9
lodger
10.11.23
✎
17:19
|
(7) слово мобильные зачеркни. это все браузеры такие стали.
|
|||
10
novichok79
10.11.23
✎
17:28
|
если 1С сделает мьютексы, а сделает он это дело когда уже это уже не надо будет и даст пару функций.
тогда надо и поддержку потоков в 1С делать на клиенте (!!!). а там захочется и green threads как в котлине или голанге. и появится больше проблем с синхронизацией значений. сейчас эти проблемы есть в 1Сине только на уровне данных и фоновых заданий на сервере. а теперь будет еще и на клиенте. типа оно реально надо? |
|||
11
b_ru
10.11.23
✎
17:34
|
(5) Да есть же многопоточность, бери да создавай фоновые задания сколько нужно. Даже критические секции в некотором виде есть, посредством управляемых блокировок.
Другое дело, что не надо почти никому и никогда. Но есть. |
|||
12
Garykom
гуру
10.11.23
✎
17:43
|
(11) реализацию вероятно ТС не осилил с возвратом результата на клиента через ПоместитьВоВременноеХранилище()
|
|||
13
Valdis2007
10.11.23
✎
17:56
|
(0) Фоновые задания используй
|
|||
14
СделатьВсе Хорошо
10.11.23
✎
18:13
|
(8) не взлетает.
Long Polling просто зависает до таймаута и никаких результатов. но при этом в потоке появляются данные. Уже тестировал. |
|||
15
СделатьВсе Хорошо
10.11.23
✎
18:17
|
(3) (12) (13) Фоновые задания это сервер.
Моя сторона это клиент. Зачем клиенту ходить на сервер, создавать вечные серверные фоновые процессы (а это все же вечный цикл как тут уже верно подметили) ради получения клиентом строки данных. а и еще плюс постоянный опрос клиентом сервера на тему: "а прилетели ли данные". И вишенка на торте: HttpЗапрос вообще не умеет работать с Long Polling, уходит в таймаут. |
|||
16
СделатьВсе Хорошо
10.11.23
✎
18:20
|
(6) "А в смузевом варианте - вроде Ждать и Асинх уже запилили."
Ну это всё мнимая асинхронность. Интерфейс блокируется при ожидании. |
|||
17
lodger
10.11.23
✎
18:36
|
(16) ну так ты Обещание передавай дальше, и не пиши Ждать.
|
|||
18
Garykom
гуру
10.11.23
✎
18:37
|
(15) >HttpЗапрос вообще не умеет работать с Long Polling, уходит в таймаут
ты не понимаешь сути работы http и long polling ушел в таймаут тут же делаешь новый запрос причем для скорости переиспользование одного httpсоедниние несколькими httpзапрос |
|||
19
Garykom
гуру
10.11.23
✎
18:38
|
И да
Ждать и Асинх реально нафик не нужны Это просто синтаксический сахар для упрощения кода |
|||
20
СделатьВсе Хорошо
10.11.23
✎
18:45
|
(18) Ну я ж говорю тестировал...
HttpЗапрос вообще не видит там данных, даже когда они там появляются |
|||
21
Garykom
гуру
10.11.23
✎
18:48
|
(20) значит там их нет
криво запрос делаешь имхо |
|||
22
Garykom
гуру
10.11.23
✎
18:49
|
и да
если тебе надо на клиенте - ну так засунь ПолеHTML и юзай внутри скриптики на js |
|||
23
СделатьВсе Хорошо
10.11.23
✎
19:33
|
(21) Анука личный опыт в студию. Без кода. Верю на слово.
(22) это то уже ))). Но хочется красиво и по 1Сному. |
|||
24
Волшебник
10.11.23
✎
19:34
|
Подписался на ветку. Вдруг найдёте решение без сервера...
|
|||
25
СделатьВсе Хорошо
10.11.23
✎
19:34
|
(21) и кстати через curl данные есть. Так что они 100% там есть.
|
|||
26
asady
10.11.23
✎
19:35
|
Создал пустую форму
В ней обработчик ожидания В нем вызов получитьасинх В основной форме получай форму с обработчиком и запускай асинхр поток Можешь сделать несколько таких форм пустышек и в каждой свой обработчик |
|||
27
Garykom
гуру
10.11.23
✎
19:38
|
(25) покажи вызов curl и код в 1С
|
|||
28
Chai Nic
10.11.23
✎
20:42
|
(11) "есть же многопоточность, бери да создавай фоновые задания "
У фоновых заданий есть недостаток - нет возможности оповестить "в реальном времени" о завершении задания или о каком-то ином событии. Только путем опроса с каким-то квантом, что не всегда приемлемо. |
|||
29
Garykom
гуру
10.11.23
✎
20:47
|
(28) сервер взаимодействия или ВК с ОбработкаВнешнегоСобытия
|
|||
30
Garykom
гуру
10.11.23
✎
20:48
|
(29)+ хотя и квантования 0.5 секунды через ОбработкаОжиданияПользователя обычно за глаза
|
|||
31
Hmster
10.11.23
✎
21:05
|
Тут люди еще с фоновыми на сервере толком работать не научились, а вы хотите фоновые на клиенте.
Только вот это такой лютый трэш будет, клиенту ведь без сервера жить скучно, опять же контекст выполнения, синхронизация. я не говорю, что не надо, но вот как быть с концепцией "тонкий клиент", хотя он уже и так жрет как не в себя. |
|||
32
Волшебник
10.11.23
✎
21:08
|
(31) "тонкий клиент" должен умере-е-еть.... Ничто не сравнится с RDP (mstsc) и прочими тонкими терминальными клиентами по тонкости (VNC, noVNC, Spice...)
|
|||
33
Волшебник
10.11.23
✎
21:10
|
Концепция "тонкого клиента" была разработана под слабые компы. Теперь мини-ПК выполняют роль стационарных мощных компов и вполне тянут "толстый клиент", который умеет всё тонкое и всё толстое.
|
|||
34
Chai Nic
10.11.23
✎
21:30
|
Концепция тонкого клиента была придумана под браузеры.. поэтому и получился он такой ограниченный, чтобы клиентский код легко транслировался в браузерный джаваскрипт.
|
|||
35
Chai Nic
10.11.23
✎
21:32
|
(30) Для многопоточного алгоритма, постоянно порождающего потоки это нереально много. Полсекунды это нормально только для реакции на клик мышкой по кнопке..
|
|||
36
ДедМорроз
11.11.23
✎
22:29
|
Чтобы не мучиться с long pulling придумали web-socket-ы,но 1с их просто так не умеет - только в составе системы взаимодействия.
В классическом long pulling клиент передает на сервер значение таймаута,через которое сервер пришлет пустой ответ,когда никаких событий нету,после этого,клиент сделает новый запрос. Передача ответа в виде chunk-ов с ожиданием между чанками - это уже не совсем long pulling,а методика server events. И ее не все клиенты поддерживают,причем и большинство ещё и буферизуют ответ от 4 до 64 КБ. |
|||
37
ДедМорроз
11.11.23
✎
22:32
|
Что касается многопоточности,то постоянное порождение потоков - это тоже не есть хорошо - на них тратятся ресурсы,более того,добавляя потоки мы все равно не добавим ядер процессору.
Поэтому,обычно,делается пул потоков,по числу ядер,а уже задачи распределяются по пулу через очередь,когда освободившийся поток берет первое задание в очереди,а если его нету,то засыпает (SuspendThread) до появления задания. |
|||
38
ДедМорроз
11.11.23
✎
22:36
|
Что касается клиента,то интерфейсный поток (который взаимодействует с экраном и клавиатурой) всегда один - попытка распределить интерфейс на несколько потоков ни к чему хорошему не приводит.
А вот делать выполняемый в фоне процесс для клиента не стали,исходя из того,что все вычисления делаются на сервере. Если же вам очень хочется чего-то повычислять на клиенте,то специально для этого есть функции запуска отдельных процессов Запустить приложение и КомандаСистемы. |
|||
39
Волшебник
11.11.23
✎
23:07
|
(0) Может запускать JS в скрытом поле HTML? Просто идея...
Пытаюсь вернуть ветку к сабжу |
|||
40
Рэйв
11.11.23
✎
23:50
|
(39)Неа..Я пробовал
Может я не те сигареты курю, но не взлетело. |
|||
41
Волшебник
11.11.23
✎
23:51
|
(40) Я не курю. Может и Вам перестать курить и мысль начнёт работать?
|
|||
42
Рэйв
11.11.23
✎
23:52
|
Я бы вышел на площадь с плакатом "!С,Цуки! Даешь классы, и наследуемость!"
Полиморфизм, худо бедно и так есть:-) |
|||
43
Рэйв
11.11.23
✎
23:54
|
(41)Ну это же было иносказательно.Неужели не понятно.
Если это оскорбило Ваши чцувства,то извините |
|||
44
Рэйв
11.11.23
✎
23:56
|
и кстати я не курю уже 14 лет:-) Так что..
|
|||
45
Рэйв
12.11.23
✎
00:01
|
Пару слов Пока я не убежал:-)
Меня умиляют попытки программистов 1С выглядеть ТРУ прграммерами:-) Ребята.. Мы и (допустим) программисты С++ - Это не корм коню.СОВЕРШЕННО разные вещи. Пусть сишники при мне закроют баланс или начислят зарплату - вот тогда я буду считать их себе равными. |
|||
46
Волшебник
12.11.23
✎
00:04
|
Он явно обкурился
|
|||
47
Рэйв
12.11.23
✎
00:05
|
(46)Кто посмел?
|
|||
48
Волшебник
12.11.23
✎
00:05
|
(42) В 1С есть классы и наследование
|
|||
49
Волшебник
12.11.23
✎
00:06
|
Всегда были!
|
|||
50
Рэйв
12.11.23
✎
00:08
|
(48)Совершенно соглавен.
Но нет СВОИХ классов и наследования. Мне сказали что документ - это класс.У него паблик Дата и Номер. Это наследуешь. Остальное сам Классно.А может я хочу объект ШАР. С паблик диаметр и состав?6-) |
|||
51
Рэйв
12.11.23
✎
00:09
|
А может я хочу класс РЫБА.
С приват размер и цветГ |
|||
52
Рэйв
12.11.23
✎
00:10
|
и с паблик функция ми их устанавливающими?:-)
|
|||
53
Рэйв
12.11.23
✎
00:11
|
В 1С конечно нафитг не сдалась эта рыба..
Но тот факт что их нет - напрягает |
|||
54
Волшебник
12.11.23
✎
00:17
|
(50) (51) Обработки, Карл!
|
|||
55
Рэйв
12.11.23
✎
00:20
|
(54) Ой,Волшебник, не щекочите мои тапочки.
Причем тут обработки? Хоть убейся , никакой обработкой не реализуешь например класс Бухгалтерия, с возможностью наследования, от которого потом класс Зарплата унаследует все методы и добавит свои:-) |
|||
56
Волшебник
12.11.23
✎
00:23
|
(55) Вы путаете конфигурации и классы
|
|||
57
Рэйв
12.11.23
✎
00:24
|
(56)Вы можете даже дать пример как и в чем я путаю?:-)
|
|||
58
vde69
12.11.23
✎
00:27
|
(55) ты на С++ напиши класс "бухгалтерия" и потом будешь тут всех уму разуму учить....
тут проблемма не в языке а в том, что у тебя один интерфейс твоего класса на столько сложный, что уже ничего наследовать и не захочется.... |
|||
59
Рэйв
12.11.23
✎
00:28
|
Я даже готов подождать какое то время.Мне интересно.
|
|||
60
vde69
12.11.23
✎
00:28
|
(57) пример пожалуйсто - в типовых решениях есть общие модули "переопределяемые", расширяй в них функционал как хочешь...
|
|||
61
Рэйв
12.11.23
✎
00:32
|
(58)А я никого и не призывал писать на с++ класс Бухгалтерия.
Это был просто наиболее наглядный пример. А кстати не настолько тос сложный интерфейс у 1С в их меьттоданных..или они всех нас считают идиотами что мы не сможем написать класс потомок?... Хм.. |
|||
62
Рэйв
12.11.23
✎
00:32
|
(60)Это костыли..И ты перекрасно об этом знаешь.
|
|||
63
Волшебник
12.11.23
✎
00:37
|
(61) трололо
|
|||
64
Рэйв
12.11.23
✎
00:38
|
(63)Ладно ладно:-)
Я тут бываю редко последнее время.. Будем считать что поднял пару вопросов на "подумать":-) Всем удачи. |
|||
65
ДедМорроз
12.11.23
✎
15:43
|
Обработка - это объект со свойствами и методами,почти как класс,но никакого наследования нету.
Ну,например,в VbScript тоже можно описать объект,который называется class,но тоже нет никакого наследования. |
|||
66
Волшебник
12.11.23
✎
16:11
|
(65) В 1С наследование одноуровневое.
|
|||
67
Волшебник
12.11.23
✎
16:19
|
Не надо ругать ограничения наследования в 1С, потому что в Java тоже есть ограничения наследования. Например, нельзя наследовать класс от нескольких предков.
Итак, наследование в 1С есть. Инкапсуляция есть. Полиморфизм есть (Документ.Провести() проводится по разным регистрам). И кто ещё скажет, что в 1С нет ООП? |
|||
68
ДедМорроз
12.11.23
✎
18:22
|
Тут вообще отдельный вопрос - это наследование в интерпретируемых языках,так как до момента исполнения никто про код ничего не знает,и делать можно все,что угодно.
Более того,методы вызываются или прямо по имени или через трансляцию имени в идентификатор. Другое дело - компиллируемые языки,где объект определяется в момент компиляции,и нужно на этот момент знать - какие методы он реализует. Ну и,самый главный бонус наследования в том,что можно вызывать методы предков. |
|||
69
MyNick
12.11.23
✎
18:25
|
(0) пффаххаха.
Такая длинная полоска, а не в курсе про фоновые. |
|||
70
ДедМорроз
12.11.23
✎
18:25
|
В java есть понятие interface,который более четко и понятно реализует сложное наследование.
В си++ сложное наследование добавляет таких граблей,про которые не сразу и поймёшь,что наступил. |
|||
71
MyNick
12.11.23
✎
18:28
|
(15)
Дак клиент или порция ОБРАБОТАННЫХ ДАННЫХ? |
|||
72
Злопчинский
12.11.23
✎
19:20
|
где эти все трындычихи с убийцами 1С..?
|
|||
73
ДедМорроз
12.11.23
✎
19:56
|
Проблема в том,что когда ты сделал потоки,синхронизацию и отложенное исполнение,то потом нужно очень долго объяснять программистам,как этим пользоваться.
Опять же,crm систем,где это все работает,пруд пруди,а вот посчитать себестоимость или затраты на производство - они просто не могут. |
|||
74
Valdis2007
13.11.23
✎
07:20
|
(65) а копирование объекта метаданных, чем тебе не наследование?))
|
|||
75
Hmster
13.11.23
✎
09:48
|
ограничение видов основных классов и сделало программу популярной и доступной.
Вот есть у вас нетленка и там хотя бы можно предположить как это работает, а если там будут основные классы отличные от стандартных - то это почти заново программировать надо учиться, т.к. поведение абсолютно непонятно. |
|||
76
vi0
13.11.23
✎
10:58
|
(70) ну интерфейс это не совсем про наследование, скорее про задать контракт
|
|||
77
СделатьВсе Хорошо
13.11.23
✎
12:44
|
После (41) ветку можно очищать )))
Опять оффтоп ))) |
|||
78
СделатьВсе Хорошо
13.11.23
✎
12:45
|
(40) а что конкретно пробовал?
и почему не взлетело? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |