|
Многопоточность в обычных формах 1С. | ☑ | ||
|---|---|---|---|---|
|
0
ptiz
02.04.26
✎
10:14
|
Кто-то уже нарывался на такое?
Всё происходит на платформе 8.2 на обычных формах. Имеем обработку, где есть поле ввода для клавиатурного сканера ШК (с хоткеем F7). Суть: - в модуле обработки есть цикл: перебор списка документов для печати, каждый последовательно отправляется на принтер - после отправки на принтер каждого - вызывается пауза 2 секунды через WScript.Shell и ping Назовем это Процедура1 - она запустилась, т.к. сканировался очередной ШК. В это время пользователь на этой же форме сканирует следующий ШК (хотя работает Процедура1 и форма должна быть заблокирована): - и 1С запускает НОВЫЙ ЭКЗЕМПЛЯР процедуры модуля. Этой же обработки! Это Процедура2. В данной конкретной обработке возникает конфликт двух процедур (они блокируют один и тот же справочник) и Процедура2 устанавливает реквизит обработки "ТекстОшибки" (Процедура1 еще выполняется). А когда Процедура1 заканчивает работу - она в конце анализирует реквизит "ТекстОшибки" - и видит значение, установленное в Процедура2 и пишет его в логи. Я что-то новое открыл или эта фича давно известна? |
|||
|
1
1cVandal
02.04.26
✎
10:16
|
с асинх сталкивался?
|
|||
|
2
Garykom
гуру
02.04.26
✎
10:20
|
(0) Оно со времен 1С 7.7 есть
|
|||
|
3
ptiz
02.04.26
✎
10:31
|
(2) Мне интересно, что тогда помешало 1С сделать это реальной фичей, сделав штатной возможность запуска нескольких экземпляров процедуры одновременно, раз оно по факту работает.
|
|||
|
4
Garykom
гуру
02.04.26
✎
10:36
|
(3) Мьютексы со светофорами помешали
|
|||
|
5
H A D G E H O G s
02.04.26
✎
10:42
|
Открыли Америку...
Почему 1С не сделает многопоточного клиента, если он уже есть? |
|||
|
6
ptiz
02.04.26
✎
10:44
|
(5) Эх, скринов не видно.
|
|||
|
7
Sserj
02.04.26
✎
10:51
|
(3) М...
А как по вашему рекурсия работает? И вообще как по вашему работают процедуры и функции. Может стоит почитать основы, для общего развития пописать на чистом C. Понять что такое стек вызовов как он работает в памяти. |
|||
|
8
H A D G E H O G s
02.04.26
✎
10:52
|
(6) Самое забавное - что я не помню, как это сделал.
|
|||
|
9
vis
02.04.26
✎
11:14
|
(7) Как рекурсия связана с мнопоточностью?
|
|||
|
10
JeHer
02.04.26
✎
11:25
|
(5) ни фига ты некромант. В той ветке уже дофига народу )))
|
|||
|
11
Sserj
02.04.26
✎
11:30
|
(9) Так у человека вопрос "..НОВЫЙ ЭКЗЕМПЛЯР процедуры модуля..". А не сама многопоточность.
Да и многопоточностью это назвать можно с сильной натяжкой. Скорее асинхронность. Исполнение ушло во вне системы, ядро там оставило точку возврата. А основной оброботчик событий продолжил работать. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |