Имя: Пароль:
1C
1С v8
Почему 1С не сделает многопоточного клиента, если он уже есть?
,
0 H A D G E H O G s
 
22.05.15
00:18
Ночи доброй.
Собственно, сабж.

Я конечно понимаю, что на запись данных этого делать не стоит, либо на вывод в интерфейс; но вот например, на грязное чтение из базу в файл - почему бы и нет?
1 PR
 
22.05.15
00:19
(0) Что такое многопоточный клиент? И зачем? И что значит уже есть?
2 GROOVY
 
22.05.15
00:23
Многопоточный клиент - это как и зачем? Чтоб бухи одной рукой выписку вносили, а другой баланс формировали?
3 H A D G E H O G s
 
22.05.15
00:24
Кстати, говоря про то, что он уже есть - я не лукавлю :-)
Клиент реально многопоточен, я не использую никаких хаков, я использую типовой функционал :-)

Вот мы пишем 4 файла в разных потоках.
Загрузка ЦП:
http://s61.radikal.ru/i174/1505/db/f4df72d65313.png
Кусок кода:
http://i008.radikal.ru/1505/20/90b17ce1f44f.png
Результат:
http://s020.radikal.ru/i702/1505/b5/5e9ab14f48e6.png

Либо мы делаем вычисления:
Загрузка ЦП:
http://s020.radikal.ru/i706/1505/98/274c4fb2f600.png
Кусок кода:
http://i016.radikal.ru/1505/40/e4b36d0cfbdc.png

При этом все работает - оболочка откликается, справочники открываются.
4 H A D G E H O G s
 
22.05.15
00:25
Да, есть ньюансы.
Когда идут вычисления в 4 потока - оболочка подтормаживает, при 3 потоках - все норм.

В потоках нельзя выводить что-то в интерфейс - разработчики не предусмотрели синхронизацию похоже.

При записи справочников в потоках - писать будет только 1 поток.
5 GROOVY
 
22.05.15
00:26
"Запись данных " и "Чтение" - это как бы не клиент делает.
6 klis
 
22.05.15
00:26
(1)(2) Пока какой-нибудь мега отчет формируется 10-20 минут, можно параллельно заниматься другими делами. Сейчас того же самого можно добиться, запустив два параллельных клиента, например.
7 GROOVY
 
22.05.15
00:27
Есть же фоновые задания, которые специально для распараллеливания и делали. Но клиент тут ни при чем.
8 H A D G E H O G s
 
22.05.15
00:27
(5) Это как бы понятно, клиент раздает задания и ждет результата от сервера.
9 PR
 
22.05.15
00:27
(6) Проснись и пой, уже дано отчеты формируются в фоне.
Можно даже один и тот же отчет запустить еще раз, пока он первый раз формируется.
Так сказать, наложить себе же за шиворот в прыжке.
10 GROOVY
 
22.05.15
00:28
(8) Тогда я не понимаю о чем топик.
11 H A D G E H O G s
 
22.05.15
00:28
(7) Их аналог WaitForMultipleObjects нереально медленный :-)
12 PR
 
22.05.15
00:28
(8) Так а чего же ты ждешь от 1С тогда? Все сделано. Пользуйся.
13 GROOVY
 
22.05.15
00:29
(9)  Ну да, скдшные по дефолту в фоне формируются.
14 GROOVY
 
22.05.15
00:29
(11)  Это что такое?
15 klis
 
22.05.15
00:29
(9) Ок. А если не отчет, а обработка? Или там проведение документа?
16 H A D G E H O G s
 
22.05.15
00:30
(14) Это ОжидатьЗавершения() в 1С.
17 GROOVY
 
22.05.15
00:31
(15)  В фоновое задание его передай.
18 PR
 
22.05.15
00:32
(15) Ознакомься на досуге http://v8.1c.ru/o7/201412async/index.htm
19 GROOVY
 
22.05.15
00:32
(16)  Ну с этим есть небольшие хотелки... Все через... Не очень очевидные методы реализовано.
20 H A D G E H O G s
 
22.05.15
00:33
Вот. Фоновые задания :-) Для файловой версии надо запускать отдельное приложение - обработчик, вроде да?
21 PR
 
22.05.15
00:33
+(18) И с механизмом фоновых заданий
22 PR
 
22.05.15
00:33
(20) Дима, е мое :))
http://v8.1c.ru/o7/201305fi/index.htm
23 PR
 
22.05.15
00:34
+(22) Файловая версия вообще кал. Не будем про нее :))
24 H A D G E H O G s
 
22.05.15
00:34
(22) Ну слава яйцам!
25 GROOVY
 
22.05.15
00:35
(24) Ты меня прям напугал.
26 H A D G E H O G s
 
22.05.15
00:35
Сервер 1С скоро упрется в то, что ему будет не хватать и 32 процессорных ядер.
И фоновые задания выполни, и XDTO сериализацией позанимайся, И УФ отстрой.

