Имя: Пароль:
1C
 
Многопоточность 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 разобрать-собрать.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.