Имя: Пароль:
1C
 
как реализовать "многопоточность" в 1С (параллельное выполнение заданий)
0 lim9
 
13.01.17
13:18
База файловая. На данные момент есть острая необходимость каждую минуту выполнять несколько (10 шт) разных небольших заданий каждую минуту. Сделал через фоновые задания. Но если одно из заданий начинает выпоняться долго (а такое предусмотренно агоритмом) - то остальные задания перестают выполняться и ждут завершения передыдущего.
Как сделать чтобы все "фоновые" задания выполнялись каждое через минуту и независисмо от остальных.?
Спасибо.
1 kennetmccormick
 
13.01.17
13:22
перейти на клиент-сервер или запускать сеансы для каждого задания
2 kauksi
 
13.01.17
13:22
В гугле забанили? http://catalog.mista.ru/public/306865/
3 kauksi
 
13.01.17
13:22
4 Лефмихалыч
 
13.01.17
13:24
параллельное выполнение в файловой? где табличные блокировки?
хорошая шутка
5 mehfk
 
13.01.17
13:25
(0) Запусти побольше клиентов.
6 Вафель
 
13.01.17
13:25
(4) Сейчас везде уже упр блокирвоки
7 Fragster
 
гуру
13.01.17
13:25
в файловой - никак, все фоновые становятся в очередь. а раньше вообще морозили основное окно
8 Fragster
 
гуру
13.01.17
13:26
(6) и чо?
9 Вафель
 
13.01.17
13:26
(8) какие табличные блокировки тогда?
10 Fragster
 
гуру
13.01.17
13:28
(9) вот такие (!)
11 Вафель
 
13.01.17
13:30
(10) а пример кода можно?
12 Кирпич
 
13.01.17
13:30
(0) А может они и не нужны, эти задания?
13 Кирпич
 
13.01.17
13:39
+(12) я вот не представляю зачем нужно запускать 10 заданий каждую минуту.
14 lim9
 
13.01.17
13:51
(13) Бывает )
- каждое задание выполняет свою функцию:
одно отправляет смс,
другое синхронизирует почту,
другое получает инфу с внешних сервисов,
другое выполняет обмен 1С-1С
и т.д.
вы же не предложите днелать это все одним заданием )
15 Torquader
 
13.01.17
13:52
Если вы хотите использовать файловую и в ней делать что-то не очень соотносящееся с базой данных 1С, то лучше писать отдельные приложения, а если вы работаете с базой, то для файловой параллельность натыкается на блокировку таблиц.
Понятно, что кто-то верит, что можно использовать управляемые блокировки и снимать их как можно быстрее, но всё равно будет блокироваться вся таблица.
16 Лефмихалыч
 
13.01.17
13:53
(6) в файловой все, как было, так стало
17 Torquader
 
13.01.17
13:54
(14) Как бы - для отправки SMS со стороны 1С должны выгружаться в файл готовые сообщения или данные для их формирования - всё остальное должна делать отдельная программа и возвращать в 1С результат.
С почтой - тоже самое - в 1С должны грузиться только результаты обработки сообщений.
Что касается обмена, то желательно, чтобы, когда он выполняется, никто больше не выполнялся.
Так что - вам достаточно одного фонового задания и несколько отдельных программ - если хочется на 1С, то отдельных файловых баз 1С, выполняемых отдельно.
18 Кирпич
 
13.01.17
13:54
(14) да я бы не парил 1с вообще с такими заданиями. Внешнее приложение запустил бы, которое инфу на диск скидывало, а в 1С одно задание, которое бы эту инфу подбирало.
19 Кирпич
 
13.01.17
13:57
+(18) Можно тупо отдельную конфу для этого написать, если кроме 1с ничего не понимаешь.
20 lim9
 
13.01.17
13:58
(15) - понял уже что файловая база видать ограничивает сильно по мнопоточности
21 lim9
 
13.01.17
13:58
(19) - наверно это про меня
22 Philix
 
13.01.17
14:00
Есть вариант запускать 1С виндовыми назначенными заданиями и через параметры командной строки рулить исполнение той или иной обработки.
23 Кирпич
 
13.01.17
14:05
(20) Слова "многопоточность", "ООП" и "рекурсия" вообще не употребляй. Эти слова употребляют только одинесники со средним образованием из далеких колхозов. Вместо этих слов многозначительно молчи. Так будешь выглядеть профессиональнее.
24 Кирпич
 
13.01.17
14:06
(21) ну на 1с писать это правильно. чтобы все одинесники тебя понимали.
25 Torquader
 
13.01.17
14:08
(24) Конечно, чтобы вместо двух команд с параметрами - целая конфигурация.
Понятно, что сегодня пятница - но не до такой же степени.
26 Кирпич
 
13.01.17
14:09
(25) ну у него десять заданий. создал конфигурацию с одним модулем и вперед. быстро запускается, быстро работает. чем не вариант?
27 Кирпич
 
13.01.17
14:13
+(26) подключить рабочую конфу через com для обмена и пускай висит, крутит задания. когда надо сливает/получает инфу из рабочей базы. отличный вариант.
28 mexanik_96
 
13.01.17
14:16
предлагаю запилить менеджер процессов как в осях сделано(с мьютексами, семафорами и управлением очередью процессов и прочими вещами).
стартует главный поток(фз) потом всеми рулит(запускает\останавливает процедуры в фз\обрабатывает сигналы от других\создает события)как идея?
29 Fragster
 
гуру
13.01.17
14:17
(28) titdkt regbnm cthdthye. kbwtypb.
30 Fragster
 
гуру
13.01.17
14:17
дешевле купить серверную лицензию, говорю
31 mexanik_96
 
13.01.17
14:18
(30)ну ясно, но не наш метод!
32 Torquader
 
13.01.17
14:19
(30) Серверная лицензия не позволит разнести процессы на разные компьютеры, а если иметь отдельные конфигурации, которые через Http-сервисы общаются, то вполне можно.
33 Кирпич
 
13.01.17
14:20
(28) это всё вместо простого копипаста 20 строчек кода из одной конфигурации в другую? чота многовато.
34 lim9
 
13.01.17
14:22
благодарю вас, коллеги, много интересных мыслей подкинули!
35 mexanik_96
 
13.01.17
14:23
(33)ну не забываем про синхронизацию потоков, нагрузку, планировщик там ну ты понял)))
36 Кирпич
 
13.01.17
14:25
Можно еще ботнет сделать. У каждого юзера запустить дополнительно по конфе, которая будет ждать команды от Главного менеджера ботнета и выполнять когда надо какое нибудь задание.
37 Кирпич
 
13.01.17
14:27
(35) да ладна. нужно всего лишь просто отправить SMS и на какой нибудь web сервис сгонять.
38 Fragster
 
гуру
13.01.17
14:28
(32) КОРП вполне позволит
39 Fragster
 
гуру
13.01.17
14:28
а если отдельные конфигурации с веб сервисами - то и не корп
40 mexanik_96
 
13.01.17
14:29
(36) да! ботнет на 1с - это круто "рассчитай амортизацию в китае!",уже представляю нейронные сети на 1с, и тд....
41 Кирпич
 
13.01.17
14:34
(40) "представляю нейронные сети на 1с"
почему то представил жареную баранину. давно я баранины не ел. надо будет вечерком заглянуть в магазин, глянуть чего там из новой зеландии есть на прилавке.
42 H A D G E H O G s
 
13.01.17
14:56
Как я реализую многопоточность в 1С
http://s018.radikal.ru/i501/1701/ac/635fafd4e851.png
43 Кирпич
 
13.01.17
15:06
(42) Это 1С 9.0?
44 Fragster
 
гуру
13.01.17
15:10
(42) какое же дно этот радикал.ру
45 Кирпич
 
13.01.17
15:15
(42) а зачем SetLength(hThreadArray,i+1) в цикл запихнул? Неодобряю. Требую SetLength(hThreadArray,count) перед циклом.
46 Кирпич
 
13.01.17
15:17
+(45) я так то не зануда, просто в техникуме сильно ругали за такое. рефлексы.
47 Кирпич
 
13.01.17
15:22
(42) А hThreadArray удалять не надо? Щас в Delphi динамические массивы сами удаляются? Или они и раньше сами удалялись. Я чота забыл.
48 Лефмихалыч
 
13.01.17
15:23
Не могу в очередной раз не отметить ни кого не еволнующий факт того, на сколько мне омерзителен паскаль. Отвратительный язык. Код, как из говна и палок выглядит и нечитабельно.
49 H A D G E H O G s
 
13.01.17
15:23
(47) сами
50 H A D G E H O G s
 
13.01.17
15:24
Не могу в очередной раз не отметить, насколько мне похер мнение недалеких людей.
51 Кирпич
 
13.01.17
15:26
(49) гы гы. я этого не знал. всю жизнь руками убивал :)
52 Кирпич
 
13.01.17
15:28
(48) ты оригинал. обычно Си обзывали нечитабельным.
53 H A D G E H O G s
 
13.01.17
15:30
(45) Там десятки мегабайт в потоках кочуют табунами за миллисекунды, какой - то 8 байтный*n реаллок, это мелочи.
54 Кирпич
 
13.01.17
15:31
(48) да у вас в школе информатики просто не было. так бы нравилось, если бы с детства приучили.
55 Кирпич
 
13.01.17
15:31
(53) да я не про память. мне её тоже не жалко. я про привычку правильно писать.