Хочется озадачивать клиента.
27 PR
 
22.05.15
00:36
Вот для рест интерфейса сделать к гету и посту апдейт запрос вот это да, мне как раз кстати оказалось :))
28 H A D G E H O G s
 
22.05.15
00:36
(27) Чё?
29 PR
 
22.05.15
00:37
+(27) Сделать = сделали
30 PR
 
22.05.15
00:38
(28) Я говорю, в http://v8.1c.ru/o7/201312rest/index.htm написано про PATCH-запрос.
А сделали его не так давно, в какой-то 8.3.6.
А у меня без него пришлось бы на серьезном проекте обмен по-другому рисовать.
31 Asmody
 
22.05.15
00:40
пока в языке не будет лямбд, замыканий и функций первого класса, будет через то место
32 Asmody
 
22.05.15
00:40
и нормальной рефлексии
33 PR
 
22.05.15
00:42
(31), (32) Что это?

На мой взгляд не хватает возможности подписываться на события на сервере вместо постоянного опроса сервера путем получения с него данных и сравнения с уже полученными.
34 Garykom
 
гуру
22.05.15
00:46
Мда...когда 1С 7.7 уже лет 5 как вовсю вышла и победно шагала и уже на горизонте появилась 8.0 ...

еще тогда были "программисты" которые дальше "констант" и "справочников" систему "не поняли" и не использовали в своих самописках-нетленках больше ничего...

ЗЫ а Вы им "лямбд, замыканий и функций первого класса"...
35 Garykom
 
гуру
22.05.15
00:47
(34)+ да стоит только добавить объектность реальную и все ... 3/4 "программистов 1С" того... сухари-сушить профу менять
36 Garykom
 
гуру
22.05.15
00:49
1- Уже сейчас а как это на СКД сделать?

2- Не можешь на СКД делай вручную!

1- Э вручную это как?

2- мля...
37 GROOVY
 
22.05.15
00:55
(26)  Так кластер можно сделать. Конечно не все сервисы разнести получится.
38 H A D G E H O G s
 
22.05.15
00:58
(37) Кластер... Вот еще вопрос - почему 1С не использует что-нибудь пошустрее TCP/IP, например, именованные каналы :-)
39 H A D G E H O G s
 
22.05.15
00:59
Ладно, я спать.
40 Aleksey
 
22.05.15
01:22
(8) В том и  проблема что клиент не ждет результат
Или уже 1С формирует событие на клиенте по завершению фонового задания?
41 Asmody
 
22.05.15
01:40
(40) До футур 1Су как отсюда до Антарктиды.
42 Американец
 
22.05.15
02:33
(38) На быстрой сети разницы практически не будет. На медленной - TCP/IP будет шустрее.
43 oleg_km
 
22.05.15
09:33
(38) А почему именованные каналы быстрее TCP/IP? Они же поверх последних реализованы.
44 Американец
 
22.05.15
09:58
(43) Есть локальные пайпы, а есть сетевые.
Если клиент и сервер запущены на одной машине, то пайпы будут быстрее потому, что локальные.
А сетевые пайпы по факту это TCP сокеты.
45 oleg_km
 
22.05.15
10:20
(44) Ну так и TCP/IP для работы с localhost совсем не нужно беспокоить сетевую карточку. Некоторые сниферы даже не видят этот трафик.
46 Живой Ископаемый
 
22.05.15
10:20
2(33) Код как параметр, вообще, возможность манипуляции кодом как данными, переменными
47 Бубка Гоп
 
22.05.15
10:28
(45) нахрена на localhost tcp если есть shared memory?
48 Бубка Гоп
 
22.05.15
10:30
(46) а оно надо? имхо, сфера разработки у 1с не та, которой могут потребоваться те же замыкания
49 Бубка Гоп
 
22.05.15
10:34
(48) + когда код надо сделать в какой то степени вариативным, можно воспользоваться тем же Выполнить(), и этого хватает за глаза. правда, сам я не сторонник такого подхода
50 Гёдза
 
22.05.15
10:38
(48) Как не та? В асинхронных вызовах очень не хватает замыканий
51 Fragster
 
гуру
22.05.15
10:40
Хочу так: нажал "провести и закрыть", окно документа залочилось, а мы дальше можем шарится по программе. когда док провелся - выскакивает оповещение (оно и сейчас выскакивает) и окошко закрывается.
52 Fragster
 
гуру
22.05.15
10:40
и чтобы любой вызов (в т.ч. на сервере, при пакетной олбработке) можно было бы асинхронным сделать.
53 Живой Ископаемый
 
22.05.15
10:42
2(48) У 1С есть мобильное приложение, в котором например реализованы в том числе и фоновые задания (если верить зазеркалью), и для мобильных приложений, например характерно асинхронное заполнение UITableView, когда сами ячейки заполнены, текстовая информация размещена, а картинки подгружаются асинхронно.
54 Fragster
 
гуру
22.05.15
10:42
а не то угребище, которое сейчас - из-за того, что разработчикам надо было затыкать дырку в веб клиенте в хроме, сделали то, что не однопоточно по поведению, причем достаточно просто подобная "псевдо немодальная асинхронность", как сейчас могла быть реализована и без изменения кода конфигурации.
55 Живой Ископаемый
 
22.05.15
10:43
(51)+1
56 Гёдза
 
22.05.15
10:47
(52) Не нужно путать асинхронность и многопоточность
57 Бубка Гоп
 
22.05.15
10:47
(54) пришлось бы долго ковырять платформу. а так - х*як х*як и в продакшен (с) #1cStyle
58 Fragster
 
гуру
22.05.15
10:48
(56) по факту одно другому не мешает.
59 Fragster
 
гуру
22.05.15
10:49
в (54) "не однопоточно" следует читать как "однопоточно" или даже как "неасинхронно"
60 Гёдза
 
22.05.15
10:50
(58) Не мешает, но это независимые понятия
61 DmitrO
 
22.05.15
10:50
(0)потому что 1С считает что достаточно многопоточного сервера
(54)согласен, вот мне тоже так кажется.. но почему-то они пошли на серьезное неудобство при разработке конфигураций на пустом месте, может мы чего-то не знаем.
62 Fragster
 
гуру
22.05.15
10:53
(60) ну вот нодежс - он типа "асинхронный", но по факту асинхронные вызовы улетают в другие "обслуживающие" потоки, от которых потом приходят сообщения. А во многих случаях  - обмен сообщениями еще и двусторонний. При этом собственно программный поток один.
63 Живой Ископаемый
 
22.05.15
10:58
Для этого 1Сникам нужно мыслить делегированием и КВО-радиостанциями. Наверное 1С считает что это для них сложно.
64 DmitrO
 
22.05.15
11:04
(63)1С даже считает, что для 1Сников сложно преобразование числа в строку и ссылки в GID в запросе :)
65 DmitrO
 
22.05.15
11:04
*GUID
66 SUA
 
22.05.15
11:09
(48)замыкания в 1с есть - по сути это директива &насервере, как бы это ни смешно выглядело (всю форму гоним в контекст сервера)
(46)Выполнить()
а мультипоточность хочу... причем как раз для записи и тяжелого кода в основном, а то бесит когда даже в типовом ЖР ставишь отбор и сразу запускаешь 2ю сессию, не говоря уже про обработки обслуживания с тяжелыми запросами (запустили - ждем полчаса - потом делаем 2 минуты)
синхронное или асинхронное поведение тут совсем неважно, и фоновыми заданиями не отделаться - если задача попарсить большой excel файл с клиента
67 Лефмихалыч
 
22.05.15
11:10
(0) нынче можно одновременно формировать грузовой отчет и колбасить документы, пока он формируется, в одном и том же сеансе. Чем это не многопоточность?
68 Лефмихалыч
 
22.05.15
11:11
(66) фоновыми заданиями попарсить большой фал с клиента нет проблем. Для этого всего лишь надо файл либо на сервер передать, либо туда, куда у сервера доступ есть.
69 Dен
 
22.05.15
11:13
H A D G E H O G s

Приложи, пожалуйста, обработку из (3), на которой проверялась многопоточность.
По показанным кускам кода не понятно, как все это запускается.
70 H A D G E H O G s
 
22.05.15
11:24
(44) Я про локальную машину и про вот эти замеры производительности.

http://habrahabr.ru/post/81067/
71 H A D G E H O G s
 
22.05.15
11:25
(69) Нет, я спец. не показал код запуска. Это все таки не документированная возможность.
72 mehfk
 
22.05.15
11:32
(71) Неужто в ВК создается n потоков, из которых генерируется внешнее событие?
73 H A D G E H O G s
 
22.05.15
11:35
(72) Нет. Поток должна создать (и реагировать на него) сама 1С. Если ты создаешь поток сам и этот поток что-то делает с 1С (запускает код 1С) - все идет по звезде.
74 SUA
 
22.05.15
12:27
(68)да,
- перегнать файл
- установить эксель или прочие приблуды для его разбора на сервер, порадоваться в очередной раз забытым граблям запуска экселя от системной учетки
- перегнать результат обратно
мелочь какая... особенно для тонких клиентов (там где они реально нужны в связи с узким каналом связи например)
75 SUA
 
22.05.15
12:28
а клиентский комп с гигабайтами оперативы и i5 пускай подождет
76 Гёдза
 
22.05.15
12:29
(74) переходи на xslx. его можно без екселя парсить
77 Волшебник
 
модератор
22.05.15
12:30
(31) Восьмёрка ещё сыровата, конечно...
78 Бубка Гоп
 
22.05.15
12:32
(76) и обычный xls тоже
AdBlock убивает бесплатный контент. 1Сергей