![]() |
![]() |
![]() |
|
Многопоточность 1С? | ☑ | ||
---|---|---|---|---|
0
Chieftain
06.03.07
✎
14:41
|
При выполнении какого-либо кода в одинесине блокируется работа пользователя.
Однако есть ситуации, когда пользователь может работать одновременно с выполнением обработки. Первый раз натолкнулся в конфигурации "Конвертация данных" - когда выполняется создание файла правил обмена можно перемещаться по справочнику (вроде только мышью). Вот и хотелось бы знать - при каких условиях такая фигвина может возникать... если приручить может где и пригодится |
|||
1
АЛьФ
06.03.07
✎
14:44
|
2(0) Опасная вещь. 1С не предназначена для такого. Глюк в чистом виде.
|
|||
2
Ёпрст2
06.03.07
✎
14:45
|
(0) В 1с-не нет многопоточности. Можно только иммитировать.
|
|||
3
mikecool
06.03.07
✎
14:46
|
(0) в какой-то ВК видел - типа СоздатьПоток ... или Ghost или VTools
|
|||
4
АЛьФ
06.03.07
✎
14:47
|
2(3) vtools
|
|||
5
GrayT
06.03.07
✎
14:48
|
Что то похожее возникает при открытии обработки (внешней?) ПриНачалеРаботыСистемы
|
|||
6
Chieftain
06.03.07
✎
14:48
|
Ну вот сейчас у меня запущена обработка для создания и перепроведения документов
Работает долго... В окно сообщений выводится информация о выполненных действиях, как же и со строкой состояния. Но... одновременно с этим я спокойно открываю справочники, гуляю по меню и т.п., т.е. обычные действия пользователя. |
|||
7
Heckfy
06.03.07
✎
14:48
|
Как пример:
Перем Спр,Таб; Перем Флаг; //_____________________________________________________________________________ Функция КонтрольИзменений() Перем ЗначениеФлага; Если Флаг=0 Тогда Возврат ""; КонецЕсли; ЗначениеФлага=Флаг; Флаг=0; Форма.Обновить(); // начало модуля фоновой обработки Если Спр.ПолучитьЭлемент()=1 Тогда Если Спр.ЭтоГруппа()=1 Тогда Таб.ВывестиСекцию("Группа"); Иначе Таб.ВывестиСекцию("Элемент"); КонецЕсли; Иначе Таб.ТолькоПросмотр(1); Таб.Показать(); Возврат ""; КонецЕсли; // Окончание Флаг=ЗначениеФлага+1; Возврат "Идёт обработка справочника: "+Флаг; КонецФункции //_____________________________________________________________________________ Процедура Сформировать() Спр=СоздатьОбъект("Справочник.Контрагенты"); Спр.ВыбратьЭлементы(); Таб=СоздатьОбъект("Таблица"); Таб.ВывестиСекцию("Шапка"); Флаг=1; // поехали! КонецПроцедуры //_____________________________________________________________________________ Процедура ПриЗакрытии() Если Флаг<>0 Тогда Если Вопрос("Прервать фоновую обработку","Да+Нет")<>"Да" Тогда СтатусВозврата(0); Возврат; КонецЕсли; КонецЕсли; КонецПроцедуры //_____________________________________________________________________________ Флаг=0; На форму обработки текст с функцией КонтрольИзменений() |
|||
8
Chieftain
06.03.07
✎
14:52
|
Не-а обработка простая: на форме только кнопки
Процедура ПриОткрытии() СтатусВозврата(0); Докум=СоздатьОбъект("Документ"); НачатьТранзакцию(); Докум.ВыбратьДокументы(); Пока Докум.ПолучитьДокумент()=1 Цикл Состсояние("Обработка "+Докум.ДатаДок); Если Докум.ПометкаУдаления()=0 Тогда Докум.Провести(0); Сообщить("Проведен документ: "+Докум.ТекущийДокумент()); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
9
GrayT
06.03.07
✎
14:55
|
И без закрытия транзакции?
|
|||
10
Chieftain
06.03.07
✎
14:56
|
(9) Ну просто немного упростил - там еще куча проверок условий... вот и не скопировал
|
|||
11
andrewalexk
06.03.07
✎
14:58
|
(2)
:) ну если ты про обработку данных то возможно.. а допустим вывод информации можно фоном.. |
|||
12
АЛьФ
06.03.07
✎
14:58
|
Эффект "многопоточности" можно получить, когда сразу после запуска 1С открываешь внешний отчет, в котором выполнение идет в ПриОткрытии().
|
|||
13
Chieftain
06.03.07
✎
14:59
|
(12) Обработка (8) открыта из меню файл-открыть
|
|||
14
Ёпрст2
06.03.07
✎
15:00
|
(13) И чего? Работает ? Не верю....
|
|||
15
АЛьФ
06.03.07
✎
15:01
|
2(13) Именно о таком запуске обработки я и говорил в (12).
|
|||
16
Chieftain
06.03.07
✎
15:05
|
(14) Попробуй...
|
|||
17
АЛьФ
06.03.07
✎
15:06
|
||||
18
Ёпрст2
06.03.07
✎
15:07
|
(16) Чего там пробовать то? Это всё старо как мир...
ЗЫ: Еще есть http://www.sinor.ru/~my1c/knowhow/prikolis.html И еще Рупор тут как то заставлял Скунки кроссовок есть .. Баян всё. |
|||
19
MMF
06.03.07
✎
15:13
|
это не многопоточность, дополнительных потоков не создается.
|
|||
20
mergan
06.03.07
✎
15:23
|
многопоточность... многозадачность... семафоры...
|
|||
21
Chieftain
06.03.07
✎
15:35
|
(19) А какая разница как обозвать - принцип одновременного выполнения нескольких процедур существует
|
|||
22
АЛьФ
06.03.07
✎
15:38
|
2(21) Это не "принцип", а глюк. См. (1) и по ссылке в (17).
|
|||
23
Chieftain
06.03.07
✎
15:40
|
(22) Понятно, что глюк...
Но ведь и глюки бывают полезными... или нет? |
|||
24
АЛьФ
06.03.07
✎
15:43
|
2(23) Нет. Глюк - это всегда глюк.
|
|||
25
Chieftain
06.03.07
✎
15:48
|
ну и черт с ним...
|
|||
26
DarkAn
06.03.07
✎
16:38
|
(18) Очень заинтерисовала меня "окно в окне" только так и не понял как такого добились?!?!?!?!?!?!?!?
|
|||
27
АЛьФ
06.03.07
✎
16:40
|
2(26) Изменением стиля элемента диалога прямо внутри файла ert.
|
|||
28
DarkAn
06.03.07
✎
16:43
|
Ну тогда более менее понятно, а то я подумал что это штатно!
|
|||
29
DarkAn
06.03.07
✎
16:54
|
А чем вскрывать ert?
|
|||
30
АЛьФ
06.03.07
✎
16:56
|
2(29) FAR + пагин к нему DocFile
|
|||
31
Ёпрст2
06.03.07
✎
16:56
|
(29) Любым средством для работы с компаундом ..например, опеньконф ..или GComp разобрать-собрать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